Le Web Shell
Una Web Shell è un’interfaccia shell-like che consente l’accesso remoto a un server web, spesso per fini di attacchi informatici.
Cos’è una Web Shell?
Una Web Shell è uno script dannoso utilizzato da un utente malintenzionato con l’intento di intensificare e mantenere l’accesso persistente su un’applicazione Web già compromessa.
Una Web Shell in sé non può attaccare o sfruttare una vulnerabilità remota, quindi è sempre il secondo passaggio di un attacco (questa fase viene anche definita post-sfruttamento).
Un utente malintenzionato può sfruttare le vulnerabilità comuni delle pagine Web come iniezione SQL, inclusione di file remoti (RFI) o persino utilizzare lo scripting cross-site (XSS) come parte di un attacco di ingegneria sociale, al fine di raggiungere le capacità di caricamento dei file e trasferire i malware.
Le Web Shell potrebbero essere scritte in vari linguaggi web, ad esempio le Web Shell PHP sono molto comuni.
Le Web Shell potrebbero non essere rilevate da software antivirus o anti-malware perché non utilizzano i tipici file eseguibili.
Allo stesso tempo, sono facilmente accessibili al pubblico, ad esempio tramite diversi progetti GitHub.
Accesso remoto persistente
Uno script della Web Shell di solito contiene una backdoor, che consente a un utente malintenzionato di accedere in remoto e possibilmente controllare un server con accesso a Internet in qualsiasi momento.
Ciò eviterebbe all’attaccante l’inconveniente di dover sfruttare una vulnerabilità ogni volta che è richiesto l’accesso al server compromesso.
Un utente malintenzionato potrebbe anche scegliere di correggere la vulnerabilità in modo da garantire che nessun altro possa sfruttarla.
In questo modo, l’attaccante può mantenere un profilo basso ed evitare qualsiasi interazione con un amministratore, ottenendo comunque lo stesso risultato.
Vale anche la pena ricordare che molte popolari Web Shell utilizzano l’autenticazione con password e altre tecniche per garantire che solo l’attaccante che la carica abbia accesso ad essa.
Tali tecniche includono il blocco dello script su un’intestazione HTTP personalizzata specifica, valori di cookie specifici, indirizzi IP specifici o una combinazione di queste tecniche.
La maggior parte delle Web Shell contiene anche codice per identificare e impedire ai motori di ricerca di elencare la shell e, di conseguenza, inserire nella blacklist l’intero dominio o server su cui è ospitata l’applicazione Web.
Aumento dei privilegi
A meno che un server non sia configurato in modo errato, la Web Shell verrà eseguita con le autorizzazioni utente del software del Web server, che sono (o almeno dovrebbero essere) limitate.
Utilizzando una Web Shell, un utente malintenzionato può tentare di eseguire attacchi di escalation di privilegi sfruttando le vulnerabilità locali sul sistema al fine di assumere i privilegi di root (o superutente, nei sistemi basati su UNIX).
Con l’accesso all’account di root, l’utente malintenzionato può essenzialmente fare qualsiasi cosa sul sistema, compresa la gestione di file locali, l’installazione di software, la modifica delle autorizzazioni, l’aggiunta e la rimozione di utenti, il furto di password, la lettura di e-mail e altro ancora.
Attivare e lanciare attacchi
Una Web Shell può essere utilizzata da un malintenzionato per monitorare (sniffing) il traffico di rete sul sistema, scansionare la rete interna per rilevare host dal vivo ed enumerare firewall e router all’interno della rete.
Questo processo può richiedere giorni, anche mesi, principalmente perché il malintenzionato cerca in genere di mantenere un profilo basso e attirare la minima attenzione possibile.
Una volta ottenuto un accesso persistente, può pazientemente muovere le proprie mosse.
Il sistema compromesso può anche essere utilizzato per attaccare o scansionare obiettivi che risiedono al di fuori della rete.
Zombie e Web Shell
Un altro uso delle Web Shell è rendere i server parte di una botnet, ovvero una rete di sistemi compromessi che un utente malintenzionato può controllare per svariati utilizzi.
La Web Shell o backdoor è connessa a un server di comando e controllo da cui può prendere le direttive su quali istruzioni eseguire.
Questa configurazione viene comunemente utilizzata negli attacchi DDoS (Distributed Denial of Service), che richiedono ampie quantità di larghezza di banda.
In questo caso, l’attaccante non ha alcun interesse a danneggiare o rubare qualcosa dal sistema su cui è stata distribuita la Web Shell: semplicemente, usufruirà delle sue risorse.