
Scanner web che rileva versioni CMS, plugin, librerie JavaScript vulnerabili, indirizzi email e numeri di telefono sui siti web target, valutando il rischio di fuga di informazioni.
Prima esegui docker run --rm -p 8000:80 siwecos/infoleak-scanner.
Apri il tuo browser e usa lo scanner: http://localhost/?url=<URL>
Ottieni php5, curl e un webserver:
sudo apt-get install apache2 php5 php5-curl
Copia l'applicazione nel webserver:
cp -R . /var/www/html/
Cerca plugin per il CMS rilevato. La lista più grande (WordPress) contiene 980 plugin diversi.
Cerca librerie JavaScript vulnerabili e più utilizzate.
Cerca indirizzi email. Interessante per attacchi di spam e/o ingegneria sociale.
Cerca numeri di telefono. Interessante per attacchi di ingegneria sociale e/o truffe.
| Finding | Score (0-100) |
|---------------------+---------------|
| CMS_ONLY | 100 |
| CMS_VERSION | 96 |
| CMS_VERSION_VULN | see below |
| PLUGIN_ONLY | 99 |
| PLUGIN_VERSION | 96 |
| PLUGIN_VERSION_VULN | see below |
| JS_LIB_ONLY | 99 |
| JS_LIB_VERSION | 96 |
| JS_LIB_VULN_VERSION | see below |
| EMAIL_FOUND | 96 |
| NUMBER_FOUND | 98 |
If there was a finding like:
CMS_VERSION_VULN
PLUGIN_VERSION_VULN
JS_LIB_VULN_VERSION
then the overall score will capped to 20 and every additional vulnerability
will decrease the overall score by 10. Which means, that if
CMS_VERSION_VULN and PLUGIN_VERSION_VULN and JS_LIB_VULN_VERSION is returned, the
overall score will be 0.
Also a finding of jQuery v1.12.4 on a Wordpress website won't be rated like a usual vulnerable library.
This finding will result in a score of 90, but the placeholder will still be JS_LIB_VULN_VERSION as it is a vulnerable library.
Se è stato trovato un risultato come:
CMS_VERSION_VULN
PLUGIN_VERSION_VULN
JS_LIB_VULN_VERSION
allora il punteggio complessivo sarà limitato a 20 e ogni vulnerabilità aggiuntiva diminuirà il punteggio complessivo di 10. Il che significa che se vengono restituiti CMS_VERSION_VULN, PLUGIN_VERSION_VULN e JS_LIB_VULN_VERSION, il punteggio complessivo sarà 0.
Inoltre, un ritrovamento di jQuery v1.12.4 su un sito WordPress non verrà valutato come una libreria vulnerabile usuale. Questo risultato avrà un punteggio di 90, ma il placeholder sarà comunque JS_LIB_VULN_VERSION in quanto è una libreria vulnerabile.
Puoi eseguire lo scanner tramite richieste POST e GET.
Se vuoi eseguire lo scanner con una richiesta POST devi inviare i parametri in un formato codificato JSON:
{
"url": "string",
"dangerLevel": 0,
"callbackurls": [
"string"
],
"userAgent": "string"
}
url definisce l'URL da scansionare.
dangerLevel non è rilevante, impostalo semplicemente a 0.
callbackurls è un array di URL. Questi URL riceveranno il risultato dello scanner (inviato tramite POST).
userAgent definisce il tuo user agent individuale che vuoi venga inviato durante la scansione.
Eseguire lo scanner con una richiesta GET è molto più semplice. Tutto quello che devi fare è eseguire l'applicazione con un dato URL:
http://localhost/?url=<URL>
Nessun risultato in nessuna scansione:
{
"name": "InfoLeak-Scanner",
"version": "1.0.0",
"hasError": false,
"errorMessage": null,
"score": 100,
"tests": [
{
"name": "CMS",
"hasError": false,
"errorMessage": null,
"score": 100,
"scoreType": "info",
"testDetails": null
},
{
"name": "CMS_PLUGINS",
"hasError": false,
"errorMessage": null,
"score": 100,
"scoreType": "warning",
"testDetails": null
},
{
"name": "JS_LIB",
"hasError": false,
"errorMessage": null,
"score": 100,
"scoreType": "warning",
"testDetails": null
},
{
"name": "EMAIL_ADDRESS",
"hasError": false,
"errorMessage": null,
"score": 100,
"scoreType": "info",
"testDetails": null
},
{
"name": "PHONE_NUMBER",
"hasError": false,
"errorMessage": null,
"score": 100,
"scoreType": "info",
"testDetails": null
}
]
}
Almeno un risultato in ogni scansione:
{
"name": "InfoLeak-Scanner",
"version": "1.0.0",
"hasError": false,
"errorMessage": null,
"score": 20,
"tests": [
{
"name": "CMS",
"hasError": false,
"errorMessage": null,
"score": 96,
"scoreType": "info",
"testDetails": [
{
"placeholder": "CMS_VERSION",
"values": {
"cms": "wordpress",
"version": "4.9.6",
"node": "meta",
"node_content": "WordPress 4.9.6"
}
}
]
},
{
"name": "CMS_PLUGINS",
"hasError": false,
"errorMessage": null,
"score": 99,
"scoreType": "warning",
"testDetails": [
{
"placeholder": "PLUGIN_ONLY",
"values": {
"plugin": "contact-form-7",
"node": "href",
"node_content": "https://[...]/wp-content/plugins/contact-form-7/includes/css/styles.css?ver=5.0.2"
}
}
]
},
{
"name": "JS_LIB",
"hasError": false,
"errorMessage": null,
"score": 0,
"scoreType": "warning",
"testDetails": [
{
"placeholder": "JS_LIB_VULN_VERSION",
"values": {
"js_lib_name": "jquery",
"js_lib_version": "1.12.4",
"node": "src",
"node_content": "https://[...]/wp-includes/js/jquery/jquery.js?ver=1.12.4"
}
}
]
},
{
"name": "EMAIL_ADDRESS",
"hasError": false,
"errorMessage": null,
"score": 96,
"scoreType": "info",
"testDetails": [
{
"placeholder": "EMAIL_FOUND",
"values": {
"email_adress": [
[
"[email protected]"
]
]
}
}
]
},
{
"name": "PHONE_NUMBER",
"hasError": false,
"errorMessage": null,
"score": 98,
"scoreType": "info",
"testDetails": [
{
"placeholder": "NUMBER_FOUND",
"values": {
"number": [
"1234-12 11 22-3",
"123-11 22 333-4"
]
}
}
]
}
]
}
Testato in particolare su:
Mozilla Firefox 45.7.0
PHP 5.6.30-0+deb8u1 (cli) (built: Feb 8 2017 08:50:21)
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
Server version: Apache/2.4.10 (Debian)
Server built: Feb 24 2017 18:40:28
Server's Module Magic Number: 20120211:37
Server loaded: APR 1.5.1, APR-UTIL 1.5.4
Compiled using: APR 1.5.1, APR-UTIL 1.5.4
Architecture: 64-bit
Server MPM: prefork
threaded: no
forked: yes (variable process count)
Server compiled with....
-D APR_HAS_SENDFILE
-D APR_HAS_MMAP
-D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
-D APR_USE_SYSVSEM_SERIALIZE
-D APR_USE_PTHREAD_SERIALIZE
-D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
-D APR_HAS_OTHER_CHILD
-D AP_HAVE_RELIABLE_PIPED_LOGS
-D DYNAMIC_MODULE_LIMIT=256
-D HTTPD_ROOT="/etc/apache2"
-D SUEXEC_BIN="/usr/lib/apache2/suexec"
-D DEFAULT_PIDLOG="/var/run/apache2.pid"
-D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
-D DEFAULT_ERRORLOG="logs/error_log"
-D AP_TYPES_CONFIG_FILE="mime.types"
-D SERVER_CONFIG_FILE="apache2.conf"
| Placeholder | Message |
|---|
| SCANSIONE CMS | |
| CMS_ONLY | Sistema di gestione dei contenuti {cms} rilevato. |
| CMS_VERSION | Sistema di gestione dei contenuti {cms} e la sua versione {version} rilevati. |
| CMS_VERSION_VULN | Versione vulnerabile del sistema di gestione dei contenuti {cms} {version} rilevata. |
| SCANSIONE PLUGIN | |
| PLUGIN_ONLY | Plugin CMS {plugin} nel nodo DOM {node} tramite contenuto nodo {node_content} rilevato. |
| PLUGIN_VERSION | Plugin CMS {plugin} e la sua versione {plugin_version} nel nodo DOM {node} tramite contenuto nodo {node_content} rilevati. |
| PLUGIN_VERSION_VULN | Plugin CMS vulnerabile {plugin} e la sua versione {plugin_version} nel nodo DOM {node} tramite contenuto nodo {node_content} rilevati. |
| SCANSIONE JS | |
| JS_LIB_ONLY | Libreria JavaScript {js_lib_name} utilizzata nel nodo DOM {node} tramite contenuto nodo {node_content} rilevata. |
| JS_LIB_VERSION | Libreria JavaScript {js_lib_name} e la sua versione {js_lib_version} utilizzate nel nodo DOM {node} tramite contenuto nodo {node_content} rilevate. |
| JS_LIB_VULN_VERSION | Libreria JavaScript vulnerabile {js_lib_name} e la sua versione {js_lib_version} nel nodo DOM {node} tramite contenuto nodo {node_content} rilevate. |
| SCANSIONE EMAIL | |
| EMAIL_FOUND | Indirizzo email {email_address} trovato. |
| SCANSIONE TELEFONO | |
| NUMBER_FOUND | Numero di telefono {number} trovato. |
| ERRORI | |
| NO_SOURCE_CODE | L'URL fornito non ha codice sorgente. |
| INVALID_URL | L'URL fornito non è un URL valido. |
| INFOLEAK_LOCALHOST_SCAN_NOT_ALLOWED | La scansione di localhost non è consentita. |
| NO_RESPONSE | L'URL fornito non è raggiungibile. |
| INFOLEAK_PORT_DISALLOWED | L'URL fornito contiene una porta non consentita. |
| INFOLEAK_DONT_LEAK_USER_CREDS | L'URL fornito contiene credenziali utente. |
| INFOLEAK_JSON_DECODE_ERROR | La richiesta POST fornita non può essere decodificata. |
| INFOLEAK_REDIRECT_ERROR | L'URL effettua un reindirizzamento vietato. |
| UNSUPPORTED_PROTOCOL | Il sito web utilizza un protocollo non supportato. |
| FAILED_INIT | Lo scanner non è riuscito a inizializzare la connessione. |
| URL_MALFORMAT | L'URL non è formattato correttamente. |
| COULDNT_RESOLVE_HOST | L'host remoto fornito non è stato risolto. |
| COULDNT_CONNECT | Connessione all'host o al proxy fallita. |
| REMOTE_ACCESS_DENIED | Accesso alla risorsa specificata nell'URL negato. |
| HTTP2_ERROR | Rilevato un problema nel layer di framing HTTP2. |
| TOO_MANY_REDIRECTS | Troppi reindirizzamenti. |
| SEND_ERROR | Invio dei dati di rete fallito. |
| RECV_ERROR | Ricezione dei dati di rete fallita. |
| BAD_CONTENT_ENCODING | Codifica di trasferimento non riconosciuta. |
| SSL_ENGINE_INITFAILED | Avvio del motore SSL fallito. |
| TIMEOUT | Il periodo di timeout specificato è stato raggiunto secondo le condizioni. |
| CONV_FAILED | Conversione dei caratteri fallita. |
| REMOTE_FILE_NOT_FOUND | La risorsa riferita nell'URL non esiste. |
| HTTP2_STREAM | Errore di stream nel layer di framing HTTP/2. |