Jump to content


Photo

Asp E O Sql Injection


  • Faça o login para participar
17 replies to this topic

#1 Lengrat

Lengrat

    Mestre

  • Usuários
  • 638 posts
  • Sexo:Não informado

Posted 07/10/2004, 23:37

Galera... tenho ouvido muito falar sobre SQL injection em páginas ASP, PHP entre outros, inseguras.

Alguem poderia me esclarecer melhor sobre o assunto e como evitar esse problema?

#2 TucaZ

TucaZ

    Normal

  • Usuários
  • 99 posts
  • Sexo:Não informado

Posted 08/10/2004, 00:22

A Microsoft divulgou há algum tempo um artigo sobre isso. É bem simples.

Consiste em quebrar a segurança do seu site, normalmente em autenticações, com caracteres que gerem erros no banco de dados.

Então se eu tenho uma string SQL assim:

strSQL = "SELECT * FROM usuarios WHERE nome = '" & strNome & "' AND senha ='' & strSenha & "

Posso quebrar isso e gerar um erro no banco de dados colocando apenas uma aspa simples ('), dessa forma podendo até executar instruções em lote (batch) e jogar um DELETE onde seria apenas um SELECT acabando com todo o banco de dados.

Existem duas formas básicas de se resolver isso em ASP. Nunca vi SQL Injection em PHP, ele trata os valores de entrada sozinho.

1 - É utilizar um replace nos caracteres chave. Em SQL server temos apenas o ' como problema, portanto um
strSenha = Replace(strSenha, "'", "")
(Troca ' por nada)
deve resolver o problema
Isso é uma forma amadora de se fazer, mas infelizmente 99% dos "profissionais" trabalham dessa forma.

2 - A forma correta de se programar e interagir com o banco de dados seria utilizando o objeto command. Ele cria parametros que "filtram" automaticamente o conteudo que entra nele de acordo com o que você definir evitando qualquer tipo de falha nesse sentido.

Se quiser conhecer um pouco mais sobre o command procure em http://www.devguru.com

Vou tentar escrever um artigo sobre isso. É algo realmente importante porque MUITOS sites ainda tem esse problema.

Abraços

#3 Luis Otávio

Luis Otávio

    Super Veterano

  • Usuários
  • 3113 posts
  • Sexo:Masculino
  • Localidade:Porto Alegre
  • Interesses:- Desenvolvimento de aplicações Web com linguagem server-side PHP.

    - Desenvolvimento de aplicações Web com linguagem cliente-side JavaScript, conhecedor e utilizador da biblioteca jQUERY e todas suas características.

    - Otimização de Desempenho aplicados a performance de banco de dados Mysql.

    - Otimização de Desempenho para servidores Web utilizando-se como Webserver NGINX em conjunto com Varnish.

    - Sólidos conhecimentos no CMS WordPress para novas implementações, manutenção, criação e otimização de Plugins.

    - Práticas de atendimento, relacionamento e suporte ao cliente. Trabalhando voltado ao público desde o lançamento da empresa iPORTO.COM, criando laços e vínculos com os mais de Mil clientes da empresa e os braços do grupo.

Posted 08/10/2004, 00:50

de uma olhada com o q fiz em uma pagina usando SQL injection

[url="http://www.upbalada.com/verfotos.asp?CobID=strSQL%20=%20"SELECT%20*%20FROM%20usuarios%20WHERE%20nome%20=%20'"%20&%20strNome%20&%20"'%20AND%20senha%20=''%20&%20strSenha%20&%20""]VEJA AQUI[/url]

clica ai embaixo e depois veja o endereço q eu coloquei... simplesmente fiz dar um errinho... heheheh

mas isso se arruma com tratamentos básicos que não foi usado nesta pagina...

e outra.. o PHP num trata nativamente o ' ... se foi isso que vc falou... por que ja fiz dar erros em algumas coisas em PHP com o uso de aspas simples ou 'or'1'='1' ... sei que deu erro por que quem desenvolveu é amador... mas deu.. hehehe

bem.. esta doi minha contribuição...

;) (y)
* Otávio Nogueira
* Administração e Configuração de Servidores;
* Combinação Perfeita: NGINX + PHP + VARNISH + HAPROXY
* otavio*iporto.com ~ Tel: +55 51 3366 0177 | +55 51 4063 7343 |
* @iporto

#4 Agente Linhares

Agente Linhares

    fuis...abraços!

  • Ex-Admins
  • 3138 posts
  • Sexo:Não informado
  • Localidade:Biritiba Mirim-SP

Posted 08/10/2004, 01:57

A Microsoft divulgou há algum tempo um artigo sobre isso. É bem simples.

Consiste em quebrar a segurança do seu site, normalmente em autenticações, com caracteres que gerem erros no banco de dados.

Então se eu tenho uma string SQL assim:

strSQL = "SELECT * FROM usuarios WHERE nome = '" & strNome & "' AND senha ='' & strSenha & "

Posso quebrar isso e gerar um erro no banco de dados colocando apenas uma aspa simples ('), dessa forma podendo até executar instruções em lote (batch) e jogar um DELETE onde seria apenas um SELECT acabando com todo o banco de dados.

Existem duas formas básicas de se resolver isso em ASP. Nunca vi SQL Injection em PHP, ele trata os valores de entrada sozinho.

1 - É utilizar um replace nos caracteres chave. Em SQL server temos apenas o ' como problema, portanto um
strSenha = Replace(strSenha, "'", "")
(Troca ' por nada)
deve resolver o problema
Isso é uma forma amadora de se fazer, mas infelizmente 99% dos "profissionais" trabalham dessa forma.

2 - A forma correta de se programar e interagir com o banco de dados seria utilizando o objeto command. Ele cria parametros que "filtram" automaticamente o conteudo que entra nele de acordo com o que você definir evitando qualquer tipo de falha nesse sentido.

Se quiser conhecer um pouco mais sobre o command procure em http://www.devguru.com

Vou tentar escrever um artigo sobre isso. É algo realmente importante porque MUITOS sites ainda tem esse problema.

Abraços

interessante o assunto msm.

mano, quando vc criar o artigo, psota aqui tb blz..

t+
> Busca On-line - A Busca que faltava na Internet! - Cadastre-se!
---------------------------------------------------------------------------
> BRdesign.NET - Soluções em Websites e Sistemas E-Commerce.
---------------------------------------------------------------------------
> BR-ecommerce - Sua loja virtual na internet! - Apenas R$99,90 mensais (hospedagem inclusa)!

#5 Tx.NET

Tx.NET

    || ||||||| ||| ||||||||

  • Banidos
  • PipPipPipPipPipPipPip
  • 619 posts
  • Sexo:Não informado

Posted 08/10/2004, 11:18

o maior problema na SQL injection é ignora-la.. assim como o iporto, também sei d um site com a falha (talvez uma mais séria), onde QUALQUER usuário pode se passar pelo administrador e até mesmo apagar o banco do cara todo... tipo, pra ilustrar, deem uma olhada em www.autocia.com.br...

no topo(a direita) tem um form, no campo login, digitem:
' or '1'='1'--

(condição q sempre será TRUE)
e na senha, digite qualquer coisa... clique ok e pronto!

Vc é o admnistrador do site!

Já mandei e-mail pros administradores do site (inclusive passando uma solução para o problema) e nada... os caras num tão nem aí... vai entender!

PS: Não me responsabilizo pelo q seja feito com estas informações. Este é um conteúdo meramente informativo. Deixo livre para q os admnistradores/moderadores editem o post como acharem melhor.

Acho q no quesito informalidade, os webmasters verdadeiros é q saem perdendo, pois, não é nada dificil encontrar sites com problemas críticos de segurança. Não é só SQL q pode fazer do site um alvo para pessoas mal intencionadas.. em qualquer parte do relacionamento entre o site e o banco que não existir o tratamento adequado (tratamento este que geralmente não acontece) é possível se aproveitar para atrapalhar o funcionamento correto do site...

Façam o teste... no Google, busquem por mural (tipo recados)... vejam quantos sistemas fazer a filtragem de entrada de scripts mal intencionados... o resultado é assustador!

Bem, gostei do tópico e espero q cheguemos a um final feliz algum dia...

flws (y)....

Edição feita por: Tx.NET, 08/10/2004, 11:24.

> ls -la
-rwxr-xr-- 1 fmaynnard user 9666 nov 28 00:00 hell

> shutdown -h now

#6 Agente Linhares

Agente Linhares

    fuis...abraços!

  • Ex-Admins
  • 3138 posts
  • Sexo:Não informado
  • Localidade:Biritiba Mirim-SP

Posted 08/10/2004, 20:47

nossa mae. o lance bem serio msm.
> Busca On-line - A Busca que faltava na Internet! - Cadastre-se!
---------------------------------------------------------------------------
> BRdesign.NET - Soluções em Websites e Sistemas E-Commerce.
---------------------------------------------------------------------------
> BR-ecommerce - Sua loja virtual na internet! - Apenas R$99,90 mensais (hospedagem inclusa)!

#7 Lengrat

Lengrat

    Mestre

  • Usuários
  • 638 posts
  • Sexo:Não informado

Posted 09/10/2004, 03:29

Eu sempre vi codigos de validação de senha e tals, utilizando esses replaces.
Passei a usar tb, mas nem sabia o motivo hehehe

strSenha = Replace(strSenha, "'", "")

Affe... Sempre tem esses espíritos de porcos que ficam querendo arruinar com nosso banco de dados. ( nada contra o Iporto e ao outro tb heheheh, falo do perigo-mor que são esses seres chamados usuarios )
Por isso que eu trato à fundo a validação dos meus formularios, para não esculhambarem com a entrada de dados.

Mas tava por fora desse problema do inection.
Há alguma outra forma de previnir, fora esses replaces?

:P

#8 Luis Otávio

Luis Otávio

    Super Veterano

  • Usuários
  • 3113 posts
  • Sexo:Masculino
  • Localidade:Porto Alegre
  • Interesses:- Desenvolvimento de aplicações Web com linguagem server-side PHP.

    - Desenvolvimento de aplicações Web com linguagem cliente-side JavaScript, conhecedor e utilizador da biblioteca jQUERY e todas suas características.

    - Otimização de Desempenho aplicados a performance de banco de dados Mysql.

    - Otimização de Desempenho para servidores Web utilizando-se como Webserver NGINX em conjunto com Varnish.

    - Sólidos conhecimentos no CMS WordPress para novas implementações, manutenção, criação e otimização de Plugins.

    - Práticas de atendimento, relacionamento e suporte ao cliente. Trabalhando voltado ao público desde o lançamento da empresa iPORTO.COM, criando laços e vínculos com os mais de Mil clientes da empresa e os braços do grupo.

Posted 09/10/2004, 13:28

Há muitas formas de se previnir de usuários como eu.. heheheheh, eu por exemplo deixo uma hora do meu dia... para visitar sites sem segurança.. e acreditem tem vários na net... até sites de lojas que deveriam ser seguros, não tem a minima segurança para estarem rodando nem um blog...

então ha muitos tratamentos para serem feitos para num gerar erro nas suas aplicações... como por exemplo, campos de cadastro não poderem ser digitados HTML, querystring com numeros não suportarem letras... trtar as ' simples nas querystrings....

colocar caminhos fora do padrão para o admin, tem muito site na net que o admin é asssim site.com/admin isso embora o cara num saiba a senha... entrando no admin... ja é meio caminho para o cara tentar burlar seu sistema...

bem.. posso estar desviando um pouco do assunto original.. mas isso se trata de segurança.. e acho que deveria ter a opinião de o máximo de pessoas possiveis sobre o assunto...

abraço ai povo...

;) (y)
* Otávio Nogueira
* Administração e Configuração de Servidores;
* Combinação Perfeita: NGINX + PHP + VARNISH + HAPROXY
* otavio*iporto.com ~ Tel: +55 51 3366 0177 | +55 51 4063 7343 |
* @iporto

#9 Tx.NET

Tx.NET

    || ||||||| ||| ||||||||

  • Banidos
  • PipPipPipPipPipPipPip
  • 619 posts
  • Sexo:Não informado

Posted 14/10/2004, 11:53

a real é que muitas pessoas se aventuram em projetos grandes sem ter o devido conhecimento... mesmo nós, com certeza, algum dia já demos um balão destes...

o que falta eh divulgar a falha e explicar como e o pq de arruma-la... tipo, pendurar este tópico seria um bom início...

flws... (y)

Edição feita por: Tx.NET, 14/10/2004, 11:57.

> ls -la
-rwxr-xr-- 1 fmaynnard user 9666 nov 28 00:00 hell

> shutdown -h now

#10 pchardnet

pchardnet

    ×-× 3D ×-×

  • Usuários
  • 1068 posts
  • Sexo:Não informado
  • Localidade:Belo Horizonte-MG

Posted 14/10/2004, 12:13

Moçada esse assunto é sério mesmo. E olha que o site da autocia é .net e tem essa falha... Aquilo é explicado pq o programador não soube usar os recursos que o VisualStudio oferece. Ele já traz um WinForm de login pre configurado e com tratamentos para evitar o sqlinjection.

Bom aí vai um Artigo que achei no freecode que dá várias dicas de como se previnir.


(y)
www.wvirtu.net - Hospedagem Sites - PHP + MySql + Fantástico - Joomla! pré-instalado

www.joomlaminas.org - Grupo de Usuários Joomla! de Minas Gerais

#11 Lengrat

Lengrat

    Mestre

  • Usuários
  • 638 posts
  • Sexo:Não informado

Posted 14/10/2004, 13:43

Caraca.. muito bom este artigo , HardNet.
Bem detalhado. Gostei (y)

#12 Luis Otávio

Luis Otávio

    Super Veterano

  • Usuários
  • 3113 posts
  • Sexo:Masculino
  • Localidade:Porto Alegre
  • Interesses:- Desenvolvimento de aplicações Web com linguagem server-side PHP.

    - Desenvolvimento de aplicações Web com linguagem cliente-side JavaScript, conhecedor e utilizador da biblioteca jQUERY e todas suas características.

    - Otimização de Desempenho aplicados a performance de banco de dados Mysql.

    - Otimização de Desempenho para servidores Web utilizando-se como Webserver NGINX em conjunto com Varnish.

    - Sólidos conhecimentos no CMS WordPress para novas implementações, manutenção, criação e otimização de Plugins.

    - Práticas de atendimento, relacionamento e suporte ao cliente. Trabalhando voltado ao público desde o lançamento da empresa iPORTO.COM, criando laços e vínculos com os mais de Mil clientes da empresa e os braços do grupo.

Posted 14/10/2004, 14:24

yep... poderiamos continuar o assunto neste tópico..

http://forum.wmonlin...showtopic=92287

que qui seis acham?

;) (y)
* Otávio Nogueira
* Administração e Configuração de Servidores;
* Combinação Perfeita: NGINX + PHP + VARNISH + HAPROXY
* otavio*iporto.com ~ Tel: +55 51 3366 0177 | +55 51 4063 7343 |
* @iporto

#13 pchardnet

pchardnet

    ×-× 3D ×-×

  • Usuários
  • 1068 posts
  • Sexo:Não informado
  • Localidade:Belo Horizonte-MG

Posted 14/10/2004, 14:27

Opa, Lengrat, eu tb curti muito e aprendi muito com ele por isso resolvi compartilhar com a comunidade.

Iporto, o seu tópico "Segurança Na Internet, seu site está seguro?" tb é show rapaz... bem completo!

Já pendurou ele?? rs
www.wvirtu.net - Hospedagem Sites - PHP + MySql + Fantástico - Joomla! pré-instalado

www.joomlaminas.org - Grupo de Usuários Joomla! de Minas Gerais

#14 calcio

calcio

    PHP é oq manda! Heavy Metal na veia!

  • Usuários
  • 377 posts
  • Sexo:Não informado
  • Interesses:Desenvolvimento de websites e Gerenciamento de Projetos

Posted 14/10/2004, 14:47

Comtribuíndo com os colegas de forum, + uma dica para os q gostam de usar os famosos includes

apesar de ser uma coisa básica e boba muita gente ñ sabe.
Ao usar os includes use sempre arquivo.asp e ñ arquivo.inc.

Motivo: como .inc é texto se der erro o IE interpreta como .txt e ele acaba exibindo suas infos.

Imagine um o arquivo conecta.inc (ele se conecta com o SQL Server)
Sabemos q qq coisa de conexao vc coloca o caminho, a senha e outros dados vitais do seu server, caso o inc de erro... Adivinha oq acontece???? Qualquer individo ver todas essas infos, nome do banco, caminho, senha etc...

Os Hackersinhos de Mer.... podem fazer a festa. pois vc entregou de mão beijada seu acesso ao banco e ao host tb.

OUtra dica: Alem de usar senhas loucas como o iporto faou no post dele (http://forum.wmonlin...showtopic=92287) usem senhas de acesse ao serv diferentes da senha do BD...

Espero ter contribuído.
Abraços Cálcio Heavy Metal

#15 Tx.NET

Tx.NET

    || ||||||| ||| ||||||||

  • Banidos
  • PipPipPipPipPipPipPip
  • 619 posts
  • Sexo:Não informado

Posted 14/10/2004, 15:01

Comtribuíndo com os colegas de forum, + uma dica para os q gostam de usar os famosos includes

apesar de ser uma coisa básica e boba muita gente ñ sabe.
Ao usar os includes use sempre arquivo.asp e ñ arquivo.inc.

Motivo: como .inc é texto se der erro o IE interpreta como .txt e ele acaba exibindo suas infos.

Imagine um o arquivo conecta.inc (ele se conecta com o SQL Server)
Sabemos q qq coisa de conexao vc coloca o caminho, a senha e outros dados vitais do seu server, caso o inc de erro... Adivinha oq acontece???? Qualquer individo ver todas essas infos, nome do banco, caminho, senha etc...

Os Hackersinhos de Mer.... podem fazer a festa. pois vc entregou de mão beijada seu acesso ao banco e ao host tb.

OUtra dica: Alem de usar senhas loucas como o iporto faou no post dele (http://forum.wmonlin...showtopic=92287) usem senhas de acesse ao serv diferentes da senha do BD...

Espero ter contribuído.

naum soh em caso de erro.
ao salvar, vc tem acesso ao endereço dos includes.

flws... (y)
> ls -la
-rwxr-xr-- 1 fmaynnard user 9666 nov 28 00:00 hell

> shutdown -h now




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq