how can you check if a web application (as the attacker) has known vulnerabilities in it without already having exploited the application successfully?
Esistono vari modi per impronte digitali di un'applicazione Web senza accesso privilegiato.
Un modo comune per iniziare è identificare le versioni di librerie, framework e i rispettivi plugin usati. Questo può essere fatto ispezionando il codice sorgente, le intestazioni, i percorsi di indovinello dei file readme, ecc. Quindi verificherai se queste versioni sono aggiornate o se ci sono vulnerabilità pubblicate per loro sul web.
Ad esempio, prendi il blog di Facebook https://newsroom.fb.com/
. Guardando attraverso il codice sorgente, troverai rapidamente stringhe che indicano che stanno usando Wordpress, ad esempio:
<meta name="generator" content="WordPress.com" />
Sapendo che usano Wordpress potresti voler cercare plugin famosi che sono noti per essere vulnerabili. Ad esempio, sembra che stiano utilizzando il plug-in AMP , perché c'è un readme.txt
in:
https://newsroom.fb.com/wp-content/plugins/amp/readme.txt
Questo readme rivela che usano l'ultima versione 0.5.1
, quindi il plugin sembra aggiornato.
Un altro esempio potrebbe essere https://stackoverflow.com
in cui puoi scoprire quale versione di jQuery usa:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
Sebbene 1.12.4
non sia l'ultima versione, non sembrano esserci difetti immediatamente sfruttabili.
Come puoi vedere, il controllo di un'applicazione per componenti vulnerabili noti non richiede necessariamente un accesso privilegiato poiché spesso vengono trapelate versioni e configurazioni.