Você está na página 1de 54

PENTEST WEB

VITOR LUIZ RAMOS BARBOSA


O INSTRUTOR

• 11 anos de experiência em segurança cibernética.

• Certificações internacionais CEH, CCISO, PDPF, CCISP (em andamento).

• Coordenador de Segurança da Informação na Saneago até 2021.

• Application Security Specialist no Banco BV.

• Proprietário da UNK Digital.

• Professor universitário na UFG e SENAI. www.unkdigital.com

https://www.linkedin.com/in/vitorluigi

VITOR LUIZ RAMOS BARBOSA – Teste de Vulnerabilidades em Aplicações Web


A DISCIPLINA
• Conhecer tecnologias para servidores e aplicações web.

• Entender a utilização de criptografia em aplicações WEB.

• Conhecer os tipos de testes de vulnerabilidades em servidores e aplicações WEB;

• Entender iSQL para o acesso à plataformas, especificidades dos SGBDs e Blind SQL.

• Entender a injeção de comandos em LDAP, XML e SMTP.

• Entender Hardcoded.

• Entender a enumeração de usuários;

• Conhecer as principais falhas em mecanismos de autenticação e autorização.


VITOR LUIZ RAMOS BARBOSA – Teste de Vulnerabilidades em Aplicações Web
COMMON WEAKNESS ENUMERATION
CWE

• É um catálogo desenvolvido pela comunidade para destacar as


principais fraquezas em software e hardware.

• Fornece um baseline para mitigação e prevenção de fraquezas.

• Mantido pelo Mitre.

• Sua ultima versão (4.7) possui 926 fraquezas e foi lançado dia
28/04/22.

VITOR LUIZ RAMOS BARBOSA – Teste de Vulnerabilidades em Aplicações Web


CWE

• Categorias comuns de CWEs e vulnerabilidades de segurança incluem:


✓ Cross-site scripting
✓ Buffer overflows
✓ Hard-coded passwords
✓ Directory tree/path traversal errors
✓ Race condition
✓ Broken authentication
✓ Injection flaws
✓ Broken access control
✓ XML external entities
✓ Insecure deserialization

VITOR LUIZ RAMOS BARBOSA – Teste de Vulnerabilidades em Aplicações Web


CWE Top 25

VITOR LUIZ RAMOS BARBOSA – Teste de Vulnerabilidades em Aplicações Web


OWASP Top 10

• OWASP é uma organização sem fins lucrativos que trabalha para


melhorar a segurança de softwares.

• Top 10 são os riscos mais críticos para aplicações Web.


✓ Este relatório sai aproximadamente a cada 4 anos – 2013, 2017 e a
última versão foi publicada em 2021.
✓ A cada versão muitos riscos se mantém e adiciona-se outros novos.

VITOR LUIZ RAMOS BARBOSA – Teste de Vulnerabilidades em Aplicações Web


OWASP Top 10

• Toda aplicação que utiliza a Web como infraestrutura está


comumente exposta aos riscos catalogados pelo OWASP.

• Os riscos podem ser atacados de duas maneiras:


✓ Estática – Analisando o código fonte.
Dinâmica – Testando suas vulnerabilidades.

• O OWASP ajuda a entender todas as camadas de segurança que


precisamos implementar para garantir uma aplicação Web segura.
VITOR LUIZ RAMOS BARBOSA – Teste de Vulnerabilidades em Aplicações Web
OWASP Top 10

VITOR LUIZ RAMOS BARBOSA – Teste de Vulnerabilidades em Aplicações Web


OWASP Top 10

• Curiosidades:
✓ Broken Access Control: os dados fornecidos indicam que, em média, 3,81% dos
aplicativos testados tinham uma ou mais (CWEs) nesta categoria de risco, com
mais de 318 mil ocorrências de CWEs.

✓ Injeção ainda é grave, mas após anos deixou a liderança do Top 10. Uma
justificativa para isso é o uso de frameworks de desenvolvimento que
implementam por padrão diversos mecanismos de sanitização de códigos.

VITOR LUIZ RAMOS BARBOSA – Teste de Vulnerabilidades em Aplicações Web


A01:2021 - Broken Access Control

