Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
FEP3370-advanced-ethical-hacking — Exploração de DHCP com DynoRoot (CVE-2018-1111) | Kitploit
Ferramentas/GitHubGitHub/baldassarrefe/fep3370-advanced-ethical-hacking
Análise de VulnerabilidadesExploraçãoSegurança de RedeTestes de PenetraçãoAprendizado e EducaçãoLabs e Prática
GitHubbaldassarrefe/fep3370-advanced-ethical-hacking

FEP3370-advanced-ethical-hacking

Exploração de DHCP com DynoRoot (CVE-2018-1111)

Ver RepositórioSite
8há 5 anosAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

DynoRoot CVE-2018-1111

Projeto final para o curso Hacking Ético Avançado no KTH, Estocolmo

Este projeto demonstra uma vulnerabilidade conhecida de máquinas Fedora e RedHat relacionada a uma implementação insegura do lado do cliente do Protocolo de Configuração Dinâmica de Host (DHCP). Um servidor DHCP malicioso pode criar ofertas DHCP com uma carga maliciosa que é executada em um shell raiz na máquina vítima.

A vulnerabilidade é creditada a Felix Wilhelm e é conhecida como CVE-2018-1111 ou "DynoRoot".

Índice:

  • Introdução
    • Contexto
    • Vulnerabilidade
    • Fontes
  • Configuração
    • Pré-requisitos
    • Máquina gateway
    • Atacante
    • Vítima Fedora
  • Executando o ataque
    • Gateway
    • Atacante
    • Vítima
    • Análise
  • Trabalhos futuros
  • Créditos

Introdução

Contexto

O Protocolo de Configuração Dinâmica de Host (DHCP) é um componente frequentemente negligenciado em sistemas em rede. Sua função é permitir a configuração dinâmica de máquinas host que se conectam a uma rede existente. O caso de uso mais comum é atribuir um endereço IP a hosts recém-conectados e informá-los sobre as rotas existentes para acessar outras redes. Opções adicionais podem ser especificadas, por exemplo, o endereço de um servidor DNS local e a zona que ele atende, ou a localização de um arquivo de inicialização.

Vamos analisar o protocolo de 4 vias seguido quando um novo host deseja ingressar em uma rede após conectar-se fisicamente a ela por meio de uma conexão Ethernet ou sem fio.

  1. O cliente, sem um endereço IP, transmite uma mensagem de DISCOVER para a rede.
  2. Um servidor DHCP responsável por essa rede responde com um OFFER, contendo: endereço IP, máscara de sub-rede, endereço do roteador e outras opções.
  3. O cliente responde com um REQUEST, solicitando oficialmente o aluguel do endereço IP que foi oferecido.
  4. O servidor conclui a troca com um ACK, indicando que o cliente está autorizado a usar o endereço IP por um período especificado.

Após a troca inicial, o cliente pode renovar o aluguel simplesmente enviando outra mensagem REQUEST. O servidor verificará a existência de um aluguel com o IP e o endereço MAC do cliente e responderá com um ACK.

Sessão DHCP (figura do Wikimedia Commons, sob licença CC BY-SA 4.0).

Algumas observações:

  • Um cliente também pode pular a fase de DISCOVER e imediatamente REQUEST um endereço. Isso é comum em cenários nos quais o cliente já se conectou à rede anteriormente e lembra do endereço anterior. Nesse caso, o servidor verifica a disponibilidade do endereço e envia um ACK para a solicitação, ou, caso o aluguel não esteja disponível, envia um NACK.
  • Ao desconectar, os clientes podem enviar uma mensagem RELEASE para informar ao servidor que o endereço agora está disponível. No entanto, isso não é obrigatório pelo protocolo e o servidor periodicamente recolherá aluguéis expirados.
  • Cada servidor DHCP gerencia um pool limitado de endereços IP; uma vez que todos são atribuídos, o servidor não poderá OFFER aluguéis para novos clientes.
  • Vários servidores DHCP podem existir na mesma rede; se um cliente receber múltiplos OFFERs, ele aceitará apenas um; os outros servidores observarão o REQUEST transmitido e invalidarão a oferta.

