
Ferramenta de varredura para testar vulnerabilidades SaltStack CVE-2020-11651 & CVE-2020-11652.
[1] O que é?
Ferramenta de varredura para testar vulnerabilidades do SaltStack CVE-2020-11651 e CVE-2020-11652.
As vulnerabilidades permitem que um atacante que consiga se conectar à porta do "servidor de requisições" ignore todos os controles de autenticação e autorização, publique mensagens de controle arbitrárias, leia e grave arquivos em qualquer lugar do sistema de arquivos do servidor "master" e roube a chave secreta usada para autenticar-se no master como root. O impacto é a execução remota completa de comandos como root tanto no master quanto em todos os minions que se conectam a ele.
[2] Como instalar.
A ferramenta requer Python 2.7 ou Python 3. Os requisitos externos podem ser instalados com pip ou easy_install. Por exemplo:
sudo pip install -r requirements.txt
[3] Como usar?
Existem 2 métodos de detecção incluídos:
Divulgação de token (-t)
Este método é invocado com a opção -t e tenta ler o token raiz do Salt explorando a falha. Embora este método seja autossuficiente, ele só funciona em versões mais recentes; algumas versões mais antigas não são suportadas.
Execução Remota de Código para Fora de Banda (DNS) (-c)
Este método explora a falha executando o comando nslookup para acionar uma consulta DNS para o servidor Sentinel da AppCheck. O scanner então consulta o servidor DNS da AppCheck para determinar se a execução ocorreu. Para alcançar isso, a ferramenta precisa se conectar externamente a https://ptst.io/
Nota: Para mais informações sobre o Sentinel, consulte a seção [4] abaixo.
Linha de comando recomendada: salt_rce_scanner.py -r cidr_ip_range -t -c
[Opções da Linha de Comando]
/ _ \ / __ \ | | |
/ /\ _ __ _ __ | / / |__ ___ | | __
| _ | ' | ' | | | ' \ / _ / __| |/ /
| | | | |) | |) | _/\ | | | / (| <
_| |/ ./| ./ _/| ||_|___||_
| | | |
|| |_|
Scanner SaltStack (CVE-2020-11651 & CVE-2020-11652)
Autor: Gary O'Leary-Steele
Versão: 0.1 Alpha
Use -h para ver as opções de uso
argumentos opcionais: -h, --help mostra esta mensagem de ajuda e sai -r CIDR_RANGE Host alvo ou intervalo CIDR para escanear -p PORT Porta alvo (4506 por padrão) -c Ativa o teste de injeção remota de comandos (DNS fora de banda para o AppCheck Sentinel) -t Ativa a verificação de divulgação do token raiz -T THREADS Máximo de threads (padrão é 50) -o OUTPUT_FILE Arquivo de saída
[4] AppCheck Sentinel
= Contexto =
Tradicionalmente, as falhas de segurança de aplicações web são detectadas modificando a entrada fornecida pelo cliente na tentativa de acionar uma resposta específica do servidor. Por exemplo, falhas de injeção de SQL são frequentemente detectadas pelo envio de payloads que fazem o servidor de banco de dados retornar uma assinatura; em outros casos, os payloads são projetados para acionar um atraso de tempo específico que pode ser medido para detectar a falha. Em cada caso, esses métodos usam técnicas in-band (dentro da banda), nas quais tanto o ataque quanto a resposta seguem o mesmo caminho do tráfego normal do site e resultam na confirmação imediata da vulnerabilidade.
= Detecção Fora de Banda =
No entanto, há casos em que as técnicas in-band não são eficazes. Por exemplo, considere um site de e-commerce que coleta pedidos que posteriormente são revisados por meio de um sistema de processamento de pedidos no back-end. Embora o AppCheck detecte vulnerabilidades (in-band) no site de e-commerce durante uma varredura de rotina, as vulnerabilidades no sistema de processamento de pedidos do back-end podem não ser acionadas até serem acessadas (por outro usuário ou processo) mais adiante.
Outros casos comuns surgem quando o acionamento da vulnerabilidade não fornece um mecanismo in-band confiável para confirmar a falha. Por exemplo, medir os tempos de resposta do servidor pode não ser confiável se os tempos de resposta normais forem irregulares. Em outros casos, a vulnerabilidade pode não afetar a forma como o servidor responde, independentemente de ser explorada com sucesso ou não.
Para superar essas restrições, o AppCheck implementa um sistema de detecção fora de banda chamado Sentinel.
O Sentinel é um sistema de monitoramento baseado em nuvem que hospeda serviços DNS, SMTP, HTTP(s) e SMB especialmente projetados para interceptar conexões fora de banda acionadas como resultado de um payload de ataque do AppCheck.
Durante uma varredura, o AppCheck envia payloads especialmente elaborados, projetados para acionar conexões fora de banda quando são executados com sucesso. O Sentinel então detecta essa execução e atualiza os resultados da varredura de acordo. Uma das técnicas mais comuns é o uso de tokens DNS embutidos no payload. Por design, as consultas DNS são encaminhadas ao servidor DNS autoritativo de um determinado domínio para serem resolvidas. Portanto, mesmo que o sistema vulnerável não tenha permissão para acessar a internet, desde que seja capaz de resolver nomes DNS, ele pode se comunicar com o Sentinel.