CVE-2024-11680

ProjectSend ProjectSend

ВЫСОКАЯ ВЕРОЯТНОСТЬ

Дата обнаружения

2024-12-03

Официальное описание

ProjectSend contains an improper authentication vulnerability that allows a remote, unauthenticated attacker to enable unauthorized modification of the application's configuration via crafted HTTP requests to options.php. Successful exploitation allows attackers to create accounts, upload webshells, and embed malicious JavaScript.

🛡️
Технический анализ и план устранения

Суть уязвимости

CVE-2024-11680 представляет собой критическую уязвимость обхода аутентификации в файле options.php программного обеспечения ProjectSend. Проблема заключается в отсутствии проверки прав доступа и сессии пользователя перед обработкой POST-запросов.

Дистанционный неавторизованный злоумышленник может отправить специально сформированный HTTP-запрос, который позволяет изменять глобальные настройки приложения. Это открывает следующие векторы атаки: * Включение свободной регистрации пользователей (позволяет создать аккаунт администратора). * Изменение списка разрешенных расширений файлов для загрузки (позволяет загрузить PHP-webshell). * Внедрение произвольного JavaScript-кода в поля конфигурации (Stored XSS).

Как исправить

Основным способом устранения является обновление ProjectSend до версии r1720 или выше, где была добавлена проверка авторизации для доступа к конфигурационным файлам.

  1. Сделайте резервную копию базы данных и файлов приложения.
  2. Скачайте последнюю версию с официального репозитория GitHub или сайта проекта.
  3. Замените файлы текущей установки новыми файлами из архива.
  4. Если обновление невозможно, необходимо вручную отредактировать файл options.php, добавив проверку прав в начало файла:
/**
 * Проверка, что пользователь авторизован и является администратором
 */
require_once('sys.includes.php');
if (!$auth->is_admin()) {
    exit;
}

Временные меры

Если вы не можете немедленно обновить систему, примените следующие меры для ограничения доступа к уязвимому компоненту:

  1. Ограничьте доступ к файлу options.php на уровне веб-сервера (Nginx/Apache), разрешив его только с доверенных IP-адресов администраторов.

Пример для Nginx:

location = /options.php {
    allow 192.168.1.100;
    deny all;
    proxy_pass http://backend;
}

Пример для Apache (.htaccess):

<Files "options.php">
    Order Deny,Allow
    Deny from all
    Allow from 192.168.1.100
</Files>

  1. Установите запрет на запись в файл конфигурации sys.config.php на уровне файловой системы, чтобы предотвратить его перезапись через веб-интерфейс:
chmod 444 sys.config.php

  1. Проверьте логи веб-сервера на наличие подозрительных POST-запросов к options.php от неавторизованных пользователей.