Un web shell es una interfaz similar a un shell que permite acceder de forma remota a un servidor web , a menudo con fines de ciberataques . [1] Un shell web es único porque se utiliza un navegador web para interactuar con él. [2] [3]
Un shell web se puede programar en cualquier lenguaje de programación compatible con un servidor. Los shells web se escriben más comúnmente en PHP debido al uso generalizado de PHP para aplicaciones web . Aunque también se utilizan Active Server Pages , ASP.NET , Python , Perl , Ruby y Unix . [1] [2] [3]
Al utilizar herramientas de monitoreo de red , un atacante puede encontrar vulnerabilidades que potencialmente pueden permitir la entrega de un shell web. Estas vulnerabilidades suelen estar presentes en aplicaciones que se ejecutan en un servidor web. [2]
Un atacante puede utilizar un shell web para emitir comandos de shell, realizar una escalada de privilegios en el servidor web y tener la capacidad de cargar , eliminar , descargar y ejecutar archivos hacia y desde el servidor web. [2]
Los web shells se utilizan en ataques principalmente porque son multipropósito y difíciles de detectar. [4] Se utilizan comúnmente para:
Los shells web brindan a los piratas informáticos la capacidad de robar información, corromper datos y cargar malwares que son más dañinos para un sistema. El problema se intensifica cada vez más cuando los piratas informáticos emplean servidores comprometidos para infiltrarse en un sistema y poner en peligro máquinas adicionales. Los web shells también son una forma en que individuos malintencionados se dirigen a una variedad de industrias, incluidas las gubernamentales, financieras y de defensa, a través del ciberespionaje. Uno de los shells web más conocidos utilizados de esta manera se conoce como " China Chopper ". [6]
Los shells web se instalan a través de vulnerabilidades en la aplicación web o una configuración de seguridad débil del servidor, incluidas las siguientes: [2] [4]
Un atacante también puede modificar ( falsificar ) el Content-Type
encabezado que enviará en la carga de un archivo para evitar la validación incorrecta del archivo (validación utilizando el tipo MIME enviado por el cliente), lo que resultará en una carga exitosa del shell del atacante.
El siguiente es un ejemplo simple de un shell web escrito en PHP que ejecuta y genera el resultado de un comando de shell:
<?= `$_GET[x]` ?>
Suponiendo que el nombre del archivo es , a continuación se muestra example.php
un ejemplo que generaría el contenido del archivo:/etc/passwd
https://example.com/example.php?x=cat%20%2Fetc%2Fpasswd
La solicitud anterior tomará el valor del x
parámetro de la cadena de consulta , enviando el siguiente comando de shell:
gato /etc/contraseña
Esto podría haberse evitado si las funciones de shell de PHP estuvieran deshabilitadas para que no se puedan ejecutar comandos de shell arbitrarios desde PHP.
Por lo general, se instala un shell web aprovechando las vulnerabilidades presentes en el software del servidor web. Por eso es importante eliminar estas vulnerabilidades para evitar el riesgo potencial de un servidor web comprometido.
Las siguientes son medidas de seguridad para evitar la instalación de un web shell: [2] [3]
Los shells web se pueden modificar fácilmente, por lo que no es fácil detectarlos y el software antivirus a menudo no puede detectarlos. [2] [9]
Los siguientes son indicadores comunes de que un web shell está presente en un servidor web: [2] [3]
cmd.exe
o eval
;Por ejemplo, un archivo que genera tráfico sospechoso (por ejemplo, un archivo PNG que solicita parámetros POST ). [2] [10] [11] [12] Inicios de sesión dudosos desde servidores DMZ a subredes internas y viceversa. [2]
Los shells web también pueden contener un formulario de inicio de sesión, que a menudo se disfraza de página de error . [2] [13] [14] [15]
Usando web shells, los adversarios pueden modificar el archivo .htaccess (en servidores que ejecutan el software Apache HTTP Server ) en servidores web para redirigir las solicitudes de los motores de búsqueda a la página web con malware o spam . A menudo, los shells web detectan al agente de usuario y el contenido presentado al motor de búsqueda es diferente del presentado al navegador del usuario. Para encontrar un shell web, normalmente se requiere un cambio de agente de usuario del robot rastreador. Una vez que se identifica el shell web, se puede eliminar fácilmente. [2]
El análisis del registro del servidor web podría especificar la ubicación exacta del shell web. Los usuarios/visitantes legítimos generalmente tienen diferentes agentes de usuario y referentes ; por otro lado, un shell web generalmente solo es visitado por el atacante, por lo tanto, tiene muy pocas variantes de cadenas de agente de usuario. [2]
{{cite web}}
: Mantenimiento CS1: nombres numéricos: lista de autores ( enlace ){{cite web}}
: Mantenimiento CS1: varios nombres: lista de autores ( enlace )