You are on page 1of 10

Trabalho Formem grupo com no mnimo 5 e mximo 8 integrantes Elaborar uma pesquisa sobre : os tipos de ameaas existentes contra

ontra segurana da informao Na pesquisa devera conter os tipos de ataques existentes, caractersticas e as possveis formas de ataques Todos os membros do grupo devero ter os resultados das pesquisas no caderno
Injeo de SQL A injeo de SQL um truque favorito entre os hackers e liderou o relatrio CWE 2011 como a maior ameaa que as redes online enfrentam. "Para aplicaes ricas em dados, a injeo de SQL o meio para roubar as chaves do reino", diz o relatrio. A idia bsica que um cracker insere um cdigo em um formulrio online, como um pedindo o seu nome, endereo e assim por diante. Se as devidas precaues no forem tomadas para evitar isso, ele pode fazer o download, corromper ou alterar um banco de dados inteiro. Crackers ainda podem "roubar dados um byte de cada vez se tiverem que," de acordo com o relatrio. A injeo de SQL foi usada em ataques importantes, como os LulzSec contra a Sony Pictures e PBS, bem como na intruso dos Anonymous na rede da empresa de segurana HBGary Federal. A tcnica foi usado at para invadir o site MYSQL.com, da Oracle. Depois de invadir a Sony Pictures, o LulzSec disse que a injeo de SQL uma das vulnerabilidades "mais primitivas e comuns."

A SQL - Structured Query Language - largamente usada para interagir com banco de dados relacionais. Se voc considerar que 90% das aplicaes utilizam banco de dados com suporte a SQL vai concluir que o uso da SQL quase uma unanimidade por ser prtica , fcil e porttil. Em se falando de aplicaes Web temos uma grande utilizao de banco de dados para armazenar as mais diversas informaes : endereos e documentos pessoais , contas e valores financeiros , nmeros de cartes de crdito , dados empresariais , etc. Ao colocar sua aplicao na Web voc a esta expondo a um acesso mais amplo e indiscriminado. Afinal qualquer um que tenha acesso a url do site ter acesso a sua aplicao e aos dados que ela disponibiliza. Pensando na segurana de suas informaes as empresas investem pesado em firewalls , certificao digital e outros recursos , com o objetivo de se proteger de invasores. Para que o controlar o acesso as informaes normalmente restringe-se o acesso aos usurios cadastrados usando um nome e senha para identificao ; estes dados so colhidos atravs de

Como ocorre a injeo SQL Se voc acha que no deve levar a srio a injeo SQL veja esta notcia da INFO:
500 mil sites sofrem injeo de SQL Sexta-feira, 25 de abril de 2008 - 12h54 SO PAULO 500 mil sites foram afetados por uma injeo de SQL que propaga um cavalo-de-tria ladro de senhas. Segundo o Sans Institute Storm Center, SISC, os ataques atingiram sites de entidades, de empresas e at pginas de governo. Esse tipo de injeo esvazia o conceito de site confivel ou seguro , diz o pesquisador Donald Smith, do SISC. Os sites comprometidos com essa injeo de SQL so invadidos por um cdigo que redireciona o browser para outro site, no qual um cavalo-de-tria ladro de senhas tenta se instalar na mquina do usurio. O SISC recomenda que as empresas bloqueiem em seus firewalls de borda o acesso ao endereo hxxp:/www.nihaorr1.com e tambm ao IP a ele associado,219DOT153DOT46DOT28 veja tambm esta notcia: http://www.linhadefensiva.org/2008/05/ataques-de-sql-

um formulrio de login e so ento verificados com as informaes armazenadas em um banco de dados dos usurios cadastrados; se estiverem corretas o acesso permitido caso contrrio o acesso negado. assim que funciona o home banking na internet e uma infinidade de outras aplicaes web na qual o acesso restrito. Voc pode ter o aparato mais moderno em termos de tecnologia de segurana protegendo o seu site de um ataque hacker e nem se dar conta de que a vulnerabilidade da sua aplicao esta ali naquele formulrio de login. Ele pode ser a porta de entrada para ataques maliciosos atravs da injeo de SQL. A injeo SQL ocorre quando um invasor consegue inserir comandos SQL na instruo SQL que voc usa no seu script de modo a burlar a restrio e ter acesso ou danificar as informaes armazenadas no seu banco de dados. Neste artigo eu vou mostrar como a injeo de SQL ocorre e falar sobre algumas das medidas que voc pode tomar para evit-la. Embora as informaes sejam focadas em pginas ASP e banco de dados SQL Server /Access elas se aplicam a qualquer script e banco de dados que usam um dialeto SQL.

injection-atingem-sites-brasileiros/

