hacktricks/pentesting-web/unicode-injection
2024-02-08 04:49:53 +00:00
..
README.md Translated ['pentesting-web/hacking-with-cookies/cookie-bomb.md', 'pente 2024-01-10 17:17:21 +00:00
unicode-normalization.md Translated ['mobile-pentesting/android-app-pentesting/README.md', 'mobil 2024-02-08 04:49:53 +00:00

Unicode Injection

AWSハッキングをゼロからヒーローまで学ぶ htARTE (HackTricks AWS Red Team Expert)

HackTricksをサポートする他の方法:

はじめに

バックエンド/フロントエンドが変わったユニコード文字を受け取る際の挙動によって、攻撃者は保護をバイパスし、任意の文字を注入することができるかもしれません。これにより、XSSやSQLiなどの注入脆弱性を悪用することができます。

ユニコード正規化

ユニコード正規化は、ユニコード文字がASCII文字に正規化されるときに発生します。

このタイプの脆弱性が発生する一般的なシナリオは、システムが入力をチェックした後に何らかの方法でユーザーの入力を変更する場合です。例えば、単純な呼び出しで入力を大文字または小文字にすると、与えられた入力が正規化され、ユニコードがASCIIに変換され新しい文字が生成されます。
詳細については以下をチェックしてください:

{% content-ref url="unicode-normalization.md" %} unicode-normalization.md {% endcontent-ref %}

\u から %

ユニコード文字は通常、\u プレフィックスで表されます。例えば、文字 \u3c4b(ここで確認)です。バックエンドがプレフィックス**\u% に変換すると、結果の文字列は %3c4b となり、URLデコードすると: <4b です。そして、ご覧の通り、< 文字が注入されます**。
バックエンドが脆弱であれば、この技術を使って任意の文字を注入することができます。
必要な文字を見つけるには https://unicode-explorer.com/ をチェックしてください。

この脆弱性は、実際には研究者が見つけた脆弱性から来ています。より詳細な説明については https://www.youtube.com/watch?v=aUsAHb0E7Cg をチェックしてください。

絵文字注入

バックエンドは時々、絵文字を受け取ると奇妙な挙動をします。それはこのライトアップで起こったことで、研究者は次のようなペイロードでXSSを達成しました: 💋img src=x onerror=alert(document.domain)//💛

この場合、エラーはサーバーが悪意のある文字を削除した後、UTF-8文字列をWindows-1252からUTF-8に変換したことでした基本的に入力エンコーディングと変換からのエンコーディングが一致していませんでした。それで、これは適切な < を与えずに奇妙なユニコードの一つを与えます:
``そこで、この出力を再びUTF-8からASCIIに変換しました。これにより、<正規化され、そのシステムでエクスプロイトが機能する方法です。
これが起こったことです:

<?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;

Emojiリスト:

AWSハッキングをゼロからヒーローまで学ぶ htARTE (HackTricks AWS Red Team Expert)

HackTricksをサポートする他の方法: