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-13374 — Kalrav AI Agent <= 2.3.3 - Carga de archivos arbitraria no autenticada a través de la acción AJAX kalrav_upload_file | Kitploit
Herramientas/GitHubGitHub/d0n601/cve-2025-13374
Generación de PayloadsAnálisis de VulnerabilidadesAnálisis de CódigoExplotaciónExplotación de Aplicaciones WebPruebas de Penetración
GitHubd0n601/cve-2025-13374

CVE-2025-13374

Kalrav AI Agent <= 2.3.3 - Carga de archivos arbitraria no autenticada a través de la acción AJAX kalrav_upload_file

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

Kalrav AI Agent <= 2.3.3 - Carga de archivos arbitraria no autenticada a través de la acción AJAX kalrav_upload_file

El plugin Kalrav AI Agent de WordPress (versión 2.3.3 y anteriores) contiene una vulnerabilidad de carga de archivos arbitraria que permite a usuarios no autenticados subir archivos PHP maliciosos al servidor, lo que podría llevar a la ejecución remota de código.

TL;DR Exploits

Se proporciona un POC CVE-2025-13374.py para demostrar que un atacante remoto sube shell.php y ejecuta código remoto:

root@kitploit:~
python3 ./CVE-2025-13374.py http://techcorp.cc
[+] Target: http://techcorp.cc
[+] File uploaded successfully!
[+] Shell URL: http://techcorp.cc/wp-content/plugins/kalrav-ai-agent/uploads/1763247725-shell.php
[+] Command output:
www-data

Descripción Técnica

La vulnerabilidad existe en la función kalrav_upload_file() en el endpoint . La funcionalidad de carga carece de una validación adecuada de archivos, verificación de nonce y comprobaciones de capacidades. Esto permite a usuarios no autenticados subir archivos arbitrarios, incluidos archivos PHP que pueden ejecutarse en el servidor.

/wp-admin/admin-ajax.php

Análisis de la Ruta de Ataque

Fuente: Entrada del usuario desde $_FILES['file'] (línea 978) Sumidero: move_uploaded_file($_FILES['file']['tmp_name'], $target_path) (línea 982)

La vulnerabilidad ocurre porque:

  1. Registro de Ruta: El endpoint de carga se registra mediante el hook wp_ajax_nopriv_kalrav_upload_file (línea 967), lo que permite el acceso no autenticado.
  2. Sin Autenticación: El prefijo wp_ajax_nopriv_ hace que la función sea accesible para usuarios no autenticados.
  3. Sin Verificación de Nonce: La función carece de protección CSRF mediante la verificación de nonce.
  4. Sin Comprobaciones de Capacidades: No se realiza ninguna validación de permisos antes de permitir la carga de archivos.
  5. Procesamiento de Entrada: Los datos del archivo controlados por el usuario desde $_FILES['file'] se procesan directamente sin validación.
  6. Manejo de Archivos: Solo se aplica una sanitización básica del nombre del archivo usando basename(): time() . '-' . basename($_FILES['file']['name']) (línea 979), que solo previene el directory traversal pero no valida las extensiones de archivo.
  7. Almacenamiento de Archivos: Los archivos se guardan en wp-content/plugins/kalrav-ai-agent/uploads/.

Ubicación del Código Vulnerable

Archivo: kalrav-ai-agent.php Líneas: 969-996

root@kitploit:~
add_action('wp_ajax_kalrav_upload_file', 'kalrav_upload_file');
add_action('wp_ajax_nopriv_kalrav_upload_file', 'kalrav_upload_file');  

function kalrav_upload_file()
{
    // Path to your plugin uploads folder
    $upload_dir = plugin_dir_path(__FILE__) . 'uploads/';

    if (!file_exists($upload_dir)) {
        mkdir($upload_dir, 0755, true);
    }

    if (!empty($_FILES['file']['name'])) { 
        $file_name = time() . '-' . basename($_FILES['file']['name']);  
        $target_path = $upload_dir . $file_name;

        if (move_uploaded_file($_FILES['file']['tmp_name'], $target_path)) { 
            wp_send_json_success([
                'message' => 'File uploaded successfully!',
                'file_path' => $target_path,
                'url' => plugins_url('uploads/' . $file_name, __FILE__)  
            ]);
        } else {
            wp_send_json_error(['message' => 'Failed to move uploaded file.']);
        }
    } else {
        wp_send_json_error(['message' => 'No file uploaded.']);
    }

    wp_die();
}
Descargar herramienta