• Descrição
✓ Ocorre quando os usuários podem realizar ações
além do escopo de suas permissões autorizadas.
o Isso pode permitir que invasores roubem informações
de outros usuários, modifiquem dados e executem
ações como outros usuários.

VITOR LUIZ RAMOS BARBOSA – Teste de Vulnerabilidades em Aplicações Web


A01:2021 - Broken Access Control

• A aplicação é vulnerável?
✓ Permite bypass dos controles modificando a URL ou endpoint?

✓ Permite a chave primária ser alterada por outro usuário?

✓ Permite escalação de privilégio?


o Estou logado como usuário comum, mas a aplicação não valida se eu tentar acessar como admin.

✓ APIs acessando com controles de acesso ausentes para POST, PUT e DELETE?

✓ Consigo manipular ou adulterar dados de um token JWT para elevar privilégios?

✓ Consigo abusar da invalidação do JWT?

VITOR LUIZ RAMOS BARBOSA – Teste de Vulnerabilidades em Aplicações Web


A01:2021 - Broken Access Control

• Cenário – App bancário com problemas de permissão horizontal


✓ O invasor observa a seguinte solicitação feita pelo aplicativo ao carregar seu
painel bancário.
o https://mybankingapp.test/cgi-bin/hpe.py?accountId=4462

✓ O invasor modifica a solicitação para usar o número da conta bancária de outro


usuário alterando o parâmetro accountID de 4462 para 4463.
o https://mybankingapp.test/cgi-bin/hpe.py?accountId=4463

✓ A resposta do aplicativo fornece ao invasor os detalhes da conta de outra pessoa.


o {"AccountID": 4463, "Saldo": "$ 167.183,09"}
VITOR LUIZ RAMOS BARBOSA – Teste de Vulnerabilidades em Aplicações Web
A01:2021 - Broken Access Control

• Contramedidas
✓ Utilizar uma ferramenta ou biblioteca centralizada para controle de acesso.

✓ A modelagem de acesso deve impor a propriedade (CRUD).

✓ Com exceção de recursos públicos, o acesso a todos os outros deve ser negado por
padrão.

✓ Desabilitar listagem de diretórios e garantir que dados sensíveis não fiquem disponíveis.

✓ Logar as tentativas de acesso.

✓ Configurar rate limit em APIs.

VITOR LUIZ RAMOS BARBOSA – Teste de Vulnerabilidades em Aplicações Web


LABORATÓRIO 1
!!! ATENÇÃO !!!
Antes de prosseguir, realizar o snapshot da VM

VITOR LUIZ RAMOS BARBOSA – Teste de Vulnerabilidades em Aplicações Web


CONFIGURAÇÃO INICIAL -WINDOWS
• Iniciar a VM PentestWeb_Linux

• Acessar o Parrot com o usuário Pentest Web


✓ Login: senai

✓ Password: pentestweb

• Execute a imagem OWASP Juice Shop


✓ docker run -d -p 3000:3000 bkimminich/juice-shop

• Acesse o Juice Shop pelo navegador Firefox


✓ http://localhost:3000

VITOR LUIZ RAMOS BARBOSA – Teste de Vulnerabilidades em Aplicações Web


OWASP Juice Shop (IDOR)
1. Inicie o Burp Suite e certifique que ele esteja escutando em todas as interfaces.

2. Acesse o Juice Shop e crie uma conta para as atividades.

3. Configure o FoxyProxy para direcionar as requisições para o Burp.

4. Entre no Juice Shop e adicione o item Apple Pomace ao seu carrinho.

VITOR LUIZ RAMOS BARBOSA – Teste de Vulnerabilidades em Aplicações Web


OWASP Juice Shop (IDOR)
5. Volte ao Burp e navegue até a aba Proxy > HTTPHistory.

VITOR LUIZ RAMOS BARBOSA – Teste de Vulnerabilidades em Aplicações Web


OWASP Juice Shop (IDOR)
6. Envie a requisição para o Repeater (Ctrl + R).

7. Manipule a requisição alterando o ID do produto consultado.

VITOR LUIZ RAMOS BARBOSA – Teste de Vulnerabilidades em Aplicações Web


LABORATÓRIO 2
OWASP Juice Shop (Brute Force)

