Linee guida per l'hacking di un Server web (e come difendersi)

Tempo di lettura: 9 minuti
Data pubblicazione: September 15, 2016

Un server web è un software (o insieme di software) che, in esecuzione su un server, gestisce le richieste di un client, solitamente di un browser. Ogni volta che visitiamo un sito internet, stiamo inviando richieste a dei server web, i quali ci rispondono con le pagine da noi richieste.  Esistono moltissimi diversi software, ma i più utilizzati sono:

Server web più utilizzati
Server web più utilizzati

I primi due sono Open-Source, quindi hanno codice sorgente aperto, è possibile modificare ogni parametro o codice interno, mentre IIS è a codice chiuso, per cui (che io sappia) nessuno è a conoscenza del codice interno. L’architettura di un tipico web server Open Source è composta da:

  • Sistema operativo Linux;
  • Componenti software, ad esempio Apache;
  • Il database, che può essere MySQL, PSQL o altri;
  • il livello applicativo, ad esempio PHP.
hackingserveropensource
hackingserveropensource

L’architettura di un web server IIS è decisamente diversa, abbiamo:

  • Sistema operativo Microsoft, ad esempio Windows Server 2008;
  • Componenti come HTTP.sys;
  • Servizi come World Wide Web Publishing Service (WWW Service) e Windows Process Activation Service (WAS).
hackingserveriis
hackingserveriis

Come mai vengono compromessi?

Le motivazioni possono essere infinite, che vanno dalla semplice casualità di una mail infetta da virus aperta da un tecnico dell’azienda, all’attacco mirato di hacker che vogliono compromettere il sito per determinati motivi. Le principali cause di una compromissione sono:

  1. Installare il server mantenendo le configurazioni di default, lasciando quindi password di base, porte aperte (come ssh) e utenti con tutti i privilegi possibili;
  2. Permessi errati agli utenti o ai file: se viene lasciato il file di configurazione del web server accessibile a chiunque senza restringere i permessi al solo amministratore, qualsiasi utente può modificarlo a piacimento.
  3. Software non aggiornato: tralasciando la “remota” possibilità di un 0-day, la maggior parte dei siti viene compromesso proprio in questo modo;
  4. Certificato SSL inesistente o malconfigurato: se mi collego al sito da una rete pubblica e non ho il certificato SSL, chiunque è in grado di leggere le credenziali che utilizzo per connettermi.

Un server compromesso può causare molti danni, tra i quali:

  • Compromissione di account, di conseguenza l’utente che possiede l’account compromesso non è più in grado di accedervi;
  • Defacciamento di un sito, che consiste nel cambiare l’home page di un sito o alcune pagine inserendo (solitamente) l’azione riuscita dell’hacker;
  • Sottrazione o rimozione di dati;
  • Utilizzo del server per fini illegali, come esecuzione di DDOS ad altri server (un caso clamoroso di pochi mesi fa nel quale sono stati hackerati due server di Amazon e hanno attaccato il sito della BBC, con una banda di 602 Gpbs).

Attacchi possibili

Path Traversal

Consiste nello sfruttare errate configurazioni di validazione dell’input e accedere a cartelle che, in teoria, non dovrebbero essere accessibili a nessuno, come il file delle password. Un esempio di questo tipo di attacco su un server *NIX può essere:

http://some_site.com.br/../../../../etc/shadow

Se il web server è mal configurato accetterà la richiesta, permettendomi di leggere il file delle password. Un software che cerca questa vulnerabilità è DotDotPwn,  mentre altri esempi si possono trovare a questo indirizzo.

HTTP Response Splitting

Questo tipo di attacco può essere utilizzato quando i dati di una richiesta web sono inclusi in una risposta HTTP e non sono validati. Per capirci meglio, possono essere i vari tipi di Injection (SQL, XSS, CSRF).

Attacco bruteforce

