Un web shell es una interfaz similar a un shell que permite acceder de forma remota a un servidor web , a menudo con el fin de realizar ciberataques . [1] Un web shell 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 que sea 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 scripts de shell de Active Server Pages , ASP.NET , Python , Perl , Ruby y Unix . [1] [2] [3]
Mediante el uso de herramientas de monitoreo de red , un atacante puede encontrar vulnerabilidades que potencialmente podrían 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 usar un shell web para emitir comandos de shell, realizar una escalada de privilegios en el servidor web y la capacidad de cargar , eliminar , descargar y ejecutar archivos hacia y desde el servidor web. [2]
Los shells web se utilizan en ataques principalmente porque son multipropósito y difíciles de detectar. [4] Se utilizan comúnmente para:
Los web shells permiten a los piratas informáticos robar información, corromper datos y cargar malware que son más dañinos para un sistema. El problema se agrava cada vez más cuando los piratas informáticos utilizan servidores comprometidos para infiltrarse en un sistema y poner en peligro otras máquinas. Los web shells también son una forma en la que individuos maliciosos atacan a una variedad de industrias, incluidas las gubernamentales, financieras y de defensa a través del ciberespionaje. Uno de los web shells más conocidos que se utilizan 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 una carga de archivo para evitar una validación de archivo incorrecta (validación mediante el tipo MIME enviado por el cliente), lo que dará como resultado 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 y enviará el siguiente comando de shell:
gato /etc/passwd
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.
Un shell web se suele instalar aprovechando vulnerabilidades presentes en el software del servidor web. Por eso es importante eliminar estas vulnerabilidades para evitar el riesgo potencial de que un servidor web se vea comprometido.
Las siguientes son medidas de seguridad para evitar la instalación de un shell web: [2] [3]
Los web shells 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 hay un shell web 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 está disfrazado como una página de error . [2] [13] [14] [15]
Mediante el uso de 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 web shells detectan el agente de usuario y el contenido presentado a la araña del motor de búsqueda es diferente del presentado al navegador del usuario. Para encontrar un web shell, generalmente se requiere un cambio de agente de usuario del robot rastreador. Una vez que se identifica el web shell, 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 suelen tener diferentes agentes de usuario y referentes ; por otro lado, un shell web normalmente solo es visitado por el atacante, por lo tanto, tiene muy pocas variantes de cadenas de agente de usuario. [2]
{{cite web}}
: CS1 maint: nombres numéricos: lista de autores ( enlace ){{cite web}}
: CS1 maint: varios nombres: lista de autores ( enlace )