+4

Tratamento de dados fornecidos pelo usuário: projetando sistemas com mais segurança - parte 1

criado por Allyson F. de Paula Reis em 18/03/2004 11:06am
Todas as informacoes e exemplos contidos nesse tutorial possuem somente propósitos educacionais. Não me responsabilizo pelo mau uso do mesmo.


Introdução

Olá senhores, aqui estou novamente escrevendo mais um artigo sobre segurança com o foco voltado principalmente para o desenvolvimento em PHP e, espero conscientizar-lhes que servidores "bem configurados" NÃO fazem por si só o seu sistema seguro.

Não mostro ou descrevo nenhuma falha ou técnica nova de hacking, esse texto é uma compilação de alguns assuntos que visa mostrar que brechas pequenas de segurança podem comprometer tanto o seu sistema quanto o restante do servidor que lhe prove serviços. Então se você se considera um especialista em segurança no desenvolvimento de sistemas
eu NÃO recomendo a leitura desse texto...

De uns tempos para cá comecei a notar que mais gente está programando e consequentemente mais gente está entrando no mercado de trabalho muito mais precossemente... Estão iniciando a sua viagem pelo maravilhoso mundo do desenvolvimento web como a inocente chapeuzinho vermelho levando a sua cestinha para sua vovozinha, no entanto não sabem eles - os desenvolvedores newbies ou chapeuzinhos vermelhos (Não existe aqui nenhum tipo
de analogia com a distro Red Hat =D) negligentes - que o usuário lobo malicioso está de
olho no seu sistema. Obs: Entende-se como desenvolvedor negligente aquele que tem como
objetivo somente fazer com que seu sistema esteja "rodando".

As técnicas abordam a inocência dos programadores e administradores que por sua vez não fazem as devidas validações ou restrições para o uso do PHP, ou seja, um bom exemplo seria um script php de upload mal configurado (ou mal implementado?) aliado a um sistema que não lhe nega permissão de escrita. Essa combinação se equivalhe a uma shell e, dois artigos muito interessantes para serem lidos a respeito disso podem ser encontrado em:

- Artigo desenvolvido por Wendel Guglielmetti - Upload de Assinatura + Forum = SHELL
http://www.frontthescene.com.br/artigos/UpSigF_Shell.txt

- Minha releitura do manual do PHP sobe o perigo no gerenciador de uploads do PHP
http://www.phpbrasil.com/articles/article.php/id/648

Nota: Ambos os assuntos serão discutidos no restante do texto.


Descrição do Ambiente

O artigo explora o seguinte ambiente:

* Um servidor Web rodando em um sistema GNU/Linux.
* Servidor com suporte a PHP.
* PHP configurado com permissão de upload de arquivos.
* Um servidor MySQL.

Logicamente a exploração de falhas no PHP só funcionará se o servidor estiver com suporte ao mesmo, assim como exploração MySQL só funcionará se o servidor estiver devidamente configurado e assim sucessivamente, mas gostaria de frisar que o artigo não explora necessariamente a interligação entre PHP e MySQL.

Comentários:

Mostrando 1 - 10 de 12 comentários
Felipe Gomes disse:
Ae cara, muito bom mesmo seu artigo.. Me deu uma boa noção de onde podem vir as falhas de segurança e tal.

Estou aguardando pela parte 2 do arquivo..
22/05/2004 11:15pm (~20 anos atrás)

são essas coisinhas que a gente esquece e que no final acaba ferrando o sistema...
eu li esse seu texto numa lista e me ajudou bastante depois disso. valeu
24/04/2004 12:14am (~20 anos atrás)

show de bola, sempre tem aquele cara q vai querer "testar" o seu sistema
14/04/2004 10:40pm (~20 anos atrás)

allan felipe disse:
Muito bom! Essas falhas são clássicas... o pessoal fica de olho nas perguntas dos fóruns para pegar os iniciantes.. ver o e-mail deles, empresa em que trabalha e quais foram os sistemas que a empresa do newba fez. Dai basta entrar no site e f* com tudo. huahauhauahuahauah O site da nasa foi hackeado através de um php deles... E tem mais, controle de login tb é importante! fazer validação do login em todos os phps do sistema!! Se não fizer validação o usuário acessa sem o login!! Sistemas de GED abertos para visitantes tb são muito vulneráveis.. mesmo sem permissão de upload. E o FTP? hahahahahahaha sem comentários....
13/04/2004 3:21pm (~20 anos atrás)

Parabens pelo seu artigo. O artigo com certeza ajudará muita gente que está começando.
Vale!!!
05/04/2004 5:53pm (~20 anos atrás)

David Fante disse:
Acho que seria muito legal se vc colocasse exemplos da seguinte maneira:

Assim é o errado:
blablablablabalablablabla

Assim é o certo:
blablablablablablablablabla

Tipow eu vi q jah tem algo assim mais naum eh em todos os exemplos... ;)
Mas estah muito bom o artigo, alguma outra referencia em PT ?

David Fante
www.shz.com.br
01/04/2004 3:22pm (~20 anos atrás)

Essa parte relacionada a configuração de servidor e exploração de falhas locais será apresentado na 2ª parte desse artigo (que eu espero publicar em breve)

[]`s

Ragen
27/03/2004 4:08am (~20 anos atrás)

achei muito interessante, mas tu falo em configuração do servidor, como eu sei se o servidor tá bem configurado? eu fiz todos os testesinhos que tu apresento no scritp e tal, em relação a minha programação tá blz, mas e o servidor?
26/03/2004 3:11pm (~20 anos atrás)

Um outro método que acho últil é quando passo variáveis por POST pra outro script executar:

$var = addslashes(trim($_POST['var']));

Assim removo o espaçamento e escapo os caracteres... depois é só usar:

$var = stripslashes($row['var']);

Muito bom o seu artigo e muito doido o gif hehehehe []s
24/03/2004 9:39am (~20 anos atrás)

Opa :)

Elogios são muito bem vindos...

Mas é claro que é sempre ouvir opinioes... Enfim, eu também gostaria de ouvir criticas a respeito desse artigo

[]`s

Ragen
21/03/2004 10:55pm (~20 anos atrás)

Novo Comentário:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)