Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
CVE-2024-27630 — Ссылка на CVE-2024–27630 | Kitploit
Инструменты/GitHubGitHub/ally-petitt/cve-2024-27630
Анализ уязвимостейСбор информацииВеб-безопасностьТестирование на ПроникновениеСтатьи и ИсследованияОбучение и Образование
GitHubally-petitt/cve-2024-27630

CVE-2024-27630

Ссылка на CVE-2024–27630

Репозиторий
12 лет назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Детали уязвимости CVE-2024–27630

Обзор

В Savane v3.12 и более ранних версиях отсутствие проверки параметра file_id при удалении файла из /bugs/index.php приводит к уязвимости небезопасной прямой ссылки на объект (IDOR), которая позволяет аутентифицированному администратору группы с трекером ошибок произвольно удалять файловые вложения любого трекера ошибок, что приводит к недоступности этих файлов. Поскольку идентификаторы файлов увеличиваются с каждой новой загрузкой, можно создать скрипт, который итеративно удаляет все файловые вложения на сервере по file_id.

Классификация CWE: CWE-639: Authorization Bypass Through User-Controlled Key

Сообщил(а): Ally Petitt

Затронутый продукт: Savane

Затронутые версии: 3.12 и более ранние

Технические подробности

Функция, отвечающая за удаление файловых вложений в трекерах ошибок, — trackers_data_delete_file(), она определена в приведённом ниже блоке кода.

frontend/php/include/trackers/data.php:2417

root@kitploit:~
function trackers_data_delete_file ($group_id, $item_id, $file_id)
{
  global $sys_trackers_attachments_dir;
  # Make sure the attachment belongs to the group.
  $res = db_execute ("
    SELECT bug_id from " . ARTIFACT . " WHERE bug_id = ? AND group_id = ?",
    [$item_id, $group_id]
  );
  if (db_numrows ($res) <= 0)
    {
      # TRANSLATORS: the argument is item id (a number).
      $msg = sprintf (
        _("Item #%s doesn't belong to project"), $item_id
      );
      fb ($msg, 1);
      return;
    }

  $result = false;
  # Delete the attachment.
  if (unlink ("$sys_trackers_attachments_dir/$file_id")) 
    $result = db_execute ("
      DELETE FROM trackers_file WHERE item_id = ?  AND file_id = ?",
      [$item_id, $file_id]
    );

Функция начинается с SQL-запроса для проверки того, что группа, в которой находится идентификатор ошибки, указанный в item_id, является группой, в которую входит атакующий, известной как $group_id. Функция не проверяет, входит ли file_id в ту же группу, а это значит, что до тех пор, пока item_id соответствует действительной ошибке в группе атакующего, атакующий может изменить file_id, чтобы указать на любой файл в каталоге загрузки /var/lib/savane/trackers_attachments.

Кроме того, эта функция доступна только администраторам трекера ошибок.

frontend/php/bugs/index.php:586

root@kitploit:~
  case 'delete_file':
    # Remove an attached file.
    if ($is_trackeradmin)
      {
        trackers_data_delete_file($group_id, $item_id, $item_file_id);

         # Unset previous settings and return to the item.
         $depends_search = $reassign_change_project_search = $add_cc
           = $input_file = $changed = $vfl = $details = null;
         include '../include/trackers_run/mod.php';
      }
    else
      exit_permission_denied ();
    break;

Шаги проверки

Эти шаги демонстрируют удаление одного несанкционированного файла, однако обратите внимание, что атакующий может автоматизировать удаление всех файлов по их идентификаторам, поскольку они предсказуемы.

  1. Имейте учётную запись администратора группы с трекером ошибок (учётная запись атакующего).
  2. С помощью отдельной учётной записи (жертва) загрузите файловое вложение в отчёт об ошибке в группу, администратором которой атакующий не является. Пример каталога загрузки после этого выглядит так, где файл 40231 был загружен жертвой:
root@kitploit:~
root@60ae93fe131f:/var/lib/savane/trackers_attachments# ls
40226  40227  40230  40231
  1. Перейдите на главную страницу группы, администратором которой является атакующий. Затем откройте Bugs > Browse и обратите внимание на действительный Item ID в крайнем левом столбце таблицы. Этот ID будет использован на следующем шаге.

  2. Выполните от имени атакующего GET-запрос к пути /bugs/index.php?func=delete_file&item_id=<ATTACKER_ITEM_ID>&item_file_id=<FILE_ID_TO_DELETE>.

    В моём случае это выглядит как http://172.17.0.2:7890/bugs/index.php?func=delete_file&item_id=50697&item_file_id=40231.

  3. Убедитесь, что файл жертвы (из группы, на которую у атакующего нет прав) был удалён. Например:

root@kitploit:~
root@60ae93fe131f:/var/lib/savane/trackers_attachments# ls
40226  40227  40230

Меры по устранению

Обновитесь до Savane версии 3.13 или выше. Патч можно найти здесь.

Скачать инструмент