
Prova de conceito de exploit para CVE-2022-29464 que permite upload de arquivos sem restrições e execução remota de código em produtos WSO2 vulneráveis, com um shell JSP personalizado para execução de comandos e exfiltração de arquivos.
Certos produtos WSO2 permitem upload irrestrito de arquivos com consequente execução remota de código. O atacante deve usar um endpoint /fileupload com uma sequência de directory traversal no Content-Disposition para atingir um diretório sob a raiz web, como um diretório ../../../../repository/deployment/server/webapps.
python3 main.py https://example.com shell.jsp
Substitua https://example.com pelo servidor vulnerável e shell.jsp por um nome de arquivo que você deseja usar para upload.
Edite o arquivo shell.jsp conforme desejar, mas o shell atual também funciona perfeitamente (melhor que outros shells JSP, pelo menos).
Este shell pode capturar saída do stdout e stderr. Comandos são executados usando /bin/sh.
Na maioria das vezes, os administradores de sistema executam produtos WSO2 como superusuário. Usando este exploit, você terá permissões de superusuário sobre todo o sistema.
Os arquivos de banco de dados estão localizados no diretório ~/repository/database.
Você pode usar o IntelliJ IDEA para abrir bancos de dados do tipo H2, como este.
Usando este exploit, você pode copiar qualquer arquivo de qualquer diretório para ~/repository/deployment/server/webapps/authenticationendpoint. O diretório authenticationendpoint serve JSP, mas também pode ser usado para servir outros arquivos.
Exemplo:
cp ~/repository/database/WSO2CARBON_DB.h2.db ~/repository/deployment/server/webapps/authenticationendpoint/WSO2CARBON_DB.h2.db
Este comando copiará o arquivo principal do banco de dados para um diretório que podemos usar para baixá-lo.
Não me responsabilizo por qualquer tipo de guerra termonuclear ou você ser preso. Use este exploit apenas em ambiente de teste.