Baixe o app para aproveitar ainda mais
Prévia do material em texto
Prof. Mario João Jr. mjoaojr@gmail.com Conceitos Princípios de Criptografia Segurança de Aplicações Web Principais Mecanismos de Defesa Burlando Controles no Cliente Atacando a Autenticação Atacando o Banco de Dados Ementa Administração e Segurança de Redes 2 Prof. Mario João Jr. Quase todas as aplicações dependem de um banco de dados para gerenciar os dados que são processados dentro da aplicação Os bancos de dados evoluíram para se tornar mais do que recipientes passivos para dados Atacando o Banco de Dados Administração e Segurança de Redes 3 Prof. Mario João Jr. As aplicações usam o mesmo nível de privilégio para todos os tipos de acesso ao banco de dados Se um atacante pode interferir na interação da aplicação com o banco de dados, pode acessar ou modificar os dados... Atacando o Banco de Dados Administração e Segurança de Redes 4 Prof. Mario João Jr. Aplicações Web são, na maioria dos casos, implementadas em liguagens interpretadas Linguagens cujo código é executado por um interpretador Por isso surge uma forma de explorar falhas dessas linguagens chamada injeção de código O código que os interpretadores processam é uma mistura das instruções escritas pelo programador e os dados fornecidos pelo usuário Atacando o Banco de Dados Administração e Segurança de Redes 5 Prof. Mario João Jr. Injetando em Contextos Interpretados Um atacante pode enviar uma entrada de dados forjada Usando uma sintaxe que tem um significado especial dentro da linguagem interpretada Uma parte desta entrada é interpretada como instruções do programa e são executadas Atacando o Banco de Dados Administração e Segurança de Redes 6 Prof. Mario João Jr. Injetando em Contextos Interpretados Ignorando o login SELECT * FROM users WHERE username = ‘marcus’ and password = ‘secret’ E se o campo username fosse: admin’-- a aplicação vai executar a seguinte query SELECT * FROM users WHERE username = ‘admin’--’ AND password = ‘foo’ Ou seja SELECT * FROM users WHERE username = ‘admin’ Atacando o Banco de Dados Administração e Segurança de Redes 7 Prof. Mario João Jr. Injetando em Contextos Interpretados Ignorando o login E se o campo username fosse: ‘ OR 1=1— a aplicação vai executar a seguinte query SELECT * FROM users WHERE username = ‘‘’ OR 1=1--’ AND password = ‘foo’ Ou seja SELECT * FROM users WHERE username = ‘‘’ OR 1=1 Atacando o Banco de Dados Administração e Segurança de Redes 8 Prof. Mario João Jr. Injetando em Contextos Interpretados SQL é uma linguagem interpretada As aplicações web geralmente constroem consultas SQL que utilizam dados fornecidos pelo usuário Esta falha é uma das vulnerabilidades mais notórias que tem afligindo às aplicações web Atacando o Banco de Dados Administração e Segurança de Redes 9 Prof. Mario João Jr. Injetando Código SQL SELECT O ponto de entrada para ataques de injeção SQL, normalmente é a cláusula WHERE da consulta Como a cláusula WHERE é o componente final de uma consulta SELECT Permite a um atacante usar um comentário para truncar a consulta Pode-se utilizar também a cláusula ORDER BY $pass = $_GET['pass']; $password = mysql_query("SELECT password FROM users WHERE password = '". $pass . "';"); Atacando o Banco de Dados Administração e Segurança de Redes 10 Prof. Mario João Jr. Injetando Código SQL INSERT São usados para criar uma nova linha de dados em uma tabela Uma aplicação pode permitir que os usuários se auto- registrem INSERT INTO users (username, password, ID, privs) VALUES ('daf', 'secret', 2248, 1) Injetando no username, o atacante pode enviar: foo ' , ' bar ' , 9999, 0) -- Atacando o Banco de Dados Administração e Segurança de Redes 11 Prof. Mario João Jr. Injetando Código SQL UPDATE São utilizados para modificar uma ou mais linhas de dados existentes dentro de uma tabela São frequentemente usados nas funções em que um usuário altera o valor de dados que já existem UPDATE users SET password = 'newsecret' WHERE username = 'marcus' and password = 'secret' Injetando no username, o atacante pode enviar: admin' -- Atacando o Banco de Dados Administração e Segurança de Redes 12 Prof. Mario João Jr. Injetando Código SQL DELETE São usados para excluir uma ou mais linhas de dados em uma tabela Exemplo: Usuários removem um item do seu carrinho de compras Os ataques são feitos a cláusula WHERE do comando Atacando o Banco de Dados Administração e Segurança de Redes 13 Prof. Mario João Jr. Injetando Código SQL UNION Combina os resultados de diversas consultas SQL As consultas devem ter o mesmo número de colunas Quando isso não ocorrem um erro é gerado Para descobrir o número de colunas, pode-se ir acrescentado colunas até que não haja mais erro union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16 -- Atacando o Banco de Dados Administração e Segurança de Redes 14 Prof. Mario João Jr. Injetando Código SQL
Compartilhar