UchiTech
UchiTech
Desafio - Mass Assignment
0
1

Desafio - Mass Assignment

Fala galera, beleza? Você já conhece a vulnerabilidade considerada pela OWASP a 6ª mais importante em APIs ? Me acompanhe durante a solução de um desafio para aprender mais.

Uchi
1 min
0
1

Fala galera, beleza?

Hoje vou falar um pouco sobre um desafio que o boot passou para gente na mentoria dele, ele nos disponibilizou um laboratório simples onde o objetivo era descobrir alguma forma de transformar o nosso usuário em um administrador para poder visualizar um dado restrito, além de já passar o nome da vulnerabilidade que deveríamos caçar, mass assignment.

Mas o que é o mass assignment?

A definição da vulnerabilidade é:

“Alguns frameworks liberam para que desenvolvedores juntem automaticamente os parâmetros da requisição com variáveis ou objetos do código do programa, facilitando assim a vida do dev. Porém, atacantes podem utilizar essa metodologia para criar novos parâmetros ou até mesmo manipular alguma variável já existente, que por sua vez não passam por nenhum tipo de filtro dentro do código.”

Basicamente, se o desenvolvedor não filtrar o que ele deve receber de uma requisição e acabar utilizando todos os dados que foram recebidos, tudo pode acabar sendo alterado livremente dependendo da funcionalidade.

A exploração

Beleza, agora que já sabemos do que se trata a vulnerabilidade podemos seguir em frente, criei um usuário para poder utilizar durante a exploração e loguei, ao entrar na página principal me deparei com o dado restrito

Email image

logo imaginei que pudesse haver algum atributo do usuário que o tornasse administrador, então eu procurei no código fonte do arquivo principal.php a comparação que era feita nessa parte e pude ver o seguinte trecho de código:

Email image

nele confirmo que o que torna o usuário um administrador é o campo ‘admin’ que nesse caso é um booleano.

Sabendo disso parti para a funcionalidade de alteração de dados, onde ao checar o código do arquivo alterar.php constatei que todo o usuário era atualizado se passasse por 3 condições:

  • tamanho do username > 3
  • tamanho da senha > 3
  • todos os campos enviados fossem atributos do objeto usuário

Liguei o meu burp para fazer a interceptação dessa requisição e enviei uma requisição modificada, com o atributo admin=1 (já que o campo só aceita inteiro) e obtive o seguinte retorno:

Email image

Alteramos o usuário com sucesso e ao entrar na página principal nos deparamos com o dado alterado:

Email image

Conseguindo com sucesso atingir o objetivo de tornar o usuário simples em um usuário administrador.

Espero que tenham aprendido um pouco mais sobre essa pequena vulnerabilidade que pode causar um estrago enorme dependendo de onde ela seja encontrada.

Até mais.