seminário php injection/ sql injection

17
Trabalho sobre PHP Injection & SQL Injection GILBERTO BRITO BARBOSA CARLOS MAX DE SOUZA FRANÇA ROBERTO SOUSA DE LIMA JUNIOR DAVI RODRIGUES PINTO

Upload: davi-rodrigues

Post on 03-Dec-2014

2.120 views

Category:

Technology


5 download

DESCRIPTION

Seminário apresentado na Faculdade Evolução sobre PHP Injection/ SQL Injection, com uma amostra da intrusão que esta na 1ª colocada no hank da OWASP

TRANSCRIPT

Page 1: Seminário PHP Injection/ SQL Injection

Trabalho sobre PHP Injection & SQL Injection

GILBERTO BRITO BARBOSACARLOS MAX DE SOUZA FRANÇA

ROBERTO SOUSA DE LIMA JUNIORDAVI RODRIGUES PINTO

Page 2: Seminário PHP Injection/ SQL Injection

PHP Injection

Page 3: Seminário PHP Injection/ SQL Injection

Consiste em injetar um código dentro de uma página ou programa vulnerável, cuja linguagem de programação é PHP, nesta falha o invasor poderá injetar arquivos “*.php” para rodar comandos dentro do servidor ou ate mesmo obter uma Shell direto do servidor, a falha pode ser considerada comum pois PHP é uma linguagem de fácil aprendizagem, então muitos programadores sem experiência criam sistemas ou sites, e acabam esquecendo da segurança do código, vamos mostrar um pouco dessa “INSEGURANÇA” a seguir.

Page 4: Seminário PHP Injection/ SQL Injection

<?phpif (isset($_GET['pagina'])) {

$arquivo = $_GET['pagina'];} else {

$arquivo = 'home.php';}include ($arquivo);

?>

Page 5: Seminário PHP Injection/ SQL Injection

SQL Injection

Page 6: Seminário PHP Injection/ SQL Injection

SQL Injection é uma técnica de injeção de código que explora uma vulnerabilidade de segurança localizada na camada de banco de dados (database layer) da aplicação. Na prática é utilizada por hackers (ou não) para ter acesso ao banco de dados do site da vítima sem que ele precise de um login ou uma senha efetivamente para fazê-lo.

Page 7: Seminário PHP Injection/ SQL Injection

Para entendermos melhor como funcionam os ataques via injeção de códigos SQL (SQL Injection), vou utilizar um caso bem comum entre os programadores para que vocês se familiarizem com mais facilidade.

Pense em um formulário para login no sistema e uma consulta na base de dados para verificar se determinado usuário e senha existe em na base de dados.

Page 8: Seminário PHP Injection/ SQL Injection
Page 9: Seminário PHP Injection/ SQL Injection
Page 10: Seminário PHP Injection/ SQL Injection
Page 11: Seminário PHP Injection/ SQL Injection
Page 12: Seminário PHP Injection/ SQL Injection
Page 13: Seminário PHP Injection/ SQL Injection

Agora no campo senha vamos inserir o seguinte conteúdo:

admin123’; DROP TABLE usuarios; --

Seria interpretado assim:

SELECT usuario,senha FROM usuarios WHERE usuario = ‘admin’ AND senha=‘admin123’; DROP TABLE usuarios; --’;

Page 14: Seminário PHP Injection/ SQL Injection

Primeiro: Separe sempre a exibição de erros em 2 ambientes, o ambiente de desenvolvimento e o ambiente de produção. O ambiente de desenvolvimento pode ter qualquer tipo de erro emitido na tela, afinal, você precisa ver os erros para tratá-los, no ambiente de produção omita qualquer tipo de erro, qualquer erro pode ser uma pista para o hacker descobrir detalhes sobre o seu ambiente.

Page 15: Seminário PHP Injection/ SQL Injection

Hackers enviaram para o site MySQL.com em um determinado formulário um comando que, se não for interpretado pelo site, pode fornecer dados que antes eram sigilosos. E foi o que aconteceu no caso das bases de dados do site, ironicamente um dos criadores da base de dados de código aberto SQL.

O responsável pelo ataque publicou então todos os dados que obteve, o que inclui não só nomes de bases de dados e seus campos como também usuários e senhas criptografadas. Pouco mais tarde, a base de dados do site Sun.com, que comprou a empresa por trás da tecnologia MySQL, também foi comprometida por meio do mesmo Hacker.

Page 16: Seminário PHP Injection/ SQL Injection

Segundo: Filtre todo o tipo de variável dados que vem de urls ou inputs de formulário $_GET ou $_POST para que nenhum dos dados imputados pelo usuário possa ser interpretado como parte da instrução SQL.

Page 17: Seminário PHP Injection/ SQL Injection

EXEMPLO DE UMA INJEÇÃO DE CÓDIGO.

By Davi Rodrigues