
Detecta a vulnerabilidade de string de formato CVE-2024-23113 no serviço FGFM do FortiGate por meio de conexão SSL na porta 541, enviando payloads maliciosos para verificar a suscetibilidade a RCE.
O script foi projetado para detectar a CVE-2024-23113, que é uma vulnerabilidade de string de formato no serviço FGFM do FortiGate (protocolo FortiGate para FortiManager) executando na porta TCP 541. A vulnerabilidade ocorre porque um atacante pode controlar uma string de formato, o que pode levar à Execução Remota de Código (RCE) ou outros comportamentos indesejados. O serviço FGFM permite a comunicação entre dispositivos FortiGate e o FortiManager para gerenciamento de configuração, e uma versão não corrigida possui tratamento inadequado de entrada, tornando-a suscetível a uma exploração de string de formato. Como o Script Funciona
Configuração da Conexão de Rede:
O script primeiro configura uma conexão SSL/TLS com o alvo na porta 541.
Utiliza o objeto ssl.SSLContext com verificação de certificado desabilitada para estabelecer a conexão, pois o dispositivo pode ter certificados autoassinados.
Construção do Payload:
Uma vez conectado, o script cria um payload malicioso usando uma exploração de string de formato (authip=%n). A diretiva %n instrui o sistema a escrever o número de bytes produzidos até o momento em uma variável, o que pode potencialmente levar à corrupção de memória.
O payload criado é enviado ao alvo através da conexão estabelecida.
Lógica de Detecção:
O script então verifica o comportamento do alvo em resposta ao payload.
Se a conexão for abruptamente encerrada e um alerta SSL for levantado, isso sugere que o alvo é vulnerável, pois acionou os mecanismos de proteção contra vulnerabilidade de string de formato (por exemplo, _FORTIFY_SOURCE em glibc).
Se a conexão permanecer aberta, o alvo provavelmente está corrigido.
Instruções de Uso
Execute o Script:
Execute o script com Python 3 através do comando:
sh
python check_vulnerability.py
Informe o Hostname/IP:
Será solicitado que você informe um hostname ou endereço IP para verificar se está vulnerável.
Se quiser parar, digite exit.
Saída:
Se o alvo estiver vulnerável, o script exibirá:
[!] Warning: is vulnerable!
Se o alvo estiver corrigido, exibirá:
[+] <hostname> appears to be patched.
Requisitos
Python 3 instalado na máquina que executará o script.
Acesso de rede ao dispositivo alvo, garantindo que a porta 541 esteja aberta.
O serviço FGFM deve estar em execução no dispositivo alvo.