500 mil sites !!!! Voc gostaria que o seu estive entre um deles ??? Ento continue a ler... Abaixo temos um tpico formulrio de login :
form name="frmLogin" action="login.asp" method="post"> Nome : <input type="text" name="nomeUsuario"> Senha: <input type="text" name="senhaUsuario"> <input type="Enviar"> </form>

Geralmente quando o usurio clicar no boto - Enviar - o script login.asp ser executado para efetuar a validao dos dados informados. Abaixo temos um script tpico para um arquivo de validao de informaes: <% dim nomeUsuario, senhaUsuario, consulta dim conn, rS nomeUsuario = Request.Form("nomeUsuario") senhaUsuario = Request.Form("senhaUsuario") set conn = server.createObject("ADODB.Connection") set rs = server.createObject("ADODB.Recordset") consulta = "select count(*) from usuarios where nomeUsuario='" & nomeUsuario & "' and senhaUsuario='" & senhaUsuario & "'" conn.Open "Provider=SQLOLEDB; Data Source=(local);Initial Catalog=myDB; User Id=sa; senhaUsuario=" rs.activeConnection = conn rs.open consulta if not rs.eof then response.write "Acesso Concedido"

else response.write "Acesso Negado" end if %> Vamos analisar o que ocorre quando um usurio tenta se autenticar. Vamos supor que ele usurio cadastrado com nome Macoratti e senha 123456 (s suposio). Ao informar o nome e a senha e clicar no boto Enviar o script do arquivo login.asp ser executado. Vamos ver como ficou a instruo SQL montada neste caso : select count(*) from usuarios where nomeUsuario='macoratti' and senhaUsuario='123456' Neste caso o usurio macoratti, senha 123456 ser autenticado e ter acesso ao sistema. Tubo bem ? No , se voc usa este tipo de instruo SQL nada esta bem pois o texto final da consulta SQL depende inteiramente do contedo das variveis , e , se o contedo destas variveis no for validado e tratado o texto final concatenado poder ser um SQL adulterado atravs de uma injeo SQL. Quer ver ? Vou comear pegando leve. Vamos supor que um hacker decidiu invadir sua pgina. Uma das primeiras coisas que ele pode fazer tentar uma injeo SQL , e, vai comear verificando se voc esta tratando o apstrofe (aspa simples: '). Se voc no sabe a presena de um caractere de apstrofe (') no contedo de uma varivel concatenada no SQL usada para delimitar strings de texto. Ento suponha que ele digite os seguintes dados nos campos nome e senha: nome = tes'te senha = Se voc no tratar o apstrofe vai ocorrer um erro de SQL (incorrect Sintax) ,e , vendo isto o hacker vai ficar mais animado... Agora vou pegar pesado. Suponha ento que a seguir ele digite os seguintes dados nome = ' ; drop table users-senha = Este comando ir excluir a tabela users (se ela existir). E se voc pensa que muito difcil o hacker adivinhar o nome da sua tabela vou mostrar mais abaixo que ele pode fazer isto de uma maneira simples. Isto possvel pois o caractere (;) indica o fim de uma consulta e o comeo de outra em T-SQL , e , o

caractere (--) no final da linha faz com que o scrpt ASP seja executada sem erro. Continuando o ataque , ele pode tambm informar o seguinte : nome = admin senha = ' or 1=1-veja como vai ficar a consulta SQL montada: select count(*) from usuarios where nomeUsuario='admin' and senhaUsuario='' or 1=1--' Aqui a consulta ir verificar se o nome do usurio admin e se senha vazio ou 1 for igual a 1 ( o que verdade) ; bingo, se existir um usurio admin ele entrou no seu sistema. Ele pode tambm tentar o seguinte : nome = ' or 1=1-senha = a consulta SQL montada ser : select count(*) from usuarios where nomeUsuario='' or 1=1 --' and senhaUsuario='' e bingo , ele burlou o seu sistema. O hacker pode tambm tentar o seguinte : nome = ' OR "=' senha = ' OR "=' e a consulta SQL montada ser : select count(*) from usuarios where nomeUsuario='' OR "=" AND senhaUsuario='' OR "=" a consulta agora esta fazendo a comparao : OR "=" que sempre verdadeira. Bingo ele entrou no seu site. Para saber o nome das tabelas e campos o hacker pode fazer o seguinte : nome = ' having 1=1-senha = isto pode causar o seguinte erro: Microsoft OLE DB Provider for ODBC Drivers error '80040e14' [Microsoft] [ODBC SQL Server Driver] [SQL Server] Column 'usuarios.codigo' is invalid in the select list because it is not contained in an aggregate function and there is no GROUP BY clause. /login.asp , line 28 e bingo , o hacker agora sabe que o nome da tabela usuarios e o nome do campo relacionado no formulrio como nome codigo.
Ataques em massa de SQL Injection (Injeo SQL) esto atingindo tambm sites brasileiros, de acordo com informaes apuradas

pela Linha Defensiva. Os ataques modificam as pginas dos websites atacados para incluir um cdigo malicioso capaz de infectar o visitante que estiver usando um navegador web desatualizado e inseguro. De acordo com o ARIS-LD, o Grupo de Anlise e Resposta a Incidentes de Segurana daLinha Defensiva, o website do canal de televiso Futura e pginas pertencentes ao governo do Distrito Federal esto entre as afetadas. Os responsveis por alguns portais foram avisados, porm buscas no Google mostram que o nmero de pginas infectadas est na casa dos milhares, sendo invivel avisar todas as vtimas. Internacionalmente, sites como o da revista Redmond Magazine, focada em assuntos Microsoft, foram comprometidos. Os primeiros ataques do gnero tinham como alvo apenas pginas em sites chineses e taiwaneses. Os novos ataques, apesar de infectarem sites globalmente, ainda executam cdigos diferentes caso o sistema da vtima esteja com a localidade configurada para China.

O mesmo ataque, vrios responsveis


SQL Injection

SQL (Structured Query Language) o nome de uma linguagem de programao usada para a interao com bancos de dados. Uma injeo SQL trata-se de um cdigo SQL que injetado em um site por um indivduo malicioso. Se a injeo ocorrer com sucesso, o invasor pode ser capaz de alterar o contedo do website, ler registros do banco de dados que em condies normais no poderiam ser lidos, entre outros, dependendo da gravidade do problema.

Ataques de injeo de SQL so majoritariamente possibilitados por erros de programao existentes emCMSs.

As invases, que vm ocorrendo desde o incio do ano, ganharam novo flego graas a uma rede zumbi, aAsprox. Computadores infectados com a Asprox foram instrudos a instalar uma ferramenta maliciosa que faz buscas no Google para encontrar sites possivelmente vulnerveis e ataclos.

Ferramentas assim esto disponveis h anos, mas nunca foram usadas to agressivamente. David Dewey, da IBM X-Force, disse ao site Dark Reading que os ataques cresceram por imitao: depois que um grupo de criminosos obteve sucesso infectando websites com injeo de SQL, outros grupos comearam a fazer o mesmo.

A rede-zumbi Asprox apenas uma entre vrios outros grupos e criminosos solitrios que esto tirando proveito deste problema. difcil determinar exatamente qual grupo ou indivduo responsvel por cada ataque, j que so todos semelhantes.

Os cdigos inseridos nas pginas apontam para diversos servidores, em geral localizados na China, que hospedam arquivos maliciosos. Estes arquivos, quando acessados pelo navegador, tentam explorar diversas brechas de segurana no Internet Explorer. Se o internauta estiver com o navegador desatualizado, uma das vulnerabilidades ser explorada e o computador ser infectado.

Devido natureza automatizada do ataque, nem todas as pginas injetadas sero capazes de infectar os internautas. Alguns dos servidores que hospedavam os arquivos maliciosos j esto fora do ar, mas o ataque verificado pela Linha Defensiva, que tenta tirar proveito de 11 falhas de segurana, ainda estava online at a publicao da reportagem.

Os ataques, por partirem de computadores zumbi e obterem seus alvos no Google, no buscam infectar nenhum site especificamente, investindo portanto no volume de pginas comprometidas. O especialista em segurana Dancho Danchev revelou que um criminoso que realiza ataques do gnero at publicou um pedido desculpas caso o site de um hacker fosse infectado, porque no possvel controlar os ataques.

Danchev estima, em seu blog, que mais de 1,5 milho de websites foram comprometidos globalmente.

A Injeo de SQL, mais conhecida atravs do termo americano SQL Injection, um tipo de ameaa de segurana que se aproveita de falhas em sistemas que interagem com bases de dados via SQL. A injeo de SQL ocorre quando o atacante consegue inserir uma srie de instrues SQL dentro de uma consulta (query) atravs da manipulao das entrada de dados de uma aplicao. [editar]Funcionamento Para exemplificar o funcionamento da injeo de SQL, consideremos uma instruo SQL comum: SELECT id, nome, sobrenome FROM autores; Essa instruo, que representa uma consulta na base de dados, retorna todos os registros das colunas "id", "nome" e "sobrenome" da tabela "autores". A partir desta mesma instruo, os registros a serem retornados podem ser restritos atravs da incluso da clusula WHERE, como visto no exemplo abaixo:

SELECT id, nome, sobrenome FROM autores WHERE nome = 'jos' AND sobrenome = 'silva'; Com base nesta instruo, fcil supor que "jos" e "silva" so strings, cujo contedo ser preenchido pela entrada feita por algum usurio que estiver fazendo uso da aplicao. Portanto, supondo que a aplicao no faa o tratamento apropriado do contedo inserido pelo usurio, o mesmo pode fazer o uso acidental do caractere de aspas simples. Gerando a entrada: nome = jo's sobrenome = silva

