Web shell

Una web shell è un'interfaccia simile a una shell che consente l'accesso remoto a un server web, spesso utilizzata nell'ambito di attacchi informatici.[1] Ciò che distingue una web shell è l'interazione attraverso un browser web.[2][3]

Una web shell può essere programmata in qualsiasi linguaggio di programmazione supportato dal server. Il linguaggio più comunemente utilizzato è PHP, in quanto ampiamente diffuso nello sviluppo di applicazioni web. Tuttavia, vengono utilizzati anche Active Server Pages, ASP.NET, Python, Perl, Ruby e script di shell Unix.[4][2][5]

Utilizzando strumenti di monitoraggio della rete, un attaccante può individuare vulnerabilità che potrebbero consentire consentire l'installazione di una web shell. Queste vulnerabilità sono spesso presenti nelle applicazioni eseguite su un server web.[2]

Un attaccante può utilizzare una web shell per eseguire comandi shell, effettuare la privilege escalation sul server web e caricare, eliminare, scaricare ed eseguire file da e sul server web.[2]

Utilizzi comuni

[modifica | modifica wikitesto]

Le web shell vengono utilizzate negli attacchi soprattutto perché offrono molteplici funzionalità e sono difficili da rilevare.[6] Sono comunemente utilizzate per:

  • Furto di dati[7]
  • Infezione dei visitatori del sito web (attacchi watering hole)[8]
  • Defacement del sito web mediante modifica di file con intento malevolo
  • Lancio di attacchi di negazione del servizio (DDoS)[2]
  • inoltro di comandi all'interno di reti interne non accessibili da Internet[7]
  • utilizzo come infrastruttura di comando e controllo, ad esempio come bot in un sistema botnet o per compromettere la sicurezza di ulteriori reti esterne.[7]

Le web shell consentono agli hacker di rubare informazioni, corrompere dati e installare malware altamente dannosi per il sistema. Il problema si aggrava quando gli hacker sfruttano server compromessi per infiltrarsi in un sistema e compromettere altre macchine. Le web shell rappresentano inoltre uno strumento attraverso cui i malintenzionati prendono di mira diversi settori, tra cui quello governativo, finanziario e della difesa, attraverso lo spionaggio informatico. Una delle web shell più note utilizzate in questo contesto è “China Chopper”.[9]

Installazione delle web shell

[modifica | modifica wikitesto]

Le web shell vengono installate sfruttando vulnerabilità nelle applicazioni web o configurazioni di sicurezza del server deboli, tra cui:[2][10]

Un attaccante può anche modificare (contraffare) l'intestazione Content-Type inviata durante il caricamento di un file per aggirare una validazione inadeguata basata sul tipo MIME fornito dal client, consentendo così il caricamento della shell dell'attaccante.

Di seguito è riportato un semplice esempio di una web shell scritta in PHP che esegue e restituisce il risultato di un comando shell:

<?=`$_GET[x]`?>

Supponendo che il nome del file sia example.php, di seguito è riportato un esempio che restituirebbe il contenuto del file /etc/passwd:

https://example.com/example.php?x=cat%20%2Fetc%2Fpasswd

La richiesta sopra riportata prenderà il valore del parametro x della stringa di ricerca, inviando il seguente comando shell:

cat /etc/passwd

Ciò avrebbe potuto essere evitato disabilitando le funzioni di shell di PHP, impedendo così l'esecuzione di comandi shell arbitrari dal codice PHP.

Prevenzione e mitigazione

[modifica | modifica wikitesto]

Di solito una web shell viene installata sfruttando le vulnerabilità presenti nel software del server web. Per questo motivo, è importante correggere queste vulnerabilità per evitare il rischio di compromissione del server web.

