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.

FeedsContactoPrivacidad© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2026-52614 — Hay una vulnerabilidad de inyección SQL en el backend de Ruoyi v4.8.3 | Kitploit
Herramientas/GitHubGitHub/chinesespeople/cve-2026-52614
Descifrado de ContraseñasAnálisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebPruebas de Penetración
GitHubchinesespeople/cve-2026-52614

CVE-2026-52614

Hay una vulnerabilidad de inyección SQL en el backend de Ruoyi v4.8.3

Ver Repositorio
122hace 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-52614 - RuoYi v4.8.3 Bypass de filterKeyword para Inyección SQL

Chino | Inglés

Se requiere autorización / Solo pruebas autorizadas
Este repositorio está destinado únicamente a la investigación de seguridad y las pruebas autorizadas. No lo utilice contra sistemas sin permiso explícito.
Este repositorio es solo para investigación de seguridad y pruebas autorizadas explícitamente. No lo utilice en sistemas no autorizados.

Explicación en Chino

Resumen de la vulnerabilidad

El endpoint /tool/gen/createTable del módulo de generación de código de RuoYi v4.8.3 permite a los usuarios autenticados enviar SQL para crear tablas. El endpoint llama a SqlUtil.filterKeyword() para filtrar palabras clave peligrosas. Sin embargo, la implementación elimina todos los espacios en blanco de la entrada antes de verificar las entradas de la lista negra que contienen espacios al final, como select , insert y drop . Por lo tanto, esas entradas no pueden coincidir con la entrada normalizada.

Una declaración CREATE TABLE ... AS SELECT ... (CTAS) puede pasar la verificación de tipo MySqlCreateTableStatement de Druid mientras aún ejecuta un SELECT. Un atacante con una sesión válida de backend puede utilizar este comportamiento para realizar inyección SQL ciega basada en booleanos, extraer datos sensibles y crear tablas.

Condiciones de impacto

  • El objetivo ejecuta RuoYi v4.8.3.
  • El atacante ha iniciado sesión en el backend y posee un JSESSIONID válido.
  • La cuenta actual puede acceder a los endpoints del módulo de generación de código.
  • La base de datos y la cuenta de base de datos actual permiten ejecutar operaciones CTAS.

Principio de la vulnerabilidad

El script de verificación utiliza la siguiente lógica para extraer el hash de la contraseña y el salt del usuario admin de la tabla sys_user:

  1. Crear una tabla intermedia que contenga login_name, password y salt mediante CTAS.
  2. Por cada carácter a evaluar, crear una tabla de prueba con una condición SUBSTRING() en el WHERE.
  3. Cuando la condición es verdadera, CTAS devuelve datos y la tabla de prueba no se importa automáticamente a la lista de tablas del generador.
  4. Cuando la condición es falsa, CTAS devuelve cero filas y la tabla de prueba se importa automáticamente, haciéndose visible a través de /tool/gen/list.
  5. Utilizar esa diferencia para recuperar el hash de la contraseña y el salt carácter por carácter.

Requisitos del entorno

  • Python 3.8+
  • Una sesión válida y autorizada de backend de RuoYi
  • Paquetes de Python: requests, urllib3

Instalar dependencias:

python -m pip install requests urllib3

Uso

Abra exp.py y reemplace las siguientes dos líneas en la sección de configuración cerca de la parte superior del archivo:

TARGET = "http://127.0.0.1:8080"
COOKIE = "JSESSIONID=your_session_id"

Donde:

  • TARGET: la URL base de RuoYi a probar, por ejemplo http://127.0.0.1:8080.
  • COOKIE: una sesión JSESSIONID de backend autenticada válida.

Después de reemplazar la URL y la sesión, ejecute:

python exp.py

El script crea una tabla intermedia y muchas tablas de prueba booleanas en la base de datos objetivo. Úselo solo en un entorno aislado o explícitamente autorizado, y haga que el administrador de la base de datos elimine las tablas generadas después de las pruebas.

Captura de pantalla de verificación

exp.png muestra una verificación exitosa en un entorno local autorizado:

Verificación exitosa

Recomendaciones de mitigación

  • No confíe en listas negras de palabras clave SQL ni ejecute SQL proporcionado por el usuario directamente.
  • Corrija la lógica de normalización y coincidencia en filterKeyword(), pero no la trate como el único control de seguridad.
  • Aplique autorización estricta, auditoría y protección CSRF a los endpoints de generación de código.
  • Elimine la capacidad de creación arbitraria de tablas SQL; si es necesario, construya declaraciones fijas a partir de parámetros estructurados y validados.
  • Utilice una cuenta de base de datos con mínimos privilegios que no pueda leer tablas sensibles ni realizar operaciones CTAS/DDL innecesarias.
  • Actualice a una versión oficial corregida o aplique el parche de seguridad del proveedor.

Inglés

Summary

The /tool/gen/createTable endpoint in the code-generation module of RuoYi v4.8.3 accepts table-creation SQL from authenticated backend users. The endpoint calls SqlUtil.filterKeyword() to block dangerous SQL keywords. However, the implementation removes all whitespace from the input before checking blacklist entries that contain trailing spaces, such as select , insert , and drop . Those entries therefore cannot match the normalized input.

A CREATE TABLE ... AS SELECT ... (CTAS) statement can pass the Druid MySqlCreateTableStatement type check while still executing a SELECT. An attacker with a valid backend session may use this behavior for boolean-based blind SQL injection, sensitive-data extraction, and table creation.

Preconditions

  • The target runs RuoYi v4.8.3.
  • The tester has a valid authenticated backend JSESSIONID.
  • The authenticated account can access the code-generation endpoints.
  • The database and its configured account permit CTAS operations.

How the PoC Works

The script recovers the admin password hash and salt from sys_user using the following oracle:

  1. Create an intermediate table containing login_name, password, and salt.
  2. Create one test table per candidate character with a SUBSTRING() condition.
  3. When the condition is true, CTAS returns a row and the test table is not automatically imported into the generator table list.
  4. When the condition is false, CTAS returns zero rows and the table is automatically imported, making it visible through /tool/gen/list.
  5. Use that difference to recover the password hash and salt one character at a time.

Requirements

  • Python 3.8+
  • A valid, authorized RuoYi backend session
  • Python packages: requests, urllib3

Install dependencies:

python -m pip install requests urllib3

Usage

Open exp.py and replace the following two lines in the configuration section near the top of the file:

TARGET = "http://127.0.0.1:8080"
COOKIE = "JSESSIONID=your_session_id"

Where:

  • TARGET is the RuoYi base URL to test, for example http://127.0.0.1:8080.
  • COOKIE is a valid authenticated backend JSESSIONID session.

After replacing the URL and session, run:

python exp.py

The script creates an intermediate table and many boolean-test tables in the target database. Use it only in an isolated or explicitly authorized environment, and have the database administrator remove the generated tables after testing.

Screenshot

exp.png shows a successful verification in an authorized local environment:

Verificación exitosa

Mitigation

  • Do not rely on SQL keyword blacklists or execute user-supplied SQL directly.
  • Correct the normalization and matching logic in filterKeyword(), but do not treat it as the sole security control.
  • Apply strict authorization, auditing, and CSRF protection to code-generation endpoints.
  • Remove arbitrary SQL table creation; if required, construct fixed statements from structured, validated parameters.
  • Use a least-privileged database account that cannot read sensitive tables or perform unnecessary CTAS/DDL operations.
  • Upgrade to an officially fixed release or apply the vendor's security patch.

Archivos

Descargar herramienta