Tratamento de dados fornecidos pelo usuário: projetando sistemas com mais segurança
De uns tempos para cá comecei a notar que mais gente está programando e conseqüentemente mais gente está entrando no mercado de trabalho precocemente. Estão iniciando sua viagem pelo maravilhoso mundo do desenvolvimento web muito inocentemente, no entanto não sabem eles - os desenvolvedores newbies ou negligentes - que existem usuários maliciosos olho no seu sistema.
Início
Desenvolvido: Allyson Francisco de Paula Reis. Nickname: Ragen e-mail: ragen@oquerola.com
Este e outros tutoriais podem ser obtidos em:
http://www.frontthescene.com.br/
http://cdm.frontthescene.com.br/
http://br.groups.yahoo.com/group/clube_dos_mercenarios/ (histórico)
http://br.groups.yahoo.com/group/frontthescene/ (histórico)
Todas as informações 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ó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 visam 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, NÃO recomendo a leitura desse texto.
De uns tempos para cá comecei a notar que mais gente está programando e conseqüentemente mais gente está entrando no mercado de trabalho precocemente... 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 equivale 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 + Fórum = SHELL
http://www.frontthescene.com.br/artigos/UpSigF_Shell.txt
- Minha releitura do manual do PHP sobre 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.