Unicode Injection

Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримки HackTricks:

Вступ

Залежно від того, як збічно працює захист від дивних символів Unicode, зловмисник може обійти захист і впровадити довільні символи, які можуть бути використані для зловживання вразливостями впровадження такими як XSS або SQLi.

Нормалізація Unicode

Нормалізація Unicode відбувається, коли символи Unicode нормалізуються до символів ASCII.

Одним зі спільних сценаріїв цього типу вразливості є випадок, коли система модифікує якимось чином ввід користувача після перевірки його. Наприклад, у деяких мовах простий виклик для перетворення введення на верхній або нижній регістр може нормалізувати заданий ввід, а Unicode буде перетворено на ASCII, генеруючи нові символи. Для отримання додаткової інформації перегляньте:

pageUnicode Normalization

\u на %

Символи Unicode зазвичай представлені з префіксом \u. Наприклад, символ - це \u3c4b (перевірте тут). Якщо бекенд перетворює префікс \u на %, результуючий рядок буде %3c4b, який після декодування URL стане: <4b. І, як ви бачите, вставлений символ <. Ви можете використовувати цю техніку для впровадження будь-якого типу символу, якщо бекенд є вразливим. Перевірте https://unicode-explorer.com/, щоб знайти потрібні символи.

Ця вразливість фактично походить від вразливості, яку виявив дослідник, для більш детального пояснення перегляньте https://www.youtube.com/watch?v=aUsAHb0E7Cg

Внедження Emoji

Бекенди іноді дивно працюють, коли вони отримують емодзі. Це те, що сталося в цьому описі, де дослідник зміг досягти XSS з таким навантаженням: 💋img src=x onerror=alert(document.domain)//💛

У цьому випадку помилка полягала в тому, що сервер після видалення зловмисниць конвертував UTF-8 рядок з Windows-1252 в UTF-8 (в основному кодування введення і конвертування зіткнулися). Потім це не дає правильного <, а лише дивний Unicode: ``Тому вони взяли цей вивід і знову конвертували тепер від 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;

Списки емодзі:

Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримки HackTricks:

Last updated