VITOR LUIZ RAMOS BARBOSA – Teste de Vulnerabilidades em Aplicações Web


OWASP Juice Shop (Brute Force)
• Acesse o score-board escondido do Juice Shop
✓ http://localhost:3000/#/score-board

VITOR LUIZ RAMOS BARBOSA – Teste de Vulnerabilidades em Aplicações Web


OWASP Juice Shop (Brute Force)
1. Vamos inspecionar a página e analisar o código-fonte em busca de alguma informação útil.

2. Pesquise pelo termo ‘admin’ para ver se existe alguma dica no código-fonte.

VITOR LUIZ RAMOS BARBOSA – Teste de Vulnerabilidades em Aplicações Web


OWASP Juice Shop (Brute Force)
1. Tente acessar a área de administrador o OWASP Juice Shop com o termo encontrado.

2. Utilizando o parâmetro ‘administration’ não funcionou

VITOR LUIZ RAMOS BARBOSA – Teste de Vulnerabilidades em Aplicações Web


OWASP Juice Shop (Brute Force)
3. Acesse o menu lateral e navegue até a opção ‘about us’.

4. Observe que carrossel de informações existe um padrão de e-mail apontando para @juice-sh.op.

VITOR LUIZ RAMOS BARBOSA – Teste de Vulnerabilidades em Aplicações Web


OWASP Juice Shop (Brute Force)
5. Vamos criar um ataque automatizado no Burp para tentar quebrar a senha do administrador.

6. Efetue logout do seu usuário no Juice Shop.

7. Ative o modo Intercept no proxy Burp.

5. Volte ao Juice Shop e insira no formulário de login.

E-mail: admin@juice-sh.op

Senha: 123456

9. Vá ao Burp e avança as requisições até chegar na que está enviando as credenciais.

VITOR LUIZ RAMOS BARBOSA – Teste de Vulnerabilidades em Aplicações Web


OWASP Juice Shop (Brute Force)

VITOR LUIZ RAMOS BARBOSA – Teste de Vulnerabilidades em Aplicações Web


OWASP Juice Shop (Brute Force)
10. Finalize o modo Intercept.

11. Envie para o Intruder (Ctrl+I) a requisição com os dados de login.

12. Vá os Intruder > Position e limpe o payload.

VITOR LUIZ RAMOS BARBOSA – Teste de Vulnerabilidades em Aplicações Web


OWASP Juice Shop (Brute Force)
13. Vá até a aba Payload e adicione a wordlist 200-200_most_used_password.txt

VITOR LUIZ RAMOS BARBOSA – Teste de Vulnerabilidades em Aplicações Web


OWASP Juice Shop (Brute Force)
14. Volte a aba Positions e adicione o novo payload ao campo de senha.

15. Start Attack e aguarde o resultado.

VITOR LUIZ RAMOS BARBOSA – Teste de Vulnerabilidades em Aplicações Web


A02:2021 –Criptographic Failures

• Descrição
✓ O foco está nas falhas relacionadas a criptografia (ou ausência
dela).

✓ A falha leva a exposição de dados sensíveis.

✓ Em vez de atacar diretamente a criptografia, os invasores roubam


chaves, executam ataques MitM ou roubam dados de texto claro
do servidor, enquanto estão em trânsito ou do cliente do usuário,
por exemplo: navegador ou app mobile.

VITOR LUIZ RAMOS BARBOSA – Teste de Vulnerabilidades em Aplicações Web


A02:2021 –Criptographic Failures

• A aplicação é vulnerável?
✓ Dados estão sendo transmitidos em texto claro?
o Os protocolos HTTP, SMTP e FTP devem ser sempre avaliados.

✓ Dados estão sendo armazenados em texto claro?


o Analisar requisições que passam dados sensíveis para URLs e endpoints.

o Avaliar o uso do verbo GET, pois dados sensíveis podem ir para logs.

✓ Utiliza algoritmos de criptografia ultrapassados ou com fraca entropia?


o MD5, SHA-1 ou TLS 1.0

✓ Não valida a emissão de um certificado digital?

VITOR LUIZ RAMOS BARBOSA – Teste de Vulnerabilidades em Aplicações Web


