赞
踩
点击劫持是一种视觉上的欺骗手段。攻击者用一个透明的、不可见的iframe,覆盖在一个网页上,诱使用户在该网页上进行操作,使用户在不知情的情况下点击透明的iframe页面。通过调整iframe页面的位置,可以使用户恰好点击在iframe的一些功能性按钮上。
通俗的讲,就是你在点击一个“网页”的某个位置时,很可能是点击了隐藏在页面下的某个按钮,从而达到了黑客的某些目的,这对用户来说是不可见的。
相对于XSS和CSRF,需要与用户进行交互,实施攻击的成本较高,在网络犯罪中比较少见。但未来仍可能被利用于钓鱼、欺诈和广告作弊等方面。
一个案例:攻击者通过Flash制作出了一个游戏,让用户去点击“Click”按钮,每次点击之后这个按钮的位置就会发生变化,实际上页面下隐藏了一个看不见的iframe,诱导用户去点击该隐藏页面中的某些位置,从而完成一系列复杂的操作,最终控制了用户电脑的摄像头。
一位叫sven.vetsch的安全研究者最先提出了这种Cross Site Image Overlaying攻击,简称XSIO。不同于XSS,它利用的是图片的style,或者能够控制CSS。如果应用没有限制style的position为absolute的话,图片就可以覆盖到页面上的任意位置,形成点击劫持。
例如某网站的logo图片被覆盖了,并且新的图片只想某个黑客设定的网站,如果用户点击了logo图片,就会被链接到黑客设定的网站。
图片还可以 伪装的像一个正常的链接、按钮,或者在图片中构造一些文字,覆盖在关键位置,就有可能完全改变页面中想表达的意思,这种情况下,无需用户点击,也能达到欺骗的目的。
目前很多浏览器都开始支持Drag&Drop 的API。对于用户来说,拖拽更为方便。拖拽对象可以是一个链接、一段文字、或者从一个窗口拖到另一个窗口,因此拖拽是不受同源策略限制的。
拖拽劫持的思路是诱使用户从隐藏的iframe中拖拽出攻击者希望得到的数据,然后放到攻击者能够控制的另一个页面中,从而窃取数据。
一次触屏操作,可能会对应以下几个事件:
(1)touchstart:手指触摸屏幕时发生
(2)touchend:手指离开屏幕时发生
(3)touchmove:手指滑动时发生
(4)touchcancel:系统可以取消touch事件
通过将一个不可见的iframe隐藏到当前网页上,就可以劫持用户的触屏操作。尤其是手机浏览器为了节约空间,会隐藏地址栏,导致欺骗更容易实施。
针对传统的ClickJacking一般是通过禁止跨域的iframe来防范。
写一段Javascript代码禁止iframe的嵌套,比如:
- if (top.location != location){
- top.location=self.location;
- }
但由于Javascript的控制能力不强,可以利用下面的代码绕过上面的保护代码。
- Attacker top frame:
- <iframe src="attacker2 .html">
- Attacker sub-frame:
- <iframe src="http://www.victim.com">
此外,像HTML5中iframe的sandbox属性、IE中iframe的security属性等,都可以限制iframe页面中的Javascript脚本运行,从而使frame busting失效。
目前有以下浏览器支持X-Frame-Options:
(1)IE 8+
(2)Opera 10.50+
(3)Safari 4+
(4)Chrome 4.1.249.1042+
(5)Firefox 3.6.9(or earlier with NoScript)
它有三个可选的值:
(1)DENY
(2)SAMEORIGIN
(3)ALLOW-FROM origin
当值为DENY时,浏览器会拒绝当前页面加载任何的frame页面
当值为SAMEORIGIN时,则frame页面的地址只能为同源域名下的页面
当值为ALLOW-FROM origin时,则可以定义允许frame加载的页面地址
除了X-Frame-Options之外,Firefox的“Content Security Policy”以及Firefox的NoScript扩展也能够有效防御Click Jacking。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。