点击劫持(ClickJacking)的小科普
点击劫持是一种视觉上的欺骗手段。攻击者使用一个透明的、不可见的iframe,覆盖在一个网页上,然后诱使用户在该网页上进行操作,此时用户将在 不知情 的情况下点击透明的iframe页面。通过调整iframe页面的位置,可以诱使用户恰好点击在iframe页面的一些功能性按钮上。
在这个test.html中有一个button,如果iframe完全透明时,那么用户看到的是:
![]() |
用户看到的按钮 |
当iframe半透明时,可以看到,在button上面其实覆盖了另一个网页:
![]() |
实际的页面,按钮上隐藏了一个iframe窗口 |
覆盖的网页其实是一个搜索按钮:
![]() |
隐藏的iframe窗口的内容 |
当用户试图点击test.html里的button时,实际上却会点击到iframe页面中的搜索按钮。这样,就完成了一次点击劫持的攻击。
下面来看一个更为严重的ClickJacking攻击案例。攻击者通过Flash构造出了点击劫持,在完成一系列复杂的动作后,最终控制了用户电脑的摄像头。
目前Adobe公司已经在Flash中修补了此漏洞。攻击过程如下:
首先,攻击者制作了一个Flash游戏,并诱使用户来玩这个游戏。这个游戏就是让用户去点击”CLICK”按钮,每次点击后这个按钮的位置都会发生变化。
![]() |
演示点击劫持的Flash游戏 |
在其上隐藏了一个看不见的iframe:
![]() |
Flash上隐藏的iframe窗口 |
游戏中的某些点击是有意义的,某些点击是无效的。攻击通过诱导用户鼠标点击的位置,能够完成一些较为复杂的流程。
![]() |
某些点击是无意义的 |
![]() |
某些点击是有意义的 |
最终通过这一步步的操作,打开了用户的摄像头。
![]() |
通过点击劫持打开了摄像头 |
相关技术参考文章:《基于QtWebKit的DOM XSS检测技术》《CSRF漏洞详细说明》
浅谈clickjacking
今天在刺牛的博客上看到两篇文章:《OWASP会议上的Clickjacking》 《Clickjacking太猥琐了》
文章中说明了clickjacking是咋回事。
1、表现为点击某个链接或button时,实际上是点击到别的地方去了(劫持链接)
2、不一定需要javascript,所以noscript也挡不住,但是如果有javascript会让事情更简单
3、攻击是基于DHTML的
4、使用lynx浏览器的话,不会受到影响(因为这玩意太简陋了)
5、需要攻击者一定程度上控制页面
6、如果禁用iframe的话,可以防止跨域的clickjacking
7、在一个flash游戏中点击的话(一般会有大量鼠标点击),效果会更好(估计adobe公司担心的这个?)
这几篇日志也都有众多大牛评论。俺看了一下,也有点自己想法,还望各位不要喷我,有什么错误也可以指出来,一起讨论。
我们可以看到一些文章中在建立iframe的时候使用的代码是如下所示的:
<iframe id="test" src="http://www.91ri.org/ team.htm" scrolling="no" style="opacity: 0;position: 10;bottom: 10;" width="100px;"></iframe>
如图所示:
这是一个透明的框架。
在梦之光芒大牛的博客中有关于clickjacking猜想的文章,对这个有说明,这里我就不提了。
其实我这里主要是想到是把clickjacking用到挂马中来。
一些朋友挂马习惯用框架挂马,把框架大小设置为0*0之类的,或者使用JS脚本来挂马,这里用clickjacking来挂马也是不错的。
比如一些朋友有时候上一些*网,发现真讨厌,有些*网有时候利用代码出现一些图片伴随着鼠标。
其实我们也可以利用相关代码来让这个隐藏的框架跟随鼠标。这样用户在点击一个链接时候,clickjacking触发,用户会被带到指定的网站。代码如下:
window.captureEvents(Event.MOUSEMOVE) window.onmousemove=
看了这篇文章还没有理解具体含义的同学,可以参考:《点击劫持(ClickJacking)的小科普》
转载请注明:jinglingshu的博客 » 点击劫持(ClickJacking)