tip
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
- VĂ©rifiez les plans d'abonnement !
- Rejoignez le đŹ groupe Discord ou le groupe telegram ou suivez nous sur Twitter đŠ @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PRs au HackTricks et HackTricks Cloud dépÎts github.
ECB
(ECB) Electronic Code Book - schéma de chiffrement symétrique qui remplace chaque bloc du 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) et ensuite de chiffrer (déchiffrer) chaque bloc de texte clair en utilisant la seule clé.
L'utilisation de l'ECB a plusieurs implications en matiÚre 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 recevez toujours le mĂȘme cookie. C'est parce que le cookie de l'application est <username>|<password>
.
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Ăč les informations des deux utilisateurs sont les mĂȘmes sont Ă©gaux. Ensuite, vous imaginez que cela pourrait ĂȘtre parce que l'ECB est utilisĂ©.
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
C'est parce 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 juste découvrir si le format est <username><delimiter><password>
ou <password><delimiter><username>
. Pour ce faire, il peut simplement générer plusieurs noms d'utilisateur avec des noms d'utilisateur et 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
Sachant le format du cookie (<username>|<password>
), afin d'usurper le nom d'utilisateur admin
, créez un nouvel utilisateur appelé aaaaaaaaadmin
et obtenez le cookie et 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 des blocs
Dans de nombreuses bases de données, il est identique 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 qui :
len(<username>) + len(<delimiter) % len(block)
. Avec une taille de bloc de8B
, vous pouvez générer un nom d'utilisateur appelé :username
, avec le délimiteur|
, le morceau<username><delimiter>
générera 2 blocs de 8Bs. - 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, comme :
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
tip
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
- VĂ©rifiez les plans d'abonnement !
- Rejoignez le đŹ groupe Discord ou le groupe telegram ou suivez nous sur Twitter đŠ @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PRs au HackTricks et HackTricks Cloud dépÎts github.