Diferenciar Bancos de Dados de Sistema de Bancos de Dados de Usuário
Nesta etapa final, diferenciaremos explicitamente entre bancos de dados de sistema e bancos de dados de usuário com base nos resultados da enumeração. Essa distinção é importante para priorizar suas próximas etapas em um teste de penetração.
Conforme observado na etapa anterior, bancos de dados como information_schema, mysql e performance_schema são tipicamente bancos de dados de nível de sistema. Eles fazem parte da funcionalidade principal do sistema de gerenciamento de banco de dados e geralmente contêm metadados, contas de usuário para o próprio SGBD e estatísticas de desempenho. Embora às vezes possam ser explorados, raramente contêm os dados confidenciais específicos da aplicação que os atacantes geralmente procuram.
Por outro lado, bancos de dados com nomes que não são nomes de sistema padrão (por exemplo, acuart em nosso exemplo, ou webapp_db, users, products, etc.) são geralmente bancos de dados criados pelo usuário. Esses bancos de dados armazenam os dados reais da aplicação web, como:
- Credenciais de usuário (nomes de usuário, senhas com hash)
- Informações de clientes
- Catálogos de produtos
- Registros financeiros
- Outros dados comerciais proprietários
Ao realizar um teste de penetração, após enumerar os bancos de dados, seu foco deve mudar para esses bancos de dados criados pelo usuário. O próximo passo lógico seria enumerar tabelas dentro desses bancos de dados de usuário, depois colunas dentro dessas tabelas e, finalmente, extrair os dados.
Ao entender essa distinção, você pode direcionar eficientemente seus comandos sqlmap subsequentes para extrair as informações mais valiosas. Por exemplo, para enumerar tabelas no banco de dados acuart, você usaria um comando como:
sqlmap -u "http://testphp.vulnweb.com/listproducts.php?cat=1" -D acuart --tables
Este comando demonstra como você prosseguiria para a próxima fase de extração de dados, focando no banco de dados de usuário identificado.