
Веб-сканер, который обнаруживает версии CMS, плагины, уязвимые библиотеки JavaScript, адреса электронной почты и номера телефонов на целевых веб-сайтах, оценивая риск утечки информации.
Сначала выполните docker run --rm -p 8000:80 siwecos/infoleak-scanner.
Откройте браузер и используйте сканер: http://localhost/?url=<URL>
Установите php5, curl и веб-сервер:
sudo apt-get install apache2 php5 php5-curl
Скопируйте приложение в веб-сервер:
cp -R . /var/www/html/
Поиск плагинов для обнаруженной CMS. Самый большой список (wordpress) содержит 980 различных плагинов.
Поиск уязвимых и наиболее используемых JavaScript-библиотек.
Поиск адресов электронной почты. Интересно для спама и/или атак социальной инженерии.
Поиск номеров телефонов. Интересно для атак социальной инженерии и/или мошенничества.
| Находка | Оценка (0-100) |
|---------------------+---------------|
| CMS_ONLY | 100 |
| CMS_VERSION | 96 |
| CMS_VERSION_VULN | см. ниже |
| PLUGIN_ONLY | 99 |
| PLUGIN_VERSION | 96 |
| PLUGIN_VERSION_VULN | см. ниже |
| JS_LIB_ONLY | 99 |
| JS_LIB_VERSION | 96 |
| JS_LIB_VULN_VERSION | см. ниже |
| EMAIL_FOUND | 96 |
| NUMBER_FOUND | 98 |
Если была обнаружена находка типа:
CMS_VERSION_VULN
PLUGIN_VERSION_VULN
JS_LIB_VULN_VERSION
то общая оценка будет ограничена 20, и каждая дополнительная уязвимость
будет уменьшать общую оценку на 10. Это означает, что если
обнаружены CMS_VERSION_VULN, PLUGIN_VERSION_VULN и JS_LIB_VULN_VERSION, то
общая оценка будет равна 0.
Также находка jQuery v1.12.4 на сайте WordPress не будет оцениваться как обычная уязвимая библиотека.
Такая находка приведёт к оценке 90, но плейсхолдер останется JS_LIB_VULN_VERSION, так как это уязвимая библиотека.
Вы можете запустить сканер с помощью POST и GET запросов.
Если вы хотите запустить сканер с помощью POST-запроса, вы должны отправить параметры в JSON-формате:
{
"url": "string",
"dangerLevel": 0,
"callbackurls": [
"string"
],
"userAgent": "string"
}
url определяет URL, который должен быть просканирован.
dangerLevel не используется, просто установите его в 0.
callbackurls — массив URL-адресов. Эти URL-адреса получат результат
сканирования (отправленный через POST).
userAgent определяет ваш собственный user agent, который будет использоваться при сканировании.
Запуск сканера с помощью GET-запроса гораздо проще. Всё, что вам нужно сделать — это запустить приложение с указанным URL:
http://localhost/?url=<URL>
Нет находок ни в одном сканировании:
{
"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
}
]
}
Минимум одна находка в каждом сканировании:
{
"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"
]
}
}
]
}
]
}
Особенно тестировалось на:
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"
| Плейсхолдер | Сообщение |
|---|
| SCAN CMS | |
| CMS_ONLY | Обнаружена используемая система управления содержимым {cms}. |
| CMS_VERSION | Обнаружена используемая система управления содержимым {cms} и её версия {version}. |
| CMS_VERSION_VULN | Обнаружена уязвимая версия {version} системы управления содержимым {cms}. |
| SCAN PLUGIN | |
| PLUGIN_ONLY | Плагин CMS {plugin} обнаружен в DOM-узле {node} через содержимое узла {node_content}. |
| PLUGIN_VERSION | Плагин CMS {plugin} и его версия {plugin_version} обнаружены в DOM-узле {node} через содержимое узла {node_content}. |
| PLUGIN_VERSION_VULN | Уязвимый плагин CMS {plugin} и его версия {plugin_version} обнаружены в DOM-узле {node} через содержимое узла {node_content}. |
| SCAN JS | |
| JS_LIB_ONLY | Обнаружена используемая JavaScript-библиотека {js_lib_name} в DOM-узле {node} через содержимое узла {node_content}. |
| JS_LIB_VERSION | Обнаружена используемая JavaScript-библиотека {js_lib_name} и её версия {js_lib_version} в DOM-узле {node} через содержимое узла {node_content}. |
| JS_LIB_VULN_VERSION | Обнаружена уязвимая JavaScript-библиотека {js_lib_name} и её версия {js_lib_version} в DOM-узле {node} через содержимое узла {node_content}. |
| SCAN EMAIL | |
| EMAIL_FOUND | Найден адрес электронной почты {email_address}. |
| SCAN PHONE | |
| NUMBER_FOUND | Найден номер телефона {number}. |
| ОШИБКИ | |
| NO_SOURCE_CODE | У указанного URL отсутствует исходный код. |
| INVALID_URL | Указанный URL не является допустимым URL. |
| INFOLEAK_LOCALHOST_SCAN_NOT_ALLOWED | Сканирование localhost не разрешено. |
| NO_RESPONSE | Указанный URL недоступен. |
| INFOLEAK_PORT_DISALLOWED | Указанный URL содержит запрещённый порт. |
| INFOLEAK_DONT_LEAK_USER_CREDS | Указанный URL содержит учётные данные пользователя. |
| INFOLEAK_JSON_DECODE_ERROR | Не удалось декодировать указанный POST-запрос. |
| INFOLEAK_REDIRECT_ERROR | URL выполняет запрещённое перенаправление. |
| UNSUPPORTED_PROTOCOL | Веб-сайт использует неподдерживаемый протокол. |
| FAILED_INIT | Сканеру не удалось инициализировать соединение. |
| URL_MALFORMAT | URL имеет неверный формат. |
| COULDNT_RESOLVE_HOST | Не удалось разрешить указанный удалённый хост. |
| COULDNT_CONNECT | Не удалось подключиться к хосту или прокси. |
| REMOTE_ACCESS_DENIED | Доступ к ресурсу по указанному URL был запрещён. |
| HTTP2_ERROR | Обнаружена проблема на уровне фреймов HTTP/2. |
| TOO_MANY_REDIRECTS | Слишком много перенаправлений. |
| SEND_ERROR | Не удалось отправить сетевые данные. |
| RECV_ERROR | Ошибка при получении сетевых данных. |
| BAD_CONTENT_ENCODING | Неопознанная кодировка передачи. |
| SSL_ENGINE_INITFAILED | Не удалось инициализировать движок SSL. |
| TIMEOUT | Указанный период ожидания был превышен в соответствии с условиями. |
| CONV_FAILED | Ошибка преобразования символов. |
| REMOTE_FILE_NOT_FOUND | Ресурс, указанный в URL, не существует. |
| HTTP2_STREAM | Ошибка потока на уровне фреймов HTTP/2. |