crt.sh
What it is — crt.sh is a search tool over Certificate Transparency (CT) logs: a public system where every certificate authority is required to log every TLS certificate it issues. Since any domain/subdomain with HTTPS needs a certificate, searching these logs reveals subdomains that might never show up in a normal DNS scan.
| Type | Free web service |
| Cost | Free, no signup |
| URL | crt.sh |
How to use it
Search by domain directly on the site, or via the JSON API:
https://crt.sh/?q=%25.target.com&output=json
The %25. wildcard (URL-encoded %.) captures any subdomain. With jq you can filter and clean up the results easily:
curl -s "https://crt.sh/?q=%25.target.com&output=json" | \
jq -r '.[].name_value' | sed 's/\*\.//g' | sort -u
Why it works: many dev, staging, or internal subdomains that are never linked from the public site still need a valid TLS certificate to function — and that certificate gets publicly logged in the CT logs, whether the team likes it or not.
What I use it for
- First step in bug bounty recon: before any subdomain brute-forcing, I check crt.sh — it's instant and generates zero traffic against the target.
- Finding dev/staging subdomains that often have weaker protections than production (looser auth, debug mode on, unpatched versions).
- Spotting wildcards and shared certificates that sometimes reveal a relationship between seemingly unrelated organisations' domains (vendors, subsidiaries) sharing infrastructure.
Link
Qué es — crt.sh es un buscador sobre los logs de Certificate Transparency (CT): un sistema público donde toda autoridad certificadora está obligada a registrar cada certificado TLS que emite. Como cualquier dominio/subdominio con HTTPS necesita un certificado, buscar en estos logs revela subdominios que quizá nunca aparecerían en un escaneo DNS normal.
| Tipo | Servicio web gratuito |
| Coste | Gratis, sin registro |
| URL | crt.sh |
Cómo se usa
Búsqueda por dominio directamente en la web, o por API en formato JSON:
https://crt.sh/?q=%25.objetivo.com&output=json
El comodín %25. (URL-encoded de %.) captura cualquier subdominio. Con jq filtras y limpias los resultados fácilmente:
curl -s "https://crt.sh/?q=%25.objetivo.com&output=json" | \
jq -r '.[].name_value' | sed 's/\*\.//g' | sort -u
Por qué funciona: muchos subdominios de desarrollo, staging o servicios internos que nunca se enlazan desde la web pública igualmente necesitan un certificado TLS válido para funcionar — y ese certificado queda registrado públicamente en los logs de CT, sin que el equipo pueda evitarlo.
Para qué lo uso yo
- Primer paso en recon de bug bounty: antes de cualquier fuerza bruta de subdominios, consulto crt.sh — es instantáneo y no genera tráfico contra el objetivo.
- Encontrar subdominios de desarrollo/staging que a menudo tienen protecciones más débiles que producción (auth más laxa, debug activado, versiones sin parchear).
- Detectar wildcards y certificados compartidos que a veces revelan relación entre dominios de organizaciones distintas (proveedores, filiales) que comparten infraestructura.