{% hint style="success" %} Apprenez et pratiquez le piratage AWS :[**Formation HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ Apprenez et pratiquez le piratage GCP : [**Formation HackTricks GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Soutenez HackTricks * Consultez les [**plans d'abonnement**](https://github.com/sponsors/carlospolop)! * **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-nous** sur **Twitter** 🐩 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** * **Partagez des 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.
{% endhint %} # ECB (ECB) Electronic Code Book - schĂ©ma de chiffrement symĂ©trique qui **remplace chaque bloc de texte clair** par le **bloc de texte chiffrĂ©**. C'est le schĂ©ma de chiffrement le **plus simple**. L'idĂ©e principale est de **diviser** le texte clair en **blocs de N bits** (dĂ©pend de la taille du bloc de donnĂ©es d'entrĂ©e, de l'algorithme de chiffrement) puis de chiffrer (dĂ©chiffrer) chaque bloc de texte clair en utilisant la seule clĂ©. ![](https://upload.wikimedia.org/wikipedia/commons/thumb/e/e6/ECB_decryption.svg/601px-ECB_decryption.svg.png) L'utilisation de l'ECB a plusieurs implications en termes de sĂ©curitĂ© : * **Des blocs du message chiffrĂ© peuvent ĂȘtre supprimĂ©s** * **Des blocs du message chiffrĂ© peuvent ĂȘtre dĂ©placĂ©s** # DĂ©tection de la vulnĂ©rabilitĂ© Imaginez que vous vous connectez Ă  une application plusieurs fois et que vous **obtenez toujours le mĂȘme cookie**. Cela est dĂ» au fait que le cookie de l'application est **`|`**.\ Ensuite, vous gĂ©nĂ©rez deux nouveaux utilisateurs, tous deux avec le **mĂȘme mot de passe long** et **presque** le **mĂȘme** **nom d'utilisateur**.\ Vous dĂ©couvrez que les **blocs de 8B** oĂč l'**information des deux utilisateurs** est la mĂȘme sont **identiques**. Ensuite, vous imaginez que cela pourrait ĂȘtre dĂ» Ă  l'utilisation de l'**ECB**. Comme dans l'exemple suivant. Observez comment ces **2 cookies dĂ©codĂ©s** ont plusieurs fois le bloc **`\x23U\xE45K\xCB\x21\xC8`** ``` \x23U\xE45K\xCB\x21\xC8\x23U\xE45K\xCB\x21\xC8\x04\xB6\xE1H\xD1\x1E \xB6\x23U\xE45K\xCB\x21\xC8\x23U\xE45K\xCB\x21\xC8+=\xD4F\xF7\x99\xD9\xA9 \x23U\xE45K\xCB\x21\xC8\x23U\xE45K\xCB\x21\xC8\x04\xB6\xE1H\xD1\x1E \xB6\x23U\xE45K\xCB\x21\xC8\x23U\xE45K\xCB\x21\xC8+=\xD4F\xF7\x99\xD9\xA9 ``` Cela est dĂ» au fait que le **nom d'utilisateur et le mot de passe de ces cookies contenaient plusieurs fois la lettre "a"** (par exemple). Les **blocs** qui sont **diffĂ©rents** sont des blocs qui contenaient **au moins 1 caractĂšre diffĂ©rent** (peut-ĂȘtre le dĂ©limiteur "|" ou une diffĂ©rence nĂ©cessaire dans le nom d'utilisateur). Maintenant, l'attaquant doit simplement dĂ©couvrir si le format est `` ou ``. Pour ce faire, il peut simplement **gĂ©nĂ©rer plusieurs noms d'utilisateur** avec des **noms d'utilisateur et des mots de passe similaires et longs jusqu'Ă  ce qu'il trouve le format et la longueur du dĂ©limiteur :** | Longueur du nom d'utilisateur : | Longueur du mot de passe : | Longueur du nom d'utilisateur + mot de passe : | Longueur du cookie (aprĂšs dĂ©codage) : | | ------------------------------- | -------------------------- | -------------------------------------------- | --------------------------------------- | | 2 | 2 | 4 | 8 | | 3 | 3 | 6 | 8 | | 3 | 4 | 7 | 8 | | 4 | 4 | 8 | 16 | | 7 | 7 | 14 | 16 | # Exploitation de la vulnĂ©rabilitĂ© ## Suppression de blocs entiers Connaissant le format du cookie (`|`), afin d'usurper l'identitĂ© de l'utilisateur `admin`, crĂ©ez un nouvel utilisateur appelĂ© `aaaaaaaaadmin` et obtenez le cookie, puis dĂ©codez-le : ``` \x23U\xE45K\xCB\x21\xC8\xE0Vd8oE\x123\aO\x43T\x32\xD5U\xD4 ``` Nous pouvons voir le motif `\x23U\xE45K\xCB\x21\xC8` crĂ©Ă© prĂ©cĂ©demment avec le nom d'utilisateur qui ne contenait que `a`.\ Ensuite, vous pouvez supprimer le premier bloc de 8B et vous obtiendrez un cookie valide pour le nom d'utilisateur `admin`: ``` \xE0Vd8oE\x123\aO\x43T\x32\xD5U\xD4 ``` ## DĂ©placement de blocs Dans de nombreuses bases de donnĂ©es, il est Ă©quivalent de rechercher `WHERE username='admin';` ou `WHERE username='admin ';` _(Notez les espaces supplĂ©mentaires)_ Ainsi, une autre façon d'usurper l'utilisateur `admin` serait de : * GĂ©nĂ©rer un nom d'utilisateur tel que : `len() + len(` gĂ©nĂ©rera 2 blocs de 8B. * Ensuite, gĂ©nĂ©rer un mot de passe qui remplira un nombre exact de blocs contenant le nom d'utilisateur que nous voulons usurper et des espaces, par exemple : `admin ` Le cookie de cet utilisateur sera composĂ© de 3 blocs : les 2 premiers sont les blocs du nom d'utilisateur + dĂ©limiteur et le troisiĂšme du mot de passe (qui simule le nom d'utilisateur) : `username |admin ` **Ensuite, il suffit de remplacer le premier bloc par le dernier et vous usurperez l'utilisateur `admin` : `admin |username`** ## RĂ©fĂ©rences * [http://cryptowiki.net/index.php?title=Electronic_Code_Book\_(ECB)](http://cryptowiki.net/index.php?title=Electronic_Code_Book_\(ECB\))