Una web shell es un script malicioso colocado en un servidor web que permite a un atacante ejecutar comandos en ese servidor de forma remota mediante peticiones HTTP normales.
Cómo funciona una web shell
Una web shell es un pequeño archivo escrito en un lenguaje que el servidor ejecuta: PHP, ASP.NET (ASPX), JSP o Python. Una vez en una carpeta accesible desde la web, el atacante abre su URL o envía peticiones especialmente preparadas y el servidor ejecuta los comandos con los privilegios de la aplicación web. Algunas web shells ocupan una sola línea, como la conocida China Chopper; otras ofrecen una interfaz completa con gestor de archivos y cliente de base de datos.
Los atacantes las instalan aprovechando fallos de subida de archivos, vulnerabilidades de ejecución remota de código o credenciales de administrador robadas. En 2021, las vulnerabilidades ProxyLogon y ProxyShell de Microsoft Exchange llevaron a que decenas de miles de servidores quedaran infectados con web shells en pocos días.
Por qué son peligrosas
Una web shell es una puerta trasera que sobrevive a los parches: aunque se corrija la vulnerabilidad original, el atacante puede volver. Desde el servidor roba datos, avanza por la red, instala criptomineros o ransomware o usa el equipo como relé. Su tráfico se confunde con las peticiones web normales, y MITRE ATT&CK la clasifica como técnica de persistencia (T1505.003).
Cómo detectarlas y prevenirlas
- Parchear con rapidez las aplicaciones expuestas a internet y restringir la subida de archivos por tipo y ubicación.
- Vigilar la integridad de los archivos en los directorios web y alertar ante nuevos scripts.
- Detectar procesos del servidor web (w3wp.exe, php-fpm, httpd) que lancen intérpretes como cmd.exe o /bin/sh.
- Tras cualquier intrusión, buscar web shells como indicadores de compromiso antes de dar el incidente por cerrado.