Attacchi per manipolazione d'URL

Introduzione agli URL

L'URL (Uniform Resource Locator) di un'applicazione web è il vettore che permette di indicare la risorsa richiesta. Si tratta di una stringa di caratteri ASCII stampabile che si scompone in cinque parti :

  • Il nome del protocollo : cioè in qualche modo il linguaggio usato per comunicare sulla rete. Il protocollo più diffuso è il protocollo HTTP (HyperText Transfer Protocol), il protocollo che permette lo scambio di pagine Web in formato HTML. Numerosi altri protocolli sono comunque utilizzabili (FTP, News, Mailto, ecc.)
  • Identificativo e password : permette di specificare i parametri di acceso ad un server sicuro. Questa opzione è sconsigliata dato che la password circola in chiaro nell'URL
  • Il nome del server : Si tratta del nome del dominio del computer che ospita la risorsa richiesta. Da notare che è possibile utilizzare l'indirizzo IP del server.
  • Il numero di porta : si tratta del numero associato ad un servizio che permette al server di sapere quale tipo di risorsa è richiesta. La porta associata per default al protocollo è la porta numero 80. Quindi, una volta che il servizio Web del server è associato al numero di porta 80, la specificazione del numero di porta è facoltativa.
  • Il percorso di accesso alla risorsa : Quest'ultima parte permette al server di conoscere dove si trova la risorsa, cioè in generale la posizione (rubrica) e il nome del file richiesto.

Un URL ha la seguente struttura :

Protocollo Password (facoltativa) Nome del server Porta
(facoltativo se 80)
Percorso
http:// user:password@ it.kioskea.net :80 /glossair/glossair.php3

L'URL può permettere di trasmettere dei parametri al server facendo seguire il nome del file da un punto interrogativo, in seguito dei dati in formato ASCII. Un URL è quindi una stringa di caratteri secondo il seguente formato :

http://it.kioskea.net/forum/index.php3?cat=1&page=2

Manipolazione d'URL

Manipolando alcune parti di un URL, un pirata può portare un servizio web a consegnare delle pagine web alle quali non avrebbe accesso.

In effetti, nei siti web dinamici i parametri sono per la maggiorparte passati attraverso l'URL nella maniera seguente :

http://cible/forum/index.php3?cat=2

I dati presenti nell'URL sono creati automaticamente dal sito e al momento di una normale navigazione un utilizzatore deve solo cliccare sui link proposti dal sito web. In questo modo, se un utilizzatore modifica manualmente il parametro, potrà provare diversi valori, ad esempio :

http://cible/forum/index.php3?cat=6

Se lo sviluppatore non ha previsto questa eventualità, il pirata potrà eventualmente ottenere un accesso ad uno spazio normalmente protetto.

D'altra parte, il pirata può portare il sito a trattare un caso inaspettato, ad esempio :

http://cible/forum/index.php3?cat=***********
Nel caso sopra citato, se lo sviluppatore del sito non ha previsto il caso in cui il dato è una cifra, il sito può entrare in uno stato non previsto e rivelare delle informazioni in un messaggio di errore.

Tentativo alla cieca

Un pirata può eventualmente testare delle rubriche e delle estensioni di file alla cieca, allo scopo di trovare delle informazioni importanti. Ecco qualche esempio classico :

  • Ricerca di rubriche che permettono di amministrare il sito :
    http://cible/admin/
    http://cible/admin.cgi
  • Ricerca di script che permettono di rivelare delle informazioni sul sistema remoto :
    http://cible/phpinfo.php3
  • Ricerca di copie di backup. L'estensione .bak è generalmente usata e non è interpretata per default dai server, cosa che può portare alla visualizzazione di uno script :
    http://cible/index.php3.bak
  • Ricerca di file cache del sistema remoto. Nei sistemi UNIX, quando la cartella radice del sito corrisponde alla cartella di un utilizzatore, può succedere che dei file creati dal sistema siano accessibili via web :
    http://cible/.bash_history
    http://cible/.htaccess

Attraversamento di cartelle

Gli attacchi detti « di attraversamento di cartelle » (in inglese directory traversal o path traversal) consistono nel modificare il percorso dell'arborescenza dell'URL per forzare il server ad accedere a delle sezioni del sito non autorizzate.

In un caso classico, l'utilizzatore può essere portato a risalire progressivamente l'arborescenza, soprattutto nel caso in cui la risorsa non è accessibile, ad esempio :

http://cible/base/test/ascii.php3
http://cible/base/test/
http://cible/base/

Sui server vulnerabili, basta risalire il percorso con più stringhe del tipo « ../ » :

http://cible/../../../../repertoire/fichier

Altri attacchi più evoluti consistono nel decodificare alcuni caratteri :

  • sia sotto la forma di decodifica d'URL :
    http://cible/..%2F..%2F..%2Frepertoire/fichier
  • sia con un'annotazione Unicode :
    http://cible/..%u2216..%u2216repertoire/fichier

Numerosi siti dinamici passano il nome delle pagine da visualizzare in parametri sotto una forma simile alla seguente :

http://cible/cgi-bin/script.cgi?url=index.htm

Per quanto nessun controllo sia realizzato, è possibile per un pirata modificare l'URL manualmente per richiedere l'accesso ad una risorsa del sito alla quale non ha accesso diretto, ad esempio :

http://cible/cgi-bin/script.cgi?url=script.cgi

protezioni

Per mettere in sicurezza un server web dagli attacchi da manipolazione d'URL, è necessario effettuare una sorveglianza sulle vulnerabilità e applicare regolarmente le correzioni fornite dallo sviluppatore del server web.

D'altra parte, una configurazione minuziosa del server web permette di evitare ad un utilizzatore di navigare su pagine alle quali normalmente non avrebbe accesso. Il server web deve quindi essere configurato seguendo le consegne qui sotto :

  • Impedire il percorso delle pagine situate sotto la radice del sito web (meccanismo di chroot) ;
  • Disattivare la visualizzazione dei file presenti in una cartella che non contengano dei file d'index (« Directory Browsing ») ;
  • Cancellare le cartelle e i file inutili (fra cui i file nascosti) ;
  • Assicurarsi che il server protegga l'accesso alle cartelle contenenti dei dati sensibili ;
  • Cancellare le opzioni di configurazione superflue ;
  • Assicurarsi che il server interpreti correttamente le pagine dinamiche, compresi i file di salvataggio (.bak) ;
  • Cancellare gli interpretatori di script superflui ;
  • Impedire la consultazione in modalità HTTP delle pagine accessibili in HTTPS.


Ultime modificazione ilvenerdì 6 febbraio 2009 alle 16:52:03


Questo documento intitolato «  » da Kioskea (it.kioskea.net) è reso disponibile sotto la licenza Creative Commons. È possibile copiare, modificare le copie di questa pagina, alle condizioni previste dalla licenza, come questa nota appare chiaramente.