Primeiras aulas do curso Segurança Web: Vulnerabilidades do seu sistema e OWASP

Segurança Web: Vulnerabilidades do seu sistema e OWASP

SQL Injection - Introdução

O curso Segurança Web: Vulnerabilidades do seu sistema e OWASP tem a proposta de ser prático, portanto, utilizaremos um ambiente criado para simular sua segurança fazendo testes. No curso estaremos interagindo, basicamente, com três elementos:

  1. Um computador simulando um hacker

  2. O servidor web com algumas aplicações em situações de vulnerabilidade

  3. O próprio computador da gravação do curso que será uma suposta vítima acessando as páginas de sites vulneráveis

A proposta é analisar a interação desses três elementos entre si.

Para criar um ambiente controlado é recomendável que sua máquina possua no mínimo 4 GB de RAM, o ideal seriam 8 GB, mas a metade disso já é suficiente para começar a praticar. Caso você não tenha um computador com essa capacidade, é possível utilizar duas máquinas, uma delas será o hacker e a outro o servidor.

O que será abordado no curso?

SQL Injection - Configurando o ambiente

O que acontece quando acessamos um site na Internet?

Primeiro abrimos o browser, na barra de endereço digitamos o site desejado. Por exemplo, o site do www.itau.com.br. Ao fazer isso a página desejada será carregada. Esse site está armazenado em alguma região do mundo. Ao mesmo tempo que realizamos essa ação, existem outras pessoas no mundo fazendo o mesmo procedimento, simultaneamente.

Nosso objetivo é aprender sobre segurança, entretanto, não podemos fazer testes de vulnerabilidade com sites reais da Internet, pois esse é um procedimento ilegal. Será preciso criar um cenário controlado por nós para que possamos realizar testes e exercícios desejados. Resumindo, teremos três elementos: Rafael, a vítima João, o hacker e o servidor web.

Como estamos utilizando apenas um computador, será preciso criar um ambiente virtual. Ou seja, instalar em uma mesma máquina um ambiente de servidor e outro de hacker. Existem várias maneiras de recriar um ambiente, por motivos didáticos optaremos pela máquina virtual.

Para construir esse ambiente utilizaremos o programa chamado Virtual Box que pode ser acessado clicando aqui. Na primeira página já visualizamos as versões disponíveis para os diferentes sistemas:

Selecione o pacote desejado e quando este estiver finalizado, basta clicar no arquivo baixado e seguir os passos da instalação. Clicaremos no botão finish assim que o programa for instalado, e o Virtual Box será rodado.

Com o Box Virtual aberto é preciso importar as máquinas virtuais: a do hacker (Kali Linux) e a do servidor web que conterá os site vulneráveis.

Para criar o ambiente do Kali Linux vamos em "Arquivo > Importar Appliance" e abrirá uma janela. Nela, nós importamos o arquivo para montagem da máquina virtual que está disponível aqui.

Basta selecionar o arquivo e clicar em "Importar". Esperando alguns segundos teremos o Kali Linux no Virtual Box.

Falta trazer a máquina virtual do servidor, clicamos no ícone "Novo" localizado a esquerda no Menu:

Abrirá uma nova janela pedindo para completar algumas informações. O "Nome", nós preenchemos apenas como "Servidor", o "Tipo" como Linux e a versão será "Other Linux (64-bit)":

Ao clicar em "Próximo" teremos uma segunda janela, a "Tamanho de Memória" que nós deixaremos como 512. A terceira janela é "Disco rígido" e nele selecionamos a opção "utilizar Disco Rígido virtual existente". Clicamos no ícone da pasta e selecionamos o arquivo referente ao servidor web e clicamos no botão "Criar":

Seguindo esses passos, nós já teremos os ambientes virtuais do hacker e do servidor:

Antes de começar os testes fazemos uma extensão da rede para as máquinas, de maneira que contemple tanto o servidor quanto o Kali Linux. Nós selecionamos a máquina do Kali Linux e clicamos no botão "Configurações" que encontra-se no Menu superior.