Può essere eseguito sia nella credenziali di login (ad esempio se si ha wordpress e la pagina di login non è protetta da questo tipo di attacco) sia tramite SSH, telnet, FTP. Se viene lasciato il servizio attivo, bisogna ricordarsi sempre di inserire protezioni, che possono essere (ad esempio) login permesso solo da certi indirizzi IP, ban di indirizzi IP che effettuando troppe richieste, etc. Un software che effettua un attacco bruteforce può essere Hydra. Ho già spiegato le diverse metodologie per il password cracking, per cui non mi dilungherò sul discorso. È bene ricordarsi sempre di non loggarsi mai se si è connessi ad una rete pubblica se non abbiamo il certificato, mai usare password semplici e inserire sempre controlli su chi cerca di entrare nel nostro sistema senza autorizzazione.

Dos

Questo tipo di attacco non dipende purtroppo da nessuna configurazione, ma è solamente un atto vandalico compiuto da chi non ha molto da fare (o è un azienda concorrente). La conseguenza di questo attacco è avere il sito non raggiungibile per tutta la durata dello stesso. Per ridurre le possibilità di attacchi DOS è possibile iscriversi a CloudFare, il quale implementa una serie di controlli e difese nel caso di un attacco. Un altro ente che può mitigare (ma non eliminare) è l’hosting provider, come Amazon, OVH o Aruba.

Le fasi di un attacco ad un server web sono le stesse fasi che vengono compiute in una sessione di Hacking, per cui:

  • Esplorazione e Footprinting: si cerca di carpire più informazioni dall’obbiettivo, scansionando la rete e cercando i modi più idonei per poter sfruttare (se presenti) delle vulnerabilità.
  • Scanning & Enumeration: fase in cui si utilizzano le informazioni rilevate precedentemente e le si utilizzano per determinare l’obbiettivo principale.
  • **Guadagnare l’accesso: **è la fase più importante, in cui si riesce ad attaccare l’obbiettivo ed accedervi.
  • Mantenere l’accesso: in questa fase l’hacker può cercare di guadagnare i permessi di root per poter accedere a più informazioni possibili (o danneggiare il più possibile), può inserire una backdoor o un trojan per trasferire le informazioni in un posto noto solo a lui.
  • Pulire le traccie: dopo essere entrati in un sistema bisogna sistemare in modo che il proprietario del sistema non si accorga della presenza di qualcosa di estraneo e può ad esempio essere la cancellazione dei file di log.

Contromisure

Per eliminare la maggior parte dei rischi di un hacking al proprio web server bisogna seguire poche e semplici regole, che vanno attuate quotidianamente. Se non si è in grado o non si riesce più ad aggiornare il proprio sito, non lasciatelo andare per i fatti suoi, non è mai una buona idea.

  1. Scansionate e verificare che tutti i software attivi siano aggiornati;
  2. Prima di installare una patch o un aggiornamento, verificate che la fonte sia affidabile e non abbia subito a sua volta un attacco;
  3. Installate un buon firewall;
  4. Eseguite sempre backup, nel caso andasse storta qualche nuova installazione o qualche buontempone decida di eliminare il vostro web server e tutti i suoi dati;
  5. Bloccate le porte non necessarie e che non utilizzate;
  6. Se l’accesso remoto è necessario, proteggetelo da attacchi bruteforce con password robuste e firewall;
  7. Rimuovere gli utenti presenti di default e che non utilizzate;
  8. Controllate i log del server verificando che nessuno stia cercando di introdursi.

Conclusioni

Ho cercato di descrivere a grandi linee (molto grandi) i principali tipi di attacco e come difendersi da essi. Un plugin del browser che ho sempre trovato molto interessante è Wappalyzer. Esso ci informa ogni volta che visitiamo un sito che web server possiede, i cms utilizzati e una serie di altre informazioni più o meno utili.

Un esempio pratico e reale dell’hacking di un web server e di un intera azienda potete trovarlo nel recente caso di Hacking Team. L’hacker ha pubblicato tutti i passi compiuti dall’entrare nel server, sottrarre le informazioni ed uscire da esso come se niente fosse.