F1r0x
Blog sobre informática Y ciberseguridad.
GitHub
Captura de pantalla -2022-05-09 22-42-07

Hack The Box-Cap

En primer lugar, nos creamos un directorio con el nombre de la máquina desde el que trabajaremos:

sudo mkdir Cap

Ahora, mediante la función mkt que tengo previamente definida en la .zhshrc crearemos nuestros directorios de trabajo:

sudo mkt

Esta función está definida para crearnos cuatro directorios (nmap, content, exploits y scripts) desde los cuales poder trabajar a la hora de realizar las máquinas de HTB.

PING

Ejecutamos un ping y vemos como nos reporta un ttl=63, por tanto, ya sabemos que estamos frente una máquina Linux.

ping -c 1 10.10.10.245

Captura de pantalla -2022-05-09 22-50-48

Verificamos mediante la herramienta WishSystem que nos encontramos frente a un sistema Linux.

WhatWeb

Ahora vamos a ver mediante whatweb que más podemos ver:

whatweb 10.10.10.245

Captura de pantalla -2022-05-09 23-01-58

Vemos que no nos reporta nada interesante, así que vamos a proceder mediante Nmap a tratar de reportar todos los puertos abiertos.

Ahora mediante nmap realizaremos un escaneo de puertos:

nmap -p- --open -sS --min-rate 5800 -vvv -n -Pn 10.10.10.245 -oG allPorts

-p- : Escanea todo el rango de puertos.

--open : Solo nos mostrará puertos con el estatus abierto.

-sS : El escaneo SYN actuar rápidamente, escaneando miles de puertos por segundo en una red rápida que no se ve obstaculizada por firewalls intrusivos.

--min-rate : Controla directamente la tasa de escaneo. Nmap intentará mantener la velocidad de envío en 5000 paquetes por segundo o más.

-vvv : Triple verbose. Recopila los puertos abiertos por TCP y los reporta por consola. Cuanto más verbose más información reporta mientras se ejecuta el escaneo.

-n : Anula la resolución DNS.

Captura de pantalla -2022-05-07 13-52-00

Vemos como los puertos 21,22 y 80 están abiertos y que en los tres corren servicios interesantes vamos a tratar de realizar mediante una serie de scripts básicos de reconocimiento un segundo escaneo enfocándonos en los puertos que hemos encontrado abiertos:

nmap -sC -sV -p21,22,80 -oN targed  

-sC : Lanza scripts básicos de reconocimiento.

-sV : Localiza la versión y servicio de los puertos definidos.

-p : Puertos a escanear.

-oN : Reporta los resultados en formato nmap al archivo target.

Captura de pantalla -2022-05-07 13-54-13

Captura de pantalla -2022-05-07 13-55-15

Captura de pantalla -2022-05-07 13-55-36

Vemos que por el puerto 80 corre un servicio http con la versión gunicorn. Vamos a tratar de acceder al dominio http://10.10.10.245 utilizando el navegador, en mi caso Firefox.

Captura de pantalla -2022-05-07 14-02-57

Captura de pantalla -2022-05-07 14-03-07

Vemos como el dominio nos lleva hasta un panel de gráficos de un usuario llamado Nathan. Tras investigar la página, vemos como arriba a la izquierda tenemos un menú desplegable y me llama especialmente la atención el apartado Security Snapshot (5 Second PCAP + Analysis).

Captura de pantalla -2022-05-07 14-03-40

Vemos como nos muestra una página que parece contener archivos guardados y donde también tenemos un botón de Download. Algo que es interesante es ver como nos indica el directorio actual mediante el número 3.

Captura de pantalla -2022-05-10 00-46-06

Tras probar otros números, veo que existen varias páginas de ficheros empezando desde el 0 que parece ser la página que más archivos tiene guardados. Vamos a pulsar Donwload y descargarnos el archivo para ver que se trata.

Captura de pantalla -2022-05-07 14-03-40

Captura de pantalla -2022-05-10 00-47-49

Vamos a llevar el archivo al directorio content donde vamos a realizar primeramente un cat para ver que se trata y vemos que el archivo contiene un binario.

Captura de pantalla -2022-05-10 01-02-17

TShark

