Escolar Documentos
Profissional Documentos
Cultura Documentos
https://www.linkedin.com/in/vitorluigi
• Entender iSQL para o acesso à plataformas, especificidades dos SGBDs e Blind SQL.
• Entender Hardcoded.
• Sua ultima versão (4.7) possui 926 fraquezas e foi lançado dia
28/04/22.
• 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.
• 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.
• A aplicação é vulnerável?
✓ Permite bypass dos controles modificando a URL ou endpoint?
✓ APIs acessando com controles de acesso ausentes para POST, PUT e DELETE?
• Contramedidas
✓ Utilizar uma ferramenta ou biblioteca centralizada para controle de acesso.
✓ 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.
✓ Password: pentestweb
2. Pesquise pelo termo ‘admin’ para ver se existe alguma dica no código-fonte.
4. Observe que carrossel de informações existe um padrão de e-mail apontando para @juice-sh.op.
E-mail: admin@juice-sh.op
Senha: 123456
• Descrição
✓ O foco está nas falhas relacionadas a criptografia (ou ausência
dela).
• A aplicação é vulnerável?
✓ Dados estão sendo transmitidos em texto claro?
o Os protocolos HTTP, SMTP e FTP devem ser sempre avaliados.
o Avaliar o uso do verbo GET, pois dados sensíveis podem ir para logs.
✓ 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
• 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.
• Contramedidas
✓ Classifique o que é dado comum, dado pessoal e dado sensível.
• Descrição
✓ Quase qualquer fonte de dados pode ser um vetor de
injeção.
• A aplicação é vulnerável?
✓ Dados fornecidos pelo usuário não são validados ou sanitizados.
✓ Dados maliciosos são utilizados em query parameters para acesso a dados sensíveis.
o MD5, SHA-1 ou TLS 1.0
• 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") + "'";
• 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)
• Contramedidas
✓ Utilize whitelist para validação do lado do servidor.
o https://senaigo.com.br/createUser?username=xpto&password=1234&admin=true
✓ Password: pentestweb
3. Inicie o webgoat
1. https://localhost:8080/WebGoat
3. Escolha a instrução iSQL onde o sobrenome sempre será validado como verdadeiro.
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).
3. Insira a instrução iSQL que permitira recuperar todos dados da tabela user_data através do
userid.
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’
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.
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