Estudo visando a mitigação do ataque
   SQL Injection em aplicações web




           CENTRO UNIVERSITÁRIO UNA / UNATEC
     CURSO DE ANÁLISE E DESENVOLVIMENTO DE SISTEMAS
                    4º PERÍODO NOITE
Projeto Aplicado
•   Apresentação            •   Metodologia
•   Problema Motivador      •   Proposta de Solução
•   Justificativa           •   Conclusão
•   Objetivos               •   Dúvidas
•   Fundamentação Teórica
•   Interdisciplinaridade
Apresentação
• Integrantes:

   – André Andrade
   – Diego Marlon
   – Heberth Moreira
   – Janaína Louback
   – Thiago Sinésio
   – Tiago Carmo
Problema Motivador
• Juntamente com o crescimento da internet surgiram:

   – Riscos do mundo virtual;
   – Invasões;
   – Fraudes.
Justificativa
• Os riscos relacionados à internet cresceram com o avanço da tecnologia;

• Não é possível erradicar todas as vulnerabilidades relacionadas à
  Tecnologia da Informação, no entanto, é necessário torná-las
  gerenciáveis visando reduzir o impacto que podem causar;

• Dentre as diversas falhas existentes, estima-se que 60% dos sistemas
  que são fortemente ligados a um banco de dados são vulneráveis a
  ataques de injeção de código, como por exemplo, o SQL Injection.
Objetivos
• Objetivo Geral:

   – Desenvolver um modelo de solução que demonstre falhas de SQL
     Injection, incentivando aos desenvolvedores o uso de boas práticas bem
     como a propagação do conhecimento necessário para colaborar com o
     aumento da segurança da informação e da segurança na internet.
Objetivos
• Objetivos Específicos:

   – Desenvolver um artigo relacionado ao SQL Injection ;
   – Criar um ambiente de testes que identifique as principais falhas de SQL
     Injection em sites e sistemas para web e apresentar suas soluções;
   – Aplicar os conhecimentos adquiridos durante o curso.
Fundamentação Teórica
•   Segurança na Web;
•   Segurança da Informação;
•   SQL Injection;
•   Trabalhos Relacionados.
Interdisciplinaridade
• Gerência de Projetos:

   – Utilizamos o software
   Artia como ferramenta
   para o gerenciamento e
   distribuição de atividades.

                                  Página de atividades do Artia
Interdisciplinaridade
• Engenharia de Requisitos:

   – A disciplina de engenharia de requisitos visa demonstrar o levantamento
     dos requisitos funcionais e não funcionais de um software;
   – Como nosso trabalho não tem por objetivo o desenvolvimento de um
     software, levantamos como requisito apenas o objetivo geral do trabalho,
     que é demonstrar as melhores práticas para a mitigação de ataques de
     SQL Injection.
Interdisciplinaridade
• Criptografia e Segurança de Sistemas:

   – Foco do trabalho (SQL Injection);
   – Criptografia de senhas na proposta de solução.
Interdisciplinaridade
• Direito e Ética na Computação:

   – Questões éticas da cibercultura englobam o SQL Injection, no entanto no
     Brasil, não existe leis que regulamentam os crimes eletrônicos.
Interdisciplinaridade
• Arquitetura de Sistemas:

   – Na disciplina de arquitetura de sistemas concluímos que é muito
     importante que os softwares tenham uma boa proteção contra o SQL
     Injection. Devido a segurança da informação que deve ser feita, uma vez
     que explorando a falha, podemos obter todas informações da base de
     dados, incluindo acesso a alteração e exclusão dos dados;
   – Essa proteção abrange os quatro pilares da segurança: confiabilidade,
     integridade, disponibilidade e autenticidade.
Metodologia
• Pesquisas:

   – Periódicos científicos;
   – Livros;
   – Sites;
   – Artigos técnicos.
Metodologia
• Ferramentas:

   – XAMPP 1.7.3 (Apache 2.2, MySQL 5.1, PHP 5.3, PHPMyAdmin 3.2);
   – Windows Seven Professional, versão 6.1 (compilação 7600);
   – MySQL Workbench 5.2 CE;
   – PHP, HTML, CSS e JavaScript;
   – Havij 1.15 free (ITSecTeam Security Research);
   – Artia.
