mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
99 lines
8.1 KiB
Markdown
99 lines
8.1 KiB
Markdown
# Domain/Subdomain takeover
|
|
|
|
{{#include ../banners/hacktricks-training.md}}
|
|
|
|
|
|
## Domain takeover
|
|
|
|
Se você descobrir algum domínio (domain.tld) que está **sendo usado por algum serviço dentro do escopo** mas a **empresa** **perdeu** a **propriedade** dele, você pode tentar **registrá-lo** (se for barato o suficiente) e informar a empresa. Se este domínio estiver recebendo alguma **informação sensível** como um cookie de sessão via **GET** parâmetro ou no cabeçalho **Referer**, isso é com certeza uma **vulnerabilidade**.
|
|
|
|
### Subdomain takeover
|
|
|
|
Um subdomínio da empresa está apontando para um **serviço de terceiros com um nome não registrado**. Se você conseguir **criar** uma **conta** neste **serviço de terceiros** e **registrar** o **nome** que está em uso, você pode realizar o takeover do subdomínio.
|
|
|
|
Existem várias ferramentas com dicionários para verificar possíveis takeovers:
|
|
|
|
- [https://github.com/EdOverflow/can-i-take-over-xyz](https://github.com/EdOverflow/can-i-take-over-xyz)
|
|
- [https://github.com/blacklanternsecurity/bbot](https://github.com/blacklanternsecurity/bbot)
|
|
- [https://github.com/punk-security/dnsReaper](https://github.com/punk-security/dnsReaper)
|
|
- [https://github.com/haccer/subjack](https://github.com/haccer/subjack)
|
|
- [https://github.com/anshumanbh/tko-sub](https://github.com/anshumanbh/tko-subs)
|
|
- [https://github.com/ArifulProtik/sub-domain-takeover](https://github.com/ArifulProtik/sub-domain-takeover)
|
|
- [https://github.com/SaadAhmedx/Subdomain-Takeover](https://github.com/SaadAhmedx/Subdomain-Takeover)
|
|
- [https://github.com/Ice3man543/SubOver](https://github.com/Ice3man543/SubOver)
|
|
- [https://github.com/antichown/subdomain-takeover](https://github.com/antichown/subdomain-takeover)
|
|
- [https://github.com/musana/mx-takeover](https://github.com/musana/mx-takeover)
|
|
- [https://github.com/PentestPad/subzy](https://github.com/PentestPad/subzy)
|
|
- [https://github.com/Stratus-Security/Subdominator](https://github.com/Stratus-Security/Subdominator)
|
|
- [https://github.com/NImaism/takeit](https://github.com/NImaism/takeit)
|
|
|
|
### Subdomain Takeover Generation via DNS Wildcard
|
|
|
|
Quando um wildcard DNS é usado em um domínio, qualquer subdomínio solicitado desse domínio que não tenha um endereço diferente explicitamente será **resolvido para as mesmas informações**. Isso pode ser um endereço IP A, um CNAME...
|
|
|
|
Por exemplo, se `*.testing.com` está wildcarded para `1.1.1.1`. Então, `not-existent.testing.com` estará apontando para `1.1.1.1`.
|
|
|
|
No entanto, se em vez de apontar para um endereço IP, o sysadmin apontar para um **serviço de terceiros via CNAME**, como um subdomínio do G**ithub** por exemplo (`sohomdatta1.github.io`). Um atacante poderia **criar sua própria página de terceiros** (no Github neste caso) e dizer que `something.testing.com` está apontando para lá. Porque, o **CNAME wildcard** concordará que o atacante poderá **gerar subdomínios arbitrários para o domínio da vítima apontando para suas páginas**.
|
|
|
|
Você pode encontrar um exemplo dessa vulnerabilidade no write-up do CTF: [https://ctf.zeyu2001.com/2022/nitectf-2022/undocumented-js-api](https://ctf.zeyu2001.com/2022/nitectf-2022/undocumented-js-api)
|
|
|
|
## Exploiting a subdomain takeover
|
|
|
|
O takeover de subdomínio é essencialmente um spoofing de DNS para um domínio específico na internet, permitindo que atacantes definam registros A para um domínio, levando os navegadores a exibir conteúdo do servidor do atacante. Essa **transparência** nos navegadores torna os domínios propensos a phishing. Os atacantes podem empregar [_typosquatting_](https://en.wikipedia.org/wiki/Typosquatting) ou [_Doppelganger domains_](https://en.wikipedia.org/wiki/Doppelg%C3%A4nger) para esse propósito. Especialmente vulneráveis são os domínios onde a URL em um e-mail de phishing parece legítima, enganando os usuários e evitando filtros de spam devido à confiança inerente do domínio.
|
|
|
|
Verifique este [post para mais detalhes](https://0xpatrik.com/subdomain-takeover/)
|
|
|
|
### **SSL Certificates**
|
|
|
|
Certificados SSL, se gerados por atacantes via serviços como [_Let's Encrypt_](https://letsencrypt.org/), aumentam a legitimidade desses domínios falsos, tornando os ataques de phishing mais convincentes.
|
|
|
|
### **Cookie Security and Browser Transparency**
|
|
|
|
A transparência do navegador também se estende à segurança dos cookies, regida por políticas como a [Same-origin policy](https://en.wikipedia.org/wiki/Same-origin_policy). Cookies, frequentemente usados para gerenciar sessões e armazenar tokens de login, podem ser explorados através do takeover de subdomínio. Os atacantes podem **coletar cookies de sessão** simplesmente direcionando os usuários para um subdomínio comprometido, colocando em risco os dados e a privacidade dos usuários.
|
|
|
|
### CORS Bypass
|
|
|
|
Pode ser possível que cada subdomínio tenha permissão para acessar recursos CORS do domínio principal ou de outros subdomínios. Isso poderia ser explorado por um atacante para **acessar informações sensíveis** abusando de solicitações CORS.
|
|
|
|
### CSRF - Same-Site Cookies bypass
|
|
|
|
Pode ser possível que o subdomínio tenha permissão para enviar cookies para o domínio ou outros subdomínios, o que foi impedido pelo atributo `Same-Site` dos cookies. No entanto, note que tokens anti-CSRF ainda impedirão esse ataque se forem implementados corretamente.
|
|
|
|
### OAuth tokens redirect
|
|
|
|
Pode ser possível que o subdomínio comprometido tenha permissão para ser usado na URL `redirect_uri` de um fluxo OAuth. Isso poderia ser explorado por um atacante para **roubar o token OAuth**.
|
|
|
|
### CSP Bypass
|
|
|
|
Pode ser possível que o subdomínio comprometido (ou qualquer subdomínio) tenha permissão para ser usado, por exemplo, no `script-src` do CSP. Isso poderia ser explorado por um atacante para **injetar scripts maliciosos** e abusar de potenciais vulnerabilidades XSS.
|
|
|
|
### **Emails and Subdomain Takeover**
|
|
|
|
Outro aspecto do takeover de subdomínio envolve serviços de e-mail. Os atacantes podem manipular **registros MX** para receber ou enviar e-mails de um subdomínio legítimo, aumentando a eficácia dos ataques de phishing.
|
|
|
|
### **Higher Order Risks**
|
|
|
|
Outros riscos incluem **NS record takeover**. Se um atacante ganhar controle sobre um registro NS de um domínio, ele pode potencialmente direcionar uma parte do tráfego para um servidor sob seu controle. Esse risco é amplificado se o atacante definir um **TTL (Time to Live)** alto para os registros DNS, prolongando a duração do ataque.
|
|
|
|
### CNAME Record Vulnerability
|
|
|
|
Os atacantes podem explorar registros CNAME não reivindicados que apontam para serviços externos que não estão mais em uso ou foram desativados. Isso permite que eles criem uma página sob o domínio confiável, facilitando ainda mais o phishing ou a distribuição de malware.
|
|
|
|
### **Mitigation Strategies**
|
|
|
|
As estratégias de mitigação incluem:
|
|
|
|
1. **Remover registros DNS vulneráveis** - Isso é eficaz se o subdomínio não for mais necessário.
|
|
2. **Reivindicar o nome do domínio** - Registrar o recurso com o respectivo provedor de nuvem ou recomprar um domínio expirado.
|
|
3. **Monitoramento regular de vulnerabilidades** - Ferramentas como [aquatone](https://github.com/michenriksen/aquatone) podem ajudar a identificar domínios suscetíveis. As organizações também devem revisar seus processos de gerenciamento de infraestrutura, garantindo que a criação de registros DNS seja a última etapa na criação de recursos e a primeira etapa na destruição de recursos.
|
|
|
|
Para provedores de nuvem, verificar a propriedade do domínio é crucial para prevenir takeovers de subdomínio. Alguns, como [GitLab](https://about.gitlab.com/2018/02/05/gitlab-pages-custom-domain-validation/), reconheceram esse problema e implementaram mecanismos de verificação de domínio.
|
|
|
|
## References
|
|
|
|
- [https://0xpatrik.com/subdomain-takeover/](https://0xpatrik.com/subdomain-takeover/)
|
|
- [https://www.stratussecurity.com/post/subdomain-takeover-guide](https://www.stratussecurity.com/post/subdomain-takeover-guide)
|
|
- [https://www.hackerone.com/blog/guide-subdomain-takeovers-20](https://www.hackerone.com/blog/guide-subdomain-takeovers-20)
|
|
|
|
{{#include ../banners/hacktricks-training.md}}
|