Weevely web shell sigilosa para administrar
Weevely web shell sigilosa para administrar
Weevely es una herramienta de pruebas de penetración (pentesting) integrada en Kali Linux. Funciona como una web shell sigilosa diseñada para mantener acceso remoto a un servidor web comprometido y administrarlo a través de una terminal estilo SSH.
A diferencia de las web shells tradicionales que incluyen interfaces gráficas detectables, Weevely genera un código PHP ofuscado y cifrado, lo que dificulta su detección por parte de sistemas de seguridad (IDS/IPS) o antivirus en el servidor.
Flujo general de uso
El uso de Weevely se divide en dos fases principales: generar el archivo PHP y conectarse al servidor.
1. Crear la shell localmente ──> 2. Subir el archivo al servidor web ──> 3. Conectarse desde Kali Linux
1. Generar la web shell PHP
Para crear el archivo de la shell que se subirá al servidor objetivo, abre la terminal en Kali Linux y ejecuta:
weevely generate <contraseña> <nombre_archivo.php>
<contraseña>: Una clave que tú elijas. Se utiliza para cifrar la comunicación entre tu máquina y la shell.<nombre_archivo.php>: El nombre del archivo que se va a crear (ejemplo:imagen.phpobackdoor.php).
Ejemplo:
weevely generate MiClaveSegura123 shell.php
2. Subir el archivo al servidor objetivo
El archivo generado (shell.php) debe subirse al servidor web vulnerable (por ejemplo, aprovechando una vulnerabilidad de File Upload / Subida Insegura de Archivos).
3. Establecer la conexión
Una vez que el archivo PHP está alojado en el servidor web y es accesible mediante una URL, inicia la conexión desde tu terminal:
weevely <URL_del_archivo> <contraseña>
Ejemplo:
weevely http://ejemplo.com/uploads/shell.php MiClaveSegura123
Si la conexión es exitosa, se abrirá una consola interactiva (weevely>) donde podrás ejecutar comandos directamente en el servidor objetivo.
Módulos y comandos útiles
Weevely incluye módulos integrados que automatizan tareas comunes de auditoría. Puedes utilizarlos desde la consola interactiva de Weevely:
Auditoría de archivos: Buscar archivos con permisos de escritura o configuraciones expuestas.
Escalada de privilegios: Buscar ejecutables con permisos SUID o vulnerabilidades locales.
Gestión de base de datos: Ejecutar consultas SQL en bases de datos a las que el servidor tenga acceso.
Descarga/Carga de archivos: Transferir archivos entre tu máquina Kali y el servidor.
⚠️ Aviso de seguridad y legalidad: Weevely es una herramienta diseñada exclusivamente para auditorías de seguridad autorizadas, entornos de laboratorio o competencias de tipo Catch The Flag (CTF). El uso de esta herramienta en sistemas sin autorización previa es ilegal.
Para realizar este ejercicio práctico necesitarás un entorno de laboratorio controlado con DVWA (Damn Vulnerable Web Application) corriendo sobre un servidor local (o máquina virtual como Metasploitable 2) y tu máquina Kali Linux en la misma red.
Prerrequisitos en DVWA
Inicia sesión en DVWA.
Ve al apartado DVWA Security en el menú de la izquierda.
Establece el nivel de seguridad en Low (Bajo) y haz clic en Submit.
Paso a paso
💡 Nota sobre niveles de seguridad superiores: En el nivel Medium de DVWA, la aplicación valida que el archivo sea una imagen comprobando la extensión o el tipo MIME. Para evadir esa restricción se suele cambiar la extensión a
.php.jpgo interceptar la petición HTTP con Burp Suite para modificar el campoContent-Type.
Para detectar las web shells generadas por Weevely mediante reglas YARA, es necesario analizar los patrones de ofuscación que utiliza la herramienta al empaquetar el código PHP.
Weevely no genera un archivo con código legible, sino un payload altamente comprimido y ofuscado que suele emplear:
Declaraciones masivas de matrices (arrays) con cadenas alfanuméricas aleatorias o divididas.
Funciones de manipulación de cadenas (
str_replace,implode,substr).Invocación dinámica de funciones PHP (
eval,$f(...), o decodificaciónbase64/XOR).
Regla YARA de ejemplo
A continuación tienes una regla orientada a identificar el patrón característico del código ofuscado que produce Weevely:
rule Detect_Weevely_PHP_Webshell {
meta:
description = "Detecta firmas y patrones de ofuscacion caracteristicos de webshells generadas por Weevely"
author = "Analista de Seguridad"
date = "2026-07-27"
severity = "HIGH"
reference = "https://github.com/epinna/weevely3"
strings:
// Etiqueta de inicio PHP
$php_tag = "<?php" ascii lower
// Cadenas comunes en la estructura de ofuscacion de Weevely
$str_replace = "str_replace" ascii
$implode = "implode" ascii
$base64 = "base64_decode" ascii
// Patrones tipicos de asignacion y sustitucion de cadenas en arrays de Weevely
$weevely_pattern1 = /\$[a-zA-Z0-9_]+\s*=\s*\$[a-zA-Z0-9_]+\s*\.\s*\$[a-zA-Z0-9_]+;/
$weevely_pattern2 = /\$[a-zA-Z0-9_]+\s*=\s*str_replace\(/ ascii
// Uso de variables dinámicas o asignaciones globales típicas
$global_var = "$GLOBALS" ascii
condition:
// El archivo debe comenzar o contener la etiqueta PHP y no superar un tamaño razonable
filesize < 100KB and $php_tag and (
// Combinacion de funciones utilizadas para recomponer el payload
(all of ($str_replace, $implode) and ($base64 or $global_var)) or
// O coincidencia de los patrones regex de ensamblado de variables
all of ($weevely_pattern*)
)
}
Desglose de la regla
Sección
meta: Describe el propósito de la regla, autor, nivel de severidad y referencias útiles para la clasificación del incidente en el SOC o SIEM.Sección
strings:$php_tag: Asegura que el archivo analizado sea un script interpretado por PHP.$str_replace/$implode/$base64: Weevely une fragmentos de cadenas ofuscadas almacenadas en arrays y las decodifica en tiempo de ejecución.Expresiones regulares (
$weevely_pattern*): Detectan la concatenación excesiva de variables de nombres aleatorios ($a = $b . $c;), patrón distintivo de la plantilla de generación de Weevely.
Sección
condition:filesize < 100KB: Filtra archivos grandes para evitar ralentizar el escaneo del servidor, ya que las shells de Weevely suelen ser muy livianas (menos de 5-10 KB).Exige la presencia de la etiqueta PHP junto con la combinación de métodos de reconstrucción de código.
Cómo probar la regla con YARA
Para ejecutar el escaneo sobre un directorio de un servidor web (por ejemplo, /var/www/html/):
yara -r /ruta/a/la/regla_weevely.yar /var/www/html/
Si deseas integrar la búsqueda con herramientas de auditoría locales, puedes combinarla con Thor Lite, Loki o incluirla en el agente de análisis de integridad de tu sistema (como Wazuh).