【翻译】在 URL 凭证中隐藏有效载荷

admin 2025年4月15日09:55:31评论6 views字数 1513阅读5分2秒阅读模式
【翻译】在 URL 凭证中隐藏有效载荷

去年, Johan Carlsson 发现可以 将有效载荷隐藏在 URL 的凭证部分中 。这对我来说非常有趣,尤其是因为有效载荷实际上在 Chrome 和 Firefox 的 URL 中是不可见的。这甚至在同源导航中也能持续存在。所以,就像狗咬住骨头一样,我不会放手,并试图看看有什么可能……

令我惊讶的第一件事是 document.URL 并不总是与位置匹配。

https://foo:bar@portswigger-labs.netalert(location);//https://portswigger-labs.net/alert(document.URL);//https://foo:[email protected]

我曾假设这两个属性是相同的,因为我从未发现它们有区别,但事实证明 document.URL 包含 URL 的凭据部分,而 location 不包含。这意味着您可以在事件中使用 URL 从凭据中获取有效负载:

https://alert(1)@portswigger-labs.net<img src onerror=alert(URL.slice(8,16))>

从凭证中获取有效载荷

在通过模糊测试确定 URL 的凭证部分中编码了哪些字符 后,Shazzer 发现 Firefox 不会对单引号进行 URL 编码。如果网站删除了查询字符串和哈希,这在DOM XSS场景中特别有用。因为它使 Firefox 中的此类漏洞可被利用:

function getBase(url) {  return url.split(/[?#]/)[0];}document.write(`<script>const url='${getBase(document.URL)}';</script>`); 

要利用这一点,你需要在 Firefox 的凭证部分提供有效负载,如下所示:

https://'-alert(1)-'@example.com

这可以通过重定向或用户导航来实现。您甚至可以使用此技术来控制锚链接的用户名或密码属性。这是可行的,因为每个锚元素都有这些属性,它们存储来自 URL 的凭据。如果是相对链接,它会继承父级凭据,允许您破坏这些值:

https://[email protected]<a href=# onclick=alert(username)>test</a> 

锚点破坏示例

您可以将其与DOM Clobbering结合使用,以便控制具有用户名或密码属性的对象。请注意,您甚至可以提供一个空白的 href,这样仍然可以通过 URL 控制用户名或密码。

 https://user:[email protected]<a href id=x>test</a><script>eval(x.username)//usereval(x.password)//pass</script> 

总之,发现 location 和 document.URL 之间的差异以及 document.URL 如何保留 URL 的凭据部分(即使 Chrome 和 Firefox 等浏览器将其隐藏在地址栏中)是相当令人惊讶的。Firefox 对某些未经 URL 编码的字符(例如单引号)的处理也可能对 DOM XSS 有用。

通过凭证隐藏有效载荷、操纵锚元素内的用户名和密码属性以及可能将其与 DOM 破坏相结合的能力可用于更高级的利用。

注意: Safari 会丢弃 URL 凭据。所有示例仅适用于 Chrome 和 Firefox。此外,Chrome 还会阻止子资源使用 URL 凭据。

免费网络安全资料PDF大合集

链接:https://pan.quark.cn/s/41b02efa09e6

【翻译】在 URL 凭证中隐藏有效载荷

原文始发于微信公众号(安全视安):【翻译】在 URL 凭证中隐藏有效载荷

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年4月15日09:55:31
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【翻译】在 URL 凭证中隐藏有效载荷https://cn-sec.com/archives/3957134.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息