hacktricks/network-services-pentesting/pentesting-web/web-api-pentesting.md

16 KiB

Pentesting de Web API

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

Use Trickest para construir e automatizar fluxos de trabalho com as ferramentas comunitárias mais avançadas do mundo.
Acesse hoje mesmo:

{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}

Informações Básicas

Principal:

Laboratórios

  • VAmPI: VAmPI é uma API vulnerável feita com Flask e inclui vulnerabilidades do OWASP top 10 para APIs.

Truques

SOAP/XML

Esse tipo de API pode ser vulnerável a XXE, mas geralmente as Declarações DTD são desativadas na entrada do usuário.

Você também pode tentar usar tags CDATA para inserir payloads (desde que o XML seja válido)

Verificar Acesso

Normalmente, alguns endpoints da API vão precisar de mais privilégios do que outros. Sempre tente acessar os endpoints mais privilegiados a partir de contas menos privilegiadas (não autorizadas) para ver se é possível.

CORS

Sempre verifique a configuração CORS da API, pois se estiver permitindo o envio de solicitações com credenciais do domínio do atacante, muitos danos podem ser causados por meio de CSRF em vítimas autenticadas.

Padrões

Procure por padrões de API dentro da API e tente usá-los para descobrir mais.
Se você encontrar /api/albums/<album_id>/photos/<photo_id>** ** você também pode tentar coisas como /api/posts/<post_id>/comment/. Use algum fuzzer para descobrir esses novos endpoints.

Adicionar parâmetros

Algo como o exemplo a seguir pode permitir o acesso ao álbum de fotos de outro usuário:
/api/MyPictureList → /api/MyPictureList?user_id=<other_user_id>

Substituir parâmetros

Você pode tentar fuzzar parâmetros ou usar parâmetros que você viu em endpoints diferentes para tentar acessar outras informações.

Por exemplo, se você vir algo como: /api/albums?album_id=<album id>

Você pode substituir o parâmetro album_id por algo completamente diferente e potencialmente obter outros dados: /api/albums?account_id=<account id>

Poluição de parâmetros

/api/account?id=<seu id de conta> → /api/account?id=<seu id de conta>&id=<id da conta do administrador>

Parâmetro curinga

