Interesting Groups - Linux Privesc
Last updated
Last updated
Impara e pratica l'Hacking su AWS: HackTricks Training AWS Red Team Expert (ARTE) Impara e pratica l'Hacking su GCP: HackTricks Training GCP Red Team Expert (GRTE)
A volte, per impostazione predefinita (o perché alcuni software ne hanno bisogno) all'interno del file /etc/sudoers è possibile trovare alcune di queste righe:
Questo significa che qualsiasi utente che appartiene al gruppo sudo o admin può eseguire qualsiasi comando come sudo.
Se questo è il caso, per diventare root puoi semplicemente eseguire:
Trova tutti i binari suid e controlla se c'è il binario Pkexec:
Se trovi che il binario pkexec è un binario SUID e appartieni a sudo o admin, probabilmente potresti eseguire binari come sudo usando pkexec
.
Questo perché tipicamente questi sono i gruppi all'interno della policy polkit. Questa policy identifica fondamentalmente quali gruppi possono utilizzare pkexec
. Controllalo con:
Qui troverai quali gruppi sono autorizzati ad eseguire pkexec e per impostazione predefinita in alcune distribuzioni Linux i gruppi sudo e admin appaiono.
Per diventare root puoi eseguire:
Se provi ad eseguire pkexec e ottieni questo errore:
Non è perché non hai le autorizzazioni ma perché non sei connesso senza una GUI. E c'è una soluzione a questo problema qui: https://github.com/NixOS/nixpkgs/issues/18012#issuecomment-335350903. Hai bisogno di 2 sessioni ssh diverse:
A volte, per impostazione predefinita all'interno del file /etc/sudoers è possibile trovare questa riga:
Questo significa che qualsiasi utente che appartiene al gruppo wheel può eseguire qualsiasi cosa come sudo.
Se questo è il caso, per diventare root puoi semplicemente eseguire:
Gli utenti del gruppo shadow possono leggere il file /etc/shadow:
Quindi, leggi il file e cerca di violare alcuni hash.
staff: Consente agli utenti di aggiungere modifiche locali al sistema (/usr/local
) senza necessità di privilegi di root (nota che gli eseguibili in /usr/local/bin
sono nel percorso di qualsiasi utente e possono "sovrascrivere" gli eseguibili in /bin
e /usr/bin
con lo stesso nome). Confronta con il gruppo "adm", che è più legato al monitoraggio/sicurezza. [fonte]
Nelle distribuzioni debian, la variabile $PATH
mostra che /usr/local/
verrà eseguito con la massima priorità, che tu sia un utente privilegiato o meno.
Se riusciamo a dirottare alcuni programmi in /usr/local
, possiamo facilmente ottenere i permessi di root.
Dirottare il programma run-parts
è un modo facile per ottenere i permessi di root, poiché la maggior parte dei programmi eseguirà un run-parts
come (crontab, quando si effettua il login ssh).
o Quando viene effettuato un nuovo accesso alla sessione ssh.
Sfruttare
Questa privilegio è quasi equivalente all'accesso di root poiché consente di accedere a tutti i dati all'interno della macchina.
File: /dev/sd[a-z][1-9]
Nota che utilizzando debugfs puoi anche scrivere file. Ad esempio, per copiare /tmp/asd1.txt
in /tmp/asd2.txt
puoi fare:
Tuttavia, se provi a scrivere file di proprietà di root (come /etc/shadow
o /etc/passwd
) otterrai un errore di "Permesso negato".
Utilizzando il comando w
puoi trovare chi è collegato al sistema e mostrerà un output simile al seguente:
Il tty1 significa che l'utente yossi è connesso fisicamente a un terminale sulla macchina.
Il gruppo video ha accesso per visualizzare l'output dello schermo. Fondamentalmente puoi osservare gli schermi. Per farlo è necessario acquisire l'immagine corrente sullo schermo in formato grezzo e ottenere la risoluzione che lo schermo sta utilizzando. I dati dello schermo possono essere salvati in /dev/fb0
e potresti trovare la risoluzione di questo schermo su /sys/class/graphics/fb0/virtual_size
Per aprire l'immagine grezza puoi utilizzare GIMP, selezionare il file **screen.raw
** e selezionare come tipo di file Dati immagine grezzi:
Successivamente, modifica la larghezza e l'altezza con quelle utilizzate sullo schermo e controlla i diversi Tipi di Immagine (e seleziona quello che mostra meglio lo schermo):
Sembra che per impostazione predefinita i membri del gruppo root potrebbero avere accesso per modificare alcuni file di configurazione di servizio o alcuni file di librerie o altre cose interessanti che potrebbero essere utilizzate per l'escalation dei privilegi...
Verifica quali file possono essere modificati dai membri di root:
È possibile montare il filesystem radice della macchina host su un volume dell'istanza, in modo che quando l'istanza viene avviata carichi immediatamente un chroot
in quel volume. Questo ti dà effettivamente i permessi di root sulla macchina.
Di solito i membri del gruppo adm
hanno le autorizzazioni per leggere i file di log situati all'interno di /var/log/.
Pertanto, se hai compromesso un utente all'interno di questo gruppo dovresti sicuramente dare un'occhiata ai log.
All'interno di OpenBSD il gruppo auth di solito può scrivere nelle cartelle /etc/skey e /var/db/yubikey se vengono utilizzate. Queste autorizzazioni possono essere sfruttate con l'exploit seguente per escalare i privilegi a root: https://raw.githubusercontent.com/bcoles/local-exploits/master/CVE-2019-19520/openbsd-authroot