############################################################################## ########################## 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: 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

Dessa forma eu consegui inserir meus arquivos com qualquer extensão sem me preocupar com a checagem de extensão. A ideia de checagem de extensão é muito boa, porem utilizar checagem client-side (lado do cliente) foi a grande falha na implementação, que poe toda segurança por "agua baixo". :P 2.4 - ASP ao inves de PHP ------------------------- Voce encontrará varios problemas parecidos com FOROUM's rodando ASP, a grande pergunta é, o que fazer com ASP ?? Existem poucos exemplos de scripts voltados para o hacking em ASP. Então eu resolvi criar um pequeno FAQ de como o ASP pode ser aproveitado para o hacking. ;) Porem quase todas perguntas abrangem varios assuntos que poderião vir a ser outros tutoriais, mas como essa não é a intenção eu apenas farei um comentario e passarei um Link. :P 1) Existe algo parecido com o fopen() em ASP ?? Sim, veja um exemplo bem simples: Set fs = CreateObject("Scripting.FileSystemObject") Set wfile = fs.OpenTextFile("c:/boot.ini") filecontent = wfile.ReadAll wfile.close 2) É possivel acessar chaves do registro do Windows atraves do ASP ?? Divirta-se amigo. ;) http://www.aspin.com/home/components/srvcontrol/registry 3) Como executar comandos do sistema operacional utilizando ASP ?? Não vou facilitar a vida dos Script Kiddies. ;) Estou repassando um link da MSDN (Microsoft Software Development Network) que explica como utilizar a diretiva #exec do SSI (Server Side Include), porem a configuração padrão não permite que o CommandType seja cmd por motivos de "segurança". :P Se vc analisar o funcionamento da diretiva explicada no link verá que o conselho é falho. Como conseguir setar o CommandType para cmd fica como exercicio para os fuçadores. http://msdn.microsoft.com/library/default.asp?url=/library/en-us/iisref/htm/ref_ssi_exec.asp Não se esqueça que a grande maioria das aplicações escritas em ASP utilizão banco de dados SQL Server, o que pode ser de grande valia para ter acesso a tão sonhada shell. ;) Deixarei duas stored procedures interessantes a se pesquisar, são elas: * xp_cmdshell * sp_adduser --------------- 3 - Terminando | --------------- Eu comecei a escrever esse tutorial a mais de 1 mes, mas por problemas pessoais acabei ficando com ele parado. Eu ia descrever mais dois esquemas de exploitação em FORUM's (mais seguros e mais conhecidos), mas fica pra proxima versão desse tutorial... Os esquemas citados servem apenas para alertar dos problemas de upload em FORUM's, essas duas falhas basicas descritas so existem em FORUM's velhos ou pouco utilizados (que tem uma baixa segurança), mas com um pouco de criatividade e analise de codigos vc pode se surpreender com o tanto de servidores bugados. :) 3.1 - Links e Referencias ------------------------- http://cdm.hacking.la => Clube Dos Mercenarios ;) http://www.frontthescene.com.br => FrontTheScene =] www.php.net => Site oficial do PHP www.phpbrasil.com.br => Site muito bom sobre PHP www.msdn.com => Site da MSDN, tem documentação sobre funções, metodos, e muito mais. www.aspbrasil.com.br => Sile de ASP em portugues, tem um forum (hehehe) interessante. :) 3.2 - Consideracoes Finais -------------------------- Antes de fazer meus agradecimentos vou deixar tres dicas para os fuçadores. Muitos esquemas de checagem de extensão de arquivos para upload de assinatura podem ser passados utilizando malicia. Voce pode se surpreender com o que dupla extensão de arquivos pode fazer. Ou então colocar a extensão apos o tamanho do buffer definido na aplicação. E porque não utilizar os dois juntos !? ;) Escrevi esse texto com intuito de apoiar o Clube Dos Mercenarios e a Front The Scene, espero que esse seja o primeiro de muitos. Gostaria de dedicar esse humilde tutorial a todos que lutão pelo Hacking ETICO e a todos meus amigos (vcs sabem quem vcs são). ;) Nem sempre o Hacker que tem maior conhecimento tecnico é o melhor, malicia é a chave. ;)