Manipulando Cookies
E ai td blzinha?, hoje vamos falar sobre manipulação de cookies e como isso pode ser fatal para aplicações web quando não configurada corretamente pelos desenvolvedores..
O que é um Cookie?
Um cookie HTTP (web cookie, cookie do navegador) é um pequeno pedaço de dados que um servidor envia para o navegador da Web do usuário, semelhante a sessões que a aplicação cria, porem os cookies o navegador pode armazená-los e enviá-los de volta com solicitações posteriores para o mesmo servidor. Normalmente, ele é usado para dizer se duas solicitações vieram do mesmo navegador, manter um usuário logado, validar atributos do usuário, etc….
Bom agora vamos explorar esta falha utilizando um Lab da #OwaspTop10 disponibilizado pelo #TryHackme(https://tryhackme.com/room/owasptop10) #[Severity 8] Insecure Deserialization – Code Execution
Neste laboratório a falha foi identificada dentro da sessão do usuário, então primeiro precisamos nos registrarmos na aplicação e depois realizar o login,



Após realizar o login vamos analisar os cookies gerados na aplicação, para isso entre no modo debug (Pressione F12) de seu navegador.

Já nesta tela temos uma vulnerabilidade critica, pois podemos manipular o tipo de usuário. Veja abaixo oque acontece quando alteramos o valor do cookie “userType” de user para admin.

Perfeito, agora somos admin da aplicação, porem não para por ai, após analisar aplicação identificamos um novo cookie que é gerado quando clicamos no link (Exchange your vim), na pagina de usuário comum.

O que deixa tudo interessante é que quando acessamos o link “Provide yout feedbak” a aplicação decodifica o valor deste cookie “encodedPayload” e, em seguida ele é deserializado via pickle.loads (Essa vulnerabilidade explora Python Pickle)
Sendo assim podemos tentar adicionar um RCE para obtermos uma conexão reversa e uma shell diretamente no servidor da aplicação.
Para esta vulnerabilidade vamos utilizar este script (https://gist.github.com/CMNatic/af5c19a8d77b4f5d8171340b9c560fc3)

Para obtermos uma shell vamos abrir uma porta no nosso host.

agora no campo YOUR_TRYHACKME_VPN_IP do script iremos adicionar o nosso ip e em seguida vamos executa-lo (python rce.py)

este valor que temos na saída da execução do script esta codificado em base64, justamente o mesmo tipo de criptografia utilizado pela aplicação, agora vamos substituir o conteúdo do cookie “encodedPayload” pelo nosso payload

Após alterar atualize a pagina (F5) e clique no link “Provide yout feedbak” para que a aplicação interprete o nosso payload.

Uhuuu, conseguimos acesso ao host.

Bom por hoje é isso, se gostou ou tem alguma dúvida ou sugestão deixe seu comentário…
Nos vemos em um próximo desafio até mais…..