界面操作劫持攻击是一种基于视觉欺骗的Web会话劫持攻击。它通过在网页的可见输入控件上覆盖一个不可见的框(iframe),使得用户误以为在操作可见控件,而实际上用户的操作行为被其不可见的框所劫持,执行不可见框中的恶意劫持代码,从而完成在用户不知情的情况下窃取敏感信息、篡改数据等攻击
从其技术发展阶段上分析,可以分为以下三种:点击劫持、拖放劫持、触屏劫持
点击劫持:其首先劫持的是用户的鼠标点击操作,它主要的劫持目标是有重要会话交互的页面
拖放劫持:在浏览器中,拖放操作是不受“同源策略”限制的,用户可以把一个域的内容拖放到另一个不同的域
触屏劫持:智能移动设备已经成为黑客们攻击的新目标
5.2.界面操作劫持技术原理分析透明层+iframe:这里的“覆盖”是指控件位置之间的层次关系,“不可见的”是指页面的透明度为零,而“框”则指的是iframe标签。所以。“覆盖一个不可见的框”可以理解成“透明层”+ “iframe”
通过页面透明度+iframe实现了对用户的视觉欺骗,即用户看到的操作对象与实际操作对象是不一致的,从而为界面操作劫持攻击提供了技术手段
dataTransfer作为event对象的一个属性出现,用于从被拖动的对象传递字符串到放置对象
setData操作完成向系统剪贴板中存储需要传递的数据,传递数据分为两种类型:文本数据和URL数据。在HTML5的扩展中,其允许指定任意的MIME类型
拖放劫持的操作函数稍微复杂一些,浏览器中可以拖放的对象一直在不断地增加,图片、链接和文本都是可以拖动的
IPhone Safari浏览器有一个特殊的功能,即可以把网页添加到IOS操作系统的桌面当作一个程序图标来显示
在这些触屏移动设备中,同样可以使用透明度+iframe方法,然后配合触屏设备中自身的API函数来发起触屏劫持攻击
5.3.界面操作劫持实例点击劫持:微博的关注按钮示例
拖放劫持:小游戏
5.4.有何危害界面操作劫持实际上突破了CSRF的防御策略。它带来的危害可以很大,比如,删除与篡改数据、偷取隐私设置爆发蠕虫
第六章 漏洞挖掘 写在前面一个漏洞的产生可能与很多因素有关,比如,浏览器差异(或说浏览器特性)、浏览器BUG、字符集问题、漏洞对象、所在场景等
CSRF的漏洞挖掘只要确认以下内容即可:目标表单是否有有效的token随机串;目标表单是否有验证码;目标是否判断了Referer来源;网站根目录下crossdomain.xml的“allow-access-fromdomain”是否是通配符;目标JSON数据似乎可以自定义callback函数等;
界面操作劫持的漏洞挖掘只要确认以下内容即可:目标的HTTP响应头是否设置好了X-Frame-Options字段;目标是否有JavaScript的Frame Busting机制;更简单的就是用iframe嵌入目标网站试试,若成功,则说明漏洞存在;
6.1.普通XSS漏洞自动化挖掘思路自动化的XSS漏洞挖掘其实是很复杂的,难度也会很高。这和我们要实现的XSS漏洞挖掘工具的需求有关,是要效率(有了广度,却忽略了深度),还是要检出率(既有广度又有深度,漏洞个数多且准确度高)
工具自动化的思路,是一种针对反射型XSS、存储型XSS、头部XSS、CookieXSS等比较普通的XSS漏洞挖掘思路
URL上的玄机:URL的一种常见组成模式:<scheme>://<netloc>/<path>?<query>#<fragment>;
HTML上的玄机:两类特殊的标签<script>和<style>,它们是不能嵌套标签的,而且payload构造情况会更灵活;同样有意思的场景,比如这三类:1.输出在src/href/action等属性内;2.输出在on*事件内;3.输出在style属性内;对IE来说,在标签的style属性中只要能注入expression关键词,并进行适当的闭合,我们就可以认为目标存在XSS;
请求中的玄机:“探子请求”,在真正的payload攻击请求之前,总会发起一次无危害(不包含任何特殊符号)的请求,这个请求就像“探子”一样,来无影去无踪。不会被网站的过滤机制发现,就像一次正常的请求;“探子”的目的有以下两个(1.目标参数值是否会出现在响应上,如果不出现,就完全没必要进行后续的payload请求与分析;目标参数值出现在HTML的哪一个部分,从上面的分析我们已经知道,不同的HTML部分对待XSS的机制是不一样的,请求的payload当然也不一样)
关于存储型xss挖掘:这里一般是表单的提交,然后进入服务端存储中,最终会在某个页面上输出
6.2.神奇的DOM渲染HTML与JavaScript自解码机制:在JavaScript执行之前,HTML形式的编码会自动解码;