51 lines
3.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Unicode Injection
{{#include ../../banners/hacktricks-training.md}}
## Introduction
バックエンド/フロントエンドが**奇妙なユニコード文字を受け取ったとき**の動作によって、攻撃者は**保護を回避し、任意の文字を注入する**ことができ、これによりXSSやSQLiなどの**注入脆弱性を悪用する**ことが可能になります。
## Unicode Normalization
ユニコード正規化は、**ユニコード文字がASCII文字に正規化される**ときに発生します。
この種の脆弱性の一般的なシナリオは、システムが**チェックした後に**ユーザーの**入力を何らかの形で変更する**ときに発生します。たとえば、いくつかの言語では、**入力を大文字または小文字にする**ための単純な呼び出しが、与えられた入力を正規化し、**ユニコードがASCIIに変換され**て新しい文字が生成される可能性があります。\
詳細については、次を確認してください:
{{#ref}}
unicode-normalization.md
{{#endref}}
## `\u` to `%`
ユニコード文字は通常、**`\u`プレフィックス**で表されます。たとえば、文字`㱋``\u3c4b`です([ここで確認](https://unicode-explorer.com/c/3c4B))。バックエンドが**`\u`プレフィックスを`%`に変換**すると、結果の文字列は`%3c4b`になり、URLデコードすると**`<4b`**になります。そして、見ての通り、**`<`文字が注入されます**。\
バックエンドが脆弱であれば、この技術を使用して**任意の種類の文字を注入**することができます。\
必要な文字を見つけるには[https://unicode-explorer.com/](https://unicode-explorer.com/)を確認してください。
この脆弱性は、研究者が発見した脆弱性から来ており、詳細な説明については[https://www.youtube.com/watch?v=aUsAHb0E7Cg](https://www.youtube.com/watch?v=aUsAHb0E7Cg)を確認してください。
## Emoji Injection
バックエンドは、**絵文字を受け取るとき**に何かおかしな動作をします。これは、研究者が`💋img src=x onerror=alert(document.domain)//💛`のようなペイロードでXSSを達成した[**このレポート**](https://medium.com/@fpatrik/how-i-found-an-xss-vulnerability-via-using-emojis-7ad72de49209)で起こったことです。
この場合、サーバーは悪意のある文字を削除した後、**UTF-8文字列をWindows-1252からUTF-8に変換**したためにエラーが発生しました(基本的に入力エンコーディングと変換元エンコーディングが不一致でした)。そのため、適切な<を提供せず奇妙なユニコードのものが得られました: ``\
``そのため、彼らはこの出力を取り、**再度UTF-8からASCIIに変換しました**。これにより、``が`<`に**正規化**され、これがそのシステムでのエクスプロイトが機能する方法でした。\
これが起こったことです:
```php
<?php
$str = isset($_GET["str"]) ? htmlspecialchars($_GET["str"]) : "";
$str = iconv("Windows-1252", "UTF-8", $str);
$str = iconv("UTF-8", "ASCII//TRANSLIT", $str);
echo "String: " . $str;
```
絵文字リスト
- [https://github.com/iorch/jakaton_feminicidios/blob/master/data/emojis.csv](https://github.com/iorch/jakaton_feminicidios/blob/master/data/emojis.csv)
- [https://unicode.org/emoji/charts-14.0/full-emoji-list.html](https://unicode.org/emoji/charts-14.0/full-emoji-list.html)
{{#include ../../banners/hacktricks-training.md}}