bashed - Hack The Box
Bashed es una máquina sencilla que cuenta con una webshell expuesta en la web, luego de ganar acceso a la máquina vemos que el usuario www-data tiene permiso de ejecutar comandos como scriptmanager. Luego para la escala de privilegios a root vemos que el usuario root está ejecutando el archivo test.py, procedemos a modificarlo y ganar acceso como el usuario root.
Enumeración
Lanzamos un simple escaneo de nmap y encontramos que tiene solamente el puerto 80 abierto.
Starting Nmap 7.92 ( https://nmap.org ) at 2022-09-07 08:45 -03
Nmap scan report for 10.10.10.68
Host is up (0.24s latency).
PORT STATE SERVICE VERSION
80/tcp open http Apache httpd 2.4.18 ((Ubuntu))
|_http-title: Arrexel's Development Site
|_http-server-header: Apache/2.4.18 (Ubuntu)
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 13.80 seconds
Navegamos por la web, y vemos que en la ruta “http://10.10.10.68/dev/phpbash.php” está subida una web shell.
Escalada de privilegios
La escalada de privilegios es bastante fácil, como el usuario www-data ejecutamos sudo -l
y vemos que tiene permisos de ejecutar comandos como el usuario scriptmanager.
www-data@bashed:/tmp$ sudo -l
Matching Defaults entries for www-data on bashed:
env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin
User www-data may run the following commands on bashed:
(scriptmanager : scriptmanager) NOPASSWD: ALL
www-data@bashed:/tmp$ sudo -u scriptmanager bash
scriptmanager@bashed:/tmp$
Ahora toca escalar a root :). Con el pspy vemos que a intervalos de tiempo root ejecuta una tarea cron. Lo que hace es simplemente ejecutar el script test.py
2022/09/07 05:56:01 CMD: UID=0 PID=15383 | python test.py
2022/09/07 05:56:01 CMD: UID=0 PID=15382 | /bin/sh -c cd /scripts; for f in *.py; do python "$f"; done
2022/09/07 05:57:01 CMD: UID=0 PID=15386 | python test.py
2022/09/07 05:57:01 CMD: UID=0 PID=15385 | /bin/sh -c cd /scripts; for f in *.py; do python "$f"; done
2022/09/07 05:57:01 CMD: UID=0 PID=15384 | /usr/sbin/CRON -f
2022/09/07 05:57:26 CMD: UID=0 PID=15388 |
2022/09/07 05:57:26 CMD: UID=0 PID=15387 | /bin/systemd-tmpfiles --clean
2022/09/07 05:57:26 CMD: UID=0 PID=15389 |
2022/09/07 05:57:26 CMD: UID=0 PID=15390 |
2022/09/07 05:58:01 CMD: UID=0 PID=15392 | /usr/sbin/CRON -f
2022/09/07 05:58:01 CMD: UID=0 PID=15391 | /usr/sbin/CRON -f
2022/09/07 05:58:01 CMD: UID=0 PID=15393 | python test.py
Modificamos el archivo test.py y esperamos :).
Lo logramos :D.