
ПРЕДУПРЕЖДЕНИЕ: Это уязвимое приложение для тестирования эксплойта для Jetpack < 13.9.1 с нарушенным контролем доступа (CVE-2024-9926). Запускайте на свой страх и риск!
Это уязвимое приложение для тестирования эксплуатации уязвимости нарушенного контроля доступа Jetpack < 13.9.1 (CVE-2024-9926).
Это приложение содержит серьезные уязвимости безопасности. Запускайте его на свой страх и риск! Рекомендуется использовать среду с резервным копированием и изоляцией (например, виртуальную машину с актуальным снимком и сетевым режимом только для хоста). Не загружайте это приложение на серверы, доступные из Интернета, так как они будут скомпрометированы.
ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Я не несу ответственности за то, как кто-либо использует это приложение. Единственная цель этого приложения — быть тестовым сценарием для эксплуатации уязвимости нарушенного контроля доступа Jetpack < 13.9.1 (CVE-2024-9926), и его не следует использовать со злым умыслом. Если ваш сервер будет скомпрометирован в результате установки этого приложения, это не моя ответственность, а ответственность лица(лиц), которые загрузили и установили его.
Вот шаги для настройки среды:
./up.sh, чтобы запустить композицию.Контейнер будет называться vuln-wp-jetpack.
Для удаления среды используйте команду ./down.sh или команду ./down_and_delete.sh, чтобы также удалить образы и том базы данных.
Взглянув на исправление, легко понять, что единственная проверка, выполняемая обоими методами get_items_permissions_check() и get_item_permissions_check(), — это членство пользователя в блоге.
Оба метода объявлены в классе Contact_Form_Endpoint файла automattic/jetpack-forms/src/contact-form/class-contact-form-endpoint.php. Как говорится в комментарии в начале класса, этот класс...
Используется как параметр
rest_controller_classпри регистрации типа записиfeedbackв классе\Automattic\Jetpack\Forms\ContactForm\Contact_Form
Это можно увидеть в файле automattic/jetpack-forms/src/contact-form/class-contact-form-plugin.php в строке 201, где регистрируется пользовательский тип записи feedback.
Доступные типы можно получить через REST API с помощью запроса следующего вида.
GET /?rest_route=/wp/v2/types
Ответ содержит тип feedback.
Для эксплуатации уязвимости достаточно запроса следующего вида.
GET /?rest_route=/wp/v2/feedback
Запрос должен содержать заголовок авторизации с Паролем приложения следующего вида.
Authorization: Basic eW91cl91c2VybmFtZTp5b3VyX2FwcGxpY2F0aW9uX3Bhc3N3b3Jk
Скрипт эксплуатации на Python можно найти здесь.
Этот проект лицензирован под Unlicense — подробности смотрите в файле LICENSE.