shuffledns
shuffledns
es otra herramienta del arsenal de ProjectDiscovery, diseñada específicamente para manejar la enumeración y resolución masiva de subdominios. Su principal ventaja es que actúa como un "envoltorio" (wrapper) inteligente para massdns
, simplificando el proceso de fuerza bruta, manejando la detección de subdominios wildcard, y permitiendo una fácil integración con otras herramientas.
Es la herramienta a la que recurres cuando tienes una buena lista de palabras (wordlist) y quieres probarlas contra un dominio para ver cuáles existen.
Prerrequisitos
Para usar shuffledns
de forma efectiva, necesitarás dos cosas:
Una Wordlist de Subdominios: Una lista de nombres de subdominios comunes para probar (e.g.,
admin
,api
,dev
,test
,blog
). La colección de SecLists en GitHub es un recurso excelente para esto.Una Lista de Resolvers DNS: Un archivo de texto con una lista de servidores DNS públicos, válidos y rápidos. Esto es crucial para que
massdns
(queshuffledns
usa por debajo) pueda hacer las consultas de forma masiva y fiable.
Uso Básico y Opciones Clave
El comando que propones es un excelente ejemplo de un uso estándar para la fuerza bruta. Vamos a desglosarlo.
Comando Principal de Fuerza Bruta:
shuffledns -d ejemplo.com -w subdominios_wordlist.txt -r resolvers.txt -m /ruta/a/massdns --silent
Desglose de las Opciones (Flags):
-d ejemplo.com
: Especifica el dominio objetivo (-domain
) contra el que se realizará la fuerza bruta.shuffledns
probarápalabra.ejemplo.com
para cada "palabra" en tu wordlist.-w subdominios_wordlist.txt
: La lista de palabras (-wordlist
) que se usará para generar los subdominios a probar.-r resolvers.txt
: El archivo (-resolvers
) que contiene la lista de servidores DNS públicos.-m /ruta/a/massdns
: (Opcional simassdns
está en tu PATH) La ruta (-massdns
) al binario demassdns
.shuffledns
lo necesita para funcionar.--silent
: Modo silencioso, para obtener una salida limpia solo con los subdominios válidos encontrados.
Integración en un Flujo de Trabajo
La verdadera potencia de estas herramientas se ve al encadenarlas (piping
). Una vez que shuffledns
encuentra subdominios válidos, lo más lógico es pasarlos a httpx
para ver cuáles tienen un servidor web activo.
shuffledns -d ejemplo.com -w wordlist.txt -r resolvers.txt --silent | httpx -title -sc -tech-detect --silent
Este comando:
Realiza la fuerza bruta de subdominios para
ejemplo.com
conshuffledns
.La salida (los subdominios que existen) se pasa directamente (
|
) ahttpx
.httpx
comprueba cada subdominio y, si tiene un servidor web, muestra su título, código de estado y tecnologías detectadas.
Aclaración sobre el Targeting de Subdominios Específicos
En tu ejemplo ponías: shuffledns ... *.dev.site.com
. Hay que tener cuidado aquí. shuffledns
en su modo de fuerza bruta (-w
) no acepta un patrón como *.dev.site.com
como dominio -d
. El flag -d
espera un dominio raíz sobre el que construir las permutaciones (e.g., dev.site.com
).
Si quisieras hacer fuerza bruta sobre un subdominio de tercer nivel como dev.site.com
, el comando sería:
# Probará cosas como api.dev.site.com, test.dev.site.com, etc.
shuffledns -d dev.site.com -w wordlist.txt -r resolvers.txt --silent
Si lo que buscas es generar permutaciones más complejas, normalmente usarías otra herramienta como gotator
o un script para generar la lista de posibles subdominios y luego pasar esa lista a shuffledns
en modo de resolución (sin el flag -w
).
Organización: Guardando los Resultados
Como bien apuntas, ser organizado es clave para no volverse loco. Es una práctica excelente crear un directorio para cada objetivo y guardar ahí todos los resultados.
Puedes usar el flag -o
para especificar un archivo de salida:
# Crear un directorio para el objetivo
mkdir ejemplo.com
# Ejecutar el escaneo y guardar la salida en un archivo dentro de ese directorio
shuffledns -d ejemplo.com -w wordlist.txt -r resolvers.txt --silent -o ejemplo.com/shuffledns_output.txt
De esta forma, mantienes todos tus hallazgos de un mismo programa de bug bounty bien ordenados y localizables.
Última actualización