{"id":2061,"date":"2025-01-23T18:42:03","date_gmt":"2025-01-23T17:42:03","guid":{"rendered":"https:\/\/www.fabriziogiancola.eu\/?p=2061"},"modified":"2025-01-29T16:31:38","modified_gmt":"2025-01-29T15:31:38","slug":"information-disclosure-vulnerabilities","status":"publish","type":"post","link":"https:\/\/www.fabriziogiancola.eu\/index.php\/2025\/01\/23\/information-disclosure-vulnerabilities\/","title":{"rendered":"Information disclosure vulnerabilities"},"content":{"rendered":"\n<p class=\"has-medium-font-size\">PortSwigger Academy \u2013 Information disclosure vulnerabilities<\/p>\n\n\n\n<p>Continua il percorso di apprendimento suggerito da \u201c<strong><a href=\"https:\/\/portswigger.net\/web-security\/learning-path\" target=\"_blank\" rel=\"noreferrer noopener\">PortSwigger Academy<\/a><\/strong>\u201d.<\/p>\n\n\n\n<p class=\"has-dark-gray-color has-very-light-gray-to-cyan-bluish-gray-gradient-background has-text-color has-background has-link-color has-medium-font-size wp-elements-986ec0598cfbd06bfb622346c2dc2e71\"><strong>Information disclosure vulnerabilities<\/strong><\/p>\n\n\n\n<p>In questa sezione spiegheremo le nozioni di base sulle vulnerabilit\u00e0 legate alla divulgazione di informazioni e descriveremo come trovarle e sfruttarle. Offriremo anche alcune indicazioni su come prevenire le vulnerabilit\u00e0 legate alla divulgazione di informazioni nei tuoi siti web.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXe2g-48vEDdsTyHGiOSoIxGDxADDEPlFWhcTih7oiBl9n00EH_ndE2pMxpGrVvXhdAkLmgl52VVOLwc3o9o-bUmTL3gNvsLja0VMi3TuN8tODDY3i95FPCmV60fHoWW0uMAlZEe?key=12gigTIlUygwxZoSlRLklVl8\" alt=\"\"\/><\/figure>\n\n\n\n<p>Imparare a trovare e sfruttare la divulgazione delle informazioni \u00e8 un\u2019abilit\u00e0 vitale per qualsiasi tester. \u00c8 probabile che lo incontri regolarmente e, una volta che sai come sfruttarlo in modo efficace, pu\u00f2 aiutarti a migliorare l\u2019efficienza dei test e consentirti di trovare bug aggiuntivi di elevata gravit\u00e0.<\/p>\n\n\n\n<p class=\"has-medium-font-size\"><strong>Che cos\u2019\u00e8 la divulgazione delle informazioni?<\/strong><\/p>\n\n\n\n<p>La divulgazione di informazioni, nota anche come fuga di informazioni, avviene quando un sito Web rivela involontariamente informazioni sensibili ai propri utenti. A seconda del contesto, i siti Web possono divulgare tutti i tipi di informazioni a un potenziale utente malintenzionato, tra cui:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>dati su altri utenti, come nomi utente o informazioni finanziarie;<\/li>\n\n\n\n<li>dati commerciali o aziendali sensibili;<\/li>\n\n\n\n<li>dettagli tecnici sul sito web e sulla sua infrastruttura.<\/li>\n<\/ul>\n\n\n\n<p>I pericoli derivanti dalla fuga di dati aziendali o utente sensibili sono abbastanza ovvi, ma la divulgazione di informazioni tecniche a volte pu\u00f2 essere altrettanto grave. Anche se alcune di queste informazioni saranno di utilit\u00e0 limitata, possono potenzialmente essere un punto di partenza per esporre un\u2019ulteriore superficie di attacco, che potrebbe contenere altre vulnerabilit\u00e0 interessanti. La conoscenza che sarai in grado di raccogliere potrebbe persino fornire il pezzo mancante del puzzle quando cerchi di costruire attacchi complessi e ad alta gravit\u00e0.<\/p>\n\n\n\n<p>Occasionalmente, informazioni sensibili potrebbero essere divulgate incautamente agli utenti che stanno semplicemente navigando nel sito Web in modo normale. Pi\u00f9 comunemente, tuttavia, un utente malintenzionato deve ottenere la divulgazione di informazioni interagendo con il sito Web in modi inaspettati o dannosi. Studieranno quindi attentamente le risposte del sito Web per cercare di identificare comportamenti interessanti.<\/p>\n\n\n\n<p class=\"has-medium-font-size\"><strong>Esempi di divulgazione di informazioni<\/strong><\/p>\n\n\n\n<p>Alcuni esempi fondamentali di divulgazione di informazioni sono i seguenti:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>rivelare i nomi delle directory nascoste, la loro struttura e i loro contenuti tramite un file <em>robots.txt<\/em> o un elenco di directory;<\/li>\n\n\n\n<li>fornire accesso ai file del codice sorgente tramite backup temporanei;<\/li>\n\n\n\n<li>menzione esplicita dei nomi di tabelle o colonne del database nei messaggi di errore;<\/li>\n\n\n\n<li>esporre inutilmente informazioni altamente sensibili, come i dettagli della carta di credito;<\/li>\n\n\n\n<li>chiavi API hardcoding, indirizzi IP, credenziali del database e cos\u00ec via nel codice sorgente;<\/li>\n\n\n\n<li>suggerendo l\u2019esistenza o l\u2019assenza di risorse, nomi utente e cos\u00ec via attraverso sottili differenze nel comportamento dell\u2019applicazione.<\/li>\n<\/ul>\n\n\n\n<p>In questo argomento imparerai come trovare e sfruttare alcuni di questi esempi e altro ancora.<\/p>\n\n\n\n<p class=\"has-medium-font-size\"><strong>Come nascono le vulnerabilit\u00e0 legate alla divulgazione delle informazioni?<\/strong><\/p>\n\n\n\n<p>Le vulnerabilit\u00e0 legate alla divulgazione di informazioni possono presentarsi in innumerevoli modi diversi, ma queste possono essere classificate a grandi linee come segue:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Mancata rimozione dei contenuti interni dai contenuti pubblici. Ad esempio, i commenti degli sviluppatori nel markup sono talvolta visibili agli utenti nell\u2019ambiente di produzione.<\/li>\n\n\n\n<li>Configurazione non sicura del sito web e delle tecnologie correlate. Ad esempio, la mancata disabilitazione delle funzionalit\u00e0 di debug e diagnostica pu\u00f2 talvolta fornire agli aggressori strumenti utili per aiutarli a ottenere informazioni sensibili. Le configurazioni predefinite possono anche rendere vulnerabili i siti Web, ad esempio visualizzando messaggi di errore eccessivamente dettagliati.<\/li>\n\n\n\n<li>Design e comportamento difettosi dell\u2019applicazione. Ad esempio, se un sito Web restituisce risposte distinte quando si verificano diversi stati di errore, ci\u00f2 pu\u00f2 anche consentire agli aggressori di enumerare dati sensibili, come credenziali utente valide.<\/li>\n<\/ul>\n\n\n\n<p class=\"has-medium-font-size\"><strong>Qual \u00e8 l\u2019impatto delle vulnerabilit\u00e0 legate alla divulgazione delle informazioni?<\/strong><\/p>\n\n\n\n<p>Le vulnerabilit\u00e0 nella divulgazione di informazioni possono avere un impatto sia diretto che indiretto a seconda dello scopo del sito web e, quindi, delle informazioni che un utente malintenzionato \u00e8 in grado di ottenere. In alcuni casi, il solo atto di divulgazione di informazioni sensibili pu\u00f2 avere un impatto elevato sulle parti interessate. Ad esempio, un negozio online che divulga i dati della carta di credito dei propri clienti potrebbe avere gravi conseguenze.<\/p>\n\n\n\n<p>D\u2019altro canto, la fuga di informazioni tecniche, come la struttura delle directory o i framework di terze parti utilizzati, potrebbe avere un impatto diretto minimo o nullo. Tuttavia, nelle mani sbagliate, queste potrebbero rivelarsi le informazioni chiave necessarie per realizzare numerosi altri exploit. La gravit\u00e0 in questo caso dipende da ci\u00f2 che l\u2019aggressore \u00e8 in grado di fare con queste informazioni.<\/p>\n\n\n\n<p class=\"has-medium-font-size\"><strong>Come valutare la gravit\u00e0 delle vulnerabilit\u00e0 legate alla divulgazione delle informazioni<\/strong><\/p>\n\n\n\n<p>Sebbene l\u2019impatto finale possa essere potenzialmente molto grave, \u00e8 solo in circostanze specifiche che la divulgazione di informazioni costituisce di per s\u00e9 un problema di elevata gravit\u00e0. Durante i test, in particolare, la divulgazione di informazioni tecniche \u00e8 spesso interessante solo se si \u00e8 in grado di dimostrare come un utente malintenzionato potrebbe utilizzarle per fare qualcosa di dannoso.<\/p>\n\n\n\n<p>Ad esempio, sapere che un sito Web utilizza una particolare versione del framework \u00e8 di utilit\u00e0 limitata se tale versione \u00e8 completamente aggiornata. Tuttavia, queste informazioni diventano significative quando il sito Web utilizza una versione precedente che contiene una vulnerabilit\u00e0 nota. In questo caso, eseguire un attacco devastante potrebbe essere semplice come applicare un exploit documentato pubblicamente.<\/p>\n\n\n\n<p>\u00c8 importante esercitare il buon senso quando si scopre che vengono divulgate informazioni potenzialmente sensibili. \u00c8 probabile che dettagli tecnici minori possano essere scoperti in numerosi modi su molti dei siti Web testati. Pertanto, l\u2019attenzione principale dovrebbe essere rivolta all\u2019impatto e alla sfruttabilit\u00e0 delle informazioni trapelate, non solo alla presenza della divulgazione di informazioni come problema a s\u00e9 stante. L\u2019ovvia eccezione a ci\u00f2 avviene quando le informazioni trapelate sono cos\u00ec sensibili da meritare attenzione di per s\u00e9.<\/p>\n\n\n\n<p class=\"has-medium-font-size\"><strong>Come prevenire le vulnerabilit\u00e0 legate alla divulgazione di informazioni<\/strong><\/p>\n\n\n\n<p>Impedire completamente la divulgazione delle informazioni \u00e8 complicato a causa dell\u2019enorme variet\u00e0 di modi in cui pu\u00f2 verificarsi. Tuttavia, esistono alcune best practice generali che puoi seguire per ridurre al minimo il rischio che questo tipo di vulnerabilit\u00e0 si insinui nei tuoi siti web.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Assicurati che tutti coloro che sono coinvolti nella realizzazione del sito web siano pienamente consapevoli di quali informazioni siano considerate sensibili. A volte informazioni apparentemente innocue possono essere molto pi\u00f9 utili per un utente malintenzionato di quanto si creda. Evidenziare questi pericoli pu\u00f2 aiutare a garantire che le informazioni sensibili vengano gestite in modo pi\u00f9 sicuro in generale dalla tua organizzazione.<\/li>\n\n\n\n<li>Controlla qualsiasi codice per la potenziale divulgazione di informazioni come parte del tuo QA o dei processi di creazione. Dovrebbe essere relativamente semplice automatizzare alcune delle attivit\u00e0 associate, come l\u2019eliminazione dei commenti degli sviluppatori.<\/li>\n\n\n\n<li>Utilizzare il pi\u00f9 possibile messaggi di errore generici. Non fornire inutilmente agli aggressori indizi sul comportamento dell\u2019applicazione.<\/li>\n\n\n\n<li>Ricontrolla che tutte le funzionalit\u00e0 di debug o diagnostica siano disabilitate nell\u2019ambiente di produzione.<\/li>\n\n\n\n<li>Assicurati di comprendere appieno le impostazioni di configurazione e le implicazioni sulla sicurezza di qualsiasi tecnologia di terze parti che implementi. Prenditi il \u200b\u200btempo necessario per indagare e disattivare eventuali funzionalit\u00e0 e impostazioni di cui non hai effettivamente bisogno.<\/li>\n<\/ul>\n\n\n\n<p class=\"has-medium-font-size\"><strong>Come individuare e sfruttare le vulnerabilit\u00e0 legate alla divulgazione di informazioni<\/strong><\/p>\n\n\n\n<p>In questa sezione forniremo consigli pratici su alcune tecniche e strumenti che \u00e8 possibile utilizzare per identificare la divulgazione di informazioni in un\u2019ampia gamma di contesti. Abbiamo anche fornito diversi laboratori in modo che tu possa esercitarti nell\u2019estrazione di diversi tipi di informazioni che potrebbero essere utilizzate come parte di un ulteriore attacco.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>test per le vulnerabilit\u00e0 legate alla divulgazione di informazioni;<\/li>\n\n\n\n<li>fonti comuni di divulgazione delle informazioni LABS;<\/li>\n<\/ul>\n\n\n\n<p class=\"has-medium-font-size\"><strong>Come testare le vulnerabilit\u00e0 legate alla divulgazione di informazioni<\/strong><\/p>\n\n\n\n<p>In generale, \u00e8 importante non sviluppare la \u201cvisione a tunnel\u201d durante i test. In altre parole, dovresti evitare di concentrarti troppo su una particolare vulnerabilit\u00e0. I dati sensibili possono essere divulgati ovunque, quindi \u00e8 importante non perdere nulla che potrebbe essere utile in seguito. Troverai spesso dati sensibili durante i test per qualcos\u2019altro. Un\u2019abilit\u00e0 chiave \u00e8 essere in grado di riconoscere informazioni interessanti quando e dove le trovi.<\/p>\n\n\n\n<p>Di seguito sono riportati alcuni esempi di tecniche e strumenti di alto livello che \u00e8 possibile utilizzare per identificare le vulnerabilit\u00e0 legate alla divulgazione di informazioni durante i test.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Fuzzing<\/li>\n\n\n\n<li>Utilizzando Burp Scanner<\/li>\n\n\n\n<li>Utilizzando gli engagement tools di Burp<\/li>\n\n\n\n<li>Risposte informative ingegneristiche<\/li>\n<\/ul>\n\n\n\n<p><strong>Fuzzing<\/strong><\/p>\n\n\n\n<p>Se identifichi parametri interessanti, puoi provare a inviare tipi di dati inaspettati e stringhe fuzz appositamente predisposte per vedere quale effetto ha. Presta molta attenzione; sebbene le risposte a volte rivelino esplicitamente informazioni interessanti, possono anche suggerire in modo pi\u00f9 sottile il comportamento dell\u2019applicazione. Ad esempio, potrebbe trattarsi di una leggera differenza nel tempo impiegato per elaborare la richiesta. Anche se il contenuto di un messaggio di errore non rivela nulla, a volte il fatto che si sia verificato un caso di errore invece di un altro \u00e8 di per s\u00e9 un\u2019informazione utile.<\/p>\n\n\n\n<p>Puoi automatizzare gran parte di questo processo utilizzando strumenti come Burp Intruder. Ci\u00f2 offre numerosi vantaggi. In particolare, puoi:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>aggiungere le posizioni del payload ai parametri e utilizzare elenchi di parole predefiniti di stringhe fuzz per testare un volume elevato di input diversi in rapida successione;<\/li>\n\n\n\n<li>identificare facilmente le differenze nelle risposte confrontando codici di stato HTTP, tempi di risposta, lunghezze e cos\u00ec via;<\/li>\n\n\n\n<li>utilizzare le regole di corrispondenza grep per identificare rapidamente le occorrenze di parole chiave, come <code>error, invalid, SELECT, SQL<\/code> e cos\u00ec via;<\/li>\n\n\n\n<li>applicare le regole di estrazione grep per estrarre e confrontare il contenuto di elementi interessanti all\u2019interno delle risposte.<\/li>\n<\/ul>\n\n\n\n<p>Puoi anche utilizzare l\u2019estensione <a href=\"https:\/\/portswigger.net\/bappstore\/470b7057b86f41c396a97903377f3d81\" target=\"_blank\" rel=\"noreferrer noopener\">Logger++<\/a>, disponibile nello store BApp. Oltre a registrare richieste e risposte da tutti gli strumenti di Burp, ti consente di definire filtri avanzati per evidenziare le voci interessanti. Questa \u00e8 solo una delle tante estensioni Burp che possono aiutarti a trovare tutti i dati sensibili trapelati dal sito web.<\/p>\n\n\n\n<p><strong>Utilizzando Burp Scanner<\/strong><\/p>\n\n\n\n<p>Gli utenti di Burp Suite Professional hanno il vantaggio di Burp Scanner. Ci\u00f2 fornisce funzionalit\u00e0 di scansione in tempo reale per il controllo degli elementi durante la navigazione oppure puoi pianificare scansioni automatizzate per eseguire la scansione e controllare il sito di destinazione per tuo conto. Entrambi gli approcci contrassegneranno automaticamente molte vulnerabilit\u00e0 legate alla divulgazione di informazioni. Ad esempio, Burp Scanner ti avviser\u00e0 se trova informazioni sensibili come chiavi private, indirizzi e-mail e numeri di carta di credito in una risposta. Identificher\u00e0 inoltre eventuali file di backup, elenchi di directory e cos\u00ec via.<\/p>\n\n\n\n<p><strong>Utilizzando gli engagement tools di Burp<\/strong><\/p>\n\n\n\n<p>Burp fornisce diversi engagement tools che puoi utilizzare per trovare pi\u00f9 facilmente informazioni interessanti nel sito Web di destinazione. Puoi accedere agli engagement tools dal menu contestuale: fai semplicemente clic con il pulsante destro del mouse su qualsiasi messaggio HTTP, voce Burp Proxy o elemento nella mappa del sito e vai su \u201c<em>Engagement tools<\/em>\u201d.<\/p>\n\n\n\n<p>I seguenti strumenti sono particolarmente utili in questo contesto.<\/p>\n\n\n\n<p>Ricerca<\/p>\n\n\n\n<p>Puoi utilizzare questo strumento per cercare qualsiasi espressione all\u2019interno dell\u2019elemento selezionato. Puoi ottimizzare i risultati utilizzando varie opzioni di ricerca avanzata, come la ricerca regex o la ricerca negativa. Ci\u00f2 \u00e8 utile per trovare rapidamente occorrenze (o assenze) di specifiche parole chiave di interesse.<\/p>\n\n\n\n<p>Trova commenti<\/p>\n\n\n\n<p>Puoi utilizzare questo strumento per estrarre rapidamente eventuali commenti degli sviluppatori trovati nell\u2019elemento selezionato. Fornisce inoltre schede per accedere immediatamente al ciclo di richiesta\/risposta HTTP in cui \u00e8 stato trovato ciascun commento.<\/p>\n\n\n\n<p>Scopri i contenuti<\/p>\n\n\n\n<p>Puoi utilizzare questo strumento per identificare contenuti e funzionalit\u00e0 aggiuntivi non collegati ai contenuti visibili del sito web. Questo pu\u00f2 essere utile per trovare directory e file aggiuntivi che non necessariamente verranno visualizzati automaticamente nella mappa del sito.<\/p>\n\n\n\n<p><strong>Risposte informative ingegneristiche<\/strong><\/p>\n\n\n\n<p>I messaggi di errore dettagliati a volte possono rivelare informazioni interessanti durante il normale flusso di lavoro dei test. Tuttavia, studiando il modo in cui i messaggi di errore cambiano in base ai tuoi input, puoi fare un ulteriore passo avanti. In alcuni casi, sarai in grado di manipolare il sito web per estrarre dati arbitrari tramite un messaggio di errore.<\/p>\n\n\n\n<p>Esistono numerosi metodi per farlo a seconda dello scenario particolare che incontri. Un esempio comune \u00e8 fare in modo che la logica dell\u2019applicazione tenti un\u2019azione non valida su un elemento di dati specifico. Ad esempio, l\u2019invio di un valore di parametro non valido potrebbe portare a un\u2019analisi dello stack o a una risposta di debug che contiene dettagli interessanti. A volte \u00e8 possibile che i messaggi di errore rivelino il valore dei dati desiderati nella risposta.<\/p>\n\n\n\n<p><strong>Fonti comuni di divulgazione delle informazioni<\/strong><\/p>\n\n\n\n<p>La divulgazione di informazioni pu\u00f2 avvenire in un\u2019ampia variet\u00e0 di contesti all\u2019interno di un sito web. Di seguito sono riportati alcuni esempi comuni di luoghi in cui \u00e8 possibile verificare se vengono esposte informazioni sensibili.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>File per crawler web<\/li>\n\n\n\n<li>Elenchi di directory<\/li>\n\n\n\n<li>Commenti degli sviluppatori<\/li>\n\n\n\n<li>Messaggi di errore<\/li>\n\n\n\n<li>Debug dei dati<\/li>\n\n\n\n<li>Pagine dell\u2019account utente<\/li>\n\n\n\n<li>File di backup<\/li>\n\n\n\n<li>Configurazione non sicura<\/li>\n\n\n\n<li>Cronologia del controllo della versione<\/li>\n<\/ul>\n\n\n\n<p>File per crawler web<\/p>\n\n\n\n<p>Molti siti Web forniscono file in <code>\/robots.txt<\/code> e <code>\/sitemap.xml<\/code> per aiutare i crawler a navigare nel sito. Tra l\u2019altro, questi file spesso elencano directory specifiche che i crawler dovrebbero ignorare, ad esempio perch\u00e9 potrebbero contenere informazioni riservate.<\/p>\n\n\n\n<p>Dato che questi file non sono solitamente collegati all\u2019interno del sito web, potrebbero non apparire immediatamente nella mappa del sito di Burp. Tuttavia, vale la pena provare a navigare manualmente su <code>\/robots.txt<\/code> o <code>\/sitemap.xml<\/code> per vedere se trovi qualcosa di utile.<\/p>\n\n\n\n<p>Elenchi di directory<\/p>\n\n\n\n<p>I server Web possono essere configurati per elencare automaticamente il contenuto delle directory che non dispongono di una pagina indice presente. Ci\u00f2 pu\u00f2 aiutare un utente malintenzionato consentendogli di identificare rapidamente le risorse in un determinato percorso e procedere direttamente all\u2019analisi e all\u2019attacco di tali risorse. Aumenta in particolare l\u2019esposizione dei file sensibili all\u2019interno della directory che non devono essere accessibili agli utenti, come file temporanei e dump di arresti anomali.<\/p>\n\n\n\n<p>Gli stessi elenchi di directory non rappresentano necessariamente una vulnerabilit\u00e0 della sicurezza. Tuttavia, se anche il sito Web non riesce a implementare un adeguato controllo degli accessi, la divulgazione dell\u2019esistenza e dell\u2019ubicazione delle risorse sensibili in questo modo rappresenta chiaramente un problema.<\/p>\n\n\n\n<p>Commenti degli sviluppatori<\/p>\n\n\n\n<p>Durante lo sviluppo, a volte vengono aggiunti commenti HTML in linea al markup. Questi commenti vengono in genere rimossi prima che le modifiche vengano distribuite nell\u2019ambiente di produzione. Tuttavia, a volte i commenti possono essere dimenticati, persi o addirittura lasciati deliberatamente perch\u00e9 qualcuno non era pienamente consapevole delle implicazioni sulla sicurezza. Sebbene questi commenti non siano visibili sulla pagina renderizzata, \u00e8 possibile accedervi facilmente utilizzando Burp o anche gli strumenti di sviluppo integrati nel browser.<\/p>\n\n\n\n<p>Talvolta questi commenti contengono informazioni utili a un utente malintenzionato. Ad esempio, potrebbero suggerire l\u2019esistenza di directory nascoste o fornire indizi sulla logica dell\u2019applicazione.<\/p>\n\n\n\n<p>Messaggi di errore<\/p>\n\n\n\n<p>Una delle cause pi\u00f9 comuni di divulgazione di informazioni sono i messaggi di errore dettagliati. Come regola generale, dovresti prestare molta attenzione a tutti i messaggi di errore che incontri durante il controllo.<\/p>\n\n\n\n<p>Il contenuto dei messaggi di errore pu\u00f2 rivelare informazioni su quale input o tipo di dati \u00e8 previsto da un determinato parametro. Questo pu\u00f2 aiutarti a restringere il campo dell\u2019attacco identificando i parametri sfruttabili. Potrebbe anche semplicemente impedirti di perdere tempo cercando di iniettare payload che semplicemente non funzioneranno.<\/p>\n\n\n\n<p>Messaggi di errore dettagliati possono anche fornire informazioni sulle diverse tecnologie utilizzate dal sito web. Ad esempio, potrebbero nominare esplicitamente un motore di modello, un tipo di database o un server utilizzato dal sito Web, insieme al numero di versione. Queste informazioni possono essere utili perch\u00e9 puoi cercare facilmente eventuali exploit documentati che potrebbero esistere per questa versione. Allo stesso modo, puoi verificare se sono presenti errori di configurazione comuni o impostazioni predefinite pericolose che potresti essere in grado di sfruttare. Alcuni di questi potrebbero essere evidenziati nella documentazione ufficiale.<\/p>\n\n\n\n<p>Potresti anche scoprire che il sito Web utilizza una sorta di framework open source. In questo caso, puoi studiare il codice sorgente disponibile al pubblico, che \u00e8 una risorsa inestimabile per costruire i tuoi exploit.<\/p>\n\n\n\n<p>Le differenze tra i messaggi di errore possono anche rivelare un diverso comportamento dell\u2019applicazione che si verifica dietro le quinte. Osservare le differenze nei messaggi di errore \u00e8 un aspetto cruciale di molte tecniche, come l\u2019iniezione SQL, l\u2019enumerazione dei nomi utente e cos\u00ec via.<\/p>\n\n\n\n<p><a href=\"http:\/\/Lab-https:\/\/portswigger.net\/web-security\/information-disclosure\/exploiting\/lab-infoleak-in-error-messages\" target=\"_blank\" rel=\"noreferrer noopener\">Lab-https:\/\/portswigger.net\/web-security\/information-disclosure\/exploiting\/lab-infoleak-in-error-messages<\/a><\/p>\n\n\n\n<p>Debug dei dati<\/p>\n\n\n\n<p>A scopo di debug, molti siti Web generano messaggi di errore e log personalizzati che contengono grandi quantit\u00e0 di informazioni sul comportamento dell\u2019applicazione. Sebbene queste informazioni siano utili durante lo sviluppo, sono anche estremamente utili per un utente malintenzionato se trapelano nell\u2019ambiente di produzione.<\/p>\n\n\n\n<p>I messaggi di debug a volte possono contenere informazioni vitali per lo sviluppo di un attacco, tra cui:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>valori per variabili di sessione chiave che possono essere manipolate tramite input dell\u2019utente;<\/li>\n\n\n\n<li>nomi host e credenziali per i componenti back-end;<\/li>\n\n\n\n<li>nomi di file e directory sul server;<\/li>\n\n\n\n<li>chiavi utilizzate per crittografare i dati trasmessi tramite il client.<\/li>\n<\/ul>\n\n\n\n<p>Talvolta le informazioni di debug possono essere registrate in un file separato. Se un utente malintenzionato riesce ad accedere a questo file, pu\u00f2 fungere da utile riferimento per comprendere lo stato di runtime dell\u2019applicazione. Pu\u00f2 anche fornire diversi indizi su come fornire input elaborati per manipolare lo stato dell\u2019applicazione e controllare le informazioni ricevute.<\/p>\n\n\n\n<p><a href=\"http:\/\/Lab-https:\/\/portswigger.net\/web-security\/information-disclosure\/exploiting\/lab-infoleak-on-debug-page\" target=\"_blank\" rel=\"noreferrer noopener\">Lab-https:\/\/portswigger.net\/web-security\/information-disclosure\/exploiting\/lab-infoleak-on-debug-page<\/a><\/p>\n\n\n\n<p>Pagine dell\u2019account utente<\/p>\n\n\n\n<p>Per loro stessa natura, il profilo o la pagina dell\u2019account di un utente contiene solitamente informazioni sensibili, come l\u2019indirizzo e-mail, il numero di telefono, la chiave API e cos\u00ec via. Poich\u00e9 normalmente gli utenti hanno accesso solo alla pagina del proprio account, ci\u00f2 non rappresenta di per s\u00e9 una vulnerabilit\u00e0. Tuttavia, alcuni siti Web contengono difetti logici che potenzialmente consentono a un utente malintenzionato di sfruttare queste pagine per visualizzare i dati di altri utenti.<\/p>\n\n\n\n<p>Ad esempio, considera un sito Web che determina quale pagina dell\u2019account utente caricare in base a un parametro utente.<\/p>\n\n\n\n<p><code>GET \/user\/personal-info?user=carlos<\/code><\/p>\n\n\n\n<p>La maggior parte dei siti Web adotta misure per impedire a un utente malintenzionato di modificare semplicemente questo parametro per accedere alle pagine degli account di utenti arbitrari. Tuttavia, a volte la logica per caricare singoli elementi di dati non \u00e8 cos\u00ec solida.<\/p>\n\n\n\n<p>Un utente malintenzionato potrebbe non essere in grado di caricare interamente la pagina dell\u2019account di un altro utente, ma la logica per recuperare e visualizzare l\u2019indirizzo e-mail registrato dell\u2019utente, ad esempio, potrebbe non verificare che il parametro utente corrisponda all\u2019utente attualmente connesso. In questo caso , la semplice modifica del parametro utente consentirebbe a un utente malintenzionato di visualizzare indirizzi email di utenti arbitrari sulla pagina del proprio account.<\/p>\n\n\n\n<p>Esamineremo questo tipo di vulnerabilit\u00e0 in modo pi\u00f9 dettagliato quando tratteremo il controllo degli accessi e le vulnerabilit\u00e0 IDOR.<\/p>\n\n\n\n<p>Divulgazione del codice sorgente tramite file di backup<\/p>\n\n\n\n<p>Ottenere l\u2019accesso al codice sorgente rende molto pi\u00f9 semplice per un utente malintenzionato comprendere il comportamento dell\u2019applicazione e costruire attacchi ad alta gravit\u00e0. I dati sensibili a volte sono addirittura codificati all\u2019interno del codice sorgente. Esempi tipici di ci\u00f2 includono chiavi API e credenziali per l\u2019accesso ai componenti back-end.<\/p>\n\n\n\n<p>Se riesci a identificare che viene utilizzata una particolare tecnologia open source, ci\u00f2 fornisce un facile accesso a una quantit\u00e0 limitata di codice sorgente.<\/p>\n\n\n\n<p>Occasionalmente, \u00e8 anche possibile fare in modo che il sito web esponga il proprio codice sorgente. Durante la mappatura di un sito Web, potresti scoprire che ad alcuni file di codice sorgente viene fatto riferimento esplicitamente. Sfortunatamente, richiedendoli di solito non si rivela il codice stesso. Quando un server gestisce file con una particolare estensione, come <code>.php<\/code>, in genere esegue il codice, anzich\u00e9 semplicemente inviarlo al client come testo. Tuttavia, in alcune situazioni, puoi indurre un sito Web a restituire il contenuto del file. Ad esempio, gli editor di testo spesso generano file di backup temporanei mentre il file originale viene modificato. Questi file temporanei vengono solitamente indicati in qualche modo, ad esempio aggiungendo una tilde (<code>~<\/code>) al nome del file o aggiungendo un\u2019estensione di file diversa. La richiesta di un file di codice utilizzando un\u2019estensione di file di backup a volte pu\u00f2 consentire di leggere il contenuto del file nella risposta.<\/p>\n\n\n\n<p><a href=\"http:\/\/Lab-https:\/\/portswigger.net\/web-security\/information-disclosure\/exploiting\/lab-infoleak-via-backup-files\" target=\"_blank\" rel=\"noreferrer noopener\">Lab-https:\/\/portswigger.net\/web-security\/information-disclosure\/exploiting\/lab-infoleak-via-backup-files<\/a><\/p>\n\n\n\n<p>Una volta che un utente malintenzionato ha accesso al codice sorgente, questo pu\u00f2 rappresentare un enorme passo avanti verso la possibilit\u00e0 di identificare e sfruttare ulteriori vulnerabilit\u00e0 che altrimenti sarebbero quasi impossibili. Uno di questi esempi \u00e8 la deserializzazione non sicura. Esamineremo questa vulnerabilit\u00e0 pi\u00f9 avanti in un argomento dedicato.<\/p>\n\n\n\n<p>Divulgazione di informazioni a causa di una configurazione non sicura<\/p>\n\n\n\n<p>I siti Web talvolta sono vulnerabili a causa di una configurazione errata. Ci\u00f2 \u00e8 particolarmente comune a causa dell\u2019uso diffuso di tecnologie di terze parti, la cui vasta gamma di opzioni di configurazione non \u00e8 necessariamente ben compresa da coloro che le implementano.<\/p>\n\n\n\n<p>In altri casi, gli sviluppatori potrebbero dimenticare di disabilitare varie opzioni di debug nell\u2019ambiente di produzione. Ad esempio, il metodo HTTP <code>TRACE<\/code> \u00e8 progettato per scopi diagnostici. Se abilitato, il server web risponder\u00e0 alle richieste che utilizzano il metodo <code>TRACE<\/code> riportando nella risposta l\u2019esatta richiesta ricevuta. Questo comportamento \u00e8 spesso innocuo, ma occasionalmente porta alla divulgazione di informazioni, come il nome delle intestazioni di autenticazione interne che potrebbero essere aggiunte alle richieste dai proxy inversi.<\/p>\n\n\n\n<p><a href=\"http:\/\/Lab-https:\/\/portswigger.net\/web-security\/information-disclosure\/exploiting\/lab-infoleak-authentication-bypass\" target=\"_blank\" rel=\"noreferrer noopener\">Lab-https:\/\/portswigger.net\/web-security\/information-disclosure\/exploiting\/lab-infoleak-authentication-bypass<\/a><\/p>\n\n\n\n<p>Cronologia del controllo della versione<\/p>\n\n\n\n<p>Praticamente tutti i siti Web sono sviluppati utilizzando una qualche forma di sistema di controllo della versione, come Git. Per impostazione predefinita, un progetto Git archivia tutti i dati di controllo della versione in una cartella denominata <code>.git<\/code>. Occasionalmente, i siti Web espongono questa directory nell\u2019ambiente di produzione. In questo caso, potresti riuscire ad accedervi semplicemente accedendo a <code>\/.git<\/code>.<\/p>\n\n\n\n<p>Anche se spesso non \u00e8 pratico sfogliare manualmente la struttura e i contenuti dei file grezzi, esistono vari metodi per scaricare l\u2019intera directory <code>.git<\/code>. Puoi quindi aprirlo utilizzando l\u2019installazione locale di Git per accedere alla cronologia del controllo della versione del sito Web. Ci\u00f2 pu\u00f2 includere registri contenenti modifiche apportate e altre informazioni interessanti.<\/p>\n\n\n\n<p>Questo potrebbe non darti accesso al codice sorgente completo, ma confrontare le differenze ti consentir\u00e0 di leggere piccoli frammenti di codice. Come con qualsiasi codice sorgente, potresti anche trovare dati sensibili codificati all\u2019interno di alcune delle righe modificate.<\/p>\n\n\n\n<p><a href=\"http:\/\/Lab-https:\/\/portswigger.net\/web-security\/information-disclosure\/exploiting\/lab-infoleak-in-version-control-history\" target=\"_blank\" rel=\"noreferrer noopener\">Lab-https:\/\/portswigger.net\/web-security\/information-disclosure\/exploiting\/lab-infoleak-in-version-control-history<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>PortSwigger Academy \u2013 Information disclosure vulnerabilities Continua il percorso di apprendimento suggerito da \u201cPortSwigger Academy\u201d. Information disclosure vulnerabilities In questa sezione spiegheremo le nozioni di base sulle vulnerabilit\u00e0 legate alla divulgazione di informazioni e descriveremo come trovarle e sfruttarle. Offriremo anche alcune indicazioni su come prevenire le vulnerabilit\u00e0 legate alla divulgazione di informazioni nei tuoi &hellip; <a href=\"https:\/\/www.fabriziogiancola.eu\/index.php\/2025\/01\/23\/information-disclosure-vulnerabilities\/\" class=\"more-link\">Leggi tutto<span class=\"screen-reader-text\"> &#8220;Information disclosure vulnerabilities&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"iawp_total_views":0,"footnotes":""},"categories":[5,15],"tags":[],"class_list":["post-2061","post","type-post","status-publish","format-standard","hentry","category-burp-suite","category-ethical-hacking"],"_links":{"self":[{"href":"https:\/\/www.fabriziogiancola.eu\/index.php\/wp-json\/wp\/v2\/posts\/2061","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.fabriziogiancola.eu\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.fabriziogiancola.eu\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.fabriziogiancola.eu\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.fabriziogiancola.eu\/index.php\/wp-json\/wp\/v2\/comments?post=2061"}],"version-history":[{"count":7,"href":"https:\/\/www.fabriziogiancola.eu\/index.php\/wp-json\/wp\/v2\/posts\/2061\/revisions"}],"predecessor-version":[{"id":2073,"href":"https:\/\/www.fabriziogiancola.eu\/index.php\/wp-json\/wp\/v2\/posts\/2061\/revisions\/2073"}],"wp:attachment":[{"href":"https:\/\/www.fabriziogiancola.eu\/index.php\/wp-json\/wp\/v2\/media?parent=2061"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.fabriziogiancola.eu\/index.php\/wp-json\/wp\/v2\/categories?post=2061"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.fabriziogiancola.eu\/index.php\/wp-json\/wp\/v2\/tags?post=2061"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}