Un web shell es una interfaz similar a un shell que permite acceder de forma remota a un servidor web . [1] Un shell web es único en el sentido de que 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 el lenguaje de programación PHP debido al uso generalizado de PHP para aplicaciones web . Sin embargo, también se utilizan scripts de shell de Active Server Pages , ASP.NET , Python , Perl , Ruby y Unix , aunque estos lenguajes se utilizan con menos frecuencia. [1] [2] [3]
Usando 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 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 desde y hacia el servidor web. [2]
Uso general
Los shells web se utilizan en ataques principalmente porque son polivalentes y difíciles de detectar. [4]
Las carcasas web se utilizan comúnmente para:
- Robo de datos [4]
- Infectar a los visitantes del sitio web ( ataques de abrevadero ) [5]
- Deformación del sitio web mediante la modificación de archivos con intenciones maliciosas
- Lanzar ataques distribuidos de denegación de servicio ( DDoS ) [2]
- Para transmitir comandos dentro de la red que es inaccesible a través de Internet [2]
- Para usar como base de comando y control , por ejemplo, como un bot en un sistema de botnet o en forma de comprometer la seguridad de redes externas adicionales. [2]
Entrega de carcasas web
Los shells web se instalan a través de vulnerabilidades en la aplicación web o una configuración de seguridad de servidor débil que incluye lo siguiente: [2] [4]
- Inyección SQL ;
- Vulnerabilidades en aplicaciones y servicios (por ejemplo, software de servidor web como NGINX o aplicaciones del sistema de gestión de contenido como WordPress ); [6] [7]
- Vulnerabilidades de procesamiento y carga de archivos, que pueden mitigarse, por ejemplo, limitando los tipos de archivos que se pueden cargar; [7]
- Vulnerabilidades de inclusión de archivos remotos (RFI) e inclusión de archivos locales (LFI);
- Ejecución remota de código ;
- Interfaces de administración expuestas; [2]
Un atacante también puede modificar ( falsificar ) el Content-Type
encabezado que enviará el atacante en una carga de archivo para evitar la validación incorrecta del archivo (validación utilizando el tipo MIME enviado por el cliente), lo que dará como resultado una carga exitosa del shell del atacante.
Ejemplo
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 example.php
, a continuación se muestra un ejemplo que generaría el contenido del /etc/passwd
archivo:
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:
cat / etc / passwd
Esto podría haberse evitado si las funciones de shell de PHP estuvieran deshabilitadas para que los comandos de shell arbitrarios no se puedan ejecutar desde PHP.
Prevención y mitigación
Un shell web generalmente se instala aprovechando las vulnerabilidades presentes en el software del servidor web. Es por eso que la eliminación de estas vulnerabilidades es importante para evitar el riesgo potencial de un servidor web comprometido.
Las siguientes son medidas de seguridad para evitar la instalación de un shell web: [2] [3]
- Actualice periódicamente las aplicaciones y el sistema operativo del servidor host para garantizar la inmunidad frente a errores conocidos.
- Implementar una zona desmilitarizada (DMZ) entre los servidores orientados a la web y las redes internas
- Configuración segura del servidor web [2]
- Cerrar o bloquear puertos y servicios que no se utilizan [2]
- Uso de la validación de datos de entrada del usuario para limitar las vulnerabilidades de inclusión de archivos locales y remotos [2]
- Utilice un servicio de proxy inverso para restringir las URL administrativas a las legítimas conocidas [2]
- Escaneo frecuente de vulnerabilidades para detectar áreas de riesgo y realizar escaneos regulares utilizando software de seguridad web (esto no evita los ataques de día cero [2] )
- Implementar un firewall [2]
- Inhabilitar la exploración de directorios [ cita requerida ]
- Sin usar contraseñas predeterminadas [2]
Detección
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] [8]
Los siguientes son indicadores comunes de que un shell web está presente en un servidor web: [2] [3]
- Alto uso anormal del servidor web (debido a descargas y cargas pesadas por parte del atacante); [2] [8]
- Archivos con una marca de tiempo anormal (por ejemplo, más reciente que la fecha de la última modificación); [8]
- Archivos desconocidos en un servidor web;
- Archivos con referencias dudosas, por ejemplo,
cmd.exe
oeval
; - Conexiones desconocidas en los registros del servidor web
Por ejemplo, un archivo que genera tráfico sospechoso (por ejemplo, un archivo PNG que solicita con parámetros POST ); [2] [9] [10] [11] 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 como una página de error . [2] [12] [13] [14]
Usando shells web, los adversarios pueden modificar el archivo .htaccess (en los servidores que ejecutan el software Apache HTTP Server ) en los servidores web para redirigir las solicitudes del motor de búsqueda a la página web con malware o spam . A menudo, los shells web detectan al usuario-agente y el contenido presentado a la araña del motor de búsqueda es diferente del presentado al navegador del usuario. Para encontrar un shell web, generalmente 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 referencias (referencias) , por otro lado, un shell web generalmente solo es visitado por el atacante, por lo tanto, tiene muy pocas variantes de cadenas de usuario-agente. [2]
Ver también
- Puerta trasera (informática)
- Guerra cibernética
- Seguridad de Internet
- Seguridad de la red
- China Interruptor
Referencias
- ^ a b "¿Cómo se pueden utilizar los shells web para explotar servidores y herramientas de seguridad?" . SearchSecurity . Archivado desde el original el 28 de marzo de 2019 . Consultado el 21 de diciembre de 2018 .
- ^ a b c d e f g h i j k l m n o p q r s t u v w x y Departamento de Seguridad Nacional de EE. UU. "Web Shells - Concienciación y orientación sobre amenazas" . www.us-cert.gov . Archivado desde el original el 13 de enero de 2019 . Consultado el 20 de diciembre de 2018 . Este artículo incorpora texto de esta fuente, que es de dominio público .
- ^ a b c d admin (3 de agosto de 2017). "¿Qué es un shell web?" . malware.expert . Archivado desde el original el 13 de enero de 2019 . Consultado el 20 de diciembre de 2018 .
- ^ a b c "Actividad cibernética del gobierno ruso dirigida a la energía y otros sectores de infraestructura crítica - US-CERT" . www.us-cert.gov . Archivado desde el original el 20 de diciembre de 2018 . Consultado el 20 de diciembre de 2018 .
- ^ coorganizador, Makis MourelatosWordPress Security Engineer en FixMyWPWC Athens 2016; Soporte, WP; Aficionado, Seguridad; Kitesurfer, Wannabe (16 de octubre de 2017). "La guía definitiva sobre los ataques de puerta trasera - ¿Qué son las puertas traseras WebShell?" . fixmywp.com . Archivado desde el original el 13 de enero de 2019 . Consultado el 20 de diciembre de 2018 .
- ^ "¿Tienes WordPress? Los ataques de PHP C99 Webshell aumentan" . 14 de abril de 2016. Archivado desde el original el 29 de diciembre de 2018 . Consultado el 21 de diciembre de 2018 .
- ^ a b "La violación de Equifax era 'totalmente prevenible' si se hubieran utilizado medidas de seguridad básicas, dice el informe de la Cámara" . Archivado desde el original el 20 de diciembre de 2018 . Consultado el 21 de diciembre de 2018 .
- ^ a b c "Rompiendo el Shell Web del Chopper de China - Parte I« Rompiendo el Shell Web del Chopper de China - Parte I " . FireEye . Archivado desde el original el 13 de enero de 2019 . Consultado el 20 de diciembre de 2018 .
- ^ "Sistemas de detección y prevención de intrusiones" . Archivado desde el original el 13 de enero de 2019 . Consultado el 22 de diciembre de 2018 .
- ^ LightCyber, Kasey Cross, director de producto sénior (16 de junio de 2016). "Cinco señales de que un atacante ya está en su red" . Mundo de la red . Archivado desde el original el 13 de enero de 2019 . Consultado el 22 de diciembre de 2018 .
- ^ "Análisis de tráfico para la seguridad de la red: dos enfoques para ir más allá de los datos de flujo de la red" . Archivado desde el original el 14 de noviembre de 2016 . Consultado el 22 de diciembre de 2018 .
- ^ "Piratas informáticos que ocultan los inicios de sesión de Web Shell en páginas de error HTTP falsas" . BleepingComputer . Archivado desde el original el 26 de julio de 2018 . Consultado el 21 de diciembre de 2018 .
- ^ "Piratas informáticos que ocultan los inicios de sesión de Web Shell en páginas de error HTTP falsas" . ThreatRavens . 24 de julio de 2018. Archivado desde el original el 13 de enero de 2019 . Consultado el 17 de febrero de 2019 .
- ^ "Piratas informáticos que ocultan los inicios de sesión de Web Shell en páginas de error HTTP falsas" . cyware.com . Archivado desde el original el 13 de enero de 2019 . Consultado el 22 de diciembre de 2018 .