
Web scanner que detecta versões de CMS, plugins, bibliotecas JavaScript vulneráveis, endereços de e-mail e números de telefone em sites alvo, classificando o risco de vazamento de informações.
Primeiro execute docker run --rm -p 8000:80 siwecos/infoleak-scanner.
Abra seu navegador e use o scanner: http://localhost/?url=<URL>
Obtenha php5, curl e um servidor web:
sudo apt-get install apache2 php5 php5-curl
Copie a aplicação para o servidor web:
cp -R . /var/www/html/
Pesquisa plugins para o CMS detectado. A maior lista (wordpress) contém 980 plugins diferentes.
Pesquisa por bibliotecas JavaScript vulneráveis e mais utilizadas.
Pesquisa por endereços de e-mail. Interessante para ataques de spam e/ou engenharia social.
Pesquisa por números de telefone. Interessante para ataques de engenharia social e/ou golpes.
| Descoberta | Pontuação (0-100) |
|---------------------+---------------|
| CMS_ONLY | 100 |
| CMS_VERSION | 96 |
| CMS_VERSION_VULN | veja abaixo |
| PLUGIN_ONLY | 99 |
| PLUGIN_VERSION | 96 |
| PLUGIN_VERSION_VULN | veja abaixo |
| JS_LIB_ONLY | 99 |
| JS_LIB_VERSION | 96 |
| JS_LIB_VULN_VERSION | veja abaixo |
| EMAIL_FOUND | 96 |
| NUMBER_FOUND | 98 |
Se houve uma descoberta como:
CMS_VERSION_VULN
PLUGIN_VERSION_VULN
JS_LIB_VULN_VERSION
então a pontuação geral será limitada a 20 e cada vulnerabilidade adicional
diminuirá a pontuação geral em 10. Ou seja, se
CMS_VERSION_VULN e PLUGIN_VERSION_VULN e JS_LIB_VULN_VERSION forem retornados, a
pontuação geral será 0.
Além disso, uma descoberta do jQuery v1.12.4 em um site Wordpress não será classificada como uma biblioteca vulnerável comum.
Essa descoberta resultará em uma pontuação de 90, mas o placeholder ainda será JS_LIB_VULN_VERSION, pois é uma biblioteca vulnerável.
Você pode executar o scanner por meio de requisições POST e GET.
Se você quiser executar o scanner com uma requisição POST, deve enviar os parâmetros no formato JSON codificado:
{
"url": "string",
"dangerLevel": 0,
"callbackurls": [
"string"
],
"userAgent": "string"
}
url define a URL que deve ser escaneada.
dangerLevel não é relevante, basta defini-la como 0.
callbackurls é um array de URLs. Essas URLs receberão o resultado do
scanner (enviado via POST).
userAgent define seu user agent individual que você deseja que seja enviado ao escanear.
Executar o scanner com uma requisição GET é muito mais simples. Tudo o que você precisa fazer é executar a aplicação com uma URL fornecida:
http://localhost/?url=<URL>
Nenhuma descoberta em nenhuma varredura:
{
"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
}
]
}
Pelo menos uma descoberta em cada varredura:
{
"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"
]
}
}
]
}
]
}
Especialmente testado em:
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 | Mensagem |
|---|
| SCAN CMS | |
| CMS_ONLY | Sistema de Gerenciamento de Conteúdo {cms} detectado. |
| CMS_VERSION | Sistema de Gerenciamento de Conteúdo {cms} e sua versão {version} detectados. |
| CMS_VERSION_VULN | Versão vulnerável {version} do Sistema de Gerenciamento de Conteúdo {cms} detectada |
| SCAN PLUGIN | |
| PLUGIN_ONLY | Plugin do CMS {plugin} no nó DOM {node} via conteúdo do nó {node_content} detectado. |
| PLUGIN_VERSION | Plugin do CMS {plugin} e sua versão {plugin_version} no nó DOM {node} via conteúdo do nó {node_content} detectados. |
| PLUGIN_VERSION_VULN | Plugin do CMS vulnerável {plugin} e sua versão {plugin_version} no nó DOM {node} via conteúdo do nó {node_content} detectados. |
| SCAN JS | |
| JS_LIB_ONLY | Biblioteca JavaScript {js_lib_name} usada no nó DOM {node} via conteúdo do nó {node_content} detectada. |
| JS_LIB_VERSION | Biblioteca JavaScript {js_lib_name} e sua versão {js_lib_version} usada no nó DOM {node} via conteúdo do nó {node_content} detectadas. |
| JS_LIB_VULN_VERSION | Biblioteca JavaScript vulnerável {js_lib_name} e sua versão {js_lib_version} no nó DOM {node} via conteúdo do nó {node_content} detectada. |
| SCAN EMAIL | |
| EMAIL_FOUND | Endereço de e-mail {email_address} encontrado. |
| SCAN PHONE | |
| NUMBER_FOUND | Número de telefone {number} encontrado. |
| ERRORS | |
| NO_SOURCE_CODE | A URL fornecida não possui código-fonte. |
| INVALID_URL | A URL fornecida não é uma URL válida. |
| INFOLEAK_LOCALHOST_SCAN_NOT_ALLOWED | Escanear localhost não é permitido. |
| NO_RESPONSE | A URL fornecida não está acessível. |
| INFOLEAK_PORT_DISALLOWED | A URL fornecida contém uma porta não permitida. |
| INFOLEAK_DONT_LEAK_USER_CREDS | A URL fornecida contém credenciais de usuário. |
| INFOLEAK_JSON_DECODE_ERROR | A requisição POST fornecida não pôde ser decodificada. |
| INFOLEAK_REDIRECT_ERROR | A URL realiza um redirecionamento proibido. |
| UNSUPPORTED_PROTOCOL | O site está usando um protocolo não suportado. |
| FAILED_INIT | O scanner falhou ao inicializar a conexão. |
| URL_MALFORMAT | A URL não está formatada corretamente. |
| COULDNT_RESOLVE_HOST | O host remoto fornecido não foi resolvido. |
| COULDNT_CONNECT | Falha ao conectar ao host ou proxy. |
| REMOTE_ACCESS_DENIED | Acesso ao recurso indicado na URL foi negado. |
| HTTP2_ERROR | Um problema foi detectado na camada de enquadramento HTTP2. |
| TOO_MANY_REDIRECTS | Ocorreram muitos redirecionamentos. |
| SEND_ERROR | Falha ao enviar dados de rede. |
| RECV_ERROR | Falha ao receber dados de rede. |
| BAD_CONTENT_ENCODING | Codificação de transferência não reconhecida. |
| SSL_ENGINE_INITFAILED | Falha ao inicializar o mecanismo SSL. |
| TIMEOUT | O período de timeout especificado foi atingido conforme as condições. |
| CONV_FAILED | Falha na conversão de caracteres. |
| REMOTE_FILE_NOT_FOUND | O recurso referenciado na URL não existe. |
| HTTP2_STREAM | Erro de stream na camada de enquadramento HTTP/2. |