Di seguito sono elencate alcune misure di sicurezza per prevenire l'installazione di una web shell:[2][13]

  • Aggiornare regolarmente le applicazioni e il sistema operativo del server host per proteggersi da bug noti
  • Implementare una zona demilitarizzata (DMZ) tra i server rivolti verso Internet e le reti interne
  • Configurare in modo sicuro il server web[2]
  • Chiudere o bloccare porte e servizi non utilizzati[7]
  • Validare i dati di input degli utenti per limitare le vulnerabilità di inclusione di file locali e remoti[7]
  • Utilizzare un servizio di reverse proxy per limitare gli URL amministrativi a quelli legittimi e conosciuti[7]
  • Effettuare scansioni frequenti delle vulnerabilità per individuare aree a rischio e utilizzare regolarmente software di sicurezza web (ciò non impedisce gli attacchi zero day[7])
  • Installare un firewall[7]
  • Disabilitare la navigazione delle directory[senza fonte]
  • Evitare l'uso di password predefinite[7]

Le web shell possono essere facilmente modificate, rendendo difficile la loro individuazione; inoltre, i software antivirus spesso non sono in grado di rilevarle.[2][14]

Di seguito sono riportati alcuni indicatori comuni della presenza di una web shell su un server web.[2][15]

  • Utilizzo insolitamente elevato del server web (dovuto a ingenti download e upload da parte dell'attaccante);[2][16]
  • File con timestamp anomali (ad esempio, più recenti rispetto a quello degli altri file legittimi presenti sul server);[14]
  • File sconosciuti nel server web;
  • File contenenti riferimenti sospetti, ad esempio a cmd.exe o alla funzione eval;
  • Connessioni sconosciute nei log del server web;
  • File che generano traffico sospetto (ad esempio un file PNG che viene richiamato tramite parametri POST);[2][17][18][19]
  • Accessi sospetti dai server in DMZ verso le sottoreti interne e viceversa;[7]

Le shell Web possono anche includere un modulo di login, spesso mascherato da pagina di errore.[2][20][21][22]

Attraverso le web shell, gli attaccanti possono modificare il file .htaccess (nei server che utilizzano il software Apache HTTP Server) per reindirizzare le richieste proveniente dai motori di ricerca verso pagine contenenti malware o spam. Spesso le web shell rilevano lo user agent, mostrando contenuti diversi ai crawler dei motori di ricerca rispetto a quelli presentati al browser dell'utente. Per individuare una web shell, è solitamente necessario modificare lo user agent del crawler bot. Una volta identificata, può essere rimossa facilmente.[2]

L’analisi dei log del server web può aiutare a individuare la posizione esatta di una web shell. Gli utenti o visitatori legittimi presentano generalmente user agent e referer differenti; al contrario, una web shell viene solitamente visitata solo dall'attaccante, mostrando quindi un numero molto limitato di varianti nella stringa user agent.[2]

  1. ^ How can web shells be used to exploit security tools and servers?, su SearchSecurity. URL consultato il 21 dicembre 2018 (archiviato dall'url originale il 28 marzo 2019).
  2. ^ a b c d e f g h i j k l m n o p (EN) US Department of Homeland Security, Compromised Web Servers and Web Shells - Threat Awareness and Guidance | CISA, su www.cisa.gov, 9 agosto 2017. URL consultato il 16 giugno 2025 (archiviato dall'url originale il 13 gennaio 2019).
  3. ^ admin, What is a Web shell?, su malware.expert, 3 agosto 2017. URL consultato il 20 dicembre 2018 (archiviato dall'url originale il 13 gennaio 2019).
  4. ^ How can web shells be used to exploit security tools and servers?, su SearchSecurity. URL consultato il 21 dicembre 2018 (archiviato dall'url originale il 28 marzo 2019).
  5. ^ What is a Web shell?, su malware.expert, 3 agosto 2017. URL consultato il 20 dicembre 2018 (archiviato dall'url originale il 13 gennaio 2019).
  6. ^ Russian Government Cyber Activity Targeting Energy and Other Critical Infrastructure Sectors – US-CERT, su www.us-cert.gov, 16 marzo 2018. URL consultato il 20 dicembre 2018 (archiviato dall'url originale il 20 dicembre 2018).
  7. ^ a b c d e f g h i j Russian Government Cyber Activity Targeting Energy and Other Critical Infrastructure Sectors – US-CERT, su www.us-cert.gov, 16 marzo 2018. URL consultato il 20 dicembre 2018 (archiviato dall'url originale il 20 dicembre 2018).
  8. ^ Makis Mourelatos, The Definitive Guide about Backdoor Attacks - What are WebShell BackDoors, su fixmywp.com, 16 ottobre 2017. URL consultato il 20 dicembre 2018 (archiviato dall'url originale il 13 gennaio 2019).
  9. ^ Abdelhakim Hannousse e Salima Yahiouche, Handling webshell attacks: A systematic mapping and survey, in Computers & Security, vol. 108, 1º settembre 2021, p. 102366, DOI:10.1016/j.cose.2021.102366, ISSN 0167-4048 (WC · ACNP).
  10. ^ Russian Government Cyber Activity Targeting Energy and Other Critical Infrastructure Sectors – US-CERT, su www.us-cert.gov, 16 marzo 2018. URL consultato il 20 dicembre 2018 (archiviato dall'url originale il 20 dicembre 2018).
  11. ^ Got WordPress? PHP C99 Webshell Attacks Increasing, su securityintelligence.com, 14 aprile 2016. URL consultato il 21 dicembre 2018 (archiviato dall'url originale il 29 dicembre 2018).
  12. ^ a b Equifax breach was 'entirely preventable' had it used basic security measures, says House report, su techcrunch.com, 10 dicembre 2018. URL consultato il 21 dicembre 2018 (archiviato dall'url originale il 20 dicembre 2018).
  13. ^ admin, What is a Web shell?, su malware.expert, 3 agosto 2017. URL consultato il 20 dicembre 2018 (archiviato dall'url originale il 13 gennaio 2019).
  14. ^ a b Breaking Down the China Chopper Web Shell - Part I « Breaking Down the China Chopper Web Shell - Part I, su FireEye. URL consultato il 20 dicembre 2018 (archiviato dall'url originale il 13 gennaio 2019).
  15. ^ admin, What is a Web shell?, su malware.expert, 3 agosto 2017. URL consultato il 20 dicembre 2018 (archiviato dall'url originale il 13 gennaio 2019).
  16. ^ Breaking Down the China Chopper Web Shell - Part I « Breaking Down the China Chopper Web Shell - Part I, su FireEye. URL consultato il 20 dicembre 2018 (archiviato dall'url originale il 13 gennaio 2019).
  17. ^ Intrusion Detection and Prevention Systems, su ws680.nist.gov. URL consultato il 22 dicembre 2018 (archiviato dall'url originale il 13 gennaio 2019).
  18. ^ Kasey Cross, Five signs an attacker is already in your network, su Network World, 16 giugno 2016. URL consultato il 22 dicembre 2018 (archiviato dall'url originale il 13 gennaio 2019).
  19. ^ Traffic Analysis for Network Security: Two Approaches for Going Beyond Network Flow Data, su insights.sei.cmu.edu, 15 settembre 2016. URL consultato il 22 dicembre 2018 (archiviato dall'url originale il 14 novembre 2016).
  20. ^ Intrusion Detection and Prevention Systems, su ws680.nist.gov. URL consultato il 22 dicembre 2018 (archiviato dall'url originale il 13 gennaio 2019).
  21. ^ (EN) Kasey Cross, Five signs an attacker is already in your network, su Network World, 16 giugno 2016. URL consultato il 22 dicembre 2018 (archiviato dall'url originale il 13 gennaio 2019).
  22. ^ (EN) Traffic Analysis for Network Security: Two Approaches for Going Beyond Network Flow Data, su insights.sei.cmu.edu, 15 settembre 2016. URL consultato il 22 dicembre 2018 (archiviato dall'url originale il 14 novembre 2016).

Voci correlate

[modifica | modifica wikitesto]