首先运行 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 分。
此外,在 Wordpress 网站上发现 jQuery v1.12.4 时,不会像普通易受攻击库那样评分。
此类发现将导致 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 定义您希望在扫描时发送的自定义用户代理。
通过 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"
| 占位符 | 消息 |
|---|
| 扫描 CMS | |
| CMS_ONLY | 检测到使用的内容管理系统 {cms}。 |
| CMS_VERSION | 检测到使用的内容管理系统 {cms} 及其版本 {version}。 |
| CMS_VERSION_VULN | 检测到易受攻击的内容管理系统 {cms} 版本 {version} |
| 扫描插件 | |
| PLUGIN_ONLY | 在 DOM 节点 {node} 中通过节点内容 {node_content} 检测到 CMS 插件 {plugin}。 |
| PLUGIN_VERSION | 在 DOM 节点 {node} 中通过节点内容 {node_content} 检测到 CMS 插件 {plugin} 及其版本 {plugin_version}。 |
| PLUGIN_VERSION_VULN | 在 DOM 节点 {node} 中通过节点内容 {node_content} 检测到易受攻击的 CMS 插件 {plugin} 及其版本 {plugin_version}。 |
| 扫描 JS | |
| JS_LIB_ONLY | 在 DOM 节点 {node} 中通过节点内容 {node_content} 检测到使用的 JavaScript 库 {js_lib_name}。 |
| JS_LIB_VERSION | 在 DOM 节点 {node} 中通过节点内容 {node_content} 检测到使用的 JavaScript 库 {js_lib_name} 及其版本 {js_lib_version}。 |
| JS_LIB_VULN_VERSION | 在 DOM 节点 {node} 中通过节点内容 {node_content} 检测到易受攻击的 JavaScript 库 {js_lib_name} 及其版本 {js_lib_version}。 |
| 扫描邮件 | |
| EMAIL_FOUND | 找到电子邮件地址 {email_address}。 |
| 扫描电话 | |
| 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 | 在 HTTP2 帧层检测到问题。 |
| 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 帧层出现流错误。 |