“黑客”必学攻击之“跨站脚本攻击”
|
有些流行的Web应用程序被移植到移动通信领域。这些移动式应用一般具有相同的功能,但是安全特性更差,并且仍然可以通过诸如IE 以及Firefox之类的浏览器进行访问。 因此,它们是HTML注入攻击以及跨站请求伪造的理想攻击目标。 通常情况下,移动式应用作为主要的Web应用程序运行在相同的域上,因此移动式应用中的任何HTML注入都能够访问整个域,包括运行在该域上的主要的Web应用程序或者其它的Web应用程序。 5. 在Ajax响应以及错误信息中的HTML注入 并非所有HTTP应答都会显示给用户。类似AJAX响应以及超文本传输协议(http)错误消息这些页面通常会被开发人员所忽视。开发人员可能没有考虑为AJAX响应提供HTML注入保护,因为这些请求通常不是由用户直接使用的。然而,,攻击者可以用先前的代码片断模仿AJAX的GET以及POST请求。 同样的,超文本传输协议(http)错误响应,诸如HTTP 404(Not Found)、HTTP 502(Server Error)等等,通常也会被开发人员所忽略。开发人员倾向于假定一切都是HTTP 200(OK)。您可以尝试触发其它的响应,而非仅仅HTTP 200,然后试着注入脚本。 6. 使用UTF-7编码进行HTML注入 如果用户的IE自动选择编码集,那么攻击者就能规避大多数HTML注入预防措施。就像前面提到的那样,HTML注入的预防措施一般依赖于对潜在的有害字符进行转义处理。然而,UTF-7编码技术使用了无法正常转义的通用字符,而这些通用字符有时无法被某些Web应用程序进行换码。 的UTF-7转义版本将是下面的样子:
注意,这是一种不常见的攻击,因为用户一般不会打开自动选择编码技术选项。当然,也存在其他的利用字符编码可变长度的UTF编码攻击技术,但是这要求对UTF有着深入广泛的理解,所以它超出了本文的讨论范围。然而,这个问题说明其它编码(例如MIME类型)的疏漏也是能引起HTML注入的。 7. 利用MIME 类型不匹配来进行HTML注入 IE具有许多令人惊讶的未公开特性,例如,IE7 以及之前的版本尝试加载一个图像或者其它的非HTML的响应并且失败时,它会将该响应作为HTML对待。为了弄明白这个情况,我们可以创建一个文本文件,并包含下列内容: 之后,将其保存为alert.jpg,然后在IE的URL地址栏中或一个iframe中装载的这个"图像",这就会导致这里的JavaScript被执行。 注意,如果该文件是从一个图像标签加载的话,它就不会作为脚本执行了。 一般说来,当您试图上载这样的一个文件到一个图像托管服务时,该服务将拒绝这个文件,因为它根本就不是一个图像。但是图像托管服务通常情况下会忽视文件的扩展名,而只通过文件的幻数(开始几个字节)来确定文件类型。 因此,攻击者可以避开它,方法是用GIF注释中的HTML来创建一个GIF图像,然后将这个GIF保存为.jpg文件扩展名的文件。下面是一个单像素的GIF文件,如下所示:
将其命名为test.jpg,并在IE中加载它,这会导致执行这段JavaScript。这也是注入Flash跨域政策的一种好方法。只要把Flash安全策略的XML内容放入GIF注释,并保证这个GIF文件不包含扩展的ASCII字符或者字节NULL即可。您还可以把HTML注入到未压缩的图像文件(诸如XPM以及BMP文件)的图像数据部分,而不是注解中。 8. 使用Flash进行HTML注入 在大多数HTML注入情形中,攻击者可以注入任意的HTML。举例来说,攻击可以注入一个对象和/或嵌入一个标签来加载该域上的Flash应用程序。 下面是一个例子: 这里的HTML有些繁琐,但是它将JavaScript应用程序具有的控制权赋予一个Flash应用程序,例如(经过ExternalInterface类)读取Cookie、(经过ExternalInterface类)改变web页面外观、(经过XML类)读取用户私人数据以及(经过XML类)以受害者的名义建立HTTP请求。 然而,Flash应用程序有时候会提供更多的功能。例如,flash应用程序可以通过Socket类创建原始的套按字连接。这允许攻击者构造他们的完整的HTTP数据包(包括通过ExternalInterface类窃取Cookie)或者连接到电脑允许的其它端口上。 注意,Socket连接只能建立到达恶意脚本所源自的域的连接,除非攻击者为完成攻击还反射了一个不安全的跨域策略文件。 (编辑:网站开发网_盐城站长网 ) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |

