Low Hanging Fruits

Descoberta de serviços

Inicialmente, iremos mapear as APIs presentes na aplicação, para isso devemos navegar por toda a aplicação a fim de mapear endpoints e chamadas da API.

Em seguida com as rotas mapeadas podemos entender qual tipo de API se trata, como REST, GraphQL, SOAP e com isto podemos avançar em nosso pentest.

Com o mapeamento podemos iniciar o processo de fuzzing na API com o intuito de encontrar endpoints referentes a documentação, sensíveis, sem autenticação.

Para esta etapa podem ser utilizadas ferramentas como: ffuf, Dirb, gobuster, wfuzz

Algumas wordlists conhecidas da SecList para pentest em API:

api-endpoints, actions, objects


Avaliação manual

Com o reconhecimento feito, passamos agora para a Avaliação manual, em que vamos explorar as falhas presentes na API em questão.

APIs possuem diversas vulnerabilidades que devem ser testadas, como: Instrospecção de GraphQL, Brute Force, IDOR (Insecure Direct Object References), quebra de controle de acesso, uso de mesma chave de API em ambientes de produção e homologação, entre outras.

Introspecção de GraphQL

A vulnerabilidade de GraphQL Introspection ocorre quando a introspecção da API GraphQL está habilitada em produção, permitindo que qualquer usuário consulte a estrutura da API (tipos, campos, etc.). Isso pode expor informações sensíveis e ajudar atacantes a identificar pontos fracos na API.

Para testar pode ser usado a seguinte query:

{"query": "query IntrospectionQuery{__schema{queryType{name}mutationType{name}subscriptionType{name}types{...FullType}directives{name description locations args{...InputValue}}}}fragment FullType on __Type{kind name description fields(includeDeprecated:true){name description args{...InputValue}type{...TypeRef}isDeprecated deprecationReason}inputFields{...InputValue}interfaces{...TypeRef}enumValues(includeDeprecated:true){name description isDeprecated deprecationReason}possibleTypes{...TypeRef}}fragment InputValue on __InputValue{name description type{...TypeRef}defaultValue}fragment TypeRef on __Type{kind name ofType{kind name ofType{kind name ofType{kind name ofType{kind name ofType{kind name ofType{kind name ofType{kind name}}}}}}}}"}

Podemos utilizar o GraphQL Voyager para termos uma visão mais simplificada da instrospecção e conseguir avançar ainda mais no pentest.

Brute Force

Se refere-se a um ataque onde um atacante envia diversas requisições como senhas ou tokens, até encontrar a correta. Esse tipo de ataque é mais comum em APIs que não possuem mecanismos de segurança adequados para limitar tentativas de autenticação.

Ferramentas utilizadas:

Burp Suite, Hydra

IDOR

IDOR (Insecure Direct Object Reference) é uma vulnerabilidade de segurança que ocorre quando um atacante consegue acessar ou manipular objetos (como dados de usuários, arquivos ou registros) sem a devida autorização, geralmente devido à falta de validação no acesso a recursos.

A API usa URLs como https://api.exemplo.com/users/12345, onde 12345 é o ID de um usuário. Se a API não verificar se o usuário autenticado tem permissão para acessar esse ID, um atacante pode tentar acessar https://api.exemplo.com/users/12344 (ou qualquer outro ID) para obter dados de outro usuário.

Quebra de controle de acesso

Quebra de Controle de Acesso (ou Broken Access Control) é uma vulnerabilidade onde o sistema não consegue impor corretamente as permissões de acesso de um usuário a recursos específicos, permitindo que um atacante acesse, modifique ou exclua dados que não deveria ter permissão para acessar.

Exemplo:

Uma API pode permitir que um usuário com permissões limitadas faça uma requisição para modificar dados que só deveriam ser acessados ou modificados por um administrador.

Uso de mesma chave de API em ambientes de produção e homologação

O uso da mesma chave de API em ambientes de produção e homologação é uma prática de segurança inadequada e pode levar a sérios riscos. Esse erro pode expor dados sensíveis, permitir acesso não autorizado e comprometer a integridade dos sistemas.

Se a chave de API usada em homologação for comprometida, o atacante pode obter acesso ao ambiente de produção, onde dados sensíveis estão armazenados.


Automação

Algumas ferramentas podem ser utilizadas para apoio no processo do pentest, a fim de auxiliar o pentester a cobrir todo o teste na API.

Nuclei

Nuclei é uma ferramenta desenvolvida pela ProjectDiscovery que auxilia em scans na API e em aplicações web utilizando templates.

# Para uma lista de alvos
nuclei -l lista.txt

# Para um único alvo
nuclei -u alvo.com.br

Burp Suite

O próprio Burp Suite pode ser utilizado para fazer scans automatizados na API, basta ir na aba "Targets" e clicar com o botão direito e ir até "Scan" e selecionar as configurações do scan.

Swagger Jacker

Swagger Jacker ferramenta é muito útil quando identificado um endpoint de Swagger, pois através dela podemos automatizar ataques de brute force, automação e visualizar rapidamente quais endpoints se encontram acessíveis sem autenticação.

Atualizado

Isto foi útil?