Tente usar os seguintes símbolos como curingas: *, %, _, .

  • /api/users/*
  • /api/users/%
  • /api/users/_
  • /api/users/.

Alteração do método de requisição HTTP

Você pode tentar usar os métodos HTTP: GET, POST, PUT, DELETE, PATCH, INVENTED para verificar se o servidor web fornece informações inesperadas com eles.

Tipo de conteúdo da requisição

Tente brincar com os seguintes tipos de conteúdo (modificando o corpo da requisição) para fazer com que o servidor web se comporte de forma inesperada:

  • x-www-form-urlencoded --> user=test
  • application/xml --> <user>test</user>
  • application/json --> {"user": "test"}

Tipos de parâmetros

Se os dados JSON estiverem funcionando, tente enviar tipos de dados inesperados como:

  • {"username": "John"}
  • {"username": true}
  • {"username": null}
  • {"username": 1}
  • {"username": [true]}
  • {"username": ["John", true]}
  • {"username": {"$neq": "lalala"}}
  • qualquer outra combinação que você possa imaginar

Se você puder enviar dados XML, verifique as injeções XXE.

Se você enviar dados POST regulares, tente enviar arrays e dicionários:

  • username[]=John
  • username[$neq]=lalala

Brinque com as rotas

/files/..%2f..%2f + ID da vítima + %2f + nome do arquivo da vítima

Verifique possíveis versões

Versões antigas ainda podem estar em uso e ser mais vulneráveis do que os endpoints mais recentes

  • /api/v1/login
  • /api/v2/login\
  • /api/CharityEventFeb2020/user/pp/<ID>
  • /api/CharityEventFeb2021/user/pp/<ID>

Verifique possíveis versões (abordagem automatizada)

Extensão AutoRepeater Burp: Adicione uma regra de substituição

  • Tipo: String de Requisição
  • Correspondência: v2 (versão mais alta)
  • Substituir: v1 (versão mais baixa)


Use Trickest para criar e automatizar fluxos de trabalho com facilidade, usando as ferramentas comunitárias mais avançadas do mundo.
Acesse hoje mesmo:

{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}

🛡️ API Security Empire Cheat Sheet


Autor do Cheat Sheet: Momen Eldawakhly (Cyber Guy)

Neste repositório, você encontrará: Mapas mentais, dicas e truques, recursos e tudo relacionado à segurança de API e teste de penetração de API. Nossos mapas mentais e recursos são baseados no OWASP TOP 10 API, em nossa experiência em teste de penetração e em outros recursos para fornecer o recurso de segurança de API e teste de penetração mais avançado e preciso na WEB!!

🚪 Primeiro portão: {{Reconhecimento}}

O primeiro portão para entrar no Império de Segurança de API é saber como coletar informações sobre a infraestrutura da API e como realizar uma reconhecimento poderoso na API para extrair as portas ocultas que podem comprometer toda a infraestrutura, portanto, fornecemos este mapa mental atualizado de Reconhecimento de API com as últimas ferramentas e metodologias em reconhecimento de API:


Versão em PDF | Versão em XMind

⚔️ Armas que você precisará:

🏋️ Teste suas habilidades e armas:

🚪 Segundo portão: {{Ataque}}

Atacando RESTful & SOAP:


Versão em PDF | Versão em XMind\

Atacando GraphQL:

Devido aos ataques limitados no GraphQL, tentamos gerar todos os possíveis ataques com base em nossa experiência em testar APIs no próximo mapa mental:


Versão em PDF | Versão em XMind\

Owasp API Security Top 10

Leia este documento para aprender como pesquisar e explorar as 10 principais vulnerabilidades de API do Owasp: https://github.com/OWASP/API-Security/blob/master/2019/en/dist/owasp-api-security-top-10.pdf

Lista de verificação de segurança de API

{% embed url="https://github.com/shieldfy/API-Security-Checklist" %}

Filtros Logger++ para caçar vulnerabilidades de API

https://github.com/bnematzadeh/LoggerPlusPlus-API-Filters

Lista de possíveis pontos de extremidade de API

https://gist.github.com/yassineaboukir/8e12adefbd505ef704674ad6ad48743d

Ferramentas

  • kiterunner: Ótima ferramenta para descobrir pontos de extremidade de API.
kr scan https://domain.com/api/ -w routes-large.kite -x 20 # Downloaded from kiterunner repo
kr scan https://domain.com/api/ -A=apiroutes-220828 -x 20
kr brute https://domain.com/api/ -A=raft-large-words -x 20 -d=0
kr brute https://domain.com/api/ -w /tmp/lang-english.txt -x 20 -d=0
  • automatic-api-attack-tool: Ferramenta de ataque API personalizável da Imperva que recebe uma especificação de API como entrada, gera e executa ataques baseados nela como saída.
  • Astra: Outra ferramenta para teste de API para encontrar várias vulnerabilidades web diferentes.
  • Susanoo: Scanner de vulnerabilidades de API.
  • restler-fuzzer: RESTler é a primeira ferramenta de fuzzing de API REST com estado para testar automaticamente serviços em nuvem por meio de suas APIs REST e encontrar bugs de segurança e confiabilidade nesses serviços. Para um determinado serviço em nuvem com uma especificação OpenAPI/Swagger, o RESTler analisa toda a especificação e, em seguida, gera e executa testes que exercitam o serviço por meio de sua API REST.
  • TnT-Fuzzer: TnT-Fuzzer é um fuzzer OpenAPI (swagger) escrito em Python.
  • APIFuzzer: O APIFuzzer lê a descrição da sua API e, passo a passo, fuzzes os campos para validar se a sua aplicação consegue lidar com os parâmetros fuzzed.
  • API-fuzzer: O gem API_Fuzzer aceita uma solicitação de API como entrada e retorna vulnerabilidades possíveis na API.
  • race-the-web: Testa condições de corrida em aplicações web enviando um número especificado de solicitações para uma URL (ou URLs) de destino simultaneamente, e então compara as respostas do servidor para verificar a singularidade.

Use Trickest para construir e automatizar fluxos de trabalho com facilidade, utilizando as ferramentas comunitárias mais avançadas do mundo.
Acesse hoje mesmo:

{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