hacktricks/pentesting-web/unicode-injection
2024-09-04 13:32:49 +00:00
..
README.md Translated ['generic-methodologies-and-resources/basic-forensic-methodol 2024-07-19 10:13:53 +00:00
unicode-normalization.md Translated ['README.md', 'crypto-and-stego/hash-length-extension-attack. 2024-09-04 13:32:49 +00:00

Injection Unicode

{% hint style="success" %} Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)

Soutenir HackTricks
{% endhint %}

Introduction

Selon le comportement du back-end/front-end lorsqu'il reçoit des caractères unicode étranges, un attaquant pourrait être en mesure de contourner les protections et d'injecter des caractères arbitraires qui pourraient être utilisés pour exploiter des vulnérabilités d'injection telles que XSS ou SQLi.

Normalisation Unicode

La normalisation Unicode se produit lorsque les caractères unicode sont normalisés en caractères ascii.

Un scénario courant de ce type de vulnérabilité se produit lorsque le système modifie d'une manière ou d'une autre l'entrée de l'utilisateur après l'avoir vérifiée. Par exemple, dans certaines langues, un simple appel pour rendre l'entrée en majuscules ou en minuscules pourrait normaliser l'entrée donnée et le unicode sera transformé en ASCII, générant de nouveaux caractères.
Pour plus d'infos, consultez :

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

\u à %

Les caractères Unicode sont généralement représentés avec le préfixe \u. Par exemple, le caractère est \u3c4b(vérifiez-le ici). Si un backend transforme le préfixe \u en %, la chaîne résultante sera %3c4b, qui décodée en URL est : <4b. Et, comme vous pouvez le voir, un caractère < est injecté.
Vous pourriez utiliser cette technique pour injecter n'importe quel type de caractère si le backend est vulnérable.
Consultez https://unicode-explorer.com/ pour trouver les caractères dont vous avez besoin.

Cette vulnérabilité provient en fait d'une vulnérabilité qu'un chercheur a trouvée, pour une explication plus approfondie, consultez https://www.youtube.com/watch?v=aUsAHb0E7Cg

Injection d'Émojis

Les back-ends se comportent parfois de manière étrange lorsqu'ils reçoivent des émojis. C'est ce qui s'est passé dans ce rapport où le chercheur a réussi à obtenir un XSS avec une charge utile telle que : 💋img src=x onerror=alert(document.domain)//💛

Dans ce cas, l'erreur était que le serveur, après avoir supprimé les caractères malveillants, a converti la chaîne UTF-8 de Windows-1252 à UTF-8 (essentiellement, l'encodage d'entrée et la conversion d'encodage étaient incompatibles). Cela ne donne pas un < correct, juste un unicode étrange :
``Ils ont donc pris cette sortie et convertie à nouveau maintenant de UTF-8 à ASCII. Cela a normalisé le en <, c'est ainsi que l'exploit a pu fonctionner sur ce système.
Voici ce qui s'est passé :

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

Liste d'emojis :

{% hint style="success" %} Apprenez et pratiquez le Hacking AWS :HackTricks Formation Expert Red Team AWS (ARTE)
Apprenez et pratiquez le Hacking GCP : HackTricks Formation Expert Red Team GCP (GRTE)

Soutenir HackTricks
{% endhint %}