
Web-Scanner, der CMS-Versionen, Plugins, anfällige JavaScript-Bibliotheken, E-Mail-Adressen und Telefonnummern auf Ziel-Websites erkennt und das Risiko von Informationslecks bewertet.
Führen Sie zuerst docker run --rm -p 8000:80 siwecos/infoleak-scanner aus.
Öffnen Sie Ihren Browser und verwenden Sie den Scanner: http://localhost/?url=<URL>
Holen Sie sich php5, curl und einen Webserver:
sudo apt-get install apache2 php5 php5-curl
Kopieren Sie die Anwendung in den Webserver:
cp -R . /var/www/html/
Durchsucht Plugins für das erkannte CMS. Die größte Liste (wordpress) enthält 980 verschiedene Plugins.
Sucht nach anfälligen und am häufigsten verwendeten JavaScript-Bibliotheken.
Sucht nach E-Mail-Adressen. Interessant für Spam- und/oder Social-Engineering-Angriffe.
Sucht nach Telefonnummern. Interessant für Social-Engineering-Angriffe und/oder Betrug.
| 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 |
Falls ein Fund wie folgt vorlag:
CMS_VERSION_VULN
PLUGIN_VERSION_VULN
JS_LIB_VULN_VERSION
dann wird die Gesamtpunktzahl auf 20 begrenzt und jede weitere Schwachstelle verringert die Gesamtpunktzahl um 10. Das bedeutet, dass wenn CMS_VERSION_VULN, PLUGIN_VERSION_VULN und JS_LIB_VULN_VERSION zurückgegeben werden, die Gesamtpunktzahl 0 beträgt.
Auch ein Fund von jQuery v1.12.4 auf einer Wordpress-Website wird nicht wie eine übliche anfällige Bibliothek bewertet. Dieser Fund führt zu einer Punktzahl von 90, aber der Platzhalter bleibt JS_LIB_VULN_VERSION, da es sich um eine anfällige Bibliothek handelt.
Sie können den Scanner über POST- und GET-Anfragen ausführen.
Wenn Sie den Scanner mit einer POST-Anfrage ausführen möchten, müssen Sie die Parameter in einem JSON-codierten Format senden:
{
"url": "string",
"dangerLevel": 0,
"callbackurls": [
"string"
],
"userAgent": "string"
}
url definiert die URL, die gescannt werden soll.
dangerLevel ist nicht relevant, setzen Sie es einfach auf 0.
callbackurls ist ein Array von URLs. Diese URLs erhalten das Ergebnis des Scanners (per POST gesendet).
userAgent definiert Ihren individuellen User-Agent, der beim Scannen gesendet werden soll.
Das Ausführen des Scanners mit einer GET-Anfrage ist viel einfacher. Sie müssen lediglich die Anwendung mit einer bestimmten URL ausführen:
http://localhost/?url=<URL>
Keine Funde in allen Scans:
{
"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
}
]
}
Mindestens ein Fund in jedem 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"
]
}
}
]
}
]
}
Insbesondere getestet auf:
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"
| Platzhalter | Meldung |
|---|
| CMS | |
| CMS_ONLY | Verwendetes Content-Management-System {cms} erkannt. |
| CMS_VERSION | Verwendetes Content-Management-System {cms} und dessen Version {version} erkannt. |
| CMS_VERSION_VULN | Schwachstelle im Content-Management-System {cms} Version {version} erkannt. |
| PLUGIN | |
| PLUGIN_ONLY | CMS-Plugin {plugin} im DOM-Knoten {node} über Knoteninhalt {node_content} erkannt. |
| PLUGIN_VERSION | CMS-Plugin {plugin} und dessen Version {plugin_version} im DOM-Knoten {node} über Knoteninhalt {node_content} erkannt. |
| PLUGIN_VERSION_VULN | Schwachstelle im CMS-Plugin {plugin} und dessen Version {plugin_version} im DOM-Knoten {node} über Knoteninhalt {node_content} erkannt. |
| JS | |
| JS_LIB_ONLY | Verwendete JavaScript-Bibliothek {js_lib_name} im DOM-Knoten {node} über Knoteninhalt {node_content} erkannt. |
| JS_LIB_VERSION | Verwendete JavaScript-Bibliothek {js_lib_name} und deren Version {js_lib_version} im DOM-Knoten {node} über Knoteninhalt {node_content} erkannt. |
| JS_LIB_VULN_VERSION | Schwachstelle in der JavaScript-Bibliothek {js_lib_name} und deren Version {js_lib_version} im DOM-Knoten {node} über Knoteninhalt {node_content} erkannt. |
| EMAIL_FOUND | E-Mail-Adresse {email_address} gefunden. |
| TELEFON | |
| NUMBER_FOUND | Telefonnummer {number} gefunden. |
| FEHLER | |
| NO_SOURCE_CODE | Die angegebene URL hat keinen Quellcode. |
| INVALID_URL | Die angegebene URL ist keine gültige URL. |
| INFOLEAK_LOCALHOST_SCAN_NOT_ALLOWED | Das Scannen von localhost ist nicht erlaubt. |
| NO_RESPONSE | Die angegebene URL ist nicht erreichbar. |
| INFOLEAK_PORT_DISALLOWED | Die angegebene URL enthält einen nicht erlaubten Port. |
| INFOLEAK_DONT_LEAK_USER_CREDS | Die angegebene URL enthält Benutzeranmeldeinformationen. |
| INFOLEAK_JSON_DECODE_ERROR | Die angegebene POST-Anfrage konnte nicht dekodiert werden. |
| INFOLEAK_REDIRECT_ERROR | Die URL führt eine nicht erlaubte Weiterleitung durch. |
| UNSUPPORTED_PROTOCOL | Die Website verwendet ein nicht unterstütztes Protokoll. |
| FAILED_INIT | Der Scanner konnte die Verbindung nicht initialisieren. |
| URL_MALFORMAT | Die URL ist nicht korrekt formatiert. |
| COULDNT_RESOLVE_HOST | Der angegebene entfernte Host wurde nicht aufgelöst. |
| COULDNT_CONNECT | Verbindung zum Host oder Proxy fehlgeschlagen. |
| REMOTE_ACCESS_DENIED | Zugriff auf die in der URL angegebene Ressource wurde verweigert. |
| HTTP2_ERROR | Ein Problem in der HTTP/2-Framing-Schicht wurde erkannt. |
| TOO_MANY_REDIRECTS | Es gab zu viele Weiterleitungen. |
| SEND_ERROR | Senden von Netzwerkdaten fehlgeschlagen. |
| RECV_ERROR | Empfang von Netzwerkdaten fehlgeschlagen. |
| BAD_CONTENT_ENCODING | Nicht erkannte Transfer-Encoding. |
| SSL_ENGINE_INITFAILED | Initialisierung der SSL-Engine fehlgeschlagen. |
| TIMEOUT | Das angegebene Zeitlimit wurde gemäß den Bedingungen erreicht. |
| CONV_FAILED | Zeichenkonvertierung fehlgeschlagen. |
| REMOTE_FILE_NOT_FOUND | Die in der URL referenzierte Ressource existiert nicht. |
| HTTP2_STREAM | Stream-Fehler in der HTTP/2-Framing-Schicht. |