hacktricks/pentesting-web/idor.md

147 lines
12 KiB
Markdown
Raw Normal View History

2022-04-28 16:01:33 +00:00
<details>
2023-04-25 18:35:28 +00:00
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
2022-04-28 16:01:33 +00:00
2023-07-07 23:42:27 +00:00
- **あなたはサイバーセキュリティ会社で働いていますか?** **HackTricksであなたの会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
2022-04-28 16:01:33 +00:00
2023-07-07 23:42:27 +00:00
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。
2022-04-28 16:01:33 +00:00
2023-07-07 23:42:27 +00:00
- [**公式のPEASSHackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。
2022-04-28 16:01:33 +00:00
2023-07-07 23:42:27 +00:00
- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
2022-04-28 16:01:33 +00:00
2023-07-07 23:42:27 +00:00
- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。**
2022-04-28 16:01:33 +00:00
</details>
2023-07-07 23:42:27 +00:00
**投稿元** [**https://medium.com/@vickieli/how-to-find-more-idors-ae2db67c9489**](https://medium.com/@vickieli/how-to-find-more-idors-ae2db67c9489)
2023-07-07 23:42:27 +00:00
# IDORを見つけるための予想外の場所 <a href="#8d15" id="8d15"></a>
2023-07-07 23:42:27 +00:00
## エンコードされたIDとハッシュ化されたIDを無視しないでください <a href="#d6ce" id="d6ce"></a>
2023-07-07 23:42:27 +00:00
エンコードされたIDがある場合、一般的なエンコーディング方式を使用してエンコードされたIDをデコードすることができるかもしれません。
2023-07-07 23:42:27 +00:00
そして、アプリケーションがハッシュ化/ランダム化されたIDを使用している場合、そのIDが予測可能かどうかを確認してください。アプリケーションが不十分なエントロピーを生成するアルゴリズムを使用している場合、慎重な分析の後、実際に予測できるIDが生成されることがあります。この場合、いくつかのアカウントを作成して、これらのIDがどのように作成されるかを分析してみてください。他のユーザーに属するIDを予測することができるパターンを見つけることができるかもしれません。
2023-07-07 23:42:27 +00:00
さらに、他のAPIエンドポイント、アプリケーション内の他の公開ページ他のユーザーのプロフィールページなど、またはリファラーを介したURLでランダムまたはハッシュ化されたIDを漏洩させることができるかもしれません。
2023-07-07 23:42:27 +00:00
例えば、私は以前、ハッシュ化された会話IDを介して詳細なダイレクトメッセージを取得することができるAPIエンドポイントを見つけました。リクエストは次のようになります
```
GET /api_v1/messages?conversation_id=SOME_RANDOM_ID
```
2023-07-07 23:42:27 +00:00
最初は問題なさそうです。なぜなら、_conversation\_id_は長いランダムな英数字のシーケンスだからです。しかし、後で気づいたのですが、実際にはユーザーIDを使用することで、各ユーザーの会話リストを見つけることができます
```
GET /api_v1/messages?user_id=ANOTHER_USERS_ID
```
2023-07-07 23:42:27 +00:00
これにより、そのユーザーに所属する_conversation\_ids_のリストが返されます。そして、_user\_id_は各ユーザーのプロフィールページで公開されています。したがって、ユーザーのプロフィールページで彼らの_user\_id_を取得し、それに所属する_conversation\_ids_のリストを取得し、最後にAPIエンドポイント/api\_v1/messagesを介してメッセージを読み込むことで、任意のユーザーのメッセージを読むことができます。
2023-07-07 23:42:27 +00:00
## 推測できない場合は、作成してみてください <a href="#b54f" id="b54f"></a>
2023-07-07 23:42:27 +00:00
オブジェクト参照IDが予測不能な場合、オブジェクトIDの作成またはリンクプロセスを操作できるかどうかを確認してください。
2023-07-07 23:42:27 +00:00
## アプリケーションにIDを提供する <a href="#9292" id="9292"></a>
2023-07-07 23:42:27 +00:00
アプリケーション生成のリクエストでIDが使用されていない場合、リクエストに追加してみてください。_id, user\_id, message\_id_または他のオブジェクト参照パラメータを追加して、アプリケーションの動作に違いがあるかどうかを確認してください。
2023-07-07 23:42:27 +00:00
例えば、このリクエストはすべてのダイレクトメッセージを表示します:
```
GET /api_v1/messages
```
2023-07-07 23:42:27 +00:00
これについてはどうですか?別のユーザーのメッセージが表示されますか?
```
GET /api_v1/messages?user_id=ANOTHER_USERS_ID
```
## HPPHTTPパラメータ汚染<a href="#cb9a" id="cb9a"></a>
2023-07-07 23:42:27 +00:00
HPPの脆弱性同じパラメータに複数の値を提供するもIDORにつながる可能性があります。アプリケーションは、ユーザーが同じパラメータに複数の値を送信することを予期していないかもしれません。そのようにすることで、エンドポイントに設定されたアクセス制御を回避することができるかもしれません。
2023-07-07 23:42:27 +00:00
これは珍しいことのように思われますし、私はこれが起こったことを見たことがありませんが、理論的には次のようになります。もし、このリクエストが失敗する場合:
```
GET /api_v1/messages?user_id=ANOTHER_USERS_ID
```
2023-07-07 23:42:27 +00:00
以下は、ハッキング技術に関する本の内容です。以下の内容は、/hive/hacktricks/pentesting-web/idor.mdというファイルからのものです。
2023-07-07 23:42:27 +00:00
## IDOR (Insecure Direct Object Reference)
2023-07-07 23:42:27 +00:00
IDORInsecure Direct Object Referenceは、アプリケーションのセキュリティ上の脆弱性の一つです。この脆弱性は、アプリケーションが直接オブジェクトへの参照を許可している場合に発生します。攻撃者は、他のユーザーのデータにアクセスしたり、機能を悪用したりすることができます。
2023-07-07 23:42:27 +00:00
### IDORの検出方法
2023-07-07 23:42:27 +00:00
IDORを検出するためには、以下の手法を使用することができます。
2023-07-07 23:42:27 +00:00
1. ユーザーのアカウントやデータに関連するIDを特定します。
2. ユーザーのIDを変更して、他のユーザーのデータにアクセスできるかどうかを確認します。
3. リクエストパラメータやURLのパスにIDを変更して、他のユーザーのデータにアクセスできるかどうかを確認します。
2023-07-07 23:42:27 +00:00
### IDORの悪用方法
IDORを悪用することで、以下のような攻撃が可能になります。
1. 他のユーザーの個人情報や機密データにアクセスする。
2. 他のユーザーのアカウントを操作したり、権限を昇格させたりする。
3. アプリケーションの機能を悪用して、不正な操作を行う。
### IDORの防止方法
IDORを防止するためには、以下の対策を実施することが重要です。
1. セッションやアクセス制御を適切に実装する。
2. ユーザーのデータへの直接参照を避ける。
3. ユーザーのアクセス権限を適切に管理する。
4. リクエストのバリデーションやエスケープ処理を行う。
以上がIDORに関する基本的な情報です。この脆弱性を理解し、適切な対策を実施することで、アプリケーションのセキュリティを向上させることができます。
```
GET /api_v1/messages?user_id=YOUR_USER_ID&user_id=ANOTHER_USERS_ID
```
2023-07-07 23:42:27 +00:00
または、これ:
```
GET /api_v1/messages?user_id=ANOTHER_USERS_ID&user_id=YOUR_USER_ID
```
2023-07-07 23:42:27 +00:00
または、パラメータをリストとして提供します:
```
GET /api_v1/messages?user_ids[]=YOUR_USER_ID&user_ids[]=ANOTHER_USERS_ID
```
2023-07-07 23:42:27 +00:00
## 盲目的IDORs <a href="#7639" id="7639"></a>
2023-07-07 23:42:27 +00:00
時にはIDORに対して脆弱なエンドポイントは、直接漏洩情報を返さないことがあります。代わりに、エクスポートファイル、メール、そしてテキストアラートなど、他の場所でアプリケーションが情報を漏洩させる可能性があります。
2023-07-07 23:42:27 +00:00
## リクエストメソッドの変更 <a href="#6597" id="6597"></a>
2023-07-07 23:42:27 +00:00
1つのリクエストメソッドが機能しない場合、代わりに試すことができる多くの他のメソッドがあります。GET、POST、PUT、DELETE、PATCHなど...
2023-07-07 23:42:27 +00:00
よく効く一般的なトリックは、POSTをPUTに置き換えるか、その逆を試すことです。同じアクセス制御が実装されていない可能性があります
2023-07-07 23:42:27 +00:00
## 要求されたファイルタイプの変更 <a href="#8f78" id="8f78"></a>
2023-07-07 23:42:27 +00:00
時には、要求されたファイルのファイルタイプを切り替えることで、サーバーが認可を異なる方法で処理する可能性があります。例えば、リクエストURLの末尾に.jsonを追加してみて、何が起こるか確認してみてください。
2023-07-07 23:42:27 +00:00
# IDORの影響を増やす方法 <a href="#45b0" id="45b0"></a>
2023-07-07 23:42:27 +00:00
## まずは重要なIDOR <a href="#71f7" id="71f7"></a>
2023-07-07 23:42:27 +00:00
常に重要な機能でのIDORを探してください。書き込みベースのIDORと読み取りベースのIDORの両方が高い影響を持つ可能性があります。
2023-07-07 23:42:27 +00:00
状態を変更する書き込みIDORの場合、パスワードリセット、パスワード変更、アカウントの回復などが最もビジネスへの影響が大きい場合があります。例えば、「メールの購読設定の変更」のIDORと比較して
2023-07-07 23:42:27 +00:00
読み取り専用読み取りIDORの場合、アプリケーション内で機密情報を処理する機能を探してください。例えば、ダイレクトメッセージ、機密ユーザー情報、プライベートコンテンツを処理する機能を探してください。この情報を使用するアプリケーションの機能を考慮し、それに応じたIDORを探してください。
2022-04-28 16:01:33 +00:00
<details>
2023-04-25 18:35:28 +00:00
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
2022-04-28 16:01:33 +00:00
2023-07-07 23:42:27 +00:00
- **サイバーセキュリティ企業で働いていますか?** **HackTricksであなたの会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
2022-04-28 16:01:33 +00:00
2023-07-07 23:42:27 +00:00
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションです。
2022-04-28 16:01:33 +00:00
2023-07-07 23:42:27 +00:00
- [**公式のPEASSHackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。
2022-04-28 16:01:33 +00:00
2023-07-07 23:42:27 +00:00
- [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で**フォロー**してください[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
2022-04-28 16:01:33 +00:00
2023-07-07 23:42:27 +00:00
- **ハッキングのトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
2022-04-28 16:01:33 +00:00
</details>