E fazendo com que a aplicao gere o cdigo: SELECT id, nome, sobrenome FROM autores WHERE nome = 'jo's' AND sobrenome = 'silva'; De acordo com a especificao da linguagem SQL, existe um erro de sintaxe nessa instruo, uma vez que a string passada para o campo nome a apenas palavra "jo", pois a adio das aspas simples quebrou a delimitao das aspas simples originais da consulta. O interpretador do SQL espera que o restante da instruo seja outros comandos SQL vlidos que complementem a instruo principal. No entanto, como "s" no um identificador vlido, essa instruo no ser executada e retornar um erro. Com base neste problema, um possvel atacante pode manipular os dados de entrada a fim de gerar um comportamento no esperado na base de dados. Para exemplificar este conceito, consideremos na mesma consulta apresentada, a entrada dos seguintes dados pela aplicao: nome = jo'; DROP TABLE autores ; -sobrenome = silva

Fazendo com que a aplicao gere o cdigo: SELECT id, nome, sobrenome FROM autores WHERE nome = 'jo'; DROP TABLE autores ; --' AND sobrenome = 'silva'; Neste caso, a instruo ser executada normalmente, pois no h um erro de sintaxe, no entanto, com a adio do caractere ponto-e-vrgula, a instruo foi dada como finalizada de modo prematuro dando espao para uma nova instruo. Essa nova instruo, que poderia ser qualquer uma escolhida pelo atacante, pode ser a responsvel por retornar dados confidenciais armazenados na base de dados ou de executar instrues que comprometam o sistema, como a remoo de dados e/ou tabelas, como pode ser visto no exemplo apresentado. Aparentemente um mtodo para prevenir esse problema seria a remoo de aspas simples dos campos de insero da aplicao, ou simplesmente no executando a query nestas situaes. Isso verdade, mas existem vrias dificuldades com esse mtodo tanto quanto solues. Primeiro, nem todos os usurios inserem dados em forma de strings. Se o usurio puder selecionar um autor pelo 'id' (presumivelmente um nmero) por exemplo, nossa query aparecer como abaixo: SELECT id, forename, surname FROM authors WHERE id=1234

Nesta situao, o atacante pode simplesmente adicionar uma instruo SQL no fim do 'input' numrico. Verificando os dialetos de SQL, vrios delimitadores podem ser usados no Microsoft Jet DBMS engine, por exemplo, datas podem ser delimitadas com o caracter sustenido. Portanto, escapando da execuo da adio de aspas simples, no necessariamente uma soluo como demonstrado anteriormente. Pode-se ilustrar esse ponto usando um exemplo de pgina de login em Active Server Pages (ASP), que acessa um servidor de banco de dados SQL e tenta autenticar o acesso em uma aplicao fictcia. Abaixo est um pedao de cdigo de uma pgina de formulrio, em que um usurio insere o username e o password para autenticao: (...) function Login( cn ) { var username; var password; username = Request.form("username"); password = Request.form("password"); var rso = Server.CreateObject("ADODB.Recordset"); var sql = "select * from users where username = '" + username + "' and password = '" + password + "'"; trace( "query: " + sql ); rso.open( sql, cn ); if (rso.EOF) { rso.close(); } } function Main() { //Set up connection var username var cn = Server.createobject( "ADODB.Connection" ); cn.connectiontimeout = 20; cn.open( "localserver", "sa", "password" ); username = new String( Request.form("username") ); if( username.length > 0) { Login( cn ); } cn.close(); } A parte critica a parte do 'process_login.ascp' que cria uma 'query string': var sql = "SELECT * FROM users WHERE username = '" + username + "' AND password = '" + password + "'"; Se o usurio inserir os seguintes dados:

* Username: '; drop table users-* Password: ... a tabela 'users' ser apagada, negando o acesso para todos os usurios. A seqncia de caracteres '--' o comentrio de uma linha de SQL, a o ';' denota o fim de uma query e o comeo de outra. O '--' no fim do campo username requerido para que a query em questo seja executada sem erros. O atacante pode logar como qualquer usurio, se souber o nome do usurio, usando o input abaixo: Username: admin'--

O atacante pode logar como o primeiro usurio da tabelas 'users', com a insero abaixo: Username: ' or 1=1--

O atacante pode ainda logar como um usurio completamente fictcio com o input abaixo: Username: ' union select 1, 'fictional_user', 'some_password', 1--

A razo para que isso funcione que a aplicao acredita que a linha 'constante' que o atacante especificou parte do 'recordset' recuperado da base de dados.

You might also like