正文部分
常见的两种登录校验模式(仅限于cookie)
绑定模式
首先前端通过js设置了一个sessionid,当用户进行登录后,会将其数据核sessionid进行绑定,后续的访问全都通过sessionid进行鉴权
例如:下面只是做一些登录机制的演示,平台并不存在漏洞,请不要进行非法测试
这里在发送登录请求的时候是将SESSIONID通过cookie字段进行发送,登录成功后,将数据和该SESSIONID进行了绑定,后续访问需要授权的资源直接使用SEESIONID=fkalis进行访问即可
返回模式
前端不会设置sessionid,当用户登录后,后端校验完毕,使用Set-Cookie请求头设置一个sessionid,后续的访问全部通过该设置的sessionid进行鉴权
这里在发送登录请求的时候没有携带SESSIONID,当登录成功后,后端会返回随机的cookie,并且使用Set-Cookie进行设置
理解漏洞产生的场景
对于上述两种模式中,一般只有第一种满足使用cookie溢出+xss实现任意用户接管,只有当SESSIONID在前端进行设置的时候,如果存在xss,我们就可以使用该方法进一步提升漏洞的危害!
HttpOnly的作用
当httponly字段存在,该cookie参数就无法通过js进行获取,所以就无法通过xss来获取到鉴权的键值对,导致无法接管
什么是 Cookie Jar 溢出攻击
Cookie Jar 溢出攻击利用浏览器强制执行的有限 Cookie 存储容量,尤其是在 Chrome 中。浏览器只能为每个域存储一定数量的 Cookie。这种攻击的工作原理是淹没浏览器的 cookie 存储,强制驱逐(删除)旧 cookie 为新 cookie 腾出空间。
此攻击的目标是驱逐关键 Cookie,例如 PHPSESSID,它保存用户的会话 ID,并将其替换为攻击者控制的会话 ID。一旦合法会话 cookie 消失,用户就会有效地从其有效会话中注销,攻击者的会话 ID 将取而代之,从而使攻击者能够完全控制用户的会话。
当与 XSS(跨站点脚本)结合使用时,这种攻击变得更加强大。使用 XSS,攻击者可以在受害者的浏览器中运行恶意 JavaScript 代码,从而自动溢出 cookie。JavaScript 会快速创建新的 Cookie,直到浏览器的 Cookie jar 已满,从而强制驱逐 PHPSESSID 等合法 Cookie,并将其替换为预定义的恶意会话 ID。
这种攻击最令人担忧的方面之一是,即使在现代版本的 Chrome 中 — 无论底层操作系统如何 — 您都可以覆盖设置了 HttpOnly 标志的 cookie。这意味着,即使是旨在防止 JavaScript 访问的 Cookie,也可以通过溢出来逐出和替换,从而使 HttpOnly 标志在这种情况下无效。
XSS + Cookie Jar 溢出攻击流程
1.通过xss构造poc实现cookie溢出,诱导管理员点击,
2.管理员点击后,导致当前cookie被从浏览器缓存中进行删除,管理员退出登录,并且将当前浏览器的cookie设置为了注入的cookie值
3.管理员再次登录时候会携带我们注入的cookie值,并且登录成功后会将数据和cookie值进行绑定
4.由于我们事先就知道这个cookie值,使用注入的cookie值实现接管
漏洞复现
案例参考:Akash c
漏洞poc
<img src="x" onerror="for(
let i=999;i--;)document.cookie=`c${i}=${i};Secure`;document.cookie='PHPSESSID=x';">
- 第 1 步:损坏的图像 触发了执行 JavaScript 的
onerror
事件。 - 第 2 步:该脚本快速创建了 999 个 cookie,其名称为
c0``c1``c2``c998``Secure
...一直到 .每个 cookie 都被标记为并填充了浏览器的 cookie jar。 - 第 3 步:一旦 cookie jar 装满,合法的 cookie 就会由于溢出而从浏览器的存储中被驱逐。
- 第 4 步:然后,脚本注入我自己的会话 ID
PHPSESSID=x
,将合法会话 ID 替换为由我控制的会话 ID。
管理员点击后会进行退出登录
一旦合法会话 cookie 被驱逐并替换为我的攻击者控制的会话 ID,受害者基本上就被注销了。
再次登录会携带我们注入的cookie
当他们再次登录时,他们使用我的会话 ID 进行身份验证。
通过cookie实现任意用户接管
这意味着我现在可以访问他们的会话并控制他们的帐户,而无需他们的密码或凭证。此外,我使用注入的会话 Cookie 生成了私有 API 密钥,如下所示。
知识星球
原文始发于微信公众号(fkalis):【海外SRC赏金挖掘】在HttpOnly存在的情况下,XSS如何实现任意用户接管--XSS结合Cookie溢出实现任意用户接管
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论