XSS攻击防御技术白皮书

上一篇 / 下一篇  2008-08-26 07:22:26

XSS攻击跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style. Sheets, CSS)的缩写混淆。故将跨站脚本攻击缩写为XSS。XSS是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中。比如这些代码包括HTML代码和客户端脚本。攻击者利用XSS漏洞旁路掉访问控制——例如同源策略(same origin policy)。这种类型的漏洞由于被骇客用来编写危害性更大的phishing攻击而变得广为人知。对于跨站脚本攻击,黑客界共识是:跨站脚本攻击是新型的“缓冲区溢出攻击“,而JavaScript是新型的“ShellCode”。IXPUB技术博客)vm*`Kq

  数据来源:2007 OWASP Top 10的MITRE数据

6IJ/E0p"{+JU0

9A"R/Y uu}0  2007 OWASP Top 10的MITRE数据IXPUB技术博客:_:xQG4P*@,?

IXPUB技术博客XYT rK?.U#C

  注:OWASP是世界上最知名的Web安全与数据库安全研究组织

6bl+L`9\0IXPUB技术博客&juGqT)AuEc A

  从这张图中我们看到,在2007年OWASP所统计的所有安全威胁中,跨站脚本攻击占到了22%,高居所有Web威胁之首。

W%wD!^1{)C+P*_M8FZ0

%y0TK is9u s6n m:f(L'W0  XSS攻击的危害包括IXPUB技术博客\3P6V.e)|;z_n

i-z8D S+BIOT]0  1、盗取各类用户帐号,如机器登录帐号、用户网银帐号、各类管理员帐号IXPUB技术博客*a%g*j/S(MRM

IXPUB技术博客4i^oS%@-^

  2、控制企业数据,包括读取、篡改、添加、删除企业敏感数据的能力IXPUB技术博客9L"S YjM)[6C4m+V

Ed2I`g*a0Q2k0  3、盗窃企业重要的具有商业价值的资料

&b NJ ?I A0IXPUB技术博客Q jo0e0PC5E1`

  4、非法转账

Um8e"b'_ r.yD0

s-m5NK@4jP2aH0  5、强制发送电子邮件

!QU},HyqR3lN5i0

  6、网站挂马IXPUB技术博客h:hrMocX ]vc

IXPUB技术博客H A9w]"Y ^ h/dI

  7、控制受害者机器向其它网站发起攻击IXPUB技术博客-R.tG_MK+Kr

IXPUB技术博客)s\ln1g }

  XSS漏洞的分类IXPUB技术博客x;\)i@8j

IXPUB技术博客h+q,f:H S[

  XSS漏洞按照攻击利用手法的不同,有以下三种类型:IXPUB技术博客x xl-Fv3~T'D

(v }y X ]7b0  类型A,本地利用漏洞,这种漏洞存在于页面中客户端脚本自身。其攻击过程如下所示:IXPUB技术博客n:xm!b+Xu

IXPUB技术博客*?%v%@1v@[8xT

  Alice给Bob发送一个恶意构造了Web的URL。IXPUB技术博客m B{*z eM:VO

IXPUB技术博客5?m%[ ]t][E

  Bob点击并查看了这个URL。

0Of[A|)j+O0

4]B1KK!~9|A3Yd%m0  恶意页面中的JavaScript打开一个具有漏洞的HTML页面并将其安装在Bob电脑上。IXPUB技术博客$`1oQe4Q"E3Lb

K;A1_J0@3wc{ [4m0  具有漏洞的HTML页面包含了在Bob电脑本地域执行的JavaScript。

K*G-{%vj:|+d#W0IXPUB技术博客&Al6r/Z RSP.t

  Alice的恶意脚本可以在Bob的电脑上执行Bob所持有的权限下的命令。IXPUB技术博客*] q{+FT/^

IXPUB技术博客7]4m*U}.s#{2C

  类型B,反射式漏洞,这种漏洞和类型A有些类似,不同的是Web客户端使用Server端脚本生成页面为用户提供数据时,如果未经验证的用户数据被包含在页面中而未经HTML实体编码,客户端代码便能够注入到动态页面中。其攻击过程如下:IXPUB技术博客%y`` ?6wao#D

IXPUB技术博客HX2e/Y#`9C]F:x

  Alice经常浏览某个网站,此网站为Bob所拥有。Bob的站点运行Alice使用用户名/密码进行登录,并存储敏感信息(比如银行帐户信息)。IXPUB技术博客 ?2G.^9Zn~N8Ii&y

)GqAK6|7R0  Charly发现Bob的站点包含反射性的XSS漏洞。

2OO7xU1@"^ h^J$KY0

.p#To'@h8Z0  Charly编写一个利用漏洞的URL,并将其冒充为来自Bob的邮件发送给Alice。

