Authorization

Gerando Erros

Muitas vezes podemos colher informações úteis através de erros. Algumas páginas mostram falhas de código ou de banco ao inserir um [] no final do parâmetro, por exemplo, http://site.com.br/index.php?id=2&serie=angular[].

Procurando por Logins

Caso não consiga verificar se o usuário exista em sistema web, através da mensagem de erro de login, por exemplo, quando recebemos a mensagem Erro: Usuário não existe, podemos verificar se o usuário existe na tela de recuperação de Login.

Gerando Erros em Logout

Clique em sair e em seguida volte no seu navegador, se você entrar na sessão novamente, isso é um problema.

Pegando Informações via JSON

Muitos frameworks atuais, geram automaticamente saídas em diversos formatos (para facilitar a vida de desenvolvedor). Muitas vezes o desenvolvedor pega o valor, trata e manda os dados coerentes para o frontend, porém podemos buscar a saída completa através do JSON que foi retornado. Podemos usar o Ruby on Rails como exemplo de framework que trabalha dessa maneira. Vamos supor que a URL https://meusite.com.br/user/1 traga de volta os dados de um determinado usuário, porém por questões de segurança, os desenvolvedores decidiram tirar o algumas informações sensíveis antes de mandar para o frontend. Seguindo essa ideia, vamos acessar a URL de uma forma diferente, vamos colocar no final a extensão json, ficando assim: https://meusite.com.br/user/1.json. Agora podemos pegar todos os dados desse usuário pois não está passando pelos filtros dos desenvolvedores. OBS.: Não se limite aos conteúdos que você aprende aqui, seja curioso e teste também outras extensão como: xls, xml, js, html, csv, yml, etc.

DICA: Muitos sistemas (ou WAF's) barram arquivos com extensão json, então podemos fazer um bypass da seguinte maneira: curl https://meusite.com.br/user/1 -H 'Accept: application/json'

Alterando Permissão

Ao criar ou alterar um usuário, edite os parêmetros que serão enviados e adicione um campo a mais para ganhar acessos administrativos. Antes de tudo, tente entender a lógica dos parâmetros, por exemplo, se o POST for user[username]=mysther&user[email]=mysther@protonmail.com, você pode adicionar manualmente um parêmetro, ficando: user[username]=mysther&user[email]=mysther@protonmail.com&user[admin]=true. Tente também passar parêmetros, como:

  • user[admin]=

  • user[admin]=1

  • user[admin]=admin

  • user[type]=admin

  • user[type_id]=1

  • user[admin]=Admin

  • user[admin]=True

Last updated