Subdomains Enumeration

d4t4s3c
3 min readMar 10, 2024

….

Información

Hoy veremos como podemos descubrir subdominios desde un dominio que hemos obtenido en un proceso de pentesting.

El ataque se puede considerar que es activo, ya que interactuamos con el objetivo y es mediante fuerza bruta con un diccionario.

La estructura de la URL sería la siguiente:

Laboratorio

La mejor manera de realizar las pruebas, es montar en local una máquina virtual el laboratorio y así poder realizar nuestras propias pruebas.

Dependencias

la única dependencia requerida es Apache2

apt-get install -y apache2

Configuración

lo primero es dirigirse a la carpeta de configuración de Apache2 relacionada con el mapeo de los sitios sites-available

cd /etc/apache2/sites-available/

creamos el archivo de configuración vhost.conf para el subdominio
(la configuración para un dominio seria exactamente la misma)

  • Dominio: test.lab
  • Subdominio: admin.test.lab
<VirtualHost *:80>

ServerName admin.test.lab
ServerAdmin webmaster@localhost
DocumentRoot /var/www/site

ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

la carpeta para el subdominio admin.test.lab es /var/www/site y si accedemos desde la IP es /var/www/html (configuración por default)

registramos con a2ensite el archivo de configuración vhost.conf, así Apache2 en base a la solicitud pueda resolver hacia un sitio o otro.

/usr/sbin/a2ensite vhost.conf

Enabling site vhost.
To activate the new configuration, you need to run:
systemctl reload apache2

Reinicio

para que los cambios se apliquen reiniciamos el servicio Apache2

systemctl reload apache2

Verificaciones

probamos si el archivo de configuración vhost.conf tiene errores:

/usr/sbin/apache2ctl configtest
Syntax OK

hacemos un volcado de los VHOST cargados en Apache2 para verificar que se cargo correctamente el subdominio admin.test.lab

/usr/sbin/apache2ctl -t -D DUMP_VHOSTS

VirtualHost configuration:
*:80 is a NameVirtualHost
default server 127.0.1.1 (/etc/apache2/sites-enabled/000-default.conf:1)
port 80 namevhost 127.0.1.1 (/etc/apache2/sites-enabled/000-default.conf:1)
port 80 namevhost admin.test.lab (/etc/apache2/sites-enabled/zone.conf:1)

Preparación

/etc/hosts

agregamos el dominio test.lab al archivo /etc/hosts para que la IP objetivo apunte al dominio y pueda resolver correctamente.

echo -n '192.168.1.2 test.lab' >> /etc/hosts

Wordlist

utilizamos el diccionario de SecLists subdomains-top1million-5000.txt

Fuzzing

Gobuster

gobuster vhost -w /opt/subdomains-top1million-5000.txt -u 'http://test.lab' --append-domain

Wfuzz

wfuzz -c -w /opt/subdomains-top1million-5000.txt -H 'Host: FUZZ.test.lab' -u 'http://test.lab/' --hh=10700

Ffuf

ffuf -c -w /opt/subdomains-top1million-5000.txt -H 'Host: FUZZ.test.lab' -u 'http://test.lab/' -fs 10700

hemos visto montando un pequeño laboratorio, como mediante fuzzing y haciendo uso de un diccionario con las diferentes herramientas: Gobuster, Wfuzz, Ffuf obtener el subdominio: admin.test.lab.

hasta aquí el artículo de hoy, espero que os resulte de utilidad.

Happy Hacking!

--

--