hacktricks/pentesting-web/unicode-injection/README.md

74 lines
5.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.

# Injection Unicode
<details>
<summary><strong>Apprenez le piratage AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Expert en équipe rouge AWS de HackTricks)</strong></a><strong>!</strong></summary>
Autres façons de soutenir HackTricks :
* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts GitHub.
</details>
## 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 mettre l'**entrée en majuscules ou en minuscules** pourrait normaliser l'entrée donnée et l'**unicode sera transformé en ASCII** générant de nouveaux caractères.\
Pour plus d'informations, consultez :
{% content-ref url="unicode-normalization.md" %}
[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 ici](https://unicode-explorer.com/c/3c4B)). Si un back-end **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 back-end est vulnérable.\
Consultez [https://unicode-explorer.com/](https://unicode-explorer.com/) pour trouver les caractères dont vous avez besoin.
Cette vulnérabilité provient en fait d'une découverte qu'un chercheur a faite, pour une explication plus approfondie, consultez [https://www.youtube.com/watch?v=aUsAHb0E7Cg](https://www.youtube.com/watch?v=aUsAHb0E7Cg)
## Injection Emoji
Les back-ends se comportent parfois de manière étrange lorsqu'ils **reçoivent des emojis**. C'est ce qui s'est passé dans [**ce compte rendu**](https://medium.com/@fpatrik/how-i-found-an-xss-vulnerability-via-using-emojis-7ad72de49209) 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 en UTF-8** (essentiellement, l'encodage d'entrée et la conversion d'encodage ne correspondaient pas). Ensuite, cela ne donne pas un < correct mais un étrange en unicode : ``\
``Ils ont donc pris cette sortie et **l'ont convertie à nouveau de l'UTF-8 en 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
<?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 :
* [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)
<details>
<summary><strong>Apprenez le piratage AWS de zéro à héros avec</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Expert de l'équipe rouge HackTricks AWS)</strong></a><strong>!</strong></summary>
Autres façons de soutenir HackTricks :
* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) dépôts GitHub.
</details>