什么是跨站脚本(XSS)?
跨站脚本(也称为 XSS)是一种 Web 安全漏洞,允许攻击者将恶意代码注入易受攻击的 Web 应用程序中。
XSS 攻击主要分为三种类型。这些都是:
- 反射型XSS:恶意脚本来自当前的HTTP请求。
- 存储型 XSS:恶意脚本来自网站的数据库。
- 基于 DOM 的 XSS:漏洞存在于客户端代码而不是服务器端代码中。
什么是 HTTP 参数污染 (HPP)?
HTTP 参数污染,顾名思义,污染 Web 应用程序的 HTTP 参数,以便执行或实现与 Web 应用程序的预期行为不同的特定恶意任务/攻击。***
现在让我们开始……
在 Hackerone 和 Bugcrowd 的程序中呆了几天之后。我在这些程序上发现了一些漏洞,例如 CSRF 和业务逻辑缺陷。但是,我的所有报告都收到了副本。然后,我心想,这次去寻找一些VDP程序吧。
因此,我开始寻找VDP 程序中的一些错误。经过 2-3 小时的搜寻,我发现一个域在 URL 中使用回调参数将用户重定向到另一个子域。
而且,我不能透露目标的名字。因此,我们假设目标是site.com。而且,URL 看起来像这样:
https://site.com/out?callback=https://subdomain.site.com
而且,如果我打开上面的链接。然后,它会将我重定向到subdomain.site.com
.
因此,在看到此重定向后,我尝试使用 https://bing.com 更改回调参数的值。因为我想确认一下,该网站是否正在进行任何类型的验证。如果网站正在进行验证或重定向仅允许 site.com 的子域,则该网站可能不易受到开放重定向的影响。而且,如果网站没有进行任何类型的验证,那么该网站就容易受到攻击。
并且,在更改回调参数的值之后。现在,URL 看起来像这样:
https://site.com/out?callback=https://bing.com
而且,如果我打开上面的链接。然后,它还会将我重定向到 bing.com。这意味着该网站没有进行任何类型的验证,并且很容易受到开放重定向的影响。但是,在 Burpsuite 中看到它的响应后。我认为,也许这对于跨站点脚本来说也很容易受到攻击,因为回调参数的值也会反射回响应中。
因此,首先,我尝试破坏代码,因为该值反映在脚本标记中。对于,打破变量callbackUrl,我简单地放入anything%22;
回调参数。但是,发送此请求后,我收到一个错误,阻止了我的请求。而且,对于其他一些值,我也遇到了相同的错误[like ‘,”]
。
现在,我只有两个选择:
- 第一个选项是将此问题报告为开放重定向。
- 第二种选择是寻找绕过 XSS 的方法。
然后,我记得几周前,我观看了Pwnfunction关于HTTP参数污染的视频。因此,我选择第二个选项是寻找绕过 XSS 的方法。而且,我在 URL 中又添加了一个回调参数,用于进行参数污染攻击。现在,URL 看起来像这样:
https://site.com/out?callback=anything&callback=random
而且,我注意到如果我在 URL 中添加两个相同的参数。然后,我将获取响应中用逗号分隔的两个参数的值。
[like ‘,”]
而且,您还知道,当我使用当时的值时,我收到了一个阻止我的请求的错误。但现在,我有两个相同的参数。
于是,我再次尝试破坏变量callbackUrl。但这一次,我放入%22;something%2f%2f
了第二个回调参数。添加值后,现在 URL 如下所示:
https://site.com/out?callback=anything&callback=%22;something%2f%2f
而且,它有效,我能够破解代码或绕过过滤器。这意味着网站没有对第二个回调参数进行任何验证。
这次,为了获取 XSS 警报,我输入%22;alert%281%29;%2f%2f
了第二个回调参数。现在,URL 看起来像这样:
https://site.com/out?callback=anything&callback=%22;alert%281%29;%2f%2f
再次,该网站阻止了我使用括号的请求。所以,我用 替换了括号URL encoded or ``
。但我仍然收到错误。因为网站还在对所有参数做一些验证。
然后,我再次使用``
URL 编码(例如%60%60
:)。最后,我成功绕过了过滤器。并且,最终 URL 如下所示:
https://site.com/out?callback=anything&callback=%22;alert%60XSS_POC_BY_SAAJAN_BHUJEL%60;%2f%2f
现在,我可以成功绕过过滤器并通过参数污染执行 XSS。而且,就我而言,我可以[like ‘,”]
通过参数污染攻击绕过某些值的某些过滤器。
提示:-如果您发现您的目标正在对参数进行某种验证检查。然后,尝试添加一个或多个相同的参数。要查看网站响应的任何变化,也许您可以绕过验证检查。
感谢您阅读此博客,希望您能学到一些东西。
来源:https://saajan.bhujel.cyou/blog/web/2021-05-05-xss-through-parameter-pollution