Proposta de Solução
• Desenvolvemos o modelo do banco de dados necessário para a
  implementação do ambiente de testes. A estrutura conta
  com uma tabela de usuários e uma de notícias;
• Este ambiente tem falhas propositais para os testes.




                   Modelo gerado com o MySQL Workbench 5.2 CE
Proposta de Solução
• Os testes serão feitos de forma manual pelo método POST
  (formulário de login) e automatizada pelo método GET (URL de
  acesso a notícia).



                                        URL de acesso a notícia



         Formulário de login
Proposta de Solução
• Teste automatizado:

   – Não é necessário conhecimento sobre SQL Injection;
   – A ferramenta utilizada foi o software Havij 1.15 Free;
   – Acesso completo e rápido à base de dados.
Proposta de Solução
• Teste automatizado:




                        Havij – Tela inicial
Proposta de Solução
• Teste automatizado:




                        Havij – Acessando os dados
Proposta de Solução
• Teste manual:




                                                    Tela de administração de conteúdo do sistema,
                                                        onde o hacker conseguiu acesso como
                                                                    administrador.
      SQL Injection manual – Inserindo código SQL
     no campo de usuário para acesso privilegiado
               a área restrita do sistema
Proposta de Solução
• Teste manual: Como funciona?




     O sistema considera a consulta SQL válida,                ...e é retornado um valor do banco de dados, normalmente
    ignorando os parâmetros de usuário e senha                          o primeiro que é o administrador do sistema



Observação: no ambiente de testes com a falha, o campo de senha não é criptografado.
Proposta de Solução
• Boas práticas de desenvolvimento sugeridas pelo The PHP Group:

   – Nunca utilizar o super-usuário (root);
   – Tratamento de tipos de variáveis;
   – Tratamento das entradas do sistema (utilizando métodos de escape);
   – Tratamento de mensagens de erro.
Proposta de Solução
• Teste prático
Conclusão
• A solução para o SQL Injection é muito simples, mas é necessário
  que a equipe de desenvolvimento conheça bem como ele funciona e
  as possibilidades que a linguagem de desenvolvimento fornece para
  evitar esse tipo de ataque.
Dúvidas