Abre-se uma janela e nela nós selecionamos a aba Rede. No campo "Conectado a", nós vamos inserir "Placa em Modo Bridge". Essa opção faz uma ponte no computador para estender o Kali Linux.

Note que ao preencher essa janela aparece escrito em baixo o aviso: "configurações inválidas detectadas". Esse aviso aparece pois importamos a máquina virtual com as configurações do fabricante, ou seja, é preciso fazer ainda alguns ajustes referentes a porta USB. Selecionando a aba "USB" marcamos a primeira opção," "Controladora USB 1.1". Ao fazer isso, note que a mensagem desaparece automaticamente:

Agora, podemos dar um "Ok"!

Realizamos o mesmos procedimento para o Servidor-web. Vamos em "Configurações > Rede" e selecionamos a opção "Placa em Modo Bridge".

O que fizemos nessa aula foi preparar o ambiente. Conseguimos aprontar o Kali Linux que representa o hacker e o Servidor web que conterá os sites vulneráveis.

SQL Injection - SQL Injection

Chegou o momento de inicializar as máquinas para realizar os primeiros ataques. Para fazer isso precisamos selecionar os dois ambientes e clicar em "Iniciar". Fazendo isso teremos duas abas com os respectivos ambientes rodando:

O Kali Linux (o ambiente referente ao hacker) demora um pouco para carregar. Ao finalizar o boot do Kali Linux aparece a seguinte tela:

Basta preencher um Username, criar a password e dar um "Sign up", assim, aparecerá na tela o Kali Linux.

Antes de simular ataques vamos alterar uma pequena configuração do teclado. Nós selecionamos a seta na parte inferior direita da tela do Kali Linux e clicaremos no símbolo das ferramentas:

Abrirá uma janela com várias áreas e nós selecionamos o "Region & Language". Surgirá um formulário, o Input sources, e nele vamos clicar no símbolo de "+" e escolhemos o "Português(Brazil)". Por fim, basta clicar em "Add" e a opção escolhida será adicionada. Com o teclado configurado da maneira correta podemos acessar as páginas do servidor.

Para navegar nelas é preciso conhecer a URL de acesso, então, vamos retornar a aba do servidor:

Nessa tela podemos verificar o endereço fornecido. Voltamos no Kali Linux, abrimos o navegador e inserimos a URL para acessar a página vulnerável. Digitamos 192.168.1.37 e teremos o seguinte:

Dando um scroll na página, clicaremos no item OWASP Multillidae II que será o primeiro site vulnerável com que trabalharemos. Teremos o seguinte:

O security level dessa página é zero e nesse momento não estamos logados. Portanto, vamos clicar no "Login register" e aparecerá uma nova janela que pede usuário e senha. Podemos preencher isso com "Rafael" e "alura" (usuário e senha), por exemplo.

Quando preenchemos as informações e apertamos o botão de login, fazemos uma requisição ao servidor. Isto é, nós passamos para o servidor os parâmetros que estão no usuário e o servidor consulta no banco de dados verificando se o registro existe. Dependendo do que o banco verificar a resposta retornada ao servidor será: existe ou não existe!

A partir disso o servidor dá uma resposta ao usuário (no caso o hacker). Se o acesso for permitido, nós teremos o acesso ao site, caso contrário, receberemos uma mensagem negando. A comunicação que ocorre entre o Servidor e o Banco é feita usando a linguagem SQL. Resumindo:

O que nós faremos para resolver esse problema é induzir o banco a um comportamento indevido, portanto, vamos inserir códigos SQL. Feita essa introdução teórica, vamos retornar ao site. Se nós inserirmos o nome "Rafael" e "alura", como login e senha respectivamente, teremos o acesso negado:

A mensagem devolvida afirma que a conta inserida não existe. Podemos interpretar essa mensagem da seguinte maneira: se inserirmos um usuário que existe, mas uma senha incorreta, é esperado uma resposta diferente, pois, a conta vai existir mesmo que a senha esteja errada.

Como podemos realizar o login na máquina se não temos nem a informação do login nem a do usuário? É preciso conhecer um ou outro. No caso do presente exercício, nós temos conhecimento de que o Username é admin. Ao preencher o usuário como admin e a senha como qualquer coisa, nós teremos uma mensagem avisando: Password incorrect.

A mensagem que recebemos nos fornece a certeza de que o admin existe!

A segunda pergunta que podemos fazer para burlar o sistema é: "será que o desenvolvedor filtra o que pode ser escrito nos campos?" Por exemplo, vamos escrever admin e o password nós colocaremos apenas uma aspas simples. A aspas simples delimita strings e caracteres permitindo a inserção de códigos SQL para serem interpretados no banco de dados. Então, se o desenvolvedor não previu o uso de aspas simples, podemos verificar a reação:

Essa mensagem avisa que uma exceção aconteceu. Isso significa que o sistema não se comportou da maneira como deveria. Acima, na mesma página, temos as informações do porquê da exceção:

Isso nos informa que ocorreu um erro na sintaxe. Essa falha deve-se às aspas simples que nós inserimos e que não são fechadas. Outra dica é verificar o Manual da SQL. Ainda, ele também nos informa a query que vai para o banco de dados.

Com essa Exception, foi possível mapear diversas informações! Com isso nós sabemos como a query é construída e qual o banco de dados é utilizado. Em seguida, vamos copiar a query e colá-la no banco de notas para analisar com mais tranquilidade. Teremos:

SELECT username FROM accounts WHERE username='admin' AND password='''

Nós havíamos preenchido de forma incorreta, portanto, vamos deixar representado como x. O que pode ser feito diante disso? Nós podemos utilizar as aspas simples para delimitar o caractere e acrescentar uma mensagem que é sempre verdadeira, por exemplo, a=a. Como podemos juntar essas duas informações o x e o a=a de maneira que ambas se tornem verdadeiras? Simples! Nós podemos adicionar o or, assim:

SELECT username FROM accounts WHERE username='admin' AND password='x' or a=a'

Com isso estamos dizendo: a password é x ou a=a. Desta maneira, não é preciso que as duas sejam verdadeiras, mas apenas uma. Portanto, toda a informação que acabamos de inserir junto a password é verdadeira. Ainda, se deixarmos o segundo a com apenas uma aspas parece que ele fica aberto e isso acusará um erro sintático. Portanto, é preciso inserir aspas no outro lado dele para que continue igual: 'a'='a'.

Lembrando que a primeira aspas que está junto do x faz parte do sistema e a última que acompanha o segundo a também. Teremos:

SELECT username FROM accounts WHERE username='admin' AND password='x' or 'a'='a'

Vamos verificar se inserirmos x' or 'a'='a no lugar da senha da página se isso nos permite ter acesso à página. Pois, estaremos preenchendo um username, admin, que já sabemos ser verdadeiro e uma senha que também é. Vamos testar? Preencheremos o username como admin e a senha como x' or 'a'='a e teremos o seguinte:

Ou seja, estamos logados como admin.

O que fizemos nesse caso foi inserir código SQL para que o banco de dados se comportasse de maneira indevida. Resumindo, inserimos um usuário verdadeiro e uma senha onde o 'a'='a' é verdadeiro. Portanto, com o username e o login sendo verídicos, nós temos acesso à página restrita do site!

Sobre o curso Segurança Web: Vulnerabilidades do seu sistema e OWASP

O curso Segurança Web: Vulnerabilidades do seu sistema e OWASP possui 227 minutos de vídeos, em um total de 69 atividades. Gostou? Conheça nossos outros cursos de Segurança em Infraestrutura, ou leia nossos artigos de Infraestrutura.

Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:

Aprenda Segurança acessando integralmente esse e outros cursos, comece hoje!

  • 1245 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

Premium

  • 1245 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

12X
R$75
à vista R$900
Matricule-se

Premium Plus

  • 1245 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

12X
R$100
à vista R$1.200
Matricule-se

Max

  • 1245 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

12X
R$120
à vista R$1.440
Matricule-se
Conheça os Planos para Empresas

Acesso por 1 ano

Estude 24h/dia onde e quando quiser

Novos cursos todas as semanas