You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: src/network-services-pentesting/700-pentesting-epp.md
+108-1Lines changed: 108 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -12,7 +12,114 @@ Basically, it's one of the protocols a **TLD registrar is going to be offering t
12
12
13
13
[**In this very interesting article**](https://hackcompute.com/hacking-epp-servers/) you can see how some security researches found several **implementation of this protocol** were vulnerable to XXE (XML External Entity) as this protocol uses XML to communicate, which would have allowed attackers to takeover tens of different TLDs.
14
14
15
-
{{#include ../banners/hacktricks-training.md}}
15
+
---
16
+
17
+
## Enumeration & Recon
18
+
19
+
EPP servers almost always listen on TCP `700/tcp` over TLS. A typical deployment also enforces **mutual-TLS (mTLS)** so the client must present a valid certificate issued by the registry CA. Nevertheless, many private test or pre-production deployments forget that control:
When the parser is mis-configured (`XMLInputFactory.IS_SUPPORTING_EXTERNAL_ENTITIES=true`) the file content is returned inside the `<resData>` structure.
91
+
92
+
### Other typical findings
93
+
94
+
1.**Weak credential policy** – EPP login passphrases shorter than 8 chars; brute-force is often feasible because the spec only RECOMMENDS (not requires) rate-limiting.
95
+
2.**Missing `registryLock` / `serverUpdateProhibited` status** – once authenticated, attackers can immediately update NS records and steal traffic.
96
+
3.**Unsigned poll messages** – some implementations still do not sign poll Q&A messages, enabling spoofing/phishing of registrar operators.
97
+
98
+
---
99
+
100
+
## Attack Path: From Zero to TLD Hijack
101
+
102
+
1. Discover an EPP endpoint (often hidden behind a generic host like `ot&e.<tld>.nic.<cc>`).
103
+
2. Abuse one of the weaknesses above to gain registrar-level credentials (XXE → SSRF to IMDSv1, credential exfil, or TLS-bypass).
104
+
3. Issue `<update>` requests to change the domain’s `hostObj` records to attacker-controlled name servers.
105
+
4. (Optional) Submit a `<transfer>` to move the domain to an attacker-controlled registrar – many registries still rely on a **single auth-code**.
106
+
5. Profit: full control of DNS zone, ability to request TLS certificates via ACME.
107
+
108
+
---
109
+
110
+
## Defensive Measures & Hardening
111
+
112
+
* Enforce **mTLS with per-registrar client certificates** and pin the registry CA.
113
+
* Set `parserFeature secure-processing=true` or equivalent to kill XXE.
114
+
* Run **continuous fuzzing** of the XML parser (e.g., with `go-fuzz` or `jazzer` for Java).
115
+
* Deploy **Registry Lock / server*Prohibited** statuses for high-value domains.
116
+
* Monitor `poll` queue for suspicious `<transfer>` or `<update>` commands and alert in real-time.
0 commit comments