Raccogliere informazioni in un'applicazione web

Tempo di lettura: 7 minuti
Data pubblicazione: July 18, 2017

Ottenere più informazioni possibili da un’applicazione web è un passaggio fondamentale al fine di trovare vulnerabilità nella stessa. Nella fase di Information Gathering bisogna preoccuparsi di analizzare l’applicazione nei dettagli, cercare pagine nascoste, recuperare informazioni in merito alla tecnologia utilizzata e altri dettagli che possono sempre tornare utili.

OWASP definisce 10 passaggi fondamentali per il recupero di informazioni in applicazioni web; in questo articolo cercheremo di approfondirne qualcuna, con esempi ed informazioni pratiche.

Passi definiti da OWASP
Passi definiti da OWASP

Ricerca tramite search engine

Il compito dei motori di ricerca è analizzare le pagine web, quindi chi meglio di loro potrebbe avere informazioni in merito ad un sito pubblico? È bene testare non solo un motore di ricerca, ma utilizzarne diversi, come:

  • Google;
  • Bing;
  • DuckDuckGo;
  • Wolfram Alpha;
  • Altri.

L’utilizzo di operatori avanzati è in generale preferibile, in quanto permette di ridurre il numero di risultati e delle ricerche da effettuare (ad esempio l’utilizzo di “site:” o “inurl:”) Per chi volesse approfondire Google Hacking, consiglio questo articolo.

Fingerprint webserver

Il Footprinting di webserver consiste nel determinare il tipo di server web utilizzato e la versione, in modo da poter indirizzarsi e focalizzarsi su particolari tipologie di vulnerabilità e/o di attacchi.

Un modo semplice per ottenere le informazioni (nel caso siano pubbliche) è utilizzare software come netcat o telnet.

mrtouch@mrtouch:~$ nc google.com 80
GET / HTTP/1.1

HTTP/1.1 302 Found
Cache-Control: private
Content-Type: text/html; charset=UTF-8
Referrer-Policy: no-referrer
Location: http://www.google.it/?gfe_rd=cr&ei=ZwFtWbfKMcvw8AeY0K_gDg
Content-Length: 258
Date: Mon, 17 Jul 2017 18:26:47 GMT

Nel caso non venga stampata il server, si può provare ad inviare richieste malformate, come

mrtouch@mrtouch:~$ nc bing.com 80
HEAD / HTTP/2.0

HTTP/1.1 400 Bad Request
Content-Length: 334
Content-Type: text/html; charset=us-ascii
Date: Mon, 17 Jul 2017 18:33:40 GMT
Connection: close

Per conoscere le opzioni disponibili basta utilizzare OPTIONS

mrtouch@mrtouch:~$ echo -e 'OPTIONS / HTTP/1.0\r\n\n' | nc sito.it 80

Altri due siti utili per ottenere informazioni possono essere serversniff e centralops.

Un plugin che utilizzo molto e ho sempre ritenuto valido è Wappalyzer, il quale identifica in maniera (quasi sempre) egregia le tecnologie utilizzare dall’applicazione e, nel caso di cms, anche plugin e/o framework.

Wappalyzer al lavoro
Wappalyzer al lavoro

Webserver Metafile

Con metafile si fa riferimento al file robots.txt, nel quale sono presenti (solitamente) le directory che I motori di ricerca non devono analizzare, poiché contengono informazioni riservate.

File robots.txt di Google
File robots.txt di Google

Oltre al file robots è possibile trovare META TAG robots all’interno del codice sorgente di una pagina web, il cui significato è molto simile al file sopracitato.

Enumerazione delle applicazioni presenti sul webserver

L’idea di fondo è che se si identifica un’applicazione potenzialmente vulnerabile è più semplice focalizzare l’attenzione su di essa e trovare punti di accesso. Le azioni principali potrebbero essere:

  • eseguire una scansione dell’host con nmap e identificare I servizi aperti sulle porte;
  • cercare sottodomini alla ricerca di applicazioni note;
  • analizzare I DNS, verificando se lo zone transfer sia attivo.
Tipologia di file e probabile tecnologia utilizzata
Tipologia di file e probabile tecnologia utilizzata

Analisi di commenti e metadati

In molte pagine html è possibile trovare commenti in merito alla programmazione del sito, o informazioni più o meno sensibili, scritte dai programmatori. Ogni volta che si trova una pagina è sempre consigliato analizzare la sorgente, seguire link a cartelle o file sospetti e leggere attentamente i commenti, non si sa mai che si trovi qualcosa.

Mappare l’applicazione e identificare i punti di ingresso

Per questo passaggio possono venirci incontro software come ZAP o Burp Suite, i quali riescono a mappare in pochi minuti anche le applicazioni più grandi, identificando ogni punto di ingresso e link presente nelle pagine.

Intruder di Burp Suite
Intruder di Burp Suite

Questo è uno dei passi fondamentali, ed è bene verificare tutte le richieste, le pagine, i messaggi di errore che ritorna l’applicazione. Alcuni dei passi sono descritti da OWASP, ma si possono riassumere in un semplice punto:

  • Mappa in maniera completa l’applicazione, catalogando e identificando ogni tipo di vulnerabilità che possa essere presente nella stessa.

Per ogni pagina è bene chiedersi:

  1. Questa pagina dialoga con un database o un sistema simile? (SQLI, LDAP, LFI, etc.)
  2. Altri utenti possono vedere ciò che scrivo? (XSS o similari)
  3. La pagina dialoga con il sistema ed esegue comandi? (Command injection)
  4. e via di seguito.

Ricerca di file nascosti

Nel caso in cui i precedendi passi non abbiano funzionato, è bene ricordare che nelle applicazioni web certi percorsi siano privati e non vengano linkati. Per questa ragione è utile testare anche percorsi nascosti, con sofware come dirsearch

Bruteforce di directory su google.com
Bruteforce di directory su google.com

Conclusioni

Come si può notare, analizzare un’applicazione web è tutt’altro che semplice, specialmente se si tratta di grandi compagnie con migliaia di domini e sottodomini. Per chi volesse approfondire, altri siti utili sono: