Owasp Notes
Owasp Notes
sites possuem páginas que certos usuários não deviam ter acesso, como páginas de
admin ou de outros usuários.
- IDOR é um exemplo
> DICA: olhar os comentários dos códigos fontes SEMPRE, às vezes rola de ter uma
coisinha ou outra
> DICA: programar é uma ótima maneira de entender como a lógica de uma feature pode
ter sido implementada, e como ela pode ser explorada
# Security Misconfiguration
- contas padrão com senhas padrão
- usuário anonymous do ftp
- serviços com configurações inseguras (permissão, acesso, autenticação, etc...) ->
falta de security hardening
- mensagens de erro com muitos detalhes, ou até mesmo a aplicação retornando
mensagens de erro do back-end
- HTTP sem o uso de Secure Headers (como o CSP)
- features desnecessárias (portas abertas sem motivo, páginas, serviços, etc...)
# Software Integrity
- `<script src="https://code.jquery.com/jquery-3.6.1.min.js" integrity="sha256-
o88AwQnZB+VDvE9tvIXrMQaPlFFSUTR+nldQm1LuPXQ=" crossorigin="anonymous"></script>`
- https://www.srihash.org/ -> pode-se usar esse site para gerar hash de arquivos
obtidos por um link de download, dessa forma você garante a integridade desse
arquivo
- isso serve para evitar o uso de um arquivo modificado por um atacante no servidor
do jquery
# JWT
- Header (informações do algoritmo de hash usado na assinatura)
- Payload (os dados de fato)
- Assinatura (um hash gerado por um HMAC da concatenação do header e do payload
juntamente a um secret)
O JWT é apresentado em forma de base64, com um . separando cada campo do token
- Exemplo de JWT:
- Header: {"typ":"JWT","alg":"HS256"}
- Payload: {"username":"guest","exp":1704631635}
- Assinatura: um hash gerado por uma função HMAC
- Esse JWT pode ser vulnerável. É possível alterar o valor de "alg" para "none",
dessa forma o backend da aplicação vai entender que deve armazenar o token sem
realizar a assinatura
- Dessa forma é possível alterar qualquer valor do token (como o username) e roubar
outras contas sem o backend verificar a integridade desse token
# Logs
- Deve logar:
- HTTP status codes
- endereços IP
- usernames
- páginas / endpoints de API acessados
- tempos de acesso
- Atividades suspeitas:
- várias tentativas de acesso não autorizado (pode estar tentando acessar um
painel de admin ou algo do tipo)
- requisições de regiões estranhas (descobertas pela geolocalização do IP)
- uso de ferramentas automatizadas (é fácil de perceber: a velocidade das
requisições e o valor do User-Agent)
- uso de payloads maliciosas (teste de falhas)
# SSRF
- geralmente ocorre quando a aplicação faz uso de serviços de terceiros
- um servidor pode ter uma feature que envia uma requisição para outro servidor
(serviço de terceiros)
- caso seja possível para o usuário alterar qual servidor essa feature vai enviar a
requisição, existe uma possibilidade de SSRF
- é possível fazer com que a feature faça com que o servidor envie uma requisição
para o servidor do atacante, confiando como se fosse um servidor legítimo
- dependendo das informações contidas nessa requisição é possível explorar
diferentes ataques
- enumerar redes internas
- abusar da confiança entre os servidores e conseguir acesso a serviços restritos
- interagir com outros serviços para buscar um RCE
# Injection
- acontece quando o sistema nao sanitiza o input recebido pelo usuario
- Command injection
- XSS
- SQL
# Broken Auth
- brute force
- credenciais fracas
- cookies de sessão previsíveis (como cookies que usam MD5)
- re-registrar (colocar espaço antes do nome pra quebrar a lógica do programador)
# Insecure Deserialization
- deserialization = decodificação (como quando voce converte binario, ou base64 pra
texto)
- a insecure deserialization seria a confiança na decodificacao de dados de uma
fonte insegura (atacante) sem nenhuma verificacao, isso é perigoso, pois esses
dados podem ter sido alterados pela fonte
- um exemplo de insecure deserialization é a confiança em cookies base64 enviados
para o servidor por parte de uma fonte insegura (atacante), que podem ter sido
editados e codificados em base64 antes do envio
- pode levar a RCE quando o servidor executa os comandos decodificados (isso pode
ocorrer quando o servidor passa esse input por uma funcao vulneravel, como o pickle
do python)