Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
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-38526-KrayinCRM — Carga de archivos arbitraria autenticada que conduce a la ejecución remota de código. Análisis técnico y reproducción controlada de CVE-2026-38526 en Webkul Krayin CRM 2.2.x. | Kitploit
Herramientas/GitHubGitHub/ish3ng0m4/cve-2026-38526-krayincrm
Análisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebSeguridad WebPruebas de PenetraciónPapers e InvestigaciónAprendizaje y EducaciónDesarrollo de Payloads
GitHub
ish3ng0m4/cve-2026-38526-krayincrm

CVE-2026-38526-KrayinCRM

Carga de archivos arbitraria autenticada que conduce a la ejecución remota de código. Análisis técnico y reproducción controlada de CVE-2026-38526 en Webkul Krayin CRM 2.2.x.

Ver Repositorio
28hace 1 mesAú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-38526 KrayinCRM

Carga arbitraria de archivos autenticada que conduce a ejecución remota de código. Análisis técnico y reproducción controlada de CVE-2026-38526 en Webkul Krayin CRM 2.2.x.

Descripción general

CVE-2026-38526 es una vulnerabilidad de carga arbitraria de archivos autenticada que afecta a Webkul Krayin CRM 2.2.x.
La funcionalidad vulnerable está expuesta a través del endpoint de carga de TinyMCE de la aplicación:

POST /admin/tinymce/upload

La aplicación no restringe suficientemente el tipo de archivo que se puede cargar. Un usuario autenticado puede enviar un archivo con una extensión ejecutable del lado del servidor, como .php. La aplicación almacena el archivo cargado y devuelve su URL accesible.

Cuando el despliegue permite la ejecución de PHP desde la ubicación de carga, el archivo cargado puede solicitarse posteriormente a través del servidor web, lo que resulta en ejecución remota de código en el contexto del proceso de la aplicación web.
El registro CVE publicado califica la vulnerabilidad con CVSS 3.1: 9.9 (Crítica).

Contexto de la investigación

Este repositorio contiene mi propio análisis técnico y reproducción controlada de la vulnerabilidad.

La vulnerabilidad ya había sido divulgada públicamente bajo CVE-2026-38526. Este trabajo no reclama el descubrimiento de la vulnerabilidad. El propósito de esta investigación fue comprender la implementación vulnerable, reproducir la ruta de explotación en un entorno controlado y examinar las condiciones que convierten el problema de carga de archivos en ejecución remota de código.

La vulnerabilidad también se utilizó en la máquina Hack The Box GCSB 2026 Nexus, que proporcionó un entorno práctico para estudiar el problema.

Software afectado

Producto: Webkul Krayin CRM Versiones afectadas: 2.2.x Vulnerabilidad: Carga arbitraria de archivos Impacto resultante: Ejecución remota de código Autenticación: Requerida Vector de ataque: Red CWE: CWE-434 — Carga sin restricciones de archivos de tipo peligroso CVSS: 9.9 Crítica CVE: CVE-2026-38526

Endpoint vulnerable

La funcionalidad vulnerable es gestionada por:

/admin/tinymce/upload

El endpoint acepta un archivo cargado a través del parámetro file. La lógica relevante de la aplicación deriva el nombre de archivo almacenado a partir del nombre de archivo original y conserva su extensión original.


Este comportamiento es importante porque la aplicación no se limita a aceptar un objeto cargado; conserva una extensión ejecutable controlada por el atacante y hace que el objeto resultante sea accesible a través del mecanismo de almacenamiento de la aplicación.

Causa raíz

El problema principal es la validación insuficiente del lado del servidor de los archivos cargados.

La aplicación utiliza la extensión original proporcionada por el cliente al construir el nombre de archivo almacenado. No existe una lista de permitidos suficientemente restrictiva que impida que los tipos de archivo ejecutables lleguen a la capa de almacenamiento.

El flujo relevante es

El uso de un nombre de archivo generado no resuelve el problema subyacente.

