seminário php injection/ sql injection

Post on 03-Dec-2014

2.121 Views

Category:

Technology

5 Downloads

Preview:

Click to see full reader

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

Trabalho sobre PHP Injection & SQL Injection

GILBERTO BRITO BARBOSACARLOS MAX DE SOUZA FRANÇA

ROBERTO SOUSA DE LIMA JUNIORDAVI RODRIGUES PINTO

PHP 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.

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

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

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

?>

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.

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.

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; --’;

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.

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.

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.

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

By Davi Rodrigues

top related