Use [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para construir e **automatizar fluxos de trabalho** com facilidade, utilizando as ferramentas comunitárias mais avançadas do mundo.\
* Você trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? Ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e para o** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
A vulnerabilidade de falsificação de solicitação do lado do servidor (também conhecida como SSRF) é uma vulnerabilidade de segurança na web que permite que um atacante **induza a aplicação do lado do servidor a fazer solicitações HTTP para um domínio arbitrário** escolhido pelo atacante. (De [aqui](https://portswigger.net/web-security/ssrf))
A primeira coisa que você precisa fazer é capturar uma interação SSRF provocada por você. Para capturar uma interação HTTP ou DNS, você pode usar ferramentas como:
Normalmente, você descobrirá que o SSRF só funciona em **certos domínios ou URLs na lista de permissões**. Na página a seguir, você encontrará uma **compilação de técnicas para tentar burlar essa lista de permissões**:
Se o servidor estiver corretamente protegido, você poderá **burlar todas as restrições explorando um redirecionamento aberto dentro da página da web**. Como a página da web permitirá **SSRF para o mesmo domínio** e provavelmente **seguirá redirecionamentos**, você pode explorar o **redirecionamento aberto para fazer com que o servidor acesse qualquer recurso interno**.\
Leia mais aqui: [https://portswigger.net/web-security/ssrf](https://portswigger.net/web-security/ssrf)
Protocolo de Acesso a Diretório Leve. É um protocolo de aplicação usado em uma rede IP para gerenciar e acessar o serviço de informações de diretório distribuído.
Usando esse protocolo, você pode especificar o **IP, porta e bytes** que deseja que o servidor **envie**. Em seguida, você pode basicamente explorar um SSRF para **comunicar-se com qualquer servidor TCP** (mas você precisa saber como falar com o serviço primeiro).\
Felizmente, você pode usar o [Gopherus](https://github.com/tarunkant/Gopherus) para criar payloads para vários serviços. Além disso, o [remote-method-guesser](https://github.com/qtc-de/remote-method-guesser) pode ser usado para criar payloads _gopher_ para serviços _Java RMI_.
O Gopher HTTP é uma técnica de ataque que explora vulnerabilidades de SSRF (Server-Side Request Forgery) para enviar solicitações HTTP a partir do servidor alvo. Essa técnica permite que um invasor acesse recursos internos da rede, como arquivos, serviços e APIs, através de requisições HTTP feitas pelo servidor.
O nome "Gopher" vem do protocolo Gopher, que foi popular na década de 1990 para compartilhar documentos e recursos na internet. No entanto, o Gopher HTTP não está relacionado ao protocolo Gopher em si, mas sim ao uso de URLs com o esquema "gopher://" para explorar vulnerabilidades SSRF.
Para realizar um ataque de Gopher HTTP, o invasor precisa encontrar uma vulnerabilidade SSRF em um aplicativo web. Essa vulnerabilidade permite que o invasor controle a URL de destino das solicitações HTTP feitas pelo servidor. O invasor então utiliza uma URL com o esquema "gopher://" para direcionar a solicitação para um servidor controlado por ele.
Ao explorar uma vulnerabilidade SSRF com o Gopher HTTP, o invasor pode realizar várias ações maliciosas, como:
- Acessar recursos internos da rede, como arquivos e bancos de dados.
- Escanear portas e serviços internos.
- Atacar outros sistemas e serviços na rede interna.
- Extrair informações sensíveis, como credenciais de autenticação.
Para se proteger contra ataques de Gopher HTTP e outras vulnerabilidades SSRF, é importante implementar práticas de segurança adequadas, como:
- Validar e filtrar as URLs de destino das solicitações HTTP.
- Restringir o acesso a recursos internos da rede.
- Utilizar listas brancas de URLs permitidas.
- Manter os sistemas e aplicativos atualizados com as últimas correções de segurança.
No entanto, é importante ressaltar que a melhor maneira de se proteger contra ataques de Gopher HTTP é realizar testes de penetração regulares em seus aplicativos web para identificar e corrigir vulnerabilidades SSRF antes que sejam exploradas por invasores.
Se o SSRF for executado pelo **curl**, o curl possui um recurso chamado [**URL globbing**](https://everything.curl.dev/cmdline/globbing) que pode ser útil para contornar WAFs. Por exemplo, neste [**writeup**](https://blog.arkark.dev/2022/11/18/seccon-en/#web-easylfi), você pode encontrar este exemplo de **travessia de caminho via protocolo `file`**:
Algumas aplicações utilizam software de análise do lado do servidor que rastreia visitantes. Esse software geralmente registra o cabeçalho Referrer nas solicitações, pois isso é de particular interesse para rastrear links de entrada. Muitas vezes, o software de análise realmente visita qualquer URL de terceiros que aparece no cabeçalho Referrer. Isso é feito para analisar o conteúdo dos sites de referência, incluindo o texto âncora usado nos links de entrada. Como resultado, o cabeçalho Referer muitas vezes representa uma superfície de ataque frutífera para vulnerabilidades SSRF.\
Para descobrir esse tipo de vulnerabilidade "oculta", você pode usar o plugin "**Collaborator Everywhere**" do Burp.
Com essa configuração insegura, podemos **explorar a vulnerabilidade SSRF simplesmente especificando o IP ou nome de domínio desejado no campo SNI**. Por exemplo, o seguinte comando forçaria o Nginx a se conectar a _internal.host.com_:
Se a página da web estiver criando automaticamente um PDF com algumas informações fornecidas por você, você pode **inserir algum JS que será executado pelo próprio criador de PDF** (o servidor) ao criar o PDF e você poderá abusar de um SSRF. [**Encontre mais informações aqui**](../xss-cross-site-scripting/server-side-xss-dynamic-pdf.md)**.**
Para algumas explorações, você pode precisar **enviar uma resposta de redirecionamento** (potencialmente para usar um protocolo diferente, como gopher). Aqui estão diferentes códigos python para responder com um redirecionamento:
Use [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para construir e automatizar facilmente fluxos de trabalho com as ferramentas comunitárias mais avançadas do mundo.\
Se você está tendo **problemas** para **extrair conteúdo de um IP local** por causa do **CORS/SOP**, o **DNS Rebidding** pode ser usado para contornar essa limitação:
[**`Singularity of Origin`**](https://github.com/nccgroup/singularity) é uma ferramenta para realizar ataques de [DNS rebinding](https://en.wikipedia.org/wiki/DNS\_rebinding). Ele inclui os componentes necessários para vincular o endereço IP do servidor de ataque ao nome DNS da máquina de destino e para servir payloads de ataque para explorar software vulnerável na máquina de destino.
3. É criada uma **conexão TLS** entre a vítima e o domínio do atacante. O atacante introduz o **payload dentro** do **ID da Sessão ou Ticket da Sessão**.
4. O **domínio** iniciará um **loop infinito** de redirecionamentos contra **ele mesmo**. O objetivo disso é fazer com que o usuário/bot acesse o domínio até que ele faça **novamente** uma **solicitação DNS** do domínio.
5. Na solicitação DNS, é fornecido um endereço IP **privado** (por exemplo, 127.0.0.1)
6. O usuário/bot tentará **restabelecer a conexão TLS** e, para fazer isso, ele enviará o **ID da Sessão/Ticket da Sessão** (onde o **payload** do atacante estava contido). Parabéns, você conseguiu fazer com que o **usuário/bot atacasse a si mesmo**.
Observe que, durante esse ataque, se você quiser atacar localhost:11211 (_memcache_), você precisa fazer com que a vítima estabeleça a conexão inicial com www.attacker.com:11211 (a **porta deve ser sempre a mesma**).\
Para **realizar esse ataque, você pode usar a ferramenta**: [https://github.com/jmdx/TLS-poison/](https://github.com/jmdx/TLS-poison/)\
Para **mais informações**, confira a palestra onde esse ataque é explicado: [https://www.youtube.com/watch?v=qGpAJxfADjo\&ab\_channel=DEFCONConference](https://www.youtube.com/watch?v=qGpAJxfADjo\&ab\_channel=DEFCONConference)
A diferença entre um SSRF às cegas e um que não é às cegas é que no às cegas você não consegue ver a resposta da solicitação SSRF. Portanto, é mais difícil de explorar, pois você só poderá explorar vulnerabilidades conhecidas.
**Verificando o tempo** das respostas do servidor, pode ser **possível saber se um recurso existe ou não** (talvez leve mais tempo para acessar um recurso existente do que acessar um que não existe)
Se você encontrar uma vulnerabilidade de SSRF em uma máquina em execução em um ambiente de nuvem, poderá obter informações interessantes sobre o ambiente de nuvem e até mesmo credenciais:
_remote-method-guesser_ é um scanner de vulnerabilidades do _Java RMI_ que suporta operações de ataque para a maioria das vulnerabilidades comuns do _Java RMI_. A maioria das operações disponíveis suporta a opção `--ssrf`, para gerar um payload _SSRF_ para a operação solicitada. Juntamente com a opção `--gopher`, payloads _gopher_ prontos para uso podem ser gerados diretamente.
SSRF Proxy é um servidor proxy HTTP multithread projetado para direcionar o tráfego HTTP do cliente por meio de servidores HTTP vulneráveis a Server-Side Request Forgery (SSRF).
* Você trabalha em uma **empresa de cibersegurança**? Você quer ver sua **empresa anunciada no HackTricks**? ou você quer ter acesso à **versão mais recente do PEASS ou baixar o HackTricks em PDF**? Confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtenha o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e o** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
Use [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) para construir e **automatizar fluxos de trabalho** com facilidade, utilizando as ferramentas comunitárias mais avançadas do mundo.\