隐藏在 URL Credentials 中的 Payload:一种被忽视的 Web 绕过路径
1660635394122871 发表于 广东 WEB安全 255浏览 · 2025-06-09 15:35

一、URL Credentials 原理深度解析

HTTP URL 标准结构:

Plain Text
复制代码
这段结构的作用在现代 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字段中,这些数据在携带上访问浏览器时并不会看到,服务端可能通常也不会获取注意到,但可以用于做DOMXSS 、混淆日志、绕过 WAF、欺骗 SSRF 验证。

例如

Plain Text
复制代码
输入在浏览器时,基本隐匿且从location中无法获取到

image.png


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

image.png


例如:


对于浏览器、真实请求而言,请求的是 evil.com

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

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

三、DOM XSS 绕过

目标站点配置:

云 WAF 开启;

拦截规则含:<script>, javascript:, onload, alert( 等关键词;

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

🚫 阻断 Payload:

403 Forbidden

✅ 绕过 Payload(核心):


成功跳转

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

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

更进一步的攻击方式:

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

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

目标场景:

攻击者构造:

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

结果:

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

白名单校验误判为合法

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

五、日志注入与反欺骗

攻击者通过构造如下 URL:


系统日志会记录 https://admin:admin123@evil.com

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

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

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

层级
建议
应用层
显式禁止含 @ 的 URL 外链或重定向,统一做 URL.normalize() 处理
后端解析
使用现代标准库:Python 3.9+ urllib.parse, Java URI 不带 Legacy 模式
SSRF防御
在解析 Host 后做 DNS 解析 + IP 白名单验证,不能依赖前缀判断
WAF策略
对 @ 前后部分均做关键词检测;配置基于字段结构识别
日志系统
不记录 username:password 部分,或统一使用掩码 ***:***@

七、扩展探讨攻击链

假设目标存在如下组合:

SSRF 接口 /?url=...

DOM 拼接触发跳转

站点部署了主流云 WAF

构造攻击链如下:


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

2 WAF 不拦截 @ 前 XSS Payload

3页面跳转拼接触发 XSS

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

八、总结语句

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

0 条评论
某人
表情
可输入 255