01.03.2024

Уязвимость в EPP-серверах позволяла получить контроль над 19 доменами первого уровня

Исследователи безопасности из группы Hackcompute опубликовали результат своих экспериментов по изучению защищённости регистраторов доменных имён, атака на которых может привести, например, к изменению DNS-серверов для перенаправления запросов на хост злоумышленника. В результате исследования в одной из реализаций XML-протокола EPP (Extensible Provisioning Protocol), применяемого для организации обмена данными между регистратором и оператором реестра доменных имён, выявлена критическая уязвимость, позволяющая прочитать содержимое любых файлов на сервере.

Используя уязвимость исследователям удалось получить содержимое закрытого SSH-ключа администратора сервера, отвечающего за доменную зону «ai» и учётные данные для хранения резервных копий всего содержимого. Персонал регистратора, отвечающего за домен первого уровня «ai» подтвердил, что уязвимость позволяет скомпрометировать сервер и получить полный контроль над любыми доменами в DNS-зоне «.ai», в том числе можно изменить DNS-серверы для любого домена. Кроме инфраструктуры зоны «.ai» проявление уязвимости удалось выявить на серверах, отвечающих за ведение реестра доменных имён в зонах .bj, .bw, .ci, .gl, .ke, .kn, .lb, .ly, .mr, .ms, .mz, .ng, .pyc, .rw, .so, .ss, .td и .zm.

Отдельный интерес представляет то, как была найдена уязвимость. Так как протокол EPP использует XML и принимает соединения на 700 сетевом порту, исследователи через сканирование портов в глобальной сети построили список хостов, на которых открыт 700 порт и попытались отправить запросы, используя известные типовые приёмы атак на уязвимые XML-библиотеки. На серверах c ПО CoCCA Registry Software сработал приём с подстановкой внешних ресурсов через манипуляции с элементом XXE (XML external entity). Например, для чтения файла /etc/passwd с сервера достаточно было отправить запрос:

 ‹?xml version="1.0" standalone="no"?› ‹!DOCTYPE foo [ ‹!ENTITY xxe SYSTEM "file:///etc/passwd"› ]› ‹epp xmlns="urn:ietf:params:xml:ns:epp-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0 epp-1.0.xsd"› ‹command› ‹poll op='req' /› ‹clTRID›&xxe;‹/clTRID› ‹/command› ‹/epp›

Далее исследователи изучили Web API, предоставляемый на серверах с CoCCA Registry Software и доступный на стадии до прохождения аутентификации. В Java-классе CitiesServlet была найдена ещё одна уязвимость, позволяющая передать содержимого любого локального файла. Проблема возникла из-за отсутствия проверки наличия символов «/..» при формировании имени файла на основе одного из параметров URI. Сочетание данной уязвимости с XXE-уязвимостью в парсере XML позволило получить доступ к любым файлам в системе, так как ПО CoCCA Registry Software выполняется с правами root.

В ходе атаки XXE-уявзимость использовалась для определения структуры файлов и каталогов на сервере, а уязвимость в Web API для простой загрузки нужных файлов с сервера (например, для загрузки /etc/shadow достаточно выполнить запрос «https://epp.whois.ai/cities?country=/../../../../../../../../etc/shadow»). Исследователи сообщили о проблемах разработчикам ПО CoCCA Registry Software и в настоящее время уязвимости уже устранены.

Источник: https://www.opennet.ru/opennews/art.shtml?num=59285 Источник.