Estudo visando a mitigação do ataque sql injection em aplicações web

  • 1.
    Estudo visando amitigação do ataque SQL Injection em aplicações web CENTRO UNIVERSITÁRIO UNA / UNATEC CURSO DE ANÁLISE E DESENVOLVIMENTO DE SISTEMAS 4º PERÍODO NOITE
  • 2.
    Projeto Aplicado • Apresentação • Metodologia • Problema Motivador • Proposta de Solução • Justificativa • Conclusão • Objetivos • Dúvidas • Fundamentação Teórica • Interdisciplinaridade
  • 3.
    Apresentação • Integrantes: – André Andrade – Diego Marlon – Heberth Moreira – Janaína Louback – Thiago Sinésio – Tiago Carmo
  • 4.
    Problema Motivador • Juntamentecom o crescimento da internet surgiram: – Riscos do mundo virtual; – Invasões; – Fraudes.
  • 5.
    Justificativa • Os riscosrelacionados à internet cresceram com o avanço da tecnologia; • Não é possível erradicar todas as vulnerabilidades relacionadas à Tecnologia da Informação, no entanto, é necessário torná-las gerenciáveis visando reduzir o impacto que podem causar; • Dentre as diversas falhas existentes, estima-se que 60% dos sistemas que são fortemente ligados a um banco de dados são vulneráveis a ataques de injeção de código, como por exemplo, o SQL Injection.
  • 6.
    Objetivos • Objetivo Geral: – Desenvolver um modelo de solução que demonstre falhas de SQL Injection, incentivando aos desenvolvedores o uso de boas práticas bem como a propagação do conhecimento necessário para colaborar com o aumento da segurança da informação e da segurança na internet.
  • 7.
    Objetivos • Objetivos Específicos: – Desenvolver um artigo relacionado ao SQL Injection ; – Criar um ambiente de testes que identifique as principais falhas de SQL Injection em sites e sistemas para web e apresentar suas soluções; – Aplicar os conhecimentos adquiridos durante o curso.
  • 8.
    Fundamentação Teórica • Segurança na Web; • Segurança da Informação; • SQL Injection; • Trabalhos Relacionados.
  • 9.
    Interdisciplinaridade • Gerência deProjetos: – Utilizamos o software Artia como ferramenta para o gerenciamento e distribuição de atividades. Página de atividades do Artia
  • 10.
    Interdisciplinaridade • Engenharia deRequisitos: – A disciplina de engenharia de requisitos visa demonstrar o levantamento dos requisitos funcionais e não funcionais de um software; – Como nosso trabalho não tem por objetivo o desenvolvimento de um software, levantamos como requisito apenas o objetivo geral do trabalho, que é demonstrar as melhores práticas para a mitigação de ataques de SQL Injection.
  • 11.
    Interdisciplinaridade • Criptografia eSegurança de Sistemas: – Foco do trabalho (SQL Injection); – Criptografia de senhas na proposta de solução.
  • 12.
    Interdisciplinaridade • Direito eÉtica na Computação: – Questões éticas da cibercultura englobam o SQL Injection, no entanto no Brasil, não existe leis que regulamentam os crimes eletrônicos.
  • 13.
    Interdisciplinaridade • Arquitetura deSistemas: – Na disciplina de arquitetura de sistemas concluímos que é muito importante que os softwares tenham uma boa proteção contra o SQL Injection. Devido a segurança da informação que deve ser feita, uma vez que explorando a falha, podemos obter todas informações da base de dados, incluindo acesso a alteração e exclusão dos dados; – Essa proteção abrange os quatro pilares da segurança: confiabilidade, integridade, disponibilidade e autenticidade.
  • 14.
    Metodologia • Pesquisas: – Periódicos científicos; – Livros; – Sites; – Artigos técnicos.
  • 15.
    Metodologia • Ferramentas: – XAMPP 1.7.3 (Apache 2.2, MySQL 5.1, PHP 5.3, PHPMyAdmin 3.2); – Windows Seven Professional, versão 6.1 (compilação 7600); – MySQL Workbench 5.2 CE; – PHP, HTML, CSS e JavaScript; – Havij 1.15 free (ITSecTeam Security Research); – Artia.
  • 16.
    Proposta de Solução •Desenvolvemos o modelo do banco de dados necessário para a implementação do ambiente de testes. A estrutura conta com uma tabela de usuários e uma de notícias; • Este ambiente tem falhas propositais para os testes. Modelo gerado com o MySQL Workbench 5.2 CE
  • 17.
    Proposta de Solução •Os testes serão feitos de forma manual pelo método POST (formulário de login) e automatizada pelo método GET (URL de acesso a notícia). URL de acesso a notícia Formulário de login
  • 18.
    Proposta de Solução •Teste automatizado: – Não é necessário conhecimento sobre SQL Injection; – A ferramenta utilizada foi o software Havij 1.15 Free; – Acesso completo e rápido à base de dados.
  • 19.
    Proposta de Solução •Teste automatizado: Havij – Tela inicial
  • 20.
    Proposta de Solução •Teste automatizado: Havij – Acessando os dados
  • 21.
    Proposta de Solução •Teste manual: Tela de administração de conteúdo do sistema, onde o hacker conseguiu acesso como administrador. SQL Injection manual – Inserindo código SQL no campo de usuário para acesso privilegiado a área restrita do sistema
  • 22.
    Proposta de Solução •Teste manual: Como funciona? O sistema considera a consulta SQL válida, ...e é retornado um valor do banco de dados, normalmente ignorando os parâmetros de usuário e senha o primeiro que é o administrador do sistema Observação: no ambiente de testes com a falha, o campo de senha não é criptografado.
  • 23.
    Proposta de Solução •Boas práticas de desenvolvimento sugeridas pelo The PHP Group: – Nunca utilizar o super-usuário (root); – Tratamento de tipos de variáveis; – Tratamento das entradas do sistema (utilizando métodos de escape); – Tratamento de mensagens de erro.
  • 24.
  • 25.
    Conclusão • A soluçãopara o SQL Injection é muito simples, mas é necessário que a equipe de desenvolvimento conheça bem como ele funciona e as possibilidades que a linguagem de desenvolvimento fornece para evitar esse tipo de ataque.
  • 26.