Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
poodle-PoC — :poodle: Poodle (Padding Oracle On Downgraded Legacy Encryption) attaque CVE-2014-3566 :poodle: | Kitploit
Outils/GitHubGitHub/mpgn/poodle-poc
Outils de Chiffrement/DéchiffrementAnalyse des VulnérabilitésExploitationSécurité WebCryptographieTests d'IntrusionApprentissage et Éducation
GitHubmpgn/poodle-poc

poodle-PoC

🐩 Poodle (Padding Oracle On Downgraded Legacy Encryption) attaque CVE-2014-3566 🐩

Voir le dépôt
2657220il y a 3 ansVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Poodle PoC 🐩 🐩 🐩

Une preuve de concept de l'attaque Poodle (Padding Oracle On Downgraded Legacy Encryption) :

une attaque de l'homme du milieu qui profite de la rétrogradation des clients Internet et des logiciels de sécurité vers SSL 3.0

L'attaque Poodle vous permet de récupérer les données chiffrées envoyées par un client à un serveur si la couche Transport Layer Security utilisée est SSLv3. Elle ne vous permet pas de récupérer la clé privée utilisée pour chiffrer la requête.

imgonline-com-ua-twotoone-luefsrwi2n8iqy

1. 🐩 Concept de l'attaque 🐩

SSLv3 et le mode de chiffrement CBC

SSLv3 est un protocole permettant de chiffrer/déchiffrer et de sécuriser vos données. Dans notre cas, il utilise le mode de chaînage de blocs CBC. Le texte en clair est divisé en blocs selon l'algorithme de chiffrement (AES, DES, 3DES) et sa longueur est un multiple de 8 ou 16. Si le texte en clair ne remplit pas la longueur, un padding est ajouté à la fin pour combler l'espace manquant. Je vous conseille fortement d'ouvrir ces images de chiffrement et de déchiffrement pour lire ce readme.

ChiffrementDéchiffrement
Ci = Ek(Pi ⊕ Ci-1), and C0 = IVPi = Dk(Ci) ⊕ Ci-1, and C0 = IV

En gros, ce n'est qu'un simple XOR, vous pouvez aussi regarder cette vidéo (pas la mienne) https://www.youtube.com/watch?v=0D7OwYp6ZEc.

Une requête envoyée via HTTPS utilisant SSLv3 sera chiffrée avec AES/DES et le mode CBC. La particularité de SSLv3 par rapport à TLS1.x est le padding. Dans SSLv3, le padding est rempli d'octets aléatoires, à l'exception du dernier octet qui est égal à la longueur du padding.

Exemple :

T|E|X|T|0xab|0x10|0x02 où 0xab|0x10|0x02 est le padding.
T|E|X|T|E|0x5c|0x01 où 0x5c|0x01 est le padding.

Le dernier bloc peut également être rempli d'un bloc complet de padding, ce qui signifie que le dernier bloc peut être entièrement rempli d'octets aléatoires à l'exception du dernier octet.

T|E|X|T|E|0x5c|0x01|0x3c|0x09|0x5d|0x08|0x04|0x07 où |0x5c|0x01|0x3c|0x09|0x5d|0x08|0x04|0x07 est le padding et seul 0x07 est connu de l'attaquant. Ainsi, si un attaquant est capable d'influencer le bloc de padding, il pourra savoir que le dernier octet du dernier bloc est égal à la longueur d'un bloc.

Influencer le padding

Un attaquant doit pouvoir faire envoyer des requêtes à la victime (en utilisant JavaScript via l'exploitation d'une XSS par exemple). Il peut alors contrôler le chemin et les données de chaque requête :

Exemple : ajout d'un octet « A » au chemin de la requête

GET / HTTP/1.1\r\nSECRET COOKIE\r\n\r\n
GET /AAA HTTP/1.1\r\nSECRET COOKIE\r\n\r\nDATA

Avec cette technique, il peut influencer le padding.

HMAC

SSLv3 utilise également HMAC pour vérifier l'intégrité et l'authenticité du texte en clair.