Vulnerabilidade

A vulnerabilidade está localizada em /etc/NetworkManager/dispatcher.d/11-dhclient, que é executado pelo cliente para analisar e definir as opções recebidas via DHCP.

  • declare é um built-in do bash que, quando usado sem argumentos, lista todas as variáveis declaradas.
  • grep filtra todas as variáveis relacionadas ao DHCP.
  • while read opt itera sobre as variáveis DHCP uma a uma, realiza alguma análise e imprime uma linha como export new_optionname=value para cada opção.
  • as instruções de exportação são então avaliadas pelo shell através de eval.```bash eval "$( declare | LC_ALL=C grep '^DHCP4_[A-Z_]=' | while read opt; do optname=${opt%%=} optname=${optname,,} optname=new_${optname#dhcp4_} optvalue=${opt#*=} echo "export $optname=$optvalue" done )"
<!-- omit in toc -->
#### Operação normal
Em situações normais, o código funcionaria perfeitamente e analisaria as novas opções DHCP.
Como exemplo, o seguinte código:```bash
DHCP4_OPTION_ONE=42
DHCP4_OPTION_TWO="bla bla"

declare | LC_ALL=C grep '^DHCP4_[A-Z_]*=' | while read opt; do
  optname=${opt%%=*}
  optname=${optname,,}
  optname=new_${optname#dhcp4_}
  optvalue=${opt#*=}
  echo "export $optname=$optvalue"
done

Irá imprimir estas duas instruções export para serem avaliadas por eval:```bash export new_option_one=42 export new_option_two='bla bla'

<!-- omit in toc -->
#### Injeção de código
No entanto, devido ao uso inseguro de `eval`, é possível injetar comandos bash:```bash
DHCP4_OPTION_ONE="x'& echo Hacked! #"
DHCP4_OPTION_TWO='bla bla'

eval "$(                             
  declare | LC_ALL=C grep '^DHCP4_[A-Z_]*=' | while read opt; do
    optname=${opt%%=*}
    optname=${optname,,}
    optname=new_${optname#dhcp4_}
    optvalue=${opt#*=}
    echo "export $optname=$optvalue"
  done
)"

Resultará na avaliação de echo Hacked!:```text [1] 1541 Hacked!

### Fontes
- [Entrada no banco de dados de exploits](https://www.exploit-db.com/exploits/44890)
- [Anúncio da RedHat](https://access.redhat.com/security/vulnerabilities/3442151)
- [Post do blog da Tenable](https://www.tenable.com/blog/advisory-red-hat-dhcp-client-command-injection-trouble)
- [Repositório no GitHub](https://github.com/kkirsche/CVE-2018-1111)
- [Anúncio no Twitter](https://twitter.com/_fel1x/status/996388421273882626?lang=en)

## Configuração
A configuração mínima para demonstrar a exploração consiste em apenas duas máquinas: a máquina `victim` executando Fedora 28, e uma máquina `attacker`. Nesta configuração, o atacante simplesmente precisa oferecer um serviço DHCP e aguardar a conexão da vítima.

<figure style="text-align:center">
  <img src="https://raw.githubusercontent.com/baldassarrefe/fep3370-advanced-ethical-hacking/HEAD/media/network_simple.svg" style="max-width:400px;" width="90%"/>
  <figcaption>Configuração mínima de exploração.</figcaption>
</figure>

Uma configuração mais realista colocaria as máquinas em uma rede privada, onde uma terceira máquina, o `gateway`, é configurada como o servidor DHCP benigno e como o gateway para a internet externa. Nesta configuração, o atacante deve impedir que a vítima se conecte ao servidor DHCP legítimo antes de tentar realizar o ataque.

<figure style="text-align:center">
  <img src="https://raw.githubusercontent.com/baldassarrefe/fep3370-advanced-ethical-hacking/HEAD/media/network.svg" style="max-width:800px;" width="90%"/>
  <figcaption>Configuração de rede privada com uma máquina gateway atuando como DHCP, roteador e firewall.</figcaption>
</figure>
Baixar ferramenta