
Scanner Web qui détecte les versions de CMS, les plugins, les bibliothèques JavaScript vulnérables, les adresses e-mail et les numéros de téléphone sur les sites web cibles, en évaluant le risque de fuite d'informations.
Exécutez d'abord docker run --rm -p 8000:80 siwecos/infoleak-scanner.
Ouvrez votre navigateur et utilisez le scanner : http://localhost/?url=<URL>
Obtenez php5, curl et un serveur web :
sudo apt-get install apache2 php5 php5-curl
Copiez l'application dans le serveur web :
cp -R . /var/www/html/
Recherche des plugins pour le CMS détecté. La plus grande liste (WordPress) contient 980 plugins différents.
Recherche les bibliothèques JavaScript vulnérables et les plus utilisées.
Recherche des adresses e-mail. Utile pour le spam et/ou les attaques d'ingénierie sociale.
Recherche des numéros de téléphone. Utile pour les attaques d'ingénierie sociale et/ou les arnaques.
| Résultat | Score (0-100) |
|----------------------+---------------|
| CMS_ONLY | 100 |
| CMS_VERSION | 96 |
| CMS_VERSION_VULN | voir ci-dessous |
| PLUGIN_ONLY | 99 |
| PLUGIN_VERSION | 96 |
| PLUGIN_VERSION_VULN | voir ci-dessous |
| JS_LIB_ONLY | 99 |
| JS_LIB_VERSION | 96 |
| JS_LIB_VULN_VERSION | voir ci-dessous |
| EMAIL_FOUND | 96 |
| NUMBER_FOUND | 98 |
Si un résultat tel que :
CMS_VERSION_VULN
PLUGIN_VERSION_VULN
JS_LIB_VULN_VERSION
alors le score global sera plafonné à 20 et chaque vulnérabilité supplémentaire diminuera le score global de 10. Ce qui signifie que si CMS_VERSION_VULN et PLUGIN_VERSION_VULN et JS_LIB_VULN_VERSION sont retournés, le score global sera de 0.
De plus, la détection de jQuery v1.12.4 sur un site WordPress ne sera pas évaluée comme une bibliothèque vulnérable habituelle. Ce résultat donnera un score de 90, mais le placeholder restera JS_LIB_VULN_VERSION car il s'agit d'une bibliothèque vulnérable.
Vous pouvez exécuter le scanner via des requêtes POST et GET.
Si vous souhaitez exécuter le scanner avec une requête POST, vous devez envoyer les paramètres dans un format encodé en JSON :
{
"url": "string",
"dangerLevel": 0,
"callbackurls": [
"string"
],
"userAgent": "string"
}
url définit l'URL à scanner.
dangerLevel n'est pas pertinent, définissez-le simplement à 0.
callbackurls est un tableau d'URL. Ces URLs recevront le résultat du scanner (envoyé via POST).
userAgent définit votre user agent individuel que vous souhaitez envoyer lors du scan.
Exécuter le scanner avec une requête GET est beaucoup plus simple. Il vous suffit d'exécuter l'application avec une URL donnée :
http://localhost/?url=<URL>
Aucun résultat dans aucun scan :
{
"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
}
]
}
Au moins un résultat dans chaque scan :
{
"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"
]
}
}
]
}
]
}
Testé en particulier sur :
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 |
|---|
| SCAN CMS | |
| CMS_ONLY | Système de gestion de contenu {cms} utilisé détecté. |
| CMS_VERSION | Système de gestion de contenu {cms} et sa version {version} utilisés détectés. |
| CMS_VERSION_VULN | Système de gestion de contenu {cms} version {version} vulnérable détecté. |
| SCAN PLUGIN | |
| PLUGIN_ONLY | Plugin CMS {plugin} dans le nœud DOM {node} via le contenu du nœud {node_content} détecté. |
| PLUGIN_VERSION | Plugin CMS {plugin} et sa version {plugin_version} dans le nœud DOM {node} via le contenu du nœud {node_content} détectés. |
| PLUGIN_VERSION_VULN | Plugin CMS {plugin} et sa version {plugin_version} vulnérables dans le nœud DOM {node} via le contenu du nœud {node_content} détectés. |
| SCAN JS | |
| JS_LIB_ONLY | Bibliothèque JavaScript {js_lib_name} utilisée dans le nœud DOM {node} via le contenu du nœud {node_content} détectée. |
| JS_LIB_VERSION | Bibliothèque JavaScript {js_lib_name} et sa version {js_lib_version} utilisées dans le nœud DOM {node} via le contenu du nœud {node_content} détectées. |
| JS_LIB_VULN_VERSION | Bibliothèque JavaScript {js_lib_name} et sa version {js_lib_version} vulnérables dans le nœud DOM {node} via le contenu du nœud {node_content} détectées. |
| SCAN EMAIL | |
| EMAIL_FOUND | Adresse e-mail {email_address} trouvée. |
| SCAN PHONE | |
| NUMBER_FOUND | Numéro de téléphone {number} trouvé. |
| ERREURS | |
| NO_SOURCE_CODE | L'URL donnée n'a pas de code source. |
| INVALID_URL | L'URL donnée n'est pas une URL valide. |
| INFOLEAK_LOCALHOST_SCAN_NOT_ALLOWED | Le scan de localhost n'est pas autorisé. |
| NO_RESPONSE | L'URL donnée est inaccessible. |
| INFOLEAK_PORT_DISALLOWED | L'URL donnée contient un port non autorisé. |
| INFOLEAK_DONT_LEAK_USER_CREDS | L'URL donnée contient des identifiants utilisateur. |
| INFOLEAK_JSON_DECODE_ERROR | La requête POST donnée n'a pas pu être décodée. |
| INFOLEAK_REDIRECT_ERROR | L'URL effectue une redirection interdite. |
| UNSUPPORTED_PROTOCOL | Le site Web utilise un protocole qui n'est pas pris en charge. |
| FAILED_INIT | Le scanner n'a pas réussi à initialiser la connexion. |
| URL_MALFORMAT | L'URL n'est pas correctement formatée. |
| COULDNT_RESOLVE_HOST | L'hôte distant donné n'a pas été résolu. |
| COULDNT_CONNECT | Échec de la connexion à l'hôte ou au proxy. |
| REMOTE_ACCESS_DENIED | L'accès à la ressource donnée dans l'URL a été refusé. |
| HTTP2_ERROR | Un problème a été détecté dans la couche de tramage HTTP2. |
| TOO_MANY_REDIRECTS | Il y a eu trop de redirections. |
| SEND_ERROR | Échec de l'envoi des données réseau. |
| RECV_ERROR | Échec de la réception des données réseau. |
| BAD_CONTENT_ENCODING | Encodage de transfert non reconnu. |
| SSL_ENGINE_INITFAILED | L'initialisation du moteur SSL a échoué. |
| TIMEOUT | Le délai d'attente spécifié a été atteint selon les conditions. |
| CONV_FAILED | La conversion de caractères a échoué. |
| REMOTE_FILE_NOT_FOUND | La ressource référencée dans l'URL n'existe pas. |
| HTTP2_STREAM | Erreur de flux dans la couche de tramage HTTP/2. |