Una shell Web è uno script, comunemente scritto in PHP, in grado di garantire l'accesso come utente di root ad un server web compresso. Ribattezzati anche Trojan PHP possono essere veramente dannose se usate correttamente da un utente malintenzionato, è pertanto fondamentale eseguire periodicamente un'analisi della propria piattaforma web alla ricerca di eventuali intrusioni.
Attraverso una Web Shell è possibile eseguire diverse funzionalità tra cui:
- Enumerazione del Server (Versione del SO, di PHP, Apache, MySql e spazio libero);
- Visualizzazione dei file presenti nel server;
- Esecuzione di comandi remoti;
- Upload e Download di file;
- Invio di eMail;
- Dump di Database;
- Esecuzione di SQL Query;
- Attacchi DoS.
In questo articolo analizzeremo lo scanner gratuito ed open source "PHP Shell Detector" in grado di ricercare all'interno del nostro spazio web eventuali minacce, una volta individuate verranno riportare in un semplice report in lingua Italiana.
L'analisi dei file si basa su un database interno in continuo sviluppo, in grado di analizzare la firma di una vulnerabilità o di individuare eventuali codici sospetti che provvederà a riportarci.
Nel file di report potremo constatare quanti file sono stati analizzati, le minacce individuate o gli eventuali file sospetti, in quest'ultimo caso è possibile inviare il file sospetto al Team websecure.co.il il quale provvederà gratuitamente ad analizzarlo e a riportarci i risultati.
PHP Shell Detector è disponibile su GitHub una volta scarico l'archivio procediamo alla sua estrazione ed andiamo ad analizzare il contenuto. Procediamo inizialmente a configurare lo scanner mediante il file "shelldetect.ini" che apriremo con l'editore di testo che più preferiamo, all'interno di esso troveremo diversi parametri in particolare andremo ad editare i seguenti:
- Extension: per indicare l'estensione dei file da analizzare (es. extension[]=php);
- Showlinenumbers: per visualizzare a quale riga del file si trova la minaccia;
- Language: per specificare la lingua del report (es. language="italian");
- Directory: per specificare quale directory analizzare, se non specificata verrà analizzata l'intera root;
- Report_Format: per indicare in quale file salvare il report (es. report_format="report.htm");
- Authentication: per richiedere un'autenticazione all'avvio della scansione.
Per esempio il nostro file shelldetect.ini conterrà i seguenti parametri:
extension[]=php
extension[]=txt
showlinenumbers=true
langauge="italian"
directory=""
report_format="report.htm"
authentication=false
Terminata la configurazione procediamo ad effettuare l'upload dell'interno archivio all'interno del nostro sito Web, nella cartella di root attraverso il protocollo FTP o quel che più preferite. Accediamo ora al file shelldetect.php attraverso il Browser Web che più preferite, digitando:
http://www.yoursite.com/shelldetect.php
Si avvierà automaticamente la scansione del nostro sito web, possiamo apprezzare da subito il numero di shell conosciute nel database, il numero dei file che verranno analizzati e di seguito vedremo passo a passo l'avanzamento della scansione. PHP Shell Detector ci riporterà gli elementi sospetti o le vulnerabilità individuate.
Nell'immagine di esempio apprendiamo che lo scanner conosce 431 shell, ha individuato 8 file da analizzare dei quali uno risulta essere sospetto (secure-wordpress.php) mentre il secondo (file.php) presenta una firma positiva ed è quindi una Web Shell di tipo r57.
Se viene individuato un file sospetto possiamo inviarlo al team websecure.co.il il quale procederà ad una verifica per determinare se si tratta di un sospetto infondato o di una vera minaccia, oltre al file è possibile specificare un indirizzo eMail nella quale riceveremo l'esito dell'analisi.