关于利用webrtc获取内网其他主机站点信息(favi

  • A+
所属分类:WooYun-Zone

之前在http://zone.wooyun.org/content/25925就说了一些思路,获取内网中其他主机的CMS信息,在http://zone.wooyun.org/content/25925一文说我提到的思路是使用xss+iframe+canvas,但是@超威蓝猫 说到canvas无法截取到iframe里的内容,后来我上网查后,确实如此(基础不牢的结果)。后来我又有了一个新的思路,使用<img src=”https://xxx.xxx.xxx.xxx/favico.ico” />来获取网站的cms信息,因为不同的cms他们的ico图标也是不一样的,把img发送到服务器端后,就可以识别网站属于哪种cms类型了。但是后来和伟哥 @呆子不开口 讨论了几个小时,发现忽略了一个重要的问题,怎么把img发送到远程服务器,img图片地址不是同源的,而且怎么把图片使用JavaScript转成二进制数据。这个思路又断了。伟哥提到一个很nice的解决方案,检测js脚本,也就是<script src=”http://xxx.xxx.xxx.xxx/path/cms.js” onload=”xxx(this)”></script>这样的话,我就需要大量cms独立的js文件位置。工作量大。我本来都打算使用这个了,但是前几天闲的无聊翻自己的QQ日志时,发现了一段代码:

document.addEventListener("visibilitychange", function() {

  document.title = document.hidden ? '跑个蛋,回来' : '哟呵,真回来了';

});

这是HTML5推出的API,我发现我可以利用这个API来达到神不知鬼不觉的上传图片。首先当用户切换到其他浏览器标签的时候,document.hidden会为true。那么我们就可以确定用户没有访问我们XSS的网页。那么我们干什么用户都不会发现了。大致的思路如下:

document.addEventListener("visibilitychange", function() {

  if(document.hidden){

    var htmlText = $("body").html();

    $("body").empty();

    $("body").append("<img src='http://xxx.xxx.xxx.xxx/favico.ico' />");

    //canvas获取页面,懒得写,请移步:http://leobluewing.iteye.com/blog/2020145

  }else{

    $("body").empty();

    $("body").append(htmlText);

  }

});

大致思路就是这样,其中代码写的比较狗屎,看懂思路就行了。

  1. 1#

    /fd (Http://prompt.ml) | 2016-03-26 03:30

    webrtc在哪裡?

  2. 2#

    Black_Hole (暂无) | 2016-03-26 03:31

    使用html2canvas 截取iframe中页面:http://www.qkeye.com/blog-12-22481.html
    必须是同源,不然contentWindow.document无法使用

  3. 3#

    Black_Hole (暂无) | 2016-03-26 03:35

    @/fd 利用XSS来存放webrtc代码。移步到http://zone.wooyun.org/content/25925,看完之前说的,就能明白了。语言表达能力不强。

  4. 4#

    0xCCCC | 2016-03-26 09:00

    你真的测试过了么?

    html2canvas 本质上也要遵循基本法(同源策略),即使是跨域也是 CORS 资源 (https://github.com/niklasvh/html2canvas/blob/master/src/imagecontainer.js)

    也就是说,html2canvas 能渲染出的图片,你自己写一个顶多十来行的代码,new Image 加载,然后绘制到 canvas,最后 canvas.toDataURL 就可以得到 base64 编码的图片信息,随便 GET/POST 到远程服务器就完事了

  5. 5#

    ChaMd5_M (http://www.chamd5.org) | 2016-03-26 17:39

    大表哥顶下

  6. 6#

    vc1 | 2016-04-01 11:21

    顶4#

  7. 7#

    数据流 | 2016-04-01 12:43

    html2canvas不能截取img吧??html2canvas也会遵循SOP啊 只能截到同源的资源

  8. 8#

    Black_Hole (暂无) | 2016-04-01 13:19

    @数据流
    限制
    所有的图片都需要在当前域下,这样Html2canvas才能不通过代理去读取到。同样地,如果你的页面上有其他的被跨域内容污染的canvas元素,html2canvas将不能准确渲染下来。
    html2canvas不会渲染插件内容:Flash,Java组件,和iframe页面的内容。
    是我疏忽了

  9. 9#

    数据流 | 2016-04-01 13:44

    @Black_Hole 是的 所有跨域资源 Html2canvas都不会去渲染 直接略过这部分