
Un semplice lab Docker e setup Exploit per CVE-2021-3156 - "Baron Samedit".
Questo repository fornisce un ambiente autonomo e didattico per comprendere e sfruttare CVE-2021-3156, un buffer overflow basato su heap in sudo che consente a qualsiasi utente non privilegiato di ottenere privilegi di root su sistemi vulnerabili (versioni di sudo precedenti alla 1.9.5p2).
Questo materiale è destinato esclusivamente a formazione sulla sicurezza e ricerca autorizzate.
L'uso non autorizzato/antietico contro sistemi che non possiedi è illegale.
Dockerfile - Crea un container Ubuntu 20.04 con sudo 1.8.31 (vulnerabile)exploit.c - Payload principale dell'exploit (adattato per Ubuntu 20.04)shellcode.c - Costruttore di libreria condivisa che avvia una shell di rootMakefile - Compila l'exploit e la libreria dannosagit clone https://github.com/Theleopard65/CVE-2021-3156-Baron-Samedit.git
cd CVE-2021-3156-Baron-Samedit
docker build -t cve-2021-3156-lab .
poc all'interno del container./home/exploit, che contiene già i file sorgente.docker run -it --rm --name baron_samedit_lab cve-2021-3156-lab
cd /home/exploit
./exploit
In caso di successo, dovresti vedere un prompt di shell di root (#). L'exploit sovrascrive la struct service_user nell'heap di sudo e lo costringe a caricare la libreria dannosa libnss_x/x.so.2, il cui costruttore esegue lo shellcode.
make clean && make
Questo crea:
exploit - il binario principale dell'exploitlibnss_x/x.so.2 - la libreria condivisa dannosaCVE-2021-3156 è un overflow basato su heap nella gestione degli argomenti della riga di comando di sudoedit. Fornendo un buffer appositamente predisposto e variabili d'ambiente, un attaccante può sovrascrivere una struct service_user nell'heap. Questa struct contiene un puntatore a funzione che, una volta dirottato, può essere fatto puntare a una libreria dannosa caricata tramite il meccanismo NSS (Name Service Switch). Il costruttore della libreria esegue quindi codice arbitrario con privilegi di root.
Questo exploit:
buf) per innescare l'overflow.LC_MESSAGES, LC_TELEPHONE e LC_MEASUREMENT per modellare il layout dell'heap.service_user di files, sostituendo il suo nome con un percorso verso la nostra libreria dannosa (libnss_x/x.so.2).shellcode.c) esegue setuid(0), setgid(0) e avvia una shell di root.Per rimuovere l'immagine Docker:
docker rmi cve-2021-3156-lab
Questo progetto è fornito esclusivamente a scopo didattico. Usalo a tuo rischio.