Gerar um relatório de invasão dos sites indexados no vulnweb.com | Teste black-box porém o site oferece conhecimento dos aplicativos rodando em cada endpoint.
- Recon(footprinting + varredura): Coleta de informações sobre o alvo.
- Enumeração: Identificação de serviços em portas abertas, SO que está sendo utilizado.
- Exploit: Explorar falhas encontradas no sistema.
- Relatório: Elaboração deste documento, explicando cada etapa, comandos, tecnologias e resultados com prints.
Os sites, por serem de uma empresa focada em soluções de segurança para empresas, fornece exatamente qual tipo de vulnerabilidade e quais são as tecnologias utilizadas em cada endpoint.
Na aba Technologies temos a stack utilizada e na aba Resources podemos encontrar um artigo, da própria empresa, sobre como mitigar ou informações sobre um possível exploit daquele endpoint específico.
Na fase de reconhecimento foram utilizados os dados do próprio site(vulnweb.com), Google dorks (operações avançadas de busca) exemplo - site:testphp.vulnweb.com +"Index of /admin", pesquisa pelos sites builtwith.com, whois.com e ferramentas de enumeração/exploit automatizadas como: dirb, sqlmap e nmap.
Para identificação dos serviços, IPs, portas abertas e SOs utilizados foi utilizado o NMap, na descrição dos sites temos quais aplicativos estão rodando mas, ainda assim, achei interessante usar essa ferramenta e tirar o máximo dessa atividade prática.
Para enumeração/listagem dos bancos de dados, SGBDs e tabelas, foi utilizado o SQLMap.
Para listagem de diretórios nos websites foi utilizado o DIRB.
A ferramenta que se mostrou muito importante para essa fase foi o SQLMap. Uma vez que o foco dessa avaliação era o SQLInjection.
Para os outros sites eu testei algumas ferramentas como XSSer, BEEF e XSRFProbe.
A vulnerabilidade de Cross Site Scripting foi exemplificada com dois prints presentes no diretório a seguir: diretório
Com estes testes podemos perceber como as vulnerabilidades e erros de código, que são simples de se evitar, podem acabar com a confiabilidade de uma empresa ou prejudicar diversas entidades ao mesmo tempo.
Embora as outras ferramentas não me geraram muitos resultados, por falta de conhecimento, estou estudando ativamente para entender mais sobre essas vulnerabilidades e como utilizar as ferramentas adequadamente. O BEEF é uma ferramenta muito robusta e é possível até rastrear pacotes enviados e recebidos pelo browser.
Por fim, para evitar SQLInjection podemos utilizar queries com parametros e validar a entrada do usuário. Possuo exemplificação em código de uma API que desenvolvi em 2023.
Exemplo de uma query bem construída utilizando node.js e javascript:
Com biblioteca:
const encontrarClientePorEmail = async (email) => {
const clienteEncontrado = await knex('clientes').where({ email }).first();
return clienteEncontrado;
};
Sem biblioteca:
const cadastrarUsuario = async (request, response)=>{
const { nome,email,senha } = request.body;
const { rowCount } = await pool.query(`select email from usuarios where email = $1`,[email]);
const { rows } = await pool.query(
`insert into usuarios (nome,email,senha) values ($1,$2,$3) returning *`,
[nome,email,encryptedPassword] // nessa parte a senha é retornada apenas para cadastro, cortei muita parte do código, no retorno para o client ou front, devemos remover a senha e voltar apenas nome e email.
);
};