xH5GkZec8[z"H4V8G0IXPUB技术博客(lkcm_O@m

  Alice在登录到Bob的站点后,浏览Charly提供的URL。

dOI.[z'z$o0

|@e2S UJMg1m]0  嵌入到URL中的恶意脚本在Alice的浏览器中执行,就像它直接来自Bob的服务器一样。此脚本盗窃敏感信息(授权、信用卡、帐号信息等)然后在Alice完全不知情的情况下将这些信息发送到Charly的Web站点。

xL t2qA#O0

NoS*KF&w8H0  类型C,存储式漏洞,该类型是应用最为广泛而且有可能影响到Web服务器自身安全的漏洞,骇客将攻击脚本上传到Web服务器上,使得所有访问该页面的用户都面临信息泄漏的可能,其中也包括了Web服务器的管理员。其攻击过程如下:

)_)BUk O;lTV0IXPUB技术博客 S/Zs?*u

  Bob拥有一个Web站点,该站点允许用户发布信息/浏览已发布的信息。IXPUB技术博客R4W.kIE hQ

IXPUB技术博客Z W3_+B#pu

  Charly注意到Bob的站点具有类型C的XXS漏洞。

D aW)BY l0

:N1@ @n6gZ0  Charly发布一个热点信息,吸引其它用户纷纷阅读。IXPUB技术博客(E^ w JB:fN5AAJ

SoF*saJM)x1q0  Bob或者是任何的其他人如Alice浏览该信息,其会话cookies或者其它信息将被Charly盗走。IXPUB技术博客 Q#{ gOe|(nV Z

aIH2C4HK0  类型A直接威胁用户个体,而类型B和类型C所威胁的对象都是企业级Web应用,目前天清入侵防御产品所能防范的XSS攻击包括类型B和类型C。2、XSS攻击防御

-G%SF@m0IXPUB技术博客Dx#_-sPOSQb5I

  基于特征的防御

d-DmJYW0

{3FHm*T#f0  XSS漏洞和著名的SQL注入漏洞一样,都是利用了Web页面的编写不完善,所以每一个漏洞所利用和针对的弱点都不尽相同。这就给XSS漏洞防御带来了困难:不可能以单一特征来概括所有XSS攻击。

k C6W8n*Q0

MGB t:d7?Qy0  传统XSS防御多采用特征匹配方式,在所有提交的信息中都进行匹配检查。如, 对于这种类型的XSS攻击,采用的模式匹配方法一般会需要对“javascript”这个关键字进行检索,一旦发现提交信息中包含“javascript”,就认定为XSS攻击。这种检测方法的缺陷显而易见:骇客可以通过插入字符或完全编码的方式躲避检测:IXPUB技术博客Awb2p/p4be

u8@!e1K_ Zb0[0  躲避方法1)在javascript中加入多个tab键,得到    IXPUB技术博客G+j$Rn:{

IXPUB技术博客Z(mk6ppcS!juP4}

<IMG SRC="jav ascript.:alert('XSS');">

oc)mBi0IXPUB技术博客;S2[N"BZ&?:U2b

  躲避方法2) 在javascript中加入&#x09编码字符,得到 IXPUB技术博客 I(G-~"R-@Dg

IXPUB技术博客1yj!MXE\

<IMG SRC="jav&#x09;ascript.:alert('XSS');">
IXPUB技术博客 C]-@7S ql x

H1L3fG-m_V ?:o-cB0  躲避方法3) 在javascript中加入字符,得到    IXPUB技术博客&do7T,z2N,D|f4t

IXPUB技术博客:R~!Gc.UDDGqz

<IMG SRC="jav&#x0A;ascript.:alert('XSS');">
IXPUB技术博客EY mx6v8T"p K!v4v8b

BM0d`.S\!^;V0  躲避方法4)在javascript中的每个字符间加入回车换行符,得到

5x5XC5Z X1@0

<IMG SRC="j\r\na\r\nv\r\n\r\na\r\ns\r\nc\r\nr\r\ni\r\np\r\nt\r\n:alert('XSS');">   
IXPUB技术博客kPd J6oX

   躲避方法5)对"javascript:alert('XSS')"采用完全编码,得到

5?c(KP(`C4V \}0

IXPUB技术博客m fuu{6V

<IMGSRC=&#x6A&#x61&#x76&#x61&#x73&#x63&#x72&#x69&#x70&#x74&#x3A&#x61&#x6C&#x65&#x72&#x74&#x28&#x27&#x58&#x53&#x53&#x27&#x29>

#]/\I9O3[&e0IXPUB技术博客U.A6r|O%Vn,v
IXPUB技术博客 ^ PNS)d5Qi

  上述方法都可以很容易的躲避基于特征的检测。而除了会有大量的漏报外,基于特征的还存在大量的误报可能:在上面的例子中,对"http://www.xxx.com/javascript/kkk.asp?id=2345"这样一个URL,由于包含了关键字“javascript”,也将会触发报警。IXPUB技术博客X'irg@GTd$l^(}x,C

