
Prueba de concepto para CVE-2026-65761 - EasyStore Pro Inyección SQL no autenticada a través de `filter_sortby`
filter_sortby (prueba de concepto)Este repositorio proporciona una prueba de concepto educativa para CVE-2026-65761, una vulnerabilidad de inyección SQL sin autenticación que afecta a las versiones 1.0.0 a 2.0.2 (inclusive) de la extensión EasyStore para Joomla. Solo la versión Pro del plugin se ve afectada, ya que el parámetro filter_sortby está restringido por licencia.
El PoC (poc.py) demuestra la inyección SQL en el parámetro de solicitud filter_sortby en el flujo de búsqueda de productos (option=com_easystore&view=products&task=search) mediante una comprobación basada en errores.
Este proyecto y los stacks de Docker son solo para pruebas de seguridad locales y educación.
No lo ejecutes contra sistemas que no poseas o para los que no tengas permiso explícito de prueba.
La ruta de código vulnerable es una función exclusiva de Pro. Para que la ruta de código pueda auditarse en un laboratorio local reproducible, este repositorio aplica un monkeypatch temporal en el contenedor para que la ruta de ordenación/filtrado restringida por Pro pueda ejecutarse.
Esto no se proporciona como una técnica de evasión de licencias y no debe usarse para acceder a funciones de pago en implementaciones reales. Su único propósito es permitir la investigación defensiva de seguridad y la validación coordinada de vulnerabilidades en un entorno de prueba local aislado.
.
├── backup.sql.gz
├── poc.py
├── vulnerable/
│ ├── docker-compose.yaml
│ └── setup.sh
└── patched/
├── docker-compose.yaml
└── setup.sh
poc.py: PoC del exploit.vulnerable/docker-compose.yaml: stack de laboratorio vulnerable en http://127.0.0.1:9999.patched/docker-compose.yaml: stack de laboratorio parcheado en http://127.0.0.1:9999.backup.sql.gz: volcado de arranque con un conjunto de datos mínimo de la tienda EasyStore requerido por este PoC (2 productos, 1 categoría, ajustes básicos de la tienda).vulnerable/setup.sh y patched/setup.sh: importan backup.sql.gz en el contenedor MariaDB en ejecución.pip install requests
Inicia el entorno vulnerable:
docker compose -f vulnerable/docker-compose.yaml up -d
Luego aprovisiona los datos de prueba de EasyStore requeridos:
cd vulnerable
./setup.sh
cd ..
Ejecuta el PoC:
python3 poc.py
El resultado esperado en el entorno vulnerable incluye:
[!] Target is vulnerable to CVE-2026-65761!
Detén primero el stack vulnerable (si está en ejecución):
docker compose -f vulnerable/docker-compose.yaml down -v
Inicia el entorno parcheado:
docker compose -f patched/docker-compose.yaml up -d
Luego aprovisiona los mismos datos de prueba de EasyStore requeridos:
cd patched
./setup.sh
cd ..
Ejecuta el mismo PoC:
python3 poc.py
El resultado esperado en el entorno parcheado es:
[-] Target is not vulnerable to CVE-2026-65761
En poc.py, la URL objetivo por defecto es http://localhost:9999.
Ajústala si ejecutas el laboratorio en un host o puerto diferente.