Por ejemplo, cambiar shell.php por un nombre de archivo generado como .php no hace que el archivo cargado sea seguro si el servidor sigue interpretando los archivos .php como código PHP ejecutable.

Por qué la carga puede convertirse en RCE

Una carga sin restricciones no significa automáticamente ejecución remota de código. La ruta de ejecución depende del manejo que haga el servidor del archivo cargado. En el escenario de despliegue vulnerable, la cadena se convierte en

Por lo tanto, el impacto de RCE resulta de la combinación de:

  1. Validación de carga insuficiente
  2. Conservación de una extensión ejecutable
  3. Almacenamiento accesible desde la web
  4. Ejecución de PHP permitida en esa ubicación

Si la ejecución de PHP está deshabilitada para el directorio de carga, la ruta directa de RCE puede prevenirse aunque la debilidad subyacente de carga arbitraria de archivos siga existiendo.

Cómo ejecutarlo

  1. Descargar

wget:

wget https://raw.githubusercontent.com/Ish3ng0m4/CVE-2026-38526-KrayinCRM/main/poc/upload.py
wget https://raw.githubusercontent.com/Ish3ng0m4/CVE-2026-38526-KrayinCRM/main/poc/marker.php

curl:

curl -LO https://raw.githubusercontent.com/Ish3ng0m4/CVE-2026-38526-KrayinCRM/main/poc/upload.py
curl -LO https://raw.githubusercontent.com/Ish3ng0m4/CVE-2026-38526-KrayinCRM/main/poc/marker.php

2. Coloque los archivos en

    poc/
    ├── upload.py
    └── marker.php

3. Cree un entorno de Python e instale la dependencia

    python3 -m venv .venv
    source .venv/bin/activate
    pip install requests

4. Haga ejecutable el PoC

    chmod +x poc/upload.py

6. Ejecútelo

    python3 poc/upload.py \
      --url http://[Lab_IP:PORT] \
      --email [email protected] \
      --password 'YOUR_PASSWORD'

Análisis de explotación

La explotación requiere una cuenta autenticada capaz de acceder a la funcionalidad vulnerable.

A grandes rasgos:

  1. Autenticarse en Krayin CRM
  2. Obtener el contexto de sesión de la aplicación requerido
  3. Acceder a /admin/tinymce/upload
  4. Enviar un archivo manipulado
  5. La aplicación acepta la extensión ejecutable
  6. El archivo se escribe en la ubicación de almacenamiento de TinyMCE
  7. La aplicación devuelve la URL del archivo resultante
  8. Solicitar el archivo subido
  9. PHP es interpretado por el servidor
  10. Los comandos se ejecutan con los privilegios de la aplicación web

El contexto de ejecución resultante está determinado por el despliegue subyacente. En un despliegue típico de Linux, esta puede ser la cuenta de servicio del servidor web, como por ejemplo:

www-data

Esto no proporciona automáticamente privilegios de root del sistema operativo. El impacto adicional depende de los permisos y la configuración del entorno comprometido.

Análisis del código fuente

El comportamiento vulnerable puede reducirse a tres operaciones importantes.

  1. Obtener el archivo subido

     $file = request()->file('file');
    

La aplicación recibe el archivo proporcionado por el cliente.

  1. Conservar la extensión controlada por el cliente

     $filename = md5($file->getClientOriginalName().time())
                 .'.'.$file->getClientOriginalExtension();
    

El nombre del archivo en sí se modifica, pero se conserva la extensión original. Esta es una distinción importante: la aleatorización del nombre del archivo no es una validación del tipo de archivo.

  1. Almacenar y exponer el archivo

      $path = $file->storeAs($this->storagePath, $filename);
     return [
         'file' => $path,
         'file_name' => $file->getClientOriginalName(),
         'file_url' => Storage::url($path),
     ];
    

La aplicación almacena el archivo y proporciona su URL al cliente.

Impacto

Una explotación exitosa puede proporcionar a un atacante la ejecución de código con los privilegios de la aplicación web.

Descargar herramienta