hacktricks/pentesting-web/reset-password.md

230 lines
14 KiB
Markdown
Raw Normal View History

# パスワードリセット/忘れたパスワードのバイパス
2022-04-28 16:01:33 +00:00
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (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 Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
2022-04-28 16:01:33 +00:00
<details>
2022-04-28 16:01:33 +00:00
<summary>HackTricksをサポートする</summary>
2022-04-28 16:01:33 +00:00
* [**サブスクリプションプラン**](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を送信してください。**
2022-04-28 16:01:33 +00:00
</details>
{% endhint %}
2022-10-27 23:22:18 +00:00
<figure><img src="../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure>
2023-02-27 09:28:45 +00:00
経験豊富なハッカーやバグバウンティハンターとコミュニケーションを取るために、[**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy)サーバーに参加してください!
2023-02-27 09:28:45 +00:00
**ハッキングの洞察**\
ハッキングのスリルと課題に深く掘り下げたコンテンツに参加する
2023-02-27 09:28:45 +00:00
**リアルタイムハックニュース**\
リアルタイムのニュースと洞察を通じて、急速に変化するハッキングの世界に遅れずについていく
**最新の発表**\
新しいバグバウンティの開始や重要なプラットフォームの更新について情報を得る
**[**Discord**](https://discord.com/invite/N3FrSbmwdy)に参加して、今日からトップハッカーとコラボレーションを始めましょう!**
## **リファラー経由のパスワードリセットトークンの漏洩**
* HTTPリファラーヘッダーは、URLに含まれている場合、パスワードリセットトークンを漏洩させる可能性があります。これは、ユーザーがパスワードリセットをリクエストした後にサードパーティのウェブサイトリンクをクリックしたときに発生する可能性があります。
* **影響**クロスサイトリクエストフォージェリCSRF攻撃によるアカウントの乗っ取りの可能性。
* **悪用**:リファラーヘッダーにパスワードリセットトークンが漏洩しているかどうかを確認するには、**パスワードリセットを**自分のメールアドレスにリクエストし、提供された**リセットリンクをクリック**します。**すぐにパスワードを変更しないでください**。代わりに、**Burp Suiteを使用してリクエストを傍受しながら**、**サードパーティのウェブサイト**FacebookやTwitterなどに移動します。リクエストを検査して、**リファラーヘッダーにパスワードリセットトークンが含まれているかどうか**を確認します。これにより、第三者に機密情報が露出する可能性があります。
* **参考文献**
* [HackerOneレポート342693](https://hackerone.com/reports/342693)
* [HackerOneレポート272379](https://hackerone.com/reports/272379)
* [パスワードリセットトークン漏洩に関する記事](https://medium.com/@rubiojhayz1234/toyotas-password-reset-token-and-email-address-leak-via-referer-header-b0ede6507c6a)
## **パスワードリセットのポイズニング**
* 攻撃者は、パスワードリセットリクエスト中にHostヘッダーを操作して、リセットリンクを悪意のあるサイトに指し示すことがあります。
* **影響**:リセットトークンが攻撃者に漏洩することによるアカウントの乗っ取りの可能性。
* **緩和策**
* 許可されたドメインのホワイトリストに対してHostヘッダーを検証します。
* 絶対URLを生成するために、安全なサーバーサイドの方法を使用します。
* **パッチ**`$_SERVER['HTTP_HOST']`の代わりに`$_SERVER['SERVER_NAME']`を使用してパスワードリセットURLを構築します。
* **参考文献**
* [パスワードリセットポイズニングに関するAcunetixの記事](https://www.acunetix.com/blog/articles/password-reset-poisoning/)
## **メールパラメータを操作してのパスワードリセット**
攻撃者は、リセットリンクを誘導するために追加のメールパラメータを追加することで、パスワードリセットリクエストを操作できます。
* 攻撃者のメールを第二のパラメータとして追加するには、&を使用します。
```php
POST /resetPassword
[...]
email=victim@email.com&email=attacker@email.com
```
* 攻撃者のメールアドレスを2番目のパラメータとして%20を使用して追加する
```php
POST /resetPassword
[...]
email=victim@email.com%20email=attacker@email.com
```
* 攻撃者のメールアドレスを第二のパラメータとして | を使用して追加します。
```php
POST /resetPassword
[...]
email=victim@email.com|email=attacker@email.com
```
* ccを使用して攻撃者のメールアドレスを第二のパラメータとして追加する
```php
POST /resetPassword
[...]
email="victim@mail.tld%0a%0dcc:attacker@mail.tld"
```
* BCCを使用して攻撃者のメールを2番目のパラメータとして追加する
```php
POST /resetPassword
[...]
email="victim@mail.tld%0a%0dbcc:attacker@mail.tld"
```
* 攻撃者のメールアドレスを2番目のパラメータとして追加するには、
```php
POST /resetPassword
[...]
email="victim@mail.tld",email="attacker@mail.tld"
```
* JSON配列の2番目のパラメータとして攻撃者のメールアドレスを追加する
```php
POST /resetPassword
[...]
{"email":["victim@mail.tld","atracker@mail.tld"]}
```
* **緩和手順**:
* サーバー側でメールパラメータを適切に解析および検証する。
* インジェクション攻撃を防ぐために、プリペアードステートメントまたはパラメータ化クエリを使用する。
* **参考文献**:
* [https://medium.com/@0xankush/readme-com-account-takeover-bugbounty-fulldisclosure-a36ddbe915be](https://medium.com/@0xankush/readme-com-account-takeover-bugbounty-fulldisclosure-a36ddbe915be)
* [https://ninadmathpati.com/2019/08/17/how-i-was-able-to-earn-1000-with-just-10-minutes-of-bug-bounty/](https://ninadmathpati.com/2019/08/17/how-i-was-able-to-earn-1000-with-just-10-minutes-of-bug-bounty/)
* [https://twitter.com/HusseiN98D/status/1254888748216655872](https://twitter.com/HusseiN98D/status/1254888748216655872)
## **APIパラメータを通じて任意のユーザーのメールとパスワードを変更する**
* 攻撃者はAPIリクエスト内のメールおよびパスワードパラメータを変更してアカウントの資格情報を変更できます。
```php
POST /api/changepass
[...]
("form": {"email":"victim@email.tld","password":"12345678"})
```
* **緩和手段**:
* 厳格なパラメータ検証と認証チェックを確保する。
* 不審な活動を検出し対応するために、堅牢なログ記録と監視を実装する。
* **参考文献**:
* [APIパラメータ操作による完全アカウント乗っ取り](https://medium.com/@adeshkolte/full-account-takeover-changing-email-and-password-of-any-user-through-api-parameters-3d527ab27240)
## **レート制限なし: メールボンバリング**
* パスワードリセットリクエストに対するレート制限がないと、メールボンバリングが発生し、ユーザーがリセットメールで圧倒される可能性がある。
* **緩和手段**:
* IPアドレスまたはユーザーアカウントに基づいてレート制限を実装する。
* 自動化された悪用を防ぐためにCAPTCHAチャレンジを使用する。
* **参考文献**:
* [HackerOneレポート280534](https://hackerone.com/reports/280534)
## **パスワードリセットトークンの生成方法を調べる**
* トークン生成のパターンや方法を理解することで、トークンを予測したりブルートフォース攻撃を行ったりできる。いくつかのオプション:
* タイムスタンプに基づく
* ユーザーIDに基づく
* ユーザーのメールに基づく
* 名と姓に基づく
* 生年月日に基づく
* 暗号学に基づく
* **緩和手段**:
* トークン生成に強力な暗号化手法を使用する。
* 予測可能性を防ぐために十分なランダム性と長さを確保する。
* **ツール**: Burp Sequencerを使用してトークンのランダム性を分析する。
## **推測可能なUUID**
* UUIDバージョン1が推測可能または予測可能な場合、攻撃者はそれをブルートフォースして有効なリセットトークンを生成する可能性がある。確認する:
{% content-ref url="uuid-insecurities.md" %}
[uuid-insecurities.md](uuid-insecurities.md)
{% endcontent-ref %}
* **緩和手段**:
* ランダム性のためにGUIDバージョン4を使用するか、他のバージョンに対して追加のセキュリティ対策を実装する。
* **ツール**: [guidtool](https://github.com/intruder-io/guidtool)を使用してGUIDを分析および生成する。
## **レスポンス操作: 悪いレスポンスを良いものに置き換える**
* エラーメッセージや制限を回避するためにHTTPレスポンスを操作する。
* **緩和手段**:
* レスポンスの整合性を確保するためにサーバー側のチェックを実装する。
* 中間者攻撃を防ぐためにHTTPSのような安全な通信チャネルを使用する。
* **参考文献**:
* [ライブバグバウンティイベントの重大なバグ](https://medium.com/@innocenthacker/how-i-found-the-most-critical-bug-in-live-bug-bounty-event-7a88b3aa97b3)
## **期限切れトークンの使用**
* 期限切れのトークンがパスワードリセットにまだ使用できるかどうかをテストする。
* **緩和手段**:
* 厳格なトークンの有効期限ポリシーを実装し、サーバー側でトークンの有効期限を検証する。
## **ブルートフォースパスワードリセットトークン**
* BurpsuiteやIP-Rotatorのようなツールを使用してリセットトークンをブルートフォースし、IPベースのレート制限を回避しようとする。
* **緩和手段**:
* 堅牢なレート制限とアカウントロックアウトメカニズムを実装する。
* ブルートフォース攻撃を示す不審な活動を監視する。
## **トークンを使用してみる**
* 攻撃者のリセットトークンが被害者のメールと一緒に使用できるかどうかをテストする。
* **緩和手段**:
* トークンがユーザーセッションまたは他のユーザー固有の属性にバインドされていることを確認する。
## **ログアウト/パスワードリセット時のセッション無効化**
* ユーザーがログアウトまたはパスワードをリセットしたときにセッションが無効化されることを確認する。
* **緩和手段**:
* 適切なセッション管理を実装し、ログアウトまたはパスワードリセット時にすべてのセッションが無効化されることを確保する。
## **ログアウト/パスワードリセット時のセッション無効化**
* リセットトークンには、有効期限が設定され、その後無効になるべきである。
* **緩和手段**:
* リセットトークンの合理的な有効期限を設定し、サーバー側で厳格に施行する。
## 参考文献
* [https://anugrahsr.github.io/posts/10-Password-reset-flaws/#10-try-using-your-token](https://anugrahsr.github.io/posts/10-Password-reset-flaws/#10-try-using-your-token)
<figure><img src="../.gitbook/assets/image (380).png" alt=""><figcaption></figcaption></figure>
経験豊富なハッカーやバグバウンティハンターとコミュニケーションを取るために[**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy)サーバーに参加してください!
**ハッキングの洞察**\
ハッキングのスリルと課題に深く掘り下げたコンテンツに参加する
**リアルタイムハックニュース**\
リアルタイムのニュースと洞察を通じて、急速に進化するハッキングの世界に遅れずについていく
**最新の発表**\
新しいバグバウンティの開始や重要なプラットフォームの更新について情報を得る
今日、[**Discord**](https://discord.com/invite/N3FrSbmwdy)で私たちに参加し、トップハッカーとコラボレーションを始めましょう!
{% hint style="success" %}
AWSハッキングを学び、実践する:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (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 Training GCP Red Team Expert (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)または[**テレグラムグループ**](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 %}