Sommario di gestione
Il team di Exchange centralizzato ha contattato Sayfer per eseguire test di penetrazione blackbox completi sulla loro applicazione Web e revisione whitebox per la loro architettura crittografica nel dicembre 2021.
Prima di valutare i servizi di cui sopra, abbiamo tenuto una riunione iniziale con il team tecnico di Centralized Exchange e abbiamo ricevuto una panoramica del sistema e degli obiettivi di questa ricerca.
Durante il periodo di ricerca di 4 settimane, abbiamo scoperto 10 vulnerabilità nel sistema. Le vulnerabilità più pericolose erano SQL injection e difetti nella logica aziendale.
L'impatto sul sistema è critico in quanto un utente malintenzionato potrebbe sfruttare alcune di queste vulnerabilità per sfruttare il sistema, modificando il proprio ruolo utente in "super_user" tramite l'iniezione SQL o abusando del sistema e rubando denaro dall'Exchange centralizzato utilizzando il meccanismo di aggiornamento del sistema degli anni '30.
Vulnerabilità per rischio
Alta – Minaccia diretta ai processi aziendali chiave.
Medio – Minaccia indiretta ai processi aziendali chiave o minaccia parziale ai processi aziendali.
Basso – Non esiste alcuna minaccia diretta. La vulnerabilità può essere sfruttata utilizzando altre vulnerabilità.
Informativo – Questo risultato non indica vulnerabilità, ma riporta un commento che segnala difetti di progettazione e implementazione impropria che potrebbero causare problemi a lungo termine.
Approccio
Metodologia di valutazione della sicurezza
Sayfer utilizza OWASP WSTG come nostro standard tecnico durante la revisione delle applicazioni web. Dopo aver acquisito una conoscenza approfondita del sistema, abbiamo deciso quali test OWASP sono necessari per valutare il sistema.
Valutazione della sicurezza
Dopo aver compreso e definito l'ambito, eseguito la modellazione delle minacce e valutato i test corretti richiesti per controllare completamente l'applicazione per i difetti di sicurezza, abbiamo eseguito la nostra valutazione della sicurezza.
Raccolta di informazioni
Raccolta di informazioni | Nome del test |
WSTG-INFO-01 | Condurre la ricognizione della scoperta dei motori di ricerca per la fuga di informazioni |
WSTG-INFO-02 | Server web di impronte digitali |
WSTG-INFO-03 | Esamina i metafile del server Web per perdite di informazioni |
WSTG-INFO-04 | Enumerare le applicazioni sul server Web |
WSTG-INFO-05 | Esaminare il contenuto della pagina Web per perdite di informazioni |
WSTG-INFO-06 | Identificare i punti di ingresso dell'applicazione |
WSTG-INFO-07 | Mappa i percorsi di esecuzione attraverso l'applicazione |
WSTG-INFO-08 | Framework di applicazioni Web per impronte digitali |
WSTG-INFO-09 | Applicazione Web per impronte digitali |
WSTG-INFO-10 | Mappa dell'architettura dell'applicazione |
Test di gestione della configurazione e della distribuzione
Test di gestione della configurazione e della distribuzione | Nome del test |
WSTG-CONF-01 | Testare la configurazione dell'infrastruttura di rete |
WSTG-CONF-02 | Testare la configurazione della piattaforma dell'applicazione |
WSTG-CONF-03 | Testare la gestione delle estensioni dei file per le informazioni riservate |
WSTG-CONF-04 | Esamina il vecchio backup e i file senza riferimenti per informazioni riservate |
WSTG-CONF-05 | Enumerare le interfacce di amministrazione dell'infrastruttura e dell'applicazione |
WSTG-CONF-06 | Prova i metodi HTTP |
WSTG-CONF-07 | Testare la sicurezza del trasporto HTTP Strict |
WSTG-CONF-08 | Testare la politica interdominio RIA |
WSTG-CONF-09 | Testare l'autorizzazione del file |
WSTG-CONF-10 | Test per Subdomain Takeover |
WSTG-CONF-11 | Prova l'archiviazione cloud |
Test di gestione dell'identità
Test di gestione dell'identità | Nome del test |
WSTG-IDNT-01 | Testare le definizioni dei ruoli |
WSTG-IDNT-02 | Processo di registrazione dell'utente di prova |
WSTG-IDNT-03 | Processo di provisioning dell'account di prova |
WSTG-IDNT-04 | Test per l'enumerazione degli account e l'account utente indovinabile |
WSTG-IDNT-05 | Test per la politica del nome utente debole o non applicata |
Test di autenticazione
Test di autenticazione | Nome del test |
WSTG-ATHN-01 | Test per le credenziali trasportate su un canale crittografato |
WSTG-ATHN-02 | Test per le credenziali predefinite |
WSTG-ATHN-03 | Test per il meccanismo di blocco debole |
WSTG-ATHN-04 | Test per bypassare lo schema di autenticazione |
WSTG-ATHN-05 | Test per la password ricordata vulnerabile |
WSTG-ATHN-06 | Test per le debolezze della cache del browser |
WSTG-ATHN-07 | Test per criteri password deboli |
WSTG-ATHN-08 | Test per risposta alla domanda di sicurezza debole |
WSTG-ATHN-09 | Test per funzionalità di modifica o ripristino password deboli |
WSTG-ATHN-10 | Test per un'autenticazione più debole in un canale alternativo |
Test di autorizzazione
Test di autorizzazione | Nome del test |
WSTG-ATHZ-01 | Includi file di attraversamento directory di prova |
WSTG-ATHZ-02 | Test per bypassare lo schema di autorizzazione |
WSTG-ATHZ-03 | Test per l'escalation dei privilegi |
WSTG-ATHZ-04 | Test per riferimenti a oggetti diretti non sicuri |
Test di gestione della sessione
Test di gestione della sessione | Nome del test |
WSTG-SESS-01 | Test per lo schema di gestione delle sessioni |
WSTG-SESS-02 | Test per gli attributi dei cookie |
WSTG-SESS-03 | Test per la fissazione della sessione |
WSTG-SESS-04 | Test per le variabili di sessione esposte |
WSTG-SESS-05 | Test per contraffazione di richieste cross-site |
WSTG-SESS-06 | Test per la funzionalità di logout |
WSTG-SESS-07 | Timeout della sessione di test |
WSTG-SESS-08 | Test per il puzzle della sessione |
WSTG-SESS-09 | Test per il dirottamento della sessione |
Test di convalida dei dati
Test di convalida dei dati | Nome del test |
WSTG-INPV-01 | Test per Reflected Cross Site Scripting |
WSTG-INPV-02 | Test per Stored Cross Site Scripting |
WSTG-INPV-03 | Test per la manomissione dei verbi HTTP |
WSTG-INPV-04 | Test per l'inquinamento dei parametri HTTP |
WSTG-INPV-05 | Test per SQL Injection |
WSTG-INPV-06 | Test per l'iniezione di LDAP |
WSTG-INPV-07 | Test per l'iniezione XML |
WSTG-INPV-08 | Test per l'iniezione SSI |
WSTG-INPV-09 | Test per l'iniezione di XPath |
WSTG-INPV-10 | Test per IMAP SMTP Injection |
WSTG-INPV-11 | Test per l'iniezione di codice |
WSTG-INPV-12 | Test per l'iniezione di comandi |
WSTG-INPV-13 | Test per l'inserimento di stringhe di formato |
WSTG-INPV-14 | Test per la vulnerabilità incubata |
WSTG-INPV-15 | Test per il contrabbando di splitting HTTP |
WSTG-INPV-16 | Test per richieste HTTP in entrata |
WSTG-INPV-17 | Test per l'iniezione di intestazione host |
WSTG-INPV-18 | Test per l'iniezione di modelli lato server |
WSTG-INPV-19 | Test per contraffazione di richieste lato server |
Gestione degli errori
Gestione degli errori | Nome del test |
WSTG-ERRH-01 | Test per la gestione impropria degli errori |
WSTG-ERRH-02 | Test per le tracce dello stack |
Crittografia
Crittografia | Nome del test |
WSTG-CRYP-01 | Test per la sicurezza del livello di trasporto debole |
WSTG-CRYP-02 | Test per Padding Oracle |
WSTG-CRYP-03 | Test per informazioni sensibili inviate tramite canali non crittografati |
WSTG-CRYP-04 | Test per la crittografia debole |
Test di logica aziendale
Test di logica aziendale | Nome del test |
WSTG-BUSL-01 | Testare la convalida dei dati della logica aziendale |
WSTG-BUSL-02 | Prova la capacità di falsificare le richieste |
WSTG-BUSL-03 | Controlli di integrità del test |
WSTG-BUSL-04 | Test per i tempi di processo |
WSTG-BUSL-05 | Test Numero di volte che una funzione può essere utilizzata Limiti |
WSTG-BUSL-06 | Test per l'elusione dei flussi di lavoro |
WSTG-BUSL-07 | Testare le difese contro l'uso improprio delle applicazioni |
WSTG-BUSL-08 | Caricamento di prova di tipi di file imprevisti |
WSTG-BUSL-09 | Caricamento di prova di file dannosi |
Test lato client
Test lato client | Nome del test |
WSTG-CLNT-01 | Test per Cross Site Scripting basato su DOM |
WSTG-CLNT-02 | Test per l'esecuzione di JavaScript |
WSTG-CLNT-03 | Test per l'iniezione di HTML |
WSTG-CLNT-04 | Test per il reindirizzamento URL lato client |
WSTG-CLNT-05 | Test per l'iniezione di CSS |
WSTG-CLNT-06 | Test per la manipolazione delle risorse lato client |
WSTG-CLNT-07 | Testare la condivisione delle risorse tra le origini |
WSTG-CLNT-08 | Test per il lampeggiamento tra siti |
WSTG-CLNT-09 | Test per il clickjacking |
WSTG-CLNT-10 | Testare i WebSocket |
WSTG-CLNT-11 | Prova la messaggistica Web |
WSTG-CLNT-12 | Testare l'archiviazione del browser |
WSTG-CLNT-13 | Test per l'inclusione di script tra siti |
Test API
Test API | Nome del test |
WSTG-APIT-01 | Testare GraphQL |
Recensione del portafoglio crittografico
Recensione del portafoglio crittografico | Nome del test |
SAYFER-CRPTW-01 | Testare la logica aziendale commerciale |
SAYFER-CRPTW-03 | Testare le configurazioni dei nodi di criptovaluta basate su UTXO |
SAYFER-CRPTW-04 | Testare le configurazioni del codice di criptovaluta basate sull'account |
SAYFER-CRPTW-05 | Verifica il codice critico di conferma della transazione |
SAYFER-CRPTW-06 | Prova il supporto TAPROOT |
SAYFER-CRPTW-07 | Prova l'archiviazione della chiave privata |
Controllo dell'ordine da Sayfer
Risultati della valutazione della sicurezza
Salvataggio non sicuro delle chiavi MPC private
ID | SAYFER-CRPTW-07 |
Rischio | Alta |
Abilità richiesta | Alta |
OWASP Riferimento |
- |
Dove | - |
Strumenti | Audit di configurazione |
Descrizione
Gli scambi centralizzati soffrono di pratiche di gestione delle chiavi di bassa qualità. Ci sono molti esempi di tali casi in cui le chiavi sono state perse o rubate causando la perdita di tutti i fondi del portafoglio da parte del servizio o il blocco completo dei fondi.
Durante il controllo dei file di configurazione, abbiamo esaminato l'archiviazione di gestione delle chiavi. Abbiamo scoperto che le chiavi utilizzate per il cold wallet multi-sig non sono archiviate in luoghi sufficientemente distribuiti.
Ci sono 3 chiavi che vengono utilizzate all'interno della firma della chiave MPC. 1 è memorizzato in una macchina fisica protetta. Gli altri 2 sono archiviati all'interno della stessa macchina dedicata in GCP.
Sono state prese un paio di misure di sicurezza per proteggere queste macchine, ma il problema si basa sulla distribuzione, se la macchina distribuita su GCP viene compromessa, un utente malintenzionato può firmare qualsiasi transazione dal portafoglio freddo.
Questo è un luogo ad alto rischio e delicato in cui molti hanno fallito in passato, le migliori pratiche dovrebbero essere seguite rigorosamente.
Mitigazione
Utilizza il servizio di custodia di terze parti per gestire gli hot wallet e le casseforti. Saremo lieti di consigliare uno dei nostri partner.
Questi servizi gestiscono MPC e la gestione delle chiavi per te, con altri livelli di sicurezza aggiunti che rendono l'uso di tali servizi la scelta migliore per gli scambi centralizzati.
SQL Injection
ID | WSTG-INPV-05 |
Rischio | Alta |
Abilità richiesta | Medio |
OWASP Riferimento |
- Link |
Dove | – ██████████████ |
Strumenti | Ripetitore Burp, sqlmap, PayloadAllTheThings |
Descrizione
Un attacco SQL injection consiste nell'inserire o "iniettare" una query SQL parziale o completa nell'input di dati che viene trasmesso dal client all'applicazione web. Un attacco SQL injection riuscito può leggere dati sensibili dal database, modificare i dati del database (inserimento/aggiornamento/cancellazione), eseguire operazioni di amministrazione del database (come l'arresto del DBMS), ripristinare il contenuto di un determinato file sul file system DBMS o scrivere file nel file system e, in alcuni casi, inviare comandi al sistema operativo.
Usando il transaction
endpoint siamo stati in grado di abusare del more
Parametro di query URL per iniettare payload SQL dannoso:
/api/transactions?size=10&more=te');INJECTION_PAYLOAD
Il payload che abbiamo utilizzato è stato:
/api/transactions?size=10&sort=time,DESC&more=te');SELECT+CASE+WHEN+(substring(versio n(),12,2)+%3d+'10')+THEN+pg_sleep(10)+ELSE+pg_sleep(0)+END%3b
– Che in questo caso controlla se l'istanza in esecuzione di Postgres è la versione 10 o meno.
Un utente malintenzionato che sfrutta questa vulnerabilità potrebbe assumere il controllo del sistema. Siamo stati in grado di estrarre gli schemi delle tabelle, aggiornare il ruolo del nostro utente o scaricare qualsiasi informazione salvata sul DB e persino modificare il saldo del nostro utente sul DB.
Mitigazione
La vulnerabilità SQL injection è facile da correggere ma difficile da mitigare. Sono necessari un forte linting o l'implementazione di regole di compilazione che impongono modifiche future.
La mitigazione delle vulnerabilità di SQL injection viene in genere eseguita seguendo un framework di scelta, il che significa che lo sviluppatore non dovrebbe mai concatenare le stringhe in un'istruzione SQL completa.
Ogni input dell'utente dovrebbe essere disinfettato in un esecutore SQL anziché essere utilizzato come una semplice stringa di query SQL.
Per ulteriori informazioni sulla perfezione dell'iniezione SQL, fare riferimento a SQL ICheatSheet per la prevenzione delle iniezioni.
Riferimenti di oggetti diretti non sicuri
ID | WSTG-ATHZ-04 |
Rischio | Alta |
Abilità richiesta | Medio |
OWASP Riferimento |
- LInk |
Dove | – ██████████████████/dashboad/{DASHBOARD_ID} |
Strumenti | Ripetitore Burp, DevTools |
Descrizione
I riferimenti a oggetti diretti insicuri (IDOR) sono un tipo di vulnerabilità del controllo degli accessi che si verifica quando un'applicazione utilizza l'input fornito dall'utente per accedere direttamente agli oggetti. Come risultato di questa vulnerabilità, gli aggressori possono aggirare l'autorizzazione e accedere direttamente alle risorse nel sistema, ad esempio record di database o file.
Abbiamo scoperto che l'API █████████ consente a un utente malintenzionato di visualizzare le informazioni della dashboard di altri utenti, inclusi tutti i dati finanziari di questo utente.
La vulnerabilità si basa sul parametro id dashboard che è un numero intero indovinabile. Esempio di richiesta per un singolo dashboard (per un dashboard che non è di proprietà dell'utente corrente):
GET ████/dashboard/827371 HTTP/1.1
Host: ██████████████████
api-key: ██████████
…
Ciò indica che il /dashboard/DASHBOARD_ID
l'endpoint non controlla l'autorizzazione per la risorsa richiesta. Un utente malintenzionato autenticato potrebbe eseguire lo scraping di ogni singola dashboard che contiene informazioni sui fondi dell'utente e sulle transazioni passate.
Mitigazione
Esistono diversi modi per mitigare le vulnerabilità IDOR, in questo caso sembra che la soluzione potrebbe essere quella di verificare l'autorizzazione per ogni singola richiesta.
Ciò significa che ogni chiave di richiesta sarà in grado di recuperare solo i dashboard del proprio account
Autenticazione più debole nel canale alternativo
ID | WSTG-ATHN-10 |
Rischio | Alta |
Abilità richiesta | Medio |
OWASP Riferimento |
- Link |
Dove | – ██████████████████ |
Strumenti | Google Chrome, DevTools, accumula, ffuf |
Descrizione
Anche se i meccanismi di autenticazione primari non includono alcuna vulnerabilità, è possibile che esistano vulnerabilità in canali utente di autenticazione legittimi alternativi per gli stessi account utente.
Questa vulnerabilità fa parte di una catena di 2 vulnerabilità che ci ha permesso di prendere il controllo di qualsiasi account con solo un indirizzo email.
Come parte della nostra fase di ricognizione in cui proviamo a trovare un vettore di attacco più ampio enumerando i principali sottosistemi bersaglio, abbiamo trovato un'interfaccia di amministrazione sotto il sottodominio ██████████████████. È possibile accedere all'interfaccia di amministrazione utilizzando un normale utente dell'app, ma per quasi tutte le richieste di rete che abbiamo ispezionato durante il caricamento della pagina principale, il server restituisce un errore 401.
[IMAGE_REDATTO]
Abbiamo decodificato il file bundle main.js che contiene il codice front-end per l'app e abbiamo trovato tutti i potenziali endpoint con cui un amministratore può interagire.
Potremmo sfruttare solo l'endpoint di api/updateUser
. L'endpoint ci ha consentito di modificare qualsiasi e-mail dell'utente e, così facendo, siamo stati in grado di reimpostare la password della vittima e assumere il controllo dell'account
[IMAGE_REDATTO]
Mitigazione
Si consiglia vivamente di realizzare un meccanismo di autenticazione o una VPN per il debug o per i servizi amministrativi del sistema per prevenire la presenza di applicazioni pubbliche non sicure che possono essere sfruttate da un utente malintenzionato.
Inoltre, esiste un meccanismo di autorizzazione nell'interfaccia di amministrazione, ma questo non rientra nell'ambito di questo progetto.
Esamina i metafile del server Web per perdite di informazioni
ID | WSTG-INFO-03 |
Rischio | Alta |
Abilità richiesta | Medio |
OWASP Riferimento |
- Link |
Dove | – ████████████████
– █████████████████████████████ – ████████████ |
Strumenti | Chrome, vai avanti |
Descrizione
Come parte della nostra ricerca sull'obiettivo e sui suoi sottodomini, abbiamo trovato alcuni metafile che non dovrebbero essere pubblici, o almeno non senza l'appropriato meccanismo di autenticazione.
- ████████████████████████.gitignore
- ██████████████████████████████/docker-compose.yml
- ████████████████████████/swagger-ui.html
[IMAGE_REDATTO]
[IMAGE_REDATTO]
[IMAGE_REDATTO]
Abbiamo trovato tre tipi di file che potrebbero danneggiare i servizi ████████, .gitignore
, swagger-ui
e la docker-compose.yml
file. Questi tre file rivelano dati sensibili
sull'architettura del servizio. Un attore malintenzionato può utilizzare queste informazioni per aumentare il suo vettore di attacco sul bersaglio.
Mitigazione
Se possibile, rimuovere questi file dal servizio pubblico o implementare un meccanismo di autorizzazione che garantisca l'accesso solo agli utenti privilegiati.
Intestazione del criterio di sicurezza dei contenuti mancante
ID | SAYFER-CONFIG-008 |
Rischio | Medio |
Abilità richiesta | Alta |
OWASP Riferimento |
- |
Dove | - |
Strumenti | Rutto, browser web |
Descrizione
Content Security Policy (CSP) è un ulteriore livello di sicurezza che consente di rilevare e mitigare determinati tipi di attacchi, tra cui Cross-Site Scripting (XSS) e attacchi di data injection.
Non abbiamo trovato un'intestazione CSP in nessuna delle risposte del server.
[IMAGE_REDATTO]
Utilizzando CSP gli amministratori di siti Web aggiungono un'altra linea di difesa contro XSS o attacchi di clickjacking, in questo modo il sistema sarà sicuro anche se future modifiche non garantite verranno apportate al codice sorgente.
Un criterio CSP di base dovrebbe almeno descrivere i domini predefiniti nella whitelist per i file statici (come script, immagini e CSS). E frame-ancestors
per prevenire attacchi di click-jacking.
Ulteriori informazioni:
Mitigazione
Aggiungere il Content-Security-Policy: [policy]
su ogni risposta in cui il caricamento di risorse esterne potrebbe essere pericoloso
Consigliamo vivamente di utilizzarlo e testarlo prima con la variante "Solo report" per testare la policy prima di rilasciarla in produzione:
Content-Security-Policy-Report-Only: [policy]
Test per le intestazioni di sicurezza
ID | SAYFER-CONFIG-009 |
Rischio | Medio |
Abilità richiesta | Alta |
OWASP Riferimento |
- |
Dove | – ████████████ |
Strumenti | Rutto, browser web |
Descrizione
- I browser supportano molte intestazioni HTTP che possono migliorare la sicurezza delle applicazioni per proteggersi da una varietà di attacchi comuni, le intestazioni vengono scambiate tra un client Web (di solito un browser) e un server per specificare i dettagli relativi alla sicurezza della comunicazione HTTP.
Guardando le intestazioni di sicurezza di ████████, mancano le seguenti informazioni:
- X-Content-Type-Opzioni
L'impostazione di questa intestazione impedirà al browser di interpretare i file come qualcosa di diverso da quanto dichiarato dal tipo di contenuto nelle intestazioni HTTP.
- Strict-Transport-Security
HSTS è un meccanismo di politica di sicurezza Web che aiuta a proteggere i siti Web da attacchi di downgrade del protocollo e dirottamento dei cookie. Consente ai server Web di dichiarare che i browser Web devono interagire con esso solo utilizzando connessioni HTTPS sicure e mai tramite il protocollo HTTP non sicuro.
- Referrer-Politica
L'intestazione Referer è un'intestazione della richiesta che indica il sito da cui ha avuto origine il traffico. Se non è in atto una prevenzione adeguata, l'URL stesso e persino le informazioni sensibili contenute nell'URL verranno divulgate al sito di origine incrociata.
- Accesso-Controllo-Consenti-Origine
L'intestazione ha il valore di "*" che espone l'API per ogni sito Web, questo potrebbe non essere il risultato desiderato.
Mitigazione
Aggiunta delle intestazioni sopra menzionate a tutti i servizi di back-end.
Esamina i metafile del server Web per perdite di informazioni
ID | WSTG-INFO-03 |
Rischio | Basso |
Abilità richiesta | Medio |
OWASP Riferimento |
- Link |
Dove | - |
Strumenti | DevTools |
Descrizione
Durante la ricerca del target con DevTool siamo stati in grado di visualizzare il codice sorgente del frontend senza alcun offuscamento. Questa vulnerabilità si verifica perché i bundle JS vengono forniti con sourcemaps alla produzione, che consentono di leggere il codice sorgente originale con commenti che potrebbero rivelare informazioni, ad esempio il seguente file path.ts:
█████████████████████/paths.ts [IMAGE_REDACTED]
Avendo la mappa dei sorgenti, un utente malintenzionato può conoscere la base di codice, leggere commenti e trovare parti di codice obsolete che in seguito possono essere utilizzate per trovare vulnerabilità.
Mitigazione
Non spedire le mappe di origine alla produzione, la maggior parte dei sistemi di registrazione e di tracciamento degli errori ha l'opinione di caricare le mappe di origine in un sistema di back-office. Un altro approccio sarebbe quello di servire le mappe di origine solo agli utenti autenticati tramite VPN o altri meccanismi.
Server web di impronte digitali
ID | WSTG-INFO-002 |
Rischio | Basso |
Abilità richiesta | Medio |
OWASP Riferimento |
- LInk |
Dove | – ███████████████████████████ |
Strumenti | Rutto |
Descrizione
Anche se le informazioni sui server esposti di per sé non sono necessariamente una vulnerabilità, sono informazioni che possono aiutare gli aggressori a sfruttare altre vulnerabilità che possono esistere. La maggior parte degli endpoint non rivela alcuna informazione sul server tramite intestazioni HTTP o pagine di errore.
Utilizzando la seguente richiesta HTTP non corretta siamo stati in grado di rilevare un server Nginx tramite una risposta 400
GET /v2 HTTPMALFORMED/1.1
Host: ██████████████████
Accept: */*
Il corpo di risposta è:
<html>
<head><title>400 Bad Request</title></head>
<body bgcolor="white">
<center><h1>400 Bad Request</h1></center>
<hr><center>nginx 1.14.0</center>
</body>
</html>
Mitigazione
Esistono diversi modi per oscurare le intestazioni del server Web, i metodi più comunemente utilizzati sono:
- Server proxy inverso che si frappongono tra l'Internet globale e l'interno
- Configura ogni server Web per eliminare queste intestazioni.
Appendice A: correzioni per la valutazione della sicurezza
Verrà aggiornato dal team Sayfer dopo la prima revisione.