A02:2021 –Criptographic Failures

• Cenário – Utilizando processo automático de criptografia do Banco de Dados


✓ O aplicativo criptografa números de cartão de crédito em um banco de dados
usando criptografia automática de banco de dados. (DADOS EM REPOUSO!).
o INSERT INTO cartoes (1234567891012345) ➔ hyf789ydfr98qe7ue9r87eqrio0qer987aj

✓ Qualquer busca por valores fará com o que o banco descriptografe os dados para
devolver a aplicação.
o SELECT * FROM cartoes WHERE id=123 ➔ 1234567891012345

✓ Portanto, qualquer falha de SQL Injection na aplicação permitirá ao atacante


acessar os dados descriptografados.
VITOR LUIZ RAMOS BARBOSA – Teste de Vulnerabilidades em Aplicações Web
A02:2021 –Criptographic Failures

• Cenário – Uma aplicação não força o uso de TLS para todas as páginas.
✓ Um invasor sniffa o tráfego de rede, faz downgrade de conexões de HTTPS para
HTTP, intercepta solicitações e rouba o cookie de sessão do usuário.
o Agora que tenho o cookie de sessão posso executar ações na aplicação web me passando pelo
usuário autenticado.

VITOR LUIZ RAMOS BARBOSA – Teste de Vulnerabilidades em Aplicações Web


A02:2021 –Criptographic Failures

• Contramedidas
✓ Classifique o que é dado comum, dado pessoal e dado sensível.

✓ Não armazene dados sensíveis desnecessariamente. Em caso de dados de


cartões, opte pelos serviços de empresas com escopo PCI-DSS.

✓ Criptografe dados pessoais em repouso.

✓ Criptografe dados em trânsito com criptografia TLS forte.

✓ Evite funções criptográficas obsoletas, tais como: MD5 e SHA1.

VITOR LUIZ RAMOS BARBOSA – Teste de Vulnerabilidades em Aplicações Web


A03:2021 – Injection

• Descrição
✓ Quase qualquer fonte de dados pode ser um vetor de
injeção.

✓ As falhas de injeção ocorrem quando um atacante pode


enviar dados maliciosos a um interpretador.

✓ Vulnerabilidades de injeção são frequentemente


encontradas em consultas SQL, LDAP, NoSQL ou
comandos do SO.

✓ Scanners e fuzzers podem ajudar o atacante a encontrar


a falha.

VITOR LUIZ RAMOS BARBOSA – Teste de Vulnerabilidades em Aplicações Web


A03:2021 – Injection

• A aplicação é vulnerável?
✓ Dados fornecidos pelo usuário não são validados ou sanitizados.

✓ Consultas dinâmicas ou não-parametrizadas sem escape são usadas diretamente no


interpretador.

✓ Dados maliciosos são utilizados em query parameters para acesso a dados sensíveis.
o MD5, SHA-1 ou TLS 1.0

✓ Não valida a emissão de um certificado digital?

VITOR LUIZ RAMOS BARBOSA – Teste de Vulnerabilidades em Aplicações Web


A03:2021 – Injection

• Cenário 1 – Uma aplicação usa dados não confiáveis para consulta SQL
string query = "SELECT \* FROM accounts WHERE custID='" + request.getParameter("id") + "'";

• Cenário 2 – Exemplo que confiança no uso de Framework (Hibernate)


Query HQLQuery = session.createQuery("FROM accounts WHERE custID='" +
request.getParameter("id") + "'");

• Em ambos os casos o atacante modificou o valor do parâmetro id para enviar ‘ or


‘1’=’1
✓ http://exemplo.com/app/accountView?id=' or '1'='1

VITOR LUIZ RAMOS BARBOSA – Teste de Vulnerabilidades em Aplicações Web


A03:2021 – Injection

• Contramedidas
✓ Utilizar ferramentas de análise estática (SAST), dinâmica (DAST) e interativa de
aplicações.
o Integrar ferramentas dentro da pipeline de CI/CD

