Blind XSS

来源:互联网 发布:java把string转为json 编辑:程序博客网 时间:2024/05/22 03:14

简单翻译总结,以作交流。博主水平有限,出现错误还望大家能够指正。

原文:https://www.acunetix.com/blog/articles/blind-xss/
原标题:Blind XSS: The Ticking Time Bomb of XSS Attacks

翻译: Blind XSS:XSS攻击的定时炸弹

什么是Blind XSS?

Blind XSS 是 cross site scripting (XSS)攻击的一个方向,当攻击者在网页上“盲目地”(原文为:“blindly”,特地用了引号)部署一系列恶意代码,这些网页可能会将代码保存到一个特定的地方(比如说数据库中,或者日志文件中)。然后,在不知道任何细节的情况下,比如:这些payload会在哪里结束,又或者是否被执行,何时被执行,攻击者等待着这些 payload 从存储中被取出并呈现在由用户加载的web页面上。

因此,不像大部分的XSS攻击:非持久型的,依靠由攻击者在web表单或 http 请求中输入的数据所生成的即时响应页面的XSS攻击方式;Blind XSS 是一种持久型的XSS,依靠目标web页面的代码中的漏洞,允许恶意代码插入到web控件中,被服务器存储到数据库或者网站设置文件中。这些恶意代码将被作为HTML响应页面的一部分向其他用户提供服务,而不会被检测。

博主总结:
Blind XSS,即类似于XSS盲打,在不明确是否存在XSS的情况下,对于web页面中可能存在的存储型XSS的地方都插入payload,攻击者不了解插入的payload具体去了哪里,只需要等待这些payload中有部分被成功执行,就已经成功了,能够达到某种目的。

————– 余下部分,如有需要,再行翻译 ———————-

Blind XSS 的常见目标

大多数Blind XSS的常见目标是那些具有用户输入且可以保存到之后其他人能查看的某些地方——如:登录表单,日志查看器,客户服务应用程序,异常处理器,论坛 / 留言板,返回表单,聊天窗口等的网页。

典型的 Blind XSS 攻击

Blind XSS 目标 #1: 登录表单

登录表单经常从网页接收输入的用户名,并将他保存到一个之后可以被查看的日志文件中。因此,一次在登录表单的“用户名”模块输入恶意代码后的失败的登录,将会导致服务器将输入保存到日志中,这样日志中就将恶意代码当做“用户名”保存。攻击者可以执行一些这样的登录尝试,为了将恶意代码传入到日志数据库中或日志文件中。
这之后,如果登录表单所属的网站(或网络应用)的管理员,在检查当天的日志时,如果这些日志会在一个网页上呈现的话,那么恶意代码就可能被执行,并向攻击者返回他所需要的信息。
在这个场景下的典型目标是需要身份验证,Web管理控制台设备等的基于Web的应用。典型的危害范围从窃取信任证书到越权访问应用(程序)的数据,和拒绝服务。
典型的用户目标是管理员和与安全性相关的目标。

Blind XSS 目标 #2: 论坛 / 留言板

类似于之前的场景,攻击者可以在论坛或留言板的主题标题中插入恶意代码。最常见的,服务器会将他们提交的数据保存到数据库中,并且存储的信息对其他人可见,比如版主等。
在这种场景下,这恶意脚本代码在发到普通用户时可能会被杀毒,从而导致恶意代码失效。可是,当一个论坛的版主加载论坛的web管理页面时,就像一个线程流行报告(like a thread popularity report,),比如,未杀毒的主体标题可能会被加载。因此,攻击者的脚本将会被执行,返回窃取的信息,重定向用户,或者拒绝服务攻击,例如通过调用在管理接口界面的代码停止论坛。
典型的用户目标是那些能从web管理界面加载论坛内容,执行管理操作任务和安全配置相关的目的的论坛或留言板的版主。
Typical user targets are moderators of forums or message boards, who load forum content from management web sessions in order to perform administrative tasks and the aim is again, security related.

检测和防御 Blind XSS 攻击

最好的治疗就是提前预防;因此对于Blind XSS 攻击来说,最好的防御收到就是确保你的网站和网络应用没有漏洞。实现的最有效的方法就是通过网页开发人员去审查代码并确保任何用户输入都经过过滤杀毒。如果这一步没有完成,用户输入在被保存到存储区或向用户浏览器提供服务之前不被任何脚本标签过滤,那么这将是一个风险。因此,你的网站或者web应用可能会存在XSS漏洞,包括Blind XSS攻击。

永远不要相信用户提供的数据是一个好的编程习惯。为了排除所有的风险,你必须在用户输入被存储之前进行过滤杀毒;同时,作为第二道防线,当数据被从存储中读取时,在它被送到用户的浏览器之前也需要进行过滤杀毒。

博主注:过滤杀毒原文单词是“ sanitization”,就是对恶意代码进行检测过滤。

接下来:你需要一些专业化的工具来执行无害的渗透测试,除了检测XSS漏洞之外,还包括检测那些可能在web应用(如在论坛中)扫描中不会暴露的Blind XSS漏洞的能力。如果你不接触代码,或者没有时间去检查上千上万行代码,你可以使用这样的工具去判定你的网站或web应用是否存在Blind XSS 攻击漏洞,如果存在,那么你就需要联系你的软件供应商。

在没有代码审计的情况下探测Blind XSS的困难,来自于这种攻击方式不依靠第三方web服务器技术或网络浏览器;漏洞可以被公布或者你能扫描并打上补丁。这种攻击利用开发者在编写你的网站或web应用中的代码时引入的漏洞。因此,即使你的网站实施了最新的技术比如HTML 5或者你确认你的网站服务器已经打满了补丁,但你的web应用可能还是存在XSS漏洞。此外,Blind XSS 就更难被发现,因为payload可能会在与它插入的地方完全不同的web应用中被执行。

原创粉丝点击