16 KiB
Pentesting de Web API
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- Você trabalha em uma empresa de segurança cibernética? Você quer ver sua empresa anunciada no HackTricks? ou você quer ter acesso à última versão do PEASS ou baixar o HackTricks em PDF? Verifique os PLANOS DE ASSINATURA!
- Descubra A Família PEASS, nossa coleção exclusiva de NFTs
- Adquira o swag oficial do PEASS & HackTricks
- Junte-se ao 💬 grupo Discord ou ao grupo telegram ou siga-me no Twitter 🐦@carlospolopm.
- Compartilhe suas técnicas de hacking enviando PRs para o repositório hacktricks e repositório hacktricks-cloud.
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:
- Serviços Web (SOAP/XML)
- A documentação usa o formato WSDL e geralmente é salva no caminho
?wsdl
, comohttps://api.example.com/api/?wsdl
- Um exemplo dessa documentação pode ser encontrado em http://www.dneonline.com/calculator.asmx (documento WSDL em http://www.dneonline.com/calculator.asmx?wsdl) e você pode ver um exemplo de solicitação chamando o método
Add
em http://www.dneonline.com/calculator.asmx?op=Add - Para analisar esses arquivos e criar solicitações de exemplo, você pode usar a ferramenta SOAPUI ou a extensão WSDLer do Burp Suite.
- APIs REST (JSON)
- A documentação padrão é o arquivo WADL. Encontre um exemplo aqui: https://www.w3.org/Submission/wadl/. No entanto, existem outras ferramentas de representação de API mais amigáveis para desenvolvedores, como https://swagger.io/tools/swagger-ui/ (verifique a demonstração na página)
- Para analisar esses arquivos e criar solicitações de exemplo, você pode usar a ferramenta Postman
- GraphQL
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 🎥
- Você trabalha em uma empresa de segurança cibernética? Gostaria de ver sua empresa anunciada no HackTricks? Ou gostaria de ter acesso à versão mais recente do PEASS ou baixar o HackTricks em PDF? Confira os PLANOS DE ASSINATURA!
- Descubra The PEASS Family, nossa coleção exclusiva de NFTs
- Adquira o swag oficial do PEASS & HackTricks
- Junte-se ao 💬 grupo Discord ou ao grupo Telegram ou siga-me no Twitter 🐦@carlospolopm.
- Compartilhe suas técnicas de hacking enviando PRs para o repositório hacktricks e para o repositório hacktricks-cloud.