diff --git a/src/network-services-pentesting/700-pentesting-epp.md b/src/network-services-pentesting/700-pentesting-epp.md index 284d5ac4f..7e01b89b9 100644 --- a/src/network-services-pentesting/700-pentesting-epp.md +++ b/src/network-services-pentesting/700-pentesting-epp.md @@ -4,7 +4,7 @@ ## Podstawowe informacje -Extensible Provisioning Protocol (EPP) to protokół sieciowy używany do **zarządzania nazwami domen i innymi zasobami internetowymi** przez rejestry nazw domen i rejestratorów. Umożliwia automatyzację procesów rejestracji, odnawiania, transferu i usuwania nazw domen, zapewniając ustandaryzowaną i bezpieczną ramę komunikacyjną między różnymi podmiotami w systemie nazw domen (DNS). EPP został zaprojektowany jako elastyczny i rozszerzalny, co pozwala na dodawanie nowych funkcji i poleceń w miarę ewolucji potrzeb infrastruktury internetowej. +Extensible Provisioning Protocol (EPP) to protokół sieciowy używany do **zarządzania nazwami domen i innymi zasobami internetowymi** przez rejestry nazw domen i rejestratorów. Umożliwia automatyzację procesów rejestracji, odnawiania, transferu i usuwania nazw domen, zapewniając ustandaryzowany i bezpieczny framework komunikacyjny między różnymi podmiotami w systemie nazw domen (DNS). EPP został zaprojektowany jako elastyczny i rozszerzalny, co pozwala na dodawanie nowych funkcji i poleceń w miarę ewolucji potrzeb infrastruktury internetowej. W zasadzie jest to jeden z protokołów, które **rejestrator TLD będzie oferować rejestratorom domen** do rejestrowania nowych domen w TLD. @@ -12,4 +12,104 @@ W zasadzie jest to jeden z protokołów, które **rejestrator TLD będzie oferow [**W tym bardzo interesującym artykule**](https://hackcompute.com/hacking-epp-servers/) można zobaczyć, jak niektórzy badacze bezpieczeństwa odkryli, że kilka **implementacji tego protokołu** było podatnych na XXE (XML External Entity), ponieważ protokół ten używa XML do komunikacji, co mogłoby pozwolić atakującym na przejęcie dziesiątek różnych TLD. +--- + +## Enumeracja i rekonesans + +Serwery EPP prawie zawsze nasłuchują na TCP `700/tcp` przez TLS. Typowe wdrożenie również wymusza **mutual-TLS (mTLS)**, więc klient musi przedstawić ważny certyfikat wydany przez CA rejestru. Niemniej jednak, wiele prywatnych testów lub wdrożeń przedprodukcyjnych zapomina o tej kontroli: +```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 +``` +Jeśli serwer nie zakończy połączenia po handshake TLS, możesz spróbować wysłać nieautoryzowaną `` wiadomość: +```xml + + + + +``` +### Klienci open-source przydatni do testowania + +* **epp-client (Go)** – aktywnie utrzymywany, wspiera TCP/TLS oraz EPP-over-HTTPS (RFC 8730): +`go install github.com/domainr/epp/cmd/epp@latest` +* **gandi/go-epp** – minimalna biblioteka klienta, która może być łatwo instrumentowana do fuzzingu lub workflow w stylu nuclei. +* **afq984/php-epp-client** – implementacja PHP używana przez wielu małych rejestratorów; wygodny cel do przeglądu kodu. + +Przykładowy minimalny skrypt logowania+sprawdzania z 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) +} +``` +--- + +## Wspólne Słabości i Luki w Bezpieczeństwie 2023-2025 + +| Rok | Komponent | CWE | Wpływ | +|-----|-----------|-----|-------| +| 2023 | CoCCA Registry < 3.5 | CWE-611 XXE | Zdalne odczytywanie plików i SSRF za pomocą spreparowanego `` ładunku (łatka: 2023-11-02) | +| 2024 | FRED EPP Server 2.x | CWE-322 Niewystarczająca walidacja certyfikatów TLS | Ominięcie mTLS umożliwiło nieautoryzowane logowanie rejestratora | +| 2025 | Własny panel rejestratora | CWE-306 Brak uwierzytelnienia dla krytycznej funkcji | Punkt zatwierdzania transferu domeny ujawniony przez most EPP-HTTP | + +### Ładunek XXE / SSRF (działa przeciwko wielu implementacjom Java/Spring) +```xml + +]> + + + + +&xxe; + + + + +``` +Kiedy parser jest źle skonfigurowany (`XMLInputFactory.IS_SUPPORTING_EXTERNAL_ENTITIES=true`), zawartość pliku jest zwracana w strukturze ``. + +### Inne typowe ustalenia + +1. **Słaba polityka haseł** – hasła logowania EPP krótsze niż 8 znaków; atak siłowy jest często wykonalny, ponieważ specyfikacja tylko ZALECA (nie wymaga) ograniczanie szybkości. +2. **Brak statusu `registryLock` / `serverUpdateProhibited`** – po uwierzytelnieniu, atakujący mogą natychmiast zaktualizować rekordy NS i ukraść ruch. +3. **Niepodpisane wiadomości poll** – niektóre implementacje wciąż nie podpisują wiadomości Q&A poll, co umożliwia spoofing/phishing operatorów rejestrów. + +--- + +## Ścieżka ataku: Od zera do przejęcia TLD + +1. Odkryj punkt końcowy EPP (często ukryty za ogólnym hostem, takim jak `ot&e..nic.`). +2. Wykorzystaj jedną z powyższych słabości, aby uzyskać dane uwierzytelniające na poziomie rejestratora (XXE → SSRF do IMDSv1, eksfiltracja danych uwierzytelniających lub obejście TLS). +3. Wydaj żądania ``, aby zmienić rekordy `hostObj` domeny na serwery nazw kontrolowane przez atakującego. +4. (Opcjonalnie) Złóż ``, aby przenieść domenę do rejestratora kontrolowanego przez atakującego – wiele rejestrów wciąż polega na **jednym kodzie autoryzacyjnym**. +5. Zysk: pełna kontrola nad strefą DNS, możliwość żądania certyfikatów TLS za pośrednictwem ACME. + +--- + +## Środki obronne i wzmocnienie + +* Wymuś **mTLS z certyfikatami klienta per-rejestrator** i przypnij CA rejestru. +* Ustaw `parserFeature secure-processing=true` lub równoważne, aby zabić XXE. +* Przeprowadzaj **ciągłe fuzzing** parsera XML (np. z `go-fuzz` lub `jazzer` dla Javy). +* Wdrażaj statusy **Registry Lock / server*Prohibited** dla domen o wysokiej wartości. +* Monitoruj kolejkę `poll` pod kątem podejrzanych poleceń `` lub `` i powiadamiaj w czasie rzeczywistym. +* Zmiany w umowach dotyczących nadużyć DNS ICANN 2024 wymagają od rejestrów udowodnienia kontroli szybkości i autoryzacji – wykorzystaj je. + +## Odnośniki + +* 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}}