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