Diário de Bordo – Júlio César Costa
Disciplina: Gerência de Configuração e Evolução de Software
Equipe: OWASP Red Team
Comunidade/Projeto de Software Livre: Pencil Labs / EJ-Application
Sprint 2 - 23-09-2025 - 07-10-2025
Resumo da Sprint
Ataques de pentest com foco em SQL Injection em ambiente local usando Docker, Kali Linux, SQLMap e BurpSuite.
Atividades Realizadas
Data | Atividade | Tipo (Código/Doc/Discussão/Outro) | Link/Referência | Status |
---|---|---|---|---|
25/09 | Estudo sobre a ferramenta SQLMap | Estudo | Documentação | Concluído |
27/09 | Estudo sobre a ferramenta BurpSuite | Outro | Documentação | Concluído |
04/09 | Pentest usando SQLMap na aplicação rodando localmente | Outro | - | Concluído |
Sistema Usado
Foi usado o sistema Kali Linux, muito usado para testes de penetração derivado do Debian com várias ferramentas pré-instaladas, inclusive as que usei para os testes de SQL Injection.
Ferramentas
SQLMap
Esta ferramenta foi essencial para a verificação massiva de scripts SQL incluindo muitas opções avançadas, para utiliza-la é necessário passar como argumento a URL da requisição GET ou POST, opcionalmente é possível informar cookies, especificar níveis de testes e nível de risco, como este é um teste local e não estou preocupado com detecção foram testados os maiores níveis --level=5 --risk=3
.
BurpSuite Community Edition
Esta é uma ferramenta closed-source muito utilizada para auditoria e testes de penetração possuindo versões pagas e uma versão free, foi utilizada de forma bastante básica apenas para navegar o site como um usuário e obter as requisições GET e POST para serem usadas no SQLMap.
Passo a Passo
Obtenção das Requisições GET e POST
Foi utilizado o BurpSuite na aba Proxy/Intercept, clicando na opção de abrir Browser, que irá abrir um browser Chromium normal, a partir dele entrei na conta fake de testes como usuário (user@user.com) presente no banco de dados postgres através do comando inv docker-exec 'inv db-fake'
e realizei ações comuns do usuário como criar um dashboard, personas, alterar informações do usuário logado, etc.
O BurpSuite manteve um histórico de todas as requisições feitas nesta sessão através da aba Proxy/HTTP History, selecionei todas as requisições desse histórico e salvei em um arquivo xml que será passado como argumento para o SQLMap
Teste SQL Injection
Para o teste foi executado o seguinte comando:
sqlmap -l burg_log.xml --batch --level 5 --risk 3 --dbms postgres
-l
: Comando especifico para obter alvos através de um arquivo log do BurpSuite ou WebScarabburg_log.xml
: Arquivo de log obtido através do Proxy do BurpSuite--batch
: Não perguntar por confirmações e selecionar as opções padrões--level 5
: Nível máximo de quantidade de testes a serem realizados--risk 3
: Nível de risco máximo, com alta chance de ser detectado (não é importante neste caso)--dbms postgres
: Informa o SQLMap para usar apenas scripts especificos para postgres, usado na EJ Application, se não informado o SQLMap irá tentar scripts de vários banco de dados diferentes como Oracle, MySQL e outros.
Resultado
Não foram encontrados pontos de falha SQL Injection utilizando SQLMap, apesar de ele ter encontrado alguns falsos positivos:
- Em localhost/boards/teste/conversations/add/ usando SQL Injection no User-Agent com técnicas boolean blind based
- Em localhost/boards/teste/conversations usando SQL Injection no Cookie de sessionid com técnicas boolean blind based
Target URL,Place,Parameter,Technique(s),Note(s)
http://10.0.0.5:8000/boards/teste/conversations/,Cookie,sessionid,B,false positive or unexploitable
http://10.0.0.5:8000/boards/teste/conversations/add/,User-Agent,User-Agent,B,false positive or unexploitable
Maiores Dificuldades
Tive dificuldades para conseguir acessar a aplicação rodando em Docker locamente a partir do Kali Linux rodando em uma máquina virtual no VMWare, configurei a rede da máquina para ela estar na mesma rede local que o meu computador host, mas com um diferente IP, e aparentemente por padrão o ambiente de desenvolvimento só pode ser acessado em localhost, para corrigir isso tive que ir no arquivo ej-application/docker/variables.env
e alterei a variável de ambiente DJANGO_ALLOWED_HOSTS
para adicionar o meu IP local da máquina host onde está rodando o Docker, feito isso consegui acessar o site local através do Kali Linux identificando na URL http://\<IP MAQUINA LOCAL>:8000
Aprendizados
Aprendi pelo menos de uma forma básica como é feito testes de SQL Injection usando SQLMap que não havia utilizado antes, apesar de já ter conhecido, a ferramenta BurpSuite também não havia experiência de uso.
Plano Pessoal para a Próxima Sprint
[ ] Rodar testes mais profundos de SQL Injection e testar falsos positivos manualmente usando BurpSuite