WebShell to RevShell
Definición y Comparación: WebShell vs Reverse Shell
Tanto las WebShells como las Reverse Shells son herramientas utilizadas para obtener acceso a un servidor comprometido. Sin embargo, presentan diferencias significativas en términos de funcionalidad y control que ofrecen al atacante.
WebShell: Es un script (normalmente escrito en PHP, ASP, o JSP) que se carga en el servidor web y permite ejecutar comandos del sistema operativo a través de una interfaz web. Las WebShells son útiles para la ejecución rápida de comandos y el acceso remoto a archivos del servidor, pero están limitadas por las caracterÃsticas del servidor web y el lenguaje de scripting.
Reverse Shell: A diferencia de una WebShell, una Reverse Shell proporciona acceso completo a una terminal interactiva del sistema operativo comprometido. El servidor comprometido inicia una conexión con la máquina atacante, otorgando al atacante control directo y acceso al sistema de archivos, comandos del sistema y otros recursos del sistema operativo.
Ventajas de una Reverse Shell sobre una WebShell
Acceso Directo al Sistema Operativo: Con una Reverse Shell, el atacante tiene acceso directo a la consola del sistema, lo que permite ejecutar cualquier comando del sistema operativo, como si estuviera fÃsicamente frente al servidor. A diferencia de las WebShells, que están limitadas al entorno del servidor web, una Reverse Shell otorga el control total.
Menor Detección: Las WebShells a menudo dependen de solicitudes HTTP, lo que puede ser monitoreado por sistemas de detección de intrusiones (IDS) y herramientas de análisis de tráfico web. Las Reverse Shells, por otro lado, operan directamente en la capa de red, lo que puede reducir la posibilidad de ser detectadas si se utilizan técnicas adecuadas como ofuscación de tráfico o canales cifrados.
Interactividad Completa: Las WebShells están limitadas a una interacción a través de formularios web, lo que puede hacer difÃcil ejecutar secuencias complejas de comandos o scripts. En cambio, una Reverse Shell permite usar la terminal completa del sistema, incluyendo comandos como
vim,nano, o la ejecución de scripts en bash, Python, etc.Ejecución de Aplicaciones Complejas: Mientras que las WebShells son útiles para tareas sencillas como listar archivos o ejecutar comandos simples, una Reverse Shell permite ejecutar aplicaciones más complejas, interactuar con bases de datos directamente, o incluso escalar privilegios mediante exploits en el sistema operativo.
Persistencia: Una Reverse Shell es más adecuada para establecer persistencia, ya que una vez que el atacante ha logrado la conexión, puede establecer servicios adicionales, modificar configuraciones del sistema o instalar backdoors que se ejecuten fuera del servidor web, lo que facilita el acceso futuro.
Vamos a generar la reverse shell con la siguiente pagina utilizando el URL Encode:

En el escenario presentado, ya tenemos una WebShell funcionando en el servidor vulnerable. Para obtener un control más robusto y evitar las limitaciones de la WebShell, enviamos una Reverse Shell desde el servidor comprometido hacia nuestra máquina atacante.
La solicitud GET que enviamos al servidor para ejecutar la Reverse Shell es la siguiente:
Este comando le dice al servidor comprometido (en 172.16.1.6) que ejecute Netcat (nc) y conecte de vuelta a la dirección 172.16.1.12 en el puerto 443, proporcionando una shell interactiva.
Configuración en el Servidor Atacante
En la máquina atacante, escuchamos en el puerto 443 utilizando Netcat para recibir la Reverse Shell:
El servidor comprometido ejecuta el comando, y al recibir la conexión, obtenemos acceso interactivo al sistema. La conexión se realiza correctamente y la shell se ejecuta bajo el usuario www-data:
Este acceso nos da control directo sobre el sistema, donde podemos ejecutar comandos como ip a show para obtener información de la red, explorar los archivos del sistema, y potencialmente intentar una escalación de privilegios para obtener acceso de root.
Importancia de la Reverse Shell en Este Escenario
Acceso Más Robusto: A diferencia de la WebShell, que requiere enviar comandos a través del navegador y esperar respuestas limitadas, la Reverse Shell proporciona acceso completo e interactivo a la terminal del servidor comprometido. Esto es particularmente útil cuando se necesitan ejecutar múltiples comandos o scripts complejos.
Evasión de Controles Web: Las solicitudes HTTP utilizadas en las WebShells pueden ser registradas o bloqueadas por firewalls o IDS. Al usar una Reverse Shell, evitamos la capa web y dependemos directamente de la capa de red, lo que facilita la evasión de ciertos mecanismos de seguridad.
Posibilidad de Escalar Privilegios: Al obtener una Reverse Shell con permisos limitados (en este caso, www-data), podemos intentar diversas técnicas de escalación de privilegios para obtener acceso total al servidor. La Reverse Shell nos permite ejecutar exploits y realizar análisis del sistema en tiempo real.
Last updated