Ajudando desenvolvedor a testar requisito de segurança
Olá pessoal, resolvi criar esse post rápido pela dúvida que muitos devs possuem com relação a testar pontos de segurança. Isso ocorre principalmente por conta de reports que trazem a requisição explorada. Dessa maneira, muitos desenvolvedores não sabem como replicar a ação para testarem e analisarem se corrigiram corretamente uma vulnerabilidade.
# Primeiro passo
Instalar Postman ou Insomnia- apps utilizados para testar as requisições/APIs
# Segundo passo
Copiar a requisição. Isso vem geralmente de um cURL.
No exemplo abaixo, estamos realizando uma requisição POST
Copiamos o cURL que geralmente encontramos nos relatórios
curl 'http://127.0.0.1:8085/blog' -X POST -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:109.0) Gecko/20100101 Firefox/113.0' -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8' -H 'Accept-Language: pt-BR,pt;q=0.8,en-US;q=0.5,en;q=0.3' -H 'Accept-Encoding: gzip, deflate, br' -H 'Content-Type: application/x-www-form-urlencoded' -H 'Origin: http://127.0.0.1:8085' -H 'Connection: keep-alive' -H 'Referer: http://127.0.0.1:8085/blog' -H 'Cookie: adminer_permanent=; session=0e016703-c1de-4013-b9bc-924d5c9fe2ec' -H 'Upgrade-Insecure-Requests: 1' -H 'Sec-Fetch-Dest: document' -H 'Sec-Fetch-Mode: navigate' -H 'Sec-Fetch-Site: same-origin' -H 'Sec-Fetch-User: ?1' --data-raw 'comment=%3Cscript%3Ealert%281%29%3C%2Fscript%3E'
# Terceiro passo
Usamos no Insomnia, por exemplo:
Copiar o cURL para dentro do Insomnia conforme abaixo:
New Document > Import/Export > Import Data > From clipboard
# Quarto passo
Checar a resposta da requisição e salvar no arquivo HTML
- Após ter realizada a alteração no código, utilize esse código HTML e abra no navegador, pois o mesmo irá reproduzir a requisição POST. Você pode fazer o mesmo com requisição GET, mas esse é mais fácil por manipular a URL diretamente
return render_template('index.html', comments=escape(comment))
ou salvar a requisição via terminal > test.html:
curl 'http://127.0.0.1:8085/blog' -X POST -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:109.0) Gecko/20100101 Firefox/113.0' -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8' -H 'Accept-Language: pt-BR,pt;q=0.8,en-US;q=0.5,en;q=0.3' -H 'Accept-Encoding: gzip, deflate, br' -H 'Content-Type: application/x-www-form-urlencoded' -H 'Origin: http://127.0.0.1:8085' -H 'Connection: keep-alive' -H 'Referer: http://127.0.0.1:8085/blog' -H 'Cookie: adminer_permanent=; session=0e016703-c1de-4013-b9bc-924d5c9fe2ec' -H 'Upgrade-Insecure-Requests: 1' -H 'Sec-Fetch-Dest: document' -H 'Sec-Fetch-Mode: navigate' -H 'Sec-Fetch-Site: same-origin' -H 'Sec-Fetch-User: ?1' --data-raw 'comment=' > test.html
Espero que tenha ajudado vocês 💜