Para poder ver el binario vamos a utilizar la herramienta tshark. En caso de no tenerla podéis descargarla utilizando el siguiente comando:

sudo apt install tshark

Una vez instalado vamos a tratar de leer el archivo:

tshark -r 0.pcap 2>/dev/null

Captura de pantalla -2022-05-07 14-18-25

Captura de pantalla -2022-05-07 14-18-38

Tras revisar el contenido vemos que por el centro del archivo se encuentran las credenciales de un usuario. Nos muestra un user nathan y una PASS Buck3tH4TF0RM3!.

Captura de pantalla -2022-05-07 14-19-36

Captura de pantalla -2022-05-07 14-21-26

Captura de pantalla -2022-05-07 14-21-38

Mediante los siguientes parámetros podríamos filtrar el archivo para solo reportar la información interesante.

tshark -r 0.pcap -Y "ftp" -Tfields -e tcp.payload 2>/dev/null | xxd -ps -r

Captura de pantalla -2022-05-07 14-27-41

FTP Shell:

Visto esto, vamos a tratar de conectarnos mediante ftp con las credenciales que hemos encontrado.

ftp 10.10.10.245

Captura de pantalla -2022-05-07 14-29-55

Perfecto vemos como nos permite conectarnos como el usuario nathan. Lo primero que debemos hacer es activar el modo pasivo para no tener problemas con los comandos.

passive

Ahora ejecutando un ls vemos como ahí se encuentra el archivo user.txt con la primera flag.

Captura de pantalla -2022-05-07 14-32-01

Al tratar de visualizar el archivo con cat vemos como no nos lo permite.

Captura de pantalla -2022-05-07 14-33-10

Al revisar mediante la variable help las opciones que podemos utilizar:

Captura de pantalla -2022-05-07 14-33-24

Vemos que está disponible el comando get, así que vamos a tratar de descargarnos el archivo hasta nuestro repositorio.

Captura de pantalla -2022-05-07 14-33-52

Abrimos una terminal nueva y nos dirigimos a nuestro directorio content, si hemos ejecutado anteriormente la shell ftp desde aquí, vemos como se nos abra descargado en este directorio el archivo user.txt.

Captura de pantalla -2022-05-07 14-34-30

Captura de pantalla -2022-05-07 14-34-43

Shell SSH

Ahora, para tratar de conseguir la flag del root, como la shell por ftp nos ha estado dando problemas con algunos comandos, vamos a tratar de establecer conexión mediante el servicio ssh y utilizando las mismas credenciales:

ssh nathan@10.10.10.245

Captura de pantalla -2022-05-07 14-41-53

Captura de pantalla -2022-05-07 14-43-29

Primero vamos a tratar de ver si tenemos algún tipo de privilegios:

Captura de pantalla -2022-05-07 14-44-17

Vemos que nos pide un password y por desgracia no nos sirve la misma que hemos utilizado anteriormente.

GetCap

Ahora, para tratar de enumerar archivos de interés usaremos getcap muestra el nombre y las capacidades de cada archivo especificado. En el caso de no disponer de getcap podemos descargarlo de la siguiente manera:

getcap -r / 2>/dev/null

Captura de pantalla -2022-05-07 14-52-31

Vemos como se nos reporta un archivo llamado cap_setuid y que está siendo ejecutado en Python3.8.

Captura de pantalla -2022-05-07 14-53-07

Tras buscar información sobre vulnerabilidades bandas en Python3.8 y he encontrado los siguientes comandos que nos permite crear una shell en bash registrándonos automáticamente como root. Para ello vamos a introducir los siguientes comandos:

import os

Captura de pantalla -2022-05-07 14-53-41

os.setuid(0)

Captura de pantalla -2022-05-07 14-54-29

os.system("bash")

Captura de pantalla -2022-05-07 14-54-58

Captura de pantalla -2022-05-07 14-55-13

Vemos como ha funcionado y ya tenemos nuestra shell en bash y si ejecutamos el comando whoami podemos ver como estamos registrados como root. Finalmente, podemos encontrar la flag del archivo root dentro del directorio /root/root.txt.

Captura de pantalla -2022-05-07 14-55-46

Captura de pantalla -2022-05-07 14-56-42