le code d'authentification de message à clé basé sur une fonction de hachage (HMAC) est un type spécifique de code d'authentification de message (MAC) impliquant une fonction de hachage cryptographique (d'où le « H ») combinée à une clé cryptographique secrète

Avec cela, un attaquant ne peut pas intercepter et modifier la requête puis la renvoyer. Si le serveur rencontre un problème, il enverra une erreur HMAC.

MAC-then-encrypt

Le protocole SSLv3 utilise la routine suivante : il reçoit les données du client, déchiffre les données, puis vérifie l'intégrité avec le HMAC.

MAC-then-Encrypt : N'offre aucune intégrité sur le texte chiffré, puisque nous n'avons aucun moyen de savoir, avant de déchiffrer le message, s'il était réellement authentique ou falsifié. Intégrité du texte en clair. Si le schéma de chiffrement est malléable, il peut être possible de modifier le message pour qu'il paraisse valide et possède un MAC valide. C'est un point théorique, bien sûr, car en pratique le secret du MAC > devrait offrir une protection. Ici, le MAC ne peut pas non plus fournir d'informations sur le texte en clair, puisqu'il est chiffré.

https://crypto.stackexchange.com/questions/202/should-we-mac-then-encrypt-or-encrypt-then-mac

Cela signifie que nous pouvons modifier le texte chiffré sans que le serveur le sache. C'est génial, vraiment :)

2. 🔑 Cryptographie 🔑

Premièrement, le dernier bloc doit être plein de padding. Comme nous l'avons vu précédemment, l'attaquant utilise le chemin de la requête et vérifie la longueur de la requête.

  • Il enregistre la longueur du chiffré d'origine
  • Il ajoute un octet dans le chemin et vérifie la longueur.
    • Si la longueur ne change pas, il ajoute un autre octet, etc.
    • Sinon : la longueur de la requête chiffrée change, il sait que le dernier bloc est plein de padding.

Puisque le dernier bloc, à l'exception du dernier octet, est plein d'octets aléatoires, il peut remplacer ce dernier bloc Cn par le bloc qu'il veut déchiffrer Ci. La requête modifiée est envoyée au serveur.

Le serveur :

  • supprime le padding en fonction de la longueur du dernier octet
  • récupère le hmac de la requête = HMAC
  • récupère le texte en clair
  • compare hmac(texte en clair) et HMAC
    • si égal => bon padding
    • sinon => mauvais padding

En remplaçant le dernier bloc, l'attaquant modifie également le dernier octet du dernier bloc (la longueur du padding). Il y a 1/256 de chance que le dernier octet remplacé dans le bloc de padding soit identique à l'original ; dans ce cas, il n'y aura pas d'erreur de padding et l'attaquant pourra utiliser cette opération XOR pour récupérer le dernier octet du bloc Ci en suivant cette opération :

Pn = Dk(Cn) ⊕ Cn-1
Pn = Dk(Ci) ⊕ Cn-1
Pn = Dk(Ci) ⊕ Cn-1
xxxxxxx7 = Dk(Ci) ⊕ Cn-1
Dk(Ci) = xxxxxxx7 ⊕ Cn-1
Pi ⊕ Ci-1 = xxxxxxx7 ⊕ Cn-1
Pi = Ci-1 ⊕ xxxxxxx7 ⊕ Cn-1

(xxxxxxx7 ou xxxxxxx15, avec x un octet aléatoire)

Le dernier octet du bloc peut être récupéré : Pi[7] = Ci-1[7] ⊕ xxxxxxx7 ⊕ Cn-1[7] En cas d'erreur de padding, l'attaquant doit fermer la session SSL pour effectuer un nouveau handshake (nouvelle clé AES) et obtenir un nouveau chiffré, puis remplacer le dernier bloc, etc. (généralement +300 handshakes nécessaires)

Une fois qu'un octet est récupéré, il obtiendra tous les autres octets du bloc en ajoutant un octet dans le chemin et en retirant un octet des données :

Requête pour récupérer les octets E,I,K,O
GET /a SECRET_COOKIE dataazerty PADDING_7
GET /aa SECRET_COOKIE dataazert PADDING_7
GET /aaa SECRET_COOKIE dataazer PADDING_7
GET /aaaa SECRET_COOKIE dataaze PADDING_7

À propos de TLS1.0

Même si les spécifications TLS exigent que les serveurs vérifient le padding, certaines implémentations ne le valident pas correctement, ce qui rend certains serveurs vulnérables à POODLE même s'ils désactivent SSL 3.0

TLS est normalement sûr contre Poodle, mais certaines implémentations ne vérifient pas le padding ; c'est comme si on utilisait SSLv3, c'est pourquoi certaines versions de TLS sont vulnérables.

Télécharger l’outil