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
CVE-2025-22710 — Prueba de concepto de CVE-2025-22710 | Kitploit
Herramientas/GitHubGitHub/dottak/cve-2025-22710
Análisis de VulnerabilidadesAnálisis de CódigoExplotaciónExplotación de Aplicaciones WebPruebas de Penetración
GitHubdottak/cve-2025-22710

CVE-2025-22710

Prueba de concepto de CVE-2025-22710

Ver Repositorio
2hace 1 añoAú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-2025-22710

1️⃣ Tipo de componente

Plugin de WordPress

2️⃣ Detalles del componente

Nombre del componente WooCommerce Advanced Bulk Edit Products, Orders, Coupons, Any WordPress Post Type – Smart Manager

Versión vulnerable <= 8.50.0

Slug del componente smart-manager-for-wp-e-commerce

Enlace del componente https://wordpress.org/plugins/smart-manager-for-wp-e-commerce/

3️⃣ OWASP 2017: TOP 10

Clase de vulnerabilidad A3: Injection

Tipo de vulnerabilidad SQL Injection

4️⃣ Prerrequisito

Administrador

5️⃣ Detalles de la vulnerabilidad

👉 Descripción breve

El plugin WooCommerce Advanced Bulk Edit Products, Orders, Coupons, Any WordPress Post Type – Smart Manager (en adelante, Smart Manager) es un plugin que permite la edición masiva y la visualización de todos los tipos de entrada (post types) en WordPress.

En el plugin Smart Manager, versión 8.50.0 y anteriores, al usar la función de búsqueda avanzada para ver entradas, se produce una vulnerabilidad de inyección SQL porque los valores de filtrado se pasan a las consultas a la base de datos sin procesamiento de escape.

Sin embargo, aunque los resultados directos de los ataques de inyección SQL no pueden verse en pantalla, es posible realizar Blind SQL Injection mediante diferencias en los valores de respuesta según condiciones verdaderas/falsas.

👉 Cómo reproducir (PoC)

⚠️ Debe existir al menos una entrada para observar la diferencia en los valores de respuesta según condiciones verdaderas/falsas.

  1. Prepare un sitio WordPress con el plugin Smart Manager instalado, inicie sesión con una cuenta de administrador y navegue hasta la página del panel del plugin Smart Manager (/wp-admin/admin.php?page=smart-manager).

image

  1. Haga clic en la casilla 'Advanced Search' (Búsqueda avanzada) en el lado derecho de la barra de búsqueda para abrir la ventana de búsqueda avanzada.

image

  1. En el filtrado de búsqueda avanzada, seleccione 'Post Title' (Título de la entrada) e 'is' (es), luego introduzca el payload ' OR 1=1 )) # en el campo de entrada de texto. Después, haga clic en el botón de búsqueda en la parte superior.

image

  1. Al comprobar los resultados de búsqueda, como la condición del payload siempre es verdadera (OR 1=1), se recuperan todas las entradas.

image

  1. Por otro lado, si selecciona 'Post Title' e 'is' en el filtrado de búsqueda avanzada e introduce ' OR 1=2 )) # en el campo de entrada de texto, no se recuperará ninguna entrada porque la condición siempre es falsa (OR 1=2).

image

image

👉 Información adicional (opcional)

[Causa de la vulnerabilidad]

Al ejecutar la función 'Advanced Search' solicitada en la descripción del PoC anterior, se genera el siguiente paquete, y los valores de filtrado (Post Title, is, ' OR 1=1 )) #) introducidos en la búsqueda avanzada se ingresan en los datos de la solicitud advanced_search_query.

root@kitploit:~
advanced_search_query=[{"condition":"OR","rules":[{"condition":"AND","rules":[{"type":"wp_posts.post_title","operator":"is","value":"' OR 1=1 )) #"}]}]}]

image

Cuando se solicita este paquete, se llama a la función get_data_model en el archivo /wp-content/plugins/smart-manager-for-wp-e-commerce/classes/class-smart-manager-base.php, y se realizan consultas a la base de datos en el siguiente orden.

  1. Si existen los datos de solicitud advanced_search_query, se llama a la función process_search_cond. En este momento, los datos de solicitud advanced_search_query se pasan al valor con la clave search_query en el argumento de par clave-valor.

    root@kitploit:~
    search_query=[{"condition":"OR","rules":[{"condition":"AND","rules":[{"type":"wp_posts.post_title","operator":"is","value":"' OR 1=1 )) #"}]}]}]
    

    image

  2. La función llamada process_search_cond itera a través del valor con la clave search_query, inicializa el valor de filtrado Post Title(post_tile) en la variable $search_col, e inicializa el valor de filtrado ' OR 1=1 )) # que contiene el payload de inyección SQL en la variable $search_value.

En la función de búsqueda avanzada, la entrada del usuario (' OR 1=1 )) #) se incluye directamente en la consulta a la base de datos sin procesamiento de escape, lo que resulta en una vulnerabilidad de inyección SQL. Esta vulnerabilidad permite a los atacantes ejecutar consultas SQL arbitrarias, lo que podría conllevar graves riesgos de seguridad, como la filtración o manipulación de información sensible de la base de datos.

[Implementación y ejecución del código PoC]

⚠️ La implementación del código PoC consulta el nombre de la base de datos explotando la vulnerabilidad de inyección SQL.

  1. Abra el código PoC en un editor e introduzca la dirección del sitio WordPress y las credenciales de administrador.

    image

  2. Luego introduzca el siguiente comando para ejecutar el código PoC.

    Módulo requeridorequests

    root@kitploit:~
    python poc.py
    

    image

6️⃣ Demostración del exploit

video

7️⃣ Referencias

  • https://nvd.nist.gov/vuln/detail/CVE-2025-22710
Descargar herramienta

image

  • Las variables $search_col y $search_value se pasan a las claves search_col (=post_title) y search_value (=' OR 1=1 )) #) del array $search_params, respectivamente. Posteriormente, esta variable $search_params se pasa como valor con la clave search_params a la función create_flat_table_search_query.

    image

  • Posteriormente, la función create_flat_table_search_query define la cláusula WHERE de la consulta SQL y, en este punto, el search_value (=' OR 1=1 )) #) de la clave search_params pasado como argumento se incluye en la cláusula WHERE sin ningún procesamiento de escape.

    image

  • Luego, el valor de retorno de la función create_flat_table_search_query (que contiene el payload de inyección SQL) se pasa como argumento a la función process_flat_table_search_query.

    image

  • La función process_flat_table_search_query construye una consulta a la base de datos usando el argumento recibido, inicializando las variables $select, $from y $where. Aquí podemos ver que el payload de inyección SQL se pasa directamente a la variable $where sin ninguna validación.

    image

  • Las variables $select, $from, $where se asignan directamente a la variable $query_posts_search, y esta variable finalmente se pasa como argumento a la función que realiza la consulta a la base de datos.

    image