✓ Não sanitizar o código manualmente, prefira utilizar APIs seguras para isso. Por
exemplo: Java PreparedStatement.
PreparedStatement pstmt = con.prepareStatement("UPDATE
EMPLOYEES
SET SALARY = ? WHERE ID = ?");
pstmt.setBigDecimal(1, 153833.00)
pstmt.setInt(2, 110592)

VITOR LUIZ RAMOS BARBOSA – Teste de Vulnerabilidades em Aplicações Web


A03:2021 – Injection

• Contramedidas
✓ Utilize whitelist para validação do lado do servidor.
o https://senaigo.com.br/createUser?username=xpto&password=1234&admin=true

✓ Utilize o LIMIT nas consultas para prevenir descobertas de dados em massa.


o select * from Usuario Where email=‘” + email + “ ‘ and senha =‘” + senha “’ limit 1”;

VITOR LUIZ RAMOS BARBOSA – Teste de Vulnerabilidades em Aplicações Web


LABORATÓRIO
!!! ATENÇÃO !!!
Antes de prosseguir, realizar o snapshot da VM

VITOR LUIZ RAMOS BARBOSA – Teste de Vulnerabilidades em Aplicações Web


CONFIGURAÇÃO INICIAL -WINDOWS
• Iniciar a VM PentestWeb_Linux

• Acessar o Parrot com o usuário Pentest Web


✓ Login: senai

✓ Password: pentestweb

VITOR LUIZ RAMOS BARBOSA – Teste de Vulnerabilidades em Aplicações Web


WEBGOAT
1. Inicie o WebGOAT

2. Navegue até o diretório /usr/local/PentestWeb/tools/

3. Inicie o webgoat

4. sudo java -jar webgoat-server-8.1.0.jar

5. Acesse o WebGOAT pelo navegador

1. https://localhost:8080/WebGoat

VITOR LUIZ RAMOS BARBOSA – Teste de Vulnerabilidades em Aplicações Web


WEBGOAT
• Crie uma conta para seu uso no WebGOAT

VITOR LUIZ RAMOS BARBOSA – Teste de Vulnerabilidades em Aplicações Web


WEBGOAT
1. Navegue até a lição (A1) Injection (intro).

2. Navegue até a lição 9.

3. Escolha a instrução iSQL onde o sobrenome sempre será validado como verdadeiro.

VITOR LUIZ RAMOS BARBOSA – Teste de Vulnerabilidades em Aplicações Web


WEBGOAT
• Solução

QUERY ORIGINAL
"SELECT * FROM user_data WHERE first_name = 'John' AND last_name = '" + lastName + “’”;
iSQL
SELECT * FROM user_data WHERE first_name = 'John' AND last_name = 'Smith' or '1'='1
VITOR LUIZ RAMOS BARBOSA – Teste de Vulnerabilidades em Aplicações Web
WEBGOAT
1. Navegue até a lição (A1) Injection (intro).

2. Navegue até a lição 10.

3. Insira a instrução iSQL que permitira recuperar todos dados da tabela user_data através do
userid.

VITOR LUIZ RAMOS BARBOSA – Teste de Vulnerabilidades em Aplicações Web


WEBGOAT
• Solução

CONSULTA ORIGINAL
SELECT * FROM user_data WHERE login_count = “ + Login_count + “ AND userid = “ + User_ID;
iSQL
SELECT * FROM user_data WHERE login_count = 1 AND userid = 1 OR '1' = '1’

VITOR LUIZ RAMOS BARBOSA – Teste de Vulnerabilidades em Aplicações Web


WEBGOAT
1. Navegue até a lição (A1) Injection (intro).

2. Navegue até a lição 12.

3. Crie uma injeção de SQL para mudar o valor do salário de John Smith para ser maior do que o
de outros funcionários.

VITOR LUIZ RAMOS BARBOSA – Teste de Vulnerabilidades em Aplicações Web


WEBGOAT
• Solução

CONSULTA ORIGINAL
"SELECT * FROM employees WHERE last_name = '" + name + "' AND auth_tan = '" + auth_tan + "';
iSQL
SELECT * FROM employees WHERE last_name = 'Smith' AND auth_tan = 3SL99A' ; UPDATE employees SET
salary=1000000 WHERE auth_tan='3SL99A'--
VITOR LUIZ RAMOS BARBOSA – Teste de Vulnerabilidades em Aplicações Web

Você também pode gostar