
Este exploit foi criado para explorar uma XXE (Entidade Externa XML). Através dele, li o código do backend do serviço web e encontrei um endpoint onde pude usar gopher para fazer requisições internas no Zabbix vulnerável a RCE.
python exploit.py --ip <Zabbix_IP> --sid <LowPrivileged_SID> --hostid <HostID> --phpsessid <PHPSESSID> --false_time <FalseTime> --true_time <TrueTime>
Este exploit foi criado para explorar um XXE (Entidade Externa XML). Através dele, li o código backend do serviço web e encontrei um endpoint onde pude usar gopher para fazer requisições internas na versão 6.0.27 do Zabbix vulnerável a Execução Remota de Código.
Durante a fase de reconhecimento, realizei um ataque de força bruta no servidor web externo para obter o arquivo docker-compose.yml, que forneceu o nome do contêiner dos servidores Zabbix internos. Usando essa informação, enviei uma requisição POST para a raiz da aplicação web via gopher e o servidor web retornou o host-id e o session id de um usuário com privilégios baixos em um JSON codificado em base64 no cookie.
Com esses detalhes, consegui adaptar o exploit original para explorar uma vulnerabilidade de Injeção SQL em zabbix-server:10051 para obter o session ID do administrador e, em seguida, criar e executar um script para alcançar a execução remota de código.
Se precisar explorar essa vulnerabilidade do Zabbix usando gopher, você pode modificar a função InternalRequest para fazer a requisição da maneira que precisar.
10.0.46.27:5555 no script).Certifique-se de que sua máquina esteja ouvindo na porta especificada (5555 no script) para capturar o reverse shell. Você pode usar netcat para isso:
nc -lvnp 5555
Substitua o IP 10.0.46.27 e a porta 5555 na função CreateScript pelo seu próprio IP e porta desejados para receber o reverse shell.