3]8gZP0WF7B0  基于代码修改的防御

*T(hT-M"n\0IXPUB技术博客5v$j]B4qJ2P,T

  和SQL注入防御一样,XSS攻击也是利用了Web页面的编写疏忽,所以还有一种方法就是从Web应用开发的角度来避免:

eg9@hy T Xu0IXPUB技术博客zX4]q~w.`6[V

  步骤1、对所有用户提交内容进行可靠的输入验证,包括对URL、查询关键字、HTTP头、POST数据等,仅接受指定长度范围内、采用适当格式、采用所预期的字符的内容提交,对其他的一律过滤。

-Q-xF`Qc s?L0

a)vN6B7k{3HO%KM0  步骤2、实现Session标记(session tokens)、CAPTCHA系统或者HTTP引用头检查,以防功能被第三方网站所执行。IXPUB技术博客Fd!D7i(S,p

?.U ?I'Cx0  步骤3、确认接收的的内容被妥善的规范化,仅包含最小的、安全的Tag(没有javascript),去掉任何对远程内容的引用(尤其是样式表和javascript),使用HTTP only的cookie。

k"x"Ma:_G y0

%r q b:KX dQ5j;OS&a0  当然,如上操作将会降低Web业务系统的可用性,用户仅能输入少量的制定字符,人与系统间的交互被降到极致,仅适用于信息发布型站点。并且考虑到很少有Web编码人员受过正规的安全培训,很难做到完全避免页面中的XSS漏洞。IXPUB技术博客4ksgKpk

IXPUB技术博客$wo!q*Ea(|bpm

  正是由于传统检测方法存在诸多缺陷,国内厂商(如启明星辰天清入侵防御系统)并未采用这一方法,而是采用了基于攻击手法的行为检测方法,其分析流程如下图所示,

p/P5o#_#S2pKC QA0

|#KwFmW0  启明星辰天清入侵防御系统IXPUB技术博客"Ww,V W I7wp

IXPUB技术博客/\[F!}&F mhg%T

  首先对各种场景下的XSS攻击样本库进行整理和分类,并建立起XSS攻击行为特征库,在实时攻击检测阶段,对所有可能实现XSS攻击的数据来源,如HTTP-Refere、URL、COOKIE、表单数据等,进行数据收集和初步分析,存在注入脚本的用户提交信息才进入下一步的XSS攻击判断。

P/V `X[-Dr"~'C[0

&VV"j RM l#N2bD/K0  这种分析方法有以下几点优势IXPUB技术博客#kU8mrq!H9w:lk

IXPUB技术博客S ~5_E6zv

  A:采用行为特征库而非数据特征库方式,可以避免由于检测固定特征导致的误报可能。

s*m9ST[G)L ~.A0IXPUB技术博客'l2LR5f [ [C y T)j6w

  B:内置数据预处理过程,可以对所有可能包含XSS攻击的数据进行预处理,放行大部分正常HTTP请求,仅对少量疑似事件进行深入分析,提升分析速度,降低资源开销。

5Q5b.ZbR0

0hCi%?r0  C:XSS攻击行为特征库维护由启明星辰公司AD-LAB(积极防御实验室)和博士后工作站负责,AD-LAB拥有大批漏洞发掘和分析人员,2007年发现并获得CVE编号的漏洞数量多达26个,是国内独立发掘CVE漏洞数量最多的团队。启明星辰博士后工作站是业内第一家驻企业的信息安全博士后工作站,为产品算法实现、研究技术转化提供有力保障。

h:d/NY Sz'aNT0IXPUB技术博客z PFTD f

  3、综论IXPUB技术博客C*xEg:w \

IXPUB技术博客1h#Z w#r(]-`/x

  XSS攻击作为Web业务的最大威胁之一,不仅危害Web业务本身,对访问Web业务的用户也会带来直接的影响,如何防范和阻止XSS攻击,保障Web站点的业务安全,是定位于业务威胁防御的入侵防御产品的本职工作。只有结合对XSS攻击的分析,才能能准确的发现和防御各类XSS攻击行为,保障Web业务的正常运营。

9EN&aK)y `/\'\?0

TAG: 系统安全

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

日历

« 2009-01-07  
    123
45678910
11121314151617
18192021222324
25262728293031

数据统计

  • 访问量: 65616
  • 日志数: 1209
  • 文件数: 1
  • 建立时间: 2007-08-10
  • 更新时间: 2009-01-06

RSS订阅

Open Toolbar