From 10a2c7ef255149e12f717676f5c1defe980dc7e9 Mon Sep 17 00:00:00 2001 From: Translator Date: Mon, 4 Aug 2025 22:13:39 +0000 Subject: [PATCH] Translated ['src/network-services-pentesting/700-pentesting-epp.md'] to --- .../700-pentesting-epp.md | 104 +++++++++++++++++- 1 file changed, 102 insertions(+), 2 deletions(-) diff --git a/src/network-services-pentesting/700-pentesting-epp.md b/src/network-services-pentesting/700-pentesting-epp.md index 44dc8dbbf..57b1a10cb 100644 --- a/src/network-services-pentesting/700-pentesting-epp.md +++ b/src/network-services-pentesting/700-pentesting-epp.md @@ -4,12 +4,112 @@ ## Informações Básicas -O Protocolo de Provisionamento Extensível (EPP) é um protocolo de rede usado para a **gestão de nomes de domínio e outros recursos da internet** por registries e registradores de nomes de domínio. Ele permite a automação dos processos de registro, renovação, transferência e exclusão de nomes de domínio, garantindo uma estrutura de comunicação padronizada e segura entre diferentes entidades no sistema de nomes de domínio (DNS). O EPP é projetado para ser flexível e extensível, permitindo a adição de novos recursos e comandos à medida que as necessidades da infraestrutura da internet evoluem. +O Protocolo de Provisionamento Extensível (EPP) é um protocolo de rede usado para a **gestão de nomes de domínio e outros recursos da internet** por registros de nomes de domínio e registradores. Ele permite a automação dos processos de registro, renovação, transferência e exclusão de nomes de domínio, garantindo uma estrutura de comunicação padronizada e segura entre diferentes entidades no sistema de nomes de domínio (DNS). O EPP é projetado para ser flexível e extensível, permitindo a adição de novos recursos e comandos à medida que as necessidades da infraestrutura da internet evoluem. Basicamente, é um dos protocolos que um **registrador de TLD vai oferecer aos registradores de domínio** para registrar novos domínios no TLD. ### Pentest -[**Neste artigo muito interessante**](https://hackcompute.com/hacking-epp-servers/) você pode ver como algumas pesquisas de segurança descobriram que várias **implementações deste protocolo** eram vulneráveis a XXE (XML External Entity), já que este protocolo usa XML para se comunicar, o que teria permitido que atacantes assumissem o controle de dezenas de TLDs. +[**Neste artigo muito interessante**](https://hackcompute.com/hacking-epp-servers/) você pode ver como algumas pesquisas de segurança descobriram que várias **implementações deste protocolo** eram vulneráveis a XXE (Entidade Externa XML), uma vez que este protocolo usa XML para se comunicar, o que teria permitido que atacantes assumissem o controle de dezenas de TLDs. +--- + +## Enumeração & Recon + +Os servidores EPP quase sempre escutam na porta TCP `700/tcp` sobre TLS. Uma implantação típica também impõe **mutual-TLS (mTLS)**, então o cliente deve apresentar um certificado válido emitido pela CA do registro. No entanto, muitas implantações privadas de teste ou pré-produção esquecem esse controle: +```bash +# Banner-grabbing / TLS inspection +nmap -p700 --script ssl-cert,ssl-enum-ciphers + +# Check if mTLS is *really* required (it frequently is not!) +openssl s_client -connect :700 -quiet \ +-servername epp.test 2>/dev/null | head +``` +Se o servidor não encerrar a conexão após o handshake TLS, você pode tentar enviar uma mensagem `` não autenticada: +```xml + + + + +``` +### Clientes de código aberto úteis para testes + +* **epp-client (Go)** – mantido ativamente, suporta TCP/TLS e EPP-over-HTTPS (RFC 8730): +`go install github.com/domainr/epp/cmd/epp@latest` +* **gandi/go-epp** – biblioteca de cliente mínima que pode ser facilmente instrumentada para fuzzing ou fluxos de trabalho estilo nuclei. +* **afq984/php-epp-client** – implementação em PHP usada por muitos registradores pequenos; um alvo conveniente para revisão de código. + +Exemplo de script mínimo de login+verificação com Go epp-client: +```go +package main +import ( +"github.com/domainr/epp" +"crypto/tls" +) + +func main() { +cfg := &tls.Config{InsecureSkipVerify: true} +c, _ := epp.DialTLS("epp.test:700", cfg) +c.Login("CLIENT_ID", "PASSWORD", nil) +resp, _ := c.DomainCheck("example","com") +println(resp) +} +``` +--- + +## Fraquezas Comuns & Vulnerabilidades 2023-2025 + +| Ano | Componente | CWE | Impacto | +|-----|------------|-----|---------| +| 2023 | CoCCA Registry < 3.5 | CWE-611 XXE | Leitura remota de arquivo & SSRF via carga útil `` manipulada (patch: 2023-11-02) | +| 2024 | FRED EPP Server 2.x | CWE-322 Validação insuficiente de certificado TLS | Bypass de mTLS permitiu login não autorizado de registrador | +| 2025 | Painel de registrador proprietário | CWE-306 Falta de Autenticação para Função Crítica | Endpoint de aprovação de transferência de domínio exposto sobre ponte EPP-HTTP | + +### Carga útil XXE / SSRF (funciona contra muitas implementações Java/Spring) +```xml + +]> + + + + +&xxe; + + + + +``` +Quando o parser está mal configurado (`XMLInputFactory.IS_SUPPORTING_EXTERNAL_ENTITIES=true`), o conteúdo do arquivo é retornado dentro da estrutura ``. + +### Outras descobertas típicas + +1. **Política de credenciais fracas** – senhas de login EPP com menos de 8 caracteres; força bruta é frequentemente viável porque a especificação apenas RECOMENDA (não exige) limitação de taxa. +2. **Falta de status `registryLock` / `serverUpdateProhibited`** – uma vez autenticados, os atacantes podem imediatamente atualizar os registros NS e roubar tráfego. +3. **Mensagens de poll não assinadas** – algumas implementações ainda não assinam mensagens de Q&A de poll, permitindo spoofing/phishing de operadores de registradores. + +--- + +## Caminho de Ataque: Do Zero ao Sequestro de TLD + +1. Descubra um endpoint EPP (frequentemente escondido atrás de um host genérico como `ot&e..nic.`). +2. Abuse uma das fraquezas acima para obter credenciais de nível de registrador (XXE → SSRF para IMDSv1, exfiltração de credenciais ou bypass de TLS). +3. Emita solicitações `` para alterar os registros `hostObj` do domínio para servidores de nome controlados pelo atacante. +4. (Opcional) Envie um `` para mover o domínio para um registrador controlado pelo atacante – muitos registros ainda dependem de um **único código de autenticação**. +5. Lucro: controle total da zona DNS, capacidade de solicitar certificados TLS via ACME. + +--- + +## Medidas Defensivas & Fortalecimento + +* Imponha **mTLS com certificados de cliente por registrador** e fixe a CA do registro. +* Defina `parserFeature secure-processing=true` ou equivalente para eliminar XXE. +* Execute **fuzzing contínuo** do parser XML (por exemplo, com `go-fuzz` ou `jazzer` para Java). +* Implemente status **Registry Lock / server*Prohibited** para domínios de alto valor. +* Monitore a fila `poll` para comandos suspeitos de `` ou `` e envie alertas em tempo real. +* Emendas ao contrato de abuso de DNS da ICANN 2024 exigem que os registros provem controles de limitação de taxa e autenticação – aproveite-os. + +## Referências + +* ICANN Security and Stability Advisory Committee (SSAC). "SAC118: Consequences of Registry Operator Failure to Implement EPP Security Controls". 2024. +* HackCompute – "Hacking EPP servers: abusing XXE to hijack TLDs" (2023). {{#include ../banners/hacktricks-training.md}}