Análise de endpoint — Engenharia Reversa de APIs com Postman

Fernando Silva
5 min readSep 21, 2022

--

Postman é um proxy que captura a requisição HTTP/S

Quando se fala em engenharia reversa de APIs, talvez você pense em espionagem corporativa ou algo ilegal, ou eticamente questionável venha à mente. No entanto, também há motivos legítimos para fazer engenharia reversa de uma API.

Por que fazer engenharia reversa de uma API?

As APIs nem sempre são documentadas. Ao depurar uma API, você pode diagnosticar e resolver problemas mais rapidamente ao visualizar todos os dados enviados e recebidos. Isso permite que você obtenha uma compreensão mais profunda de uma API.

Saber como uma API realmente se comporta permite identificar falhas e vulnerabilidades de segurança, como vazamento acidental de dados. Para realizar isto utilizaremos uma solução de proxy.

O que é um proxy HTTP/S?

Um servidor proxy web é como um intermediário que fica entre a aplicação cliente e o servidor. O proxy web é um servidor substituto que pode interceptar o tráfego HTTP entre um navegador web e o servidor real da aplicação.

Razões para usar um proxy web

  • Monitore e espione o tráfego de rede HTTP gravando e exibindo todo o tráfego entre seu cliente e servidor
  • Oculte seu endereço IP público ao navegar em sites e acessar conteúdo bloqueado
  • Filtre ou redirecione requisições para limitar o acesso ao conteúdo ou otimizar o desempenho dos sistemas

Ferramentas gratuitas de proxy web

  • Postman é uma ferramenta gratuita com vários proxies diferentes, incluindo um proxy integrado para capturar requisições HTTP para Mac, Windows ou Linux
  • Mitmproxy é um proxy de código aberto com uma interface de linha de comando, interface web e API Python
  • Fiddler é um proxy de depuração web gratuito com suporte para uma ampla variedade de navegadores, sistemas e plataformas
  • Burp tem uma edição gratuita da comunidade de um servidor proxy web que permite visualizar e modificar requisições e respostas

No restante deste artigo, demonstrarei um dos métodos que podem ser usados para fazer engenharia reserva de APIs. Usaremos o Postman para coletar requisições de API e criar manualmente uma Collection. Esse método geralmente requer mais tempo, mas vale a pena conhecer caso você esteja em apuros.

Construindo uma Collection no Postman

Inicie o Postman e em seguida, crie um Workspace para salvar suas Collection. Para este artigo, usaremos o Workspace ERA (Engenharia Reversa de API).

Para criar sua própria Collection no Postman com o Proxy, use o botão Capture Requests, localizado na parte inferior direita da janela do Postman.

Na janela Capture Requests, selecione Enable proxy. A porta deve corresponder ao número configurado no FoxyProxy (configure em seu navegador um proxy com a porta 5555). Em seguida, habilite o Postman Proxy, adicione sua URL de destino ao campo “URL must contain” e clique no botão Start Capture.

Abra seu navegador web, navegue até a página de destino (para este exemplo utilizaremos a crAPI) e use FoxyProxy para habilitar a opção Postman. Agora você pode usar a aplicação web crAPI para capturar cada bit de funcionalidade disponível. Isso significa usar todos os recursos. Clique em links, registre-se em uma conta, entre na conta, visite seu perfil, poste comentários em um fórum, etc. O quão completo você usa a aplicação web terá um efeito dominó em quais endpoints e requisições você testará posteriormente. Por exemplo, se você executar as várias ações da aplicação web, mas esqueceu de testar os endpoints da comunidade, terá um ponto cego na superfície de ataque da API.

Por exemplo, certifique-se de realizar todas as ações na página meu perfil:

  • adicionar uma foto de perfil
  • enviar um vídeo pessoal
  • alterar o endereço de e-mail da conta
  • use os três pontos horizontais para encontrar opções adicionais para:
    - alterar vídeo
    - alterar o nome do vídeo
    - compartilhar vídeo com a comunidade

Além disso, use o servidor crAPI MailHog para aproveitar ao máximo esta aplicação. O servidor MailHog está localizado na porta 8025 e será usado para registrar veículos de usuários, redefinir senhas e para onde são enviados os tokens “change email”.

Após capturar todos os recursos que você pode encontrar com a exploração manual, você pode parar o Proxy. Em seguida, é hora de construir a Collection crAPI. Primeiro, crie uma nova Collection selecionando o botão New (lado superior esquerdo do Postman) e escolha Collection.

Vá em frente e renomeie a Collection para crAPI Proxy Collection. Navegue de volta para a sessão de depuração do Proxy e abra a guia Requests.

Selecione todas as requisições que você capturou e use o link “add to Collection” destacado acima. Selecione crAPI Proxy Collection e organize as requisições por Endpoints. Com todas as requisições capturadas adicionadas à crAPI Proxy Collection, você pode organizar a Collection renomeando todas as requisições e agrupando requisições semelhantes em pastas.

Com uma Collection preparada, você deve estar pronto para usar a API de destino como ela foi projetada. Isso permitirá que você veja os vários endpoints e entenda o que é necessário para fazer requisições bem sucedidas.

Uma observação final sobre engenharia reversa de APIs

Este passo-a-passo é apenas a ponta do iceberg de como você pode capturar e inspecionar o tráfego HTTP para começar a entender o que está acontecendo nos bastidores.

Embora essas ferramentas e métodos sejam poderosos e possam ser usados por motivos egoístas, eles podem e devem ser usados para o bem.

Ferramentas como o Postman podem melhorar a visibilidade das requisições do cliente, tornando-as mais fáceis de replicar e ajustar, para que você possa diagnosticar e resolver problemas mais rapidamente. Em última análise, isso ajudará você a obter uma compreensão mais profunda de uma API pública ou privada, especialmente para APIs que não estão bem documentadas.

Referências:

BALL, C. Hacking APIs : breaking web application programming interfaces. San Francisco: No Starch Press, 2022.

--

--

Fernando Silva

Application Security Engineer | OWASP Chapter Leader | AppSec | MSc CyberSecurity | Systems Development Analyst