diff --git a/src/network-services-pentesting/700-pentesting-epp.md b/src/network-services-pentesting/700-pentesting-epp.md index a02576334..b4cc36129 100644 --- a/src/network-services-pentesting/700-pentesting-epp.md +++ b/src/network-services-pentesting/700-pentesting-epp.md @@ -4,12 +4,112 @@ ## Основна інформація -Розширений протокол надання (EPP) - це мережевий протокол, що використовується для **управління доменними іменами та іншими інтернет-ресурсами** реєстрами доменних імен та реєстраторами. Він дозволяє автоматизацію процесів реєстрації, продовження, передачі та видалення доменних імен, забезпечуючи стандартизовану та безпечну комунікаційну структуру між різними суб'єктами в системі доменних імен (DNS). EPP розроблений для гнучкості та розширюваності, що дозволяє додавати нові функції та команди в міру розвитку потреб інфраструктури Інтернету. +Розширювальний протокол надання (EPP) - це мережевий протокол, що використовується для **управління доменними іменами та іншими інтернет-ресурсами** реєстрами доменних імен та реєстраторами. Він дозволяє автоматизацію процесів реєстрації, продовження, передачі та видалення доменних імен, забезпечуючи стандартизовану та безпечну комунікаційну структуру між різними суб'єктами в системі доменних імен (DNS). EPP розроблений так, щоб бути гнучким і розширювальним, що дозволяє додавати нові функції та команди в міру розвитку потреб інфраструктури Інтернету. -В основному, це один з протоколів, які **реєстратор TLD буде пропонувати реєстраторам доменів** для реєстрації нових доменів у TLD. +В основному, це один з протоколів, які **реєстратор TLD пропонуватиме реєстраторам доменів** для реєстрації нових доменів у TLD. ### Пентест [**У цій дуже цікавій статті**](https://hackcompute.com/hacking-epp-servers/) ви можете побачити, як деякі дослідження безпеки виявили, що кілька **реалізацій цього протоколу** були вразливі до XXE (XML External Entity), оскільки цей протокол використовує XML для комунікації, що дозволило б зловмисникам захопити десятки різних TLD. +--- + +## Перерахунок та розвідка + +Сервери EPP майже завжди слухають на TCP `700/tcp` через TLS. Типове розгортання також забезпечує **взаємний TLS (mTLS)**, тому клієнт повинен представити дійсний сертифікат, виданий CA реєстру. Проте багато приватних тестових або передвиробничих розгортань забувають про цей контроль: +```bash +# Banner-grabbing / TLS inspection +nmap -p700 --script ssl-cert,ssl-enum-ciphers + +# Check if mTLS is *really* required (it frequently is not!) +openssl s_client -connect :700 -quiet \ +-servername epp.test 2>/dev/null | head +``` +Якщо сервер не закриває з'єднання після TLS-рукопожаття, ви можете спробувати надіслати неавтентифіковане `` повідомлення: +```xml + + + + +``` +### Відкриті клієнти, корисні для тестування + +* **epp-client (Go)** – активно підтримується, підтримує TCP/TLS та EPP-over-HTTPS (RFC 8730): +`go install github.com/domainr/epp/cmd/epp@latest` +* **gandi/go-epp** – мінімальна бібліотека клієнта, яку можна легко налаштувати для фуззингу або робочих процесів у стилі nuclei. +* **afq984/php-epp-client** – реалізація на PHP, яку використовують багато малих реєстраторів; зручна ціль для перевірки коду. + +Приклад мінімального скрипта для входу+перевірки з 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 Реєстр < 3.5 | CWE-611 XXE | Дистанційне читання файлів та SSRF через підготовлений `` вантаж (патч: 2023-11-02) | +| 2024 | FRED EPP Сервер 2.x | CWE-322 Недостатня валідація TLS сертифікатів | Обхід mTLS дозволив несанкціонований вхід реєстратора | +| 2025 | Приватна панель реєстратора | CWE-306 Відсутня аутентифікація для критичної функції | Точка затвердження передачі домену відкрита через EPP-HTTP міст | + +### XXE / SSRF вантаж (працює проти багатьох реалізацій Java/Spring) +```xml + +]> + + + + +&xxe; + + + + +``` +Коли парсер неправильно налаштований (`XMLInputFactory.IS_SUPPORTING_EXTERNAL_ENTITIES=true`), вміст файлу повертається всередині структури ``. + +### Інші типові знахідки + +1. **Слабка політика облікових даних** – паролі для входу в EPP коротші за 8 символів; брутфорс часто можливий, оскільки специфікація лише РЕКОМЕНДУЄ (не вимагає) обмеження швидкості. +2. **Відсутній статус `registryLock` / `serverUpdateProhibited`** – після аутентифікації зловмисники можуть негайно оновити записи NS і вкрасти трафік. +3. **Несигновані повідомлення опитування** – деякі реалізації все ще не підписують повідомлення Q&A опитування, що дозволяє підробку/фішинг операторів реєстраторів. + +--- + +## Шлях атаки: Від нуля до захоплення TLD + +1. Виявити EPP кінцеву точку (часто приховану за загальним хостом, таким як `ot&e..nic.`). +2. Зловживати однією з вразливостей вище, щоб отримати облікові дані на рівні реєстратора (XXE → SSRF до IMDSv1, ексфільтрація облікових даних або TLS-обхід). +3. Випустити запити ``, щоб змінити записи `hostObj` домену на сервери імен, контрольовані зловмисником. +4. (Необов'язково) Подати ``, щоб перемістити домен до реєстратора, контрольованого зловмисником – багато реєстрів все ще покладаються на **один код авторизації**. +5. Прибуток: повний контроль над DNS зоною, можливість запитувати TLS сертифікати через ACME. + +--- + +## Заходи захисту та зміцнення + +* Вимагати **mTLS з сертифікатами клієнтів для кожного реєстратора** та закріпити CA реєстру. +* Встановити `parserFeature secure-processing=true` або еквівалент для знищення XXE. +* Запустити **безперервне фуззингування** XML парсера (наприклад, з `go-fuzz` або `jazzer` для Java). +* Впровадити **статуси Registry Lock / server*Prohibited** для доменів з високою вартістю. +* Моніторити чергу `poll` на підозрілі команди `` або `` та сповіщати в реальному часі. +* Поправки до контракту ICANN 2024 про зловживання DNS вимагають від реєстрів доводити обмеження швидкості та контроль авторизації – використовуйте їх. + +## Посилання + +* ICANN Security and Stability Advisory Committee (SSAC). "SAC118: Наслідки невиконання оператором реєстру заходів безпеки EPP". 2024. +* HackCompute – "Злом EPP серверів: зловживання XXE для захоплення TLD" (2023). {{#include ../banners/hacktricks-training.md}}