🔐 CVE-2026-57821 - Apache Fineract SQL Injection Toolkit 📚 Dos scripts de Python para pruebas de seguridad autorizadas: verifier.py (detección segura, sin extracción) y exploit.py (análisis profundo). Soporta 11 tipos de DB. Perfecto para comprender las vulnerabilidades de inyección SQL. Solo pruebas legales ⚠️ exclusivamente con fines educativos y de investigación.

AVISO LEGAL Y ÉTICO
Este toolkit se proporciona estrictamente con fines educativos, de formación y de pruebas de seguridad autorizadas.
El uso no autorizado contra cualquier sistema sin permiso escrito explícito es ilegal y viola las leyes de delitos informáticos.
El autor no asume ninguna responsabilidad por el uso indebido o los daños.
Usted es el único responsable de sus acciones.
CVE-2026-57821 es una vulnerabilidad de inyección SQL descubierta en el endpoint de la API de listado de oficinas de Apache Fineract.
| Atributo | Detalle |
|---|---|
| Endpoint | /api/v1/offices |
| Parámetro | orderBy |
| Método | GET |
| Autenticación requerida | Sí (solo usuarios autenticados) |
| Versiones afectadas | Apache Fineract ≤ 1.14.0 |
| Versión parcheada | Apache Fineract 1.15.0 |
La vulnerabilidad existe porque el parámetro orderBy se incrusta directamente en las consultas SQL sin una sanitización adecuada. Un atacante con credenciales válidas puede inyectar subconsultas envueltas entre paréntesis () en el parámetro orderBy.
Por qué esto elude las correcciones anteriores:
ColumnValidator para sanitizar las cláusulas ORDER BYORDER BYEjemplo de vector de ataque:
GET /api/v1/offices?orderBy=(SELECT CASE WHEN (1=1) THEN pg_sleep(5) ELSE pg_sleep(0) END)&limit=1
| Impacto | Descripción |
|---|---|
| Exfiltración de datos | La inyección SQL ciega basada en tiempo puede extraer contenido sensible de la base de datos |
| Denegación de servicio | Las consultas pesadas pueden agotar los recursos del pool de conexiones |
| Divulgación de información | Las técnicas basadas en errores pueden revelar la estructura y los datos de la base de datos |
| Atributo | Detalle |
|---|---|
| Descubridor / Reportero | Terence Monteiro (Apache Fineract Team) |
| Fecha de divulgación pública | 14 de julio de 2026 |
| Versión parcheada | Apache Fineract 1.15.0 |
| Anuncio oficial | Apache Mailing List |
| Corrección en GitHub | PR #6048 |
Este toolkit detecta y adapta automáticamente las técnicas de explotación para 11 backends de bases de datos diferentes:
| Base de datos | Método de detección | Técnica de explotación |
|---|---|---|
| PostgreSQL | Basada en tiempo (pg_sleep) | Ciega basada en tiempo |
| MySQL | Basada en tiempo (SLEEP) | Ciega basada en tiempo |
| MariaDB | Basada en tiempo + @@version_comment | Ciega basada en tiempo |
| MSSQL | Basada en errores (fallo de CONVERT) | Basada en errores |
| Oracle | Basada en tiempo (DBMS_LOCK.SLEEP) | Ciega basada en tiempo |
| SQLite | Consulta pesada (join cartesiano) | Basada en tiempo (pesada) |
| Firebird | Consulta pesada (join cartesiano) | Basada en tiempo (pesada) |
| DB2 | Consulta pesada (join cartesiano) | Basada en tiempo (pesada) |
| Informix | Consulta pesada (join cartesiano) | Basada en tiempo (pesada) |
| H2 | Consulta pesada (join cartesiano) | Basada en tiempo (pesada) |
| Desconocida (genérica) | Fallback a PostgreSQL | Basada en tiempo |
Este proyecto proporciona dos scripts de Python para diferentes escenarios de evaluación de seguridad:
verifier.py – Herramienta de verificación segura y mínimaPropósito: Demostrar rápidamente la existencia de la vulnerabilidad sin extraer datos.
Qué hace:
VULNERABLE o NOT VULNERABLE para cada tipo de base de datos** Ventajas:**
** Caso de uso:** Evaluación de primera pasada para determinar si el objetivo es vulnerable.
exploit.py – Analizador de seguridad integralPropósito: Ejercitar completamente la vulnerabilidad para extraer información de la base de datos.
Qué hace:
Ventajas:
** Caso de uso:** Análisis de seguridad en profundidad tras la confirmación de la vulnerabilidad.
** Diferencia clave:**
verifierPoC.pyte indica si es vulnerable;exploit.pyte muestra qué se puede extraer. Ambos cumplen roles distintos pero complementarios en un flujo de trabajo de evaluación de seguridad.
requestspip install requests
Edite las siguientes variables al inicio de ambos scripts:
| Variable | Descripción | Valor predeterminado |
|---|---|---|
TARGET | URL de la API de Fineract | http://localhost:8080/fineract-provider/api/v1/offices |
USERNAME | Nombre de usuario para la autenticación de la API | mifos |
PASSWORD | Contraseña para la autenticación de la API | password |
TENANT_ID | Identificador de inquilino | default |
BASE_SLEEP | Duración de la pausa para pruebas basadas en tiempo (exploit.py) | 6 |
SLEEP_SECONDS | Duración de la pausa para pruebas basadas en tiempo (verifier.py) | 5 |
TIMEOUT | Tiempo de espera de la solicitud HTTP | 25 (exploit) / 15 (verifier) |
MAX_RETRIES | Número de reintentos para solicitudes fallidas | 2 |
exploit.py - Escaneo profundo
python3 exploit.py
Salida esperada:
CVE-2026-57821 - Apache Fineract Vulnerability Verifier
══════════════════════════════════════════════════════════════════════════════════════
@tc4dy is here :) Good Luck!
CONNECTION SUCCESS
BASELINE: 0.234s
STARTING VULNERABILITY VERIFICATION
VERIFICATION RESULTS
PostgreSQL: VULNERABLE
MySQL: NOT VULNERABLE
MariaDB: NOT VULNERABLE
Oracle: NOT VULNERABLE
MSSQL: NOT VULNERABLE
CONCLUSION: TARGET IS VULNERABLE (CVE-2026-57821 CONFIRMED)
Interpretation: If VULNERABLE appears for any database type, the target is affected.
Puntuación CVSS Métrica Valor Puntuación base CVSS v3.1 8.1 (Alta) Vector CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:H Vector de ataque Red Privilegios requeridos Bajos Interacción del usuario Ninguna Puntuación EPSS
0.29% (probabilidad de explotación en un plazo de 30 días)
Mapeo CWE
CWE‑89: Neutralización incorrecta de elementos especiales utilizados en un comando SQL ('inyección SQL')
Por qué funciona el payload
El código vulnerable en Apache Fineract 1.14.0: