MyWay Hosting Posted July 20, 2014 Share Posted July 20, 2014 <p><p>Ol&aacute;.</p> <p>&nbsp;</p> <p>Sou novo neste f&oacute;rum e tenho muita experi&ecirc;ncia em administra&ccedil;&atilde;o de servidores cPanel e seguran&ccedil;a. Costumo desenvolver ferramentas pr&oacute;prias para seguran&ccedil;a para minha empresa.</p> <p>&nbsp;</p> <p>Esta ser&aacute; minha primeira contribui&ccedil;&atilde;o aqui no Portal do Host.</p> <p>&nbsp;</p> <p>Eu gostaria de deixar uma sugest&atilde;o de seguran&ccedil;a, em rela&ccedil;&atilde;o ao WHMCS que tamb&eacute;m servir&aacute; para qualquer script em contas hospedadas em servidores compartilhados ou n&atilde;o compartilhados. Mesmo que voc&ecirc; tenha um VPS, Cloud, dedicado, seja l&aacute; qual for o servi&ccedil;o que voc&ecirc; usa e onde tenha diversas contas hospedadas, &nbsp;deve ler com aten&ccedil;&atilde;o o que estou escrevendo aqui e usar essa t&aacute;tica de seguran&ccedil;a.&nbsp;</p> <p>&nbsp;</p> <p>Existe uma falha grave de seguran&ccedil;a no Apache. Para o Apache, existem alguns remendos e solu&ccedil;&otilde;es mas nem todas empresas aplicam a corre&ccedil;&atilde;o, seja por n&atilde;o conhecer ou seja por preferir outros meios de seguran&ccedil;a que mantenha a falha mas que seja detect&aacute;vel com auto suspens&atilde;o da conta hackeada que dar&aacute; a brecha para o hack.</p> <p>&nbsp;</p> <p>Esta falha permite, mesmo que um site esteja em um servidor seguro que funcione sob SUPHP, tenha uma conta hackeada a partir de uma outra conta hackeada no mesmo servidor. N&atilde;o irei entrar em detalhes de como funciona a seguran&ccedil;a do SUPHP mas isso n&atilde;o significa total isolamento de uma conta hospedada como muitos acreditam.</p> <p>&nbsp;</p> <p>Como funciona a falha? Mesmo em servidores com SUPHP.</p> <p>&nbsp;</p> <p>Por padr&atilde;o o arquivo configuration.php, config.php, conexao.php ou qualquer outro arquivo de conex&atilde;o a base de dados fica com permiss&atilde;o 644 quando o mesmo &eacute; enviado ao ftp. &Eacute; justamente ai que mora o perigo somada a falha do APACHE.</p> <p>&nbsp;</p> <p>No caso do WHMCS o arquivo de configura&ccedil;&atilde;o &eacute; configuration.php. Muito bem. Tomaremos isso como exemplo.</p> <p>&nbsp;</p> <p>Digamos que em um servidor tenhamos 2 sites hospedados. Ent&atilde;o a estrutura na home ser&aacute; assim</p> <p>&nbsp;</p> <p>/home/USER1/public_html/</p> <p>/home/USER2/public_html/</p> <p>&nbsp;</p> <p>O user1 est&aacute; usando o WORDPRESS e o user2 est&aacute; usando o WHMCS ou qualquer outro script com conex&atilde;o a base de dados.</p> <p>&nbsp;</p> <p>O user1 est&aacute; usando script desatualizado que permite o hack da conta. Quando pensamos que o SUPHP ir&aacute; fazer uma prote&ccedil;&atilde;o total para o user2 ai que entra um macete do hack.</p> <p>&nbsp;</p> <p>Como funciona ?</p> <p>&nbsp;</p> <p>1) O hacker usando um script, coleta o username de todas contas do servidor.&nbsp;</p> <p>&nbsp;</p> <p>Ent&atilde;o ele saber&aacute; o username de todos sites hospedados no servidor. Sendo assim o primeiro passo est&aacute; dado. Agora ele sabe que existe uma outra conta que neste nosso exemplo chama-se USER2</p> <p>&nbsp;</p> <p>2) Agora dentro do site que ele hackeou, ele imagina que exista diversos scripts comuns hospedados no USER2.&nbsp;</p> <p>&nbsp;</p> <p>Ent&atilde;o ele cria links para dentro do USER2 com os mais variados nomes de arquivos.&nbsp;</p> <p>Entenda que estes links &eacute; como um link criado na sua &aacute;rea de trabalho para um arquivo em seu HD.</p> <p>&nbsp;</p> <p>Ent&atilde;o ele ir&aacute; criar links dentro do USER1 para dentro do USER2 como os exemplos abaixo citados.</p> <p>&nbsp;</p> <p>&gt;&gt;&nbsp;/home/USER2/public_html/configuration.php</p> <div> <p>&gt;&gt;&nbsp;/home/USER2/public_html/db.php</p> <div> <p>&gt;&gt;&nbsp;/home/USER2/public_html/conexao.php</p> <div> <p>&gt;&gt;&nbsp;/home/USER2/public_html/config.php</p> <div>&nbsp;</div> </div> </div> </div> <p>3) O pr&oacute;ximo passo do hacker &eacute; acessar os links. Claro que no caso acima, ele ter&aacute; uma mensagem de erro para os arquivos db.php, conexao.php, config.php porque estes arquivos n&atilde;o existem no USER2 mas poder&aacute; ler o arquivo configuration.php</p> <p>&nbsp;</p> <p>A partir de agora o hacker tem a senha da base de dados + o user da conta + nome da base de dados</p> <p>&nbsp;</p> <p>Usando estes dados ele pode ent&atilde;o hackear sua conta, destruir seus dados, destruir a base de dados e etc. Seja qual a inten&ccedil;&atilde;o do hacker, ele tem tudo para isso.</p> <p>&nbsp;</p> <p>&nbsp;</p> <p>Como resolver isso ?</p> <p>&nbsp;</p> <p>O segredo &eacute; muito simples. Coloque permiss&atilde;o 640 para o arquivo configuration.php ou para qualquer outro arquivo de conex&atilde;o da base de dados. Cada script define o nome do arquivo de conex&atilde;o. Se voc&ecirc; desenvolveu um script e o arquivo &eacute; chamado de conecta.php ent&atilde;o coloque a permiss&atilde;o 640.</p> <p>&nbsp;</p> <p>Essa permiss&atilde;o ir&aacute; retirar do hacker a possibilidade de ele enxergar o conte&uacute;do do arquivo.</p> <p>&nbsp;</p> <p>&nbsp;</p> <p>Eu j&aacute; havia comentado sobre isso com o Edvan no site dele e ele ficou de contactar a WHMCS para saber sobre isso mas n&atilde;o houve mais respostas na p&aacute;gina de seguran&ccedil;a. Inclusive o checklist criado para verificar a seguran&ccedil;a continua informando que o arquivo com 644 de permiss&atilde;o est&aacute; seguro. Eu acredito que o checklist deva ser modificado e instruido para que o arquivo tenha permiss&atilde;o 640.</p> <p>&nbsp;</p> <p>J&aacute; comentei isso em uma p&aacute;gina no facebook para usu&aacute;rios de WHMCS afim de alertar sobre o grande perigo que os mesmos est&atilde;o passando.&nbsp;</p> <p>&nbsp;</p> <p>Minha inten&ccedil;&atilde;o &eacute; orientar os usu&aacute;rios que alugam servidores compartilhados, dedicados, seja qual for e que hospede diversas contas ou n&atilde;o, sobre como aumentar sua seguran&ccedil;a.&nbsp;</p> <p>&nbsp;</p> <p>Inclusive em nossos servidores que administramos, temos scripts preparados para mudar permiss&atilde;o automaticamente em todas contas hospedadas visto que &eacute; imposs&iacute;vel fazer com que 100% dos clientes tomem a atitude correta na hora de colocar a devida permiss&atilde;o no arquivo de configura&ccedil;&atilde;o que conecta a base de dados.</p> <p>&nbsp;</p> <p>Considera&ccedil;&otilde;es finais:</p> <p>&nbsp;</p> <p>Apesar de um servidor estar rodando com compila&ccedil;&atilde;o SUPHP, ele poder&aacute; ver o conte&uacute;do do arquivo mas n&atilde;o poder&aacute; alterar o mesmo a partir do site hackeado.&nbsp;</p> <p>&nbsp;</p> <p>Em caso de d&uacute;vidas, responda esse t&oacute;pico que posso ajudar a entender melhor caso ainda tenha ficado d&uacute;vidas.</p> <p>&nbsp;</p> </p> 0 Quote Link to comment Share on other sites More sharing options...
Guest Posted July 20, 2014 Share Posted July 20, 2014 Isso é symlink, não? Se sim, já tem uma solução. 0 Quote Link to comment Share on other sites More sharing options...
MyWay Hosting Posted July 21, 2014 Author Share Posted July 21, 2014 Olá Erick sim, isso é ataque via simlink. Tem solução mas não necessariamente ela está aplicada no servidor que está sua conta. Vamos lá: Caso 1) Digamos que você tenha um dedicado,ou VPS. Você tem acesso SSH e o serviço é totalmente configurado por você. Então, neste caso você é que tem que fazer a correção. Inclusive a melhor opção é paga e requer bastante conhecimento para ser feita. Não pense que irá receber o servidor já com a correção visto que é um adicional feito pelo admin do servidor posteriormente a instalação do serviço. Não é uma solução default ou disponibilizada pelo fabricante do Apache webserver. Se você comprar hoje um VPS ou dedicado, virá o Linux instalado + painel, sem nenhuma correção ! Caso 2) Quando está usando servidores compartilhados, as famosas revendas normais ou hospedagem normal, como saber se o admin implantou a segurança ? Difícil saber. Então em ambos casos, permissão 640 no arquivo de conexão a base de dados ! Abraços! 0 Quote Link to comment Share on other sites More sharing options...
RobertSP Posted July 21, 2014 Share Posted July 21, 2014 Galera se vocês mantém o WHM/cPanel atualizados, apache compilado 'adequadamente' via EasyApache, não há risco! Sem pânico, isso é velho, antigamente utilizavamos "SymLinksIfOwnerMatch" como prevenção global, mas atualmente nem há mais a necessidade! 0 Quote Link to comment Share on other sites More sharing options...
MyWay Hosting Posted July 21, 2014 Author Share Posted July 21, 2014 Galera se vocês mantém o WHM/cPanel atualizados, apache compilado 'adequadamente' via EasyApache, não há risco! Sem pânico, isso é velho, antigamente utilizavamos "SymLinksIfOwnerMatch" como prevenção global, mas atualmente nem há mais a necessidade! Olá RobertSP Os usuários do WHMCS ou qualquer outro script devem levar a minha sugestão ao pé da letra e não confiar no servidor que estão hospedados. Há claro indício para executar a troca de permissão do arquivo. O pânico começa quando você pode ter todos seus dados destruídos e um backup atualizado por cima disso. A palavra pânico neste caso não é que eu escreveria e sim aplicação imediata da troca da permissão. Sou novo no fórum e estou observando muitos usuários usando servidores virtuais e não dedicados. Portanto a sua sugestão é válida apenas para quem tem controle total sobre o equipamento com acesso root ! Apenas atualizar o WHM e CPANEL não resolve o problema. Alem de atualizar o WHM e CPANEL tem que fazer a compilação necessária do servidor WEB. A solução apresentada pelo fabricante do CPANEL tem aspectos ruins que podem obrigar ao admin do servidor a não fazer a compilação para evitar o problema e tomar outras soluções no lugar. Não vou entrar em detalhes dos motivos do patch não ser aplicado. Isso é caso para ser discutido no forum da CPANEL ou com o próprio fabricante. O fato é que a falha existe e não necessariamente o usuário está em um servidor com o PATCH aplicado. Você escreveu de uma forma como se TODOS servidores já tivessem aplicado a correção ou como se TODOS administradores tenham optado pela correção e como se TODOS administradores de servidores, mesmo que capacitados tenham feito as correções. Alem disso você esqueceu dos usuários que usam servidores virtuais sem acesso root ! Abraços. 0 Quote Link to comment Share on other sites More sharing options...
Alexandre Duran Posted July 21, 2014 Share Posted July 21, 2014 Sem dúvida a melhor forma de se prevenir é aplicando o 640 no arquivo de config. Isso é válido não apenas para o WHMCS quanto tb para praticamente todos os scripts existentes. Mas tem uma dica: para os que usam o CloudLinux, instale o CAGEFS e seja feliz. 0 Quote Link to comment Share on other sites More sharing options...
MyWay Hosting Posted July 21, 2014 Author Share Posted July 21, 2014 Sem dúvida a melhor forma de se prevenir é aplicando o 640 no arquivo de config. Isso é válido não apenas para o WHMCS quanto tb para praticamente todos os scripts existentes. Mas tem uma dica: para os que usam o CloudLinux, instale o CAGEFS e seja feliz. Olá Duran, sim, existe essa possibilidade. Tendo acesso root e fizer a configuração funciona bem. Mas isso se o usuário tiver root para poder instalar isso ou aplicar outro patch. Eu escrevi esse tópico visando todos usuários, incluindo quem não tem acesso root, quem tem mas não aplicou a correção até mesmo por desconhecer e ainda usuários de hospedagem comum que usam o WHMCS para outras funções a não ser hosting. Sim, isso é aplicável para qualquer script. Não é uma falha do WHMCS e sim do servidor WEB. Abraços. 0 Quote Link to comment Share on other sites More sharing options...
Guest Posted July 21, 2014 Share Posted July 21, 2014 Sem dúvida a melhor forma de se prevenir é aplicando o 640 no arquivo de config. Isso é válido não apenas para o WHMCS quanto tb para praticamente todos os scripts existentes. Mas tem uma dica: para os que usam o CloudLinux, instale o CAGEFS e seja feliz. É uma boa utilizar CageFS, mas vale ressaltar que ele não vai salvar ninguém de um belo Privilege Escalation... O que eu recomendo utilizar é também as regras do ModSec do OWASP. -- Também existe outras formas de aplicar este path, que pode ser mesmo até via modsecurity. http://docs.cpanel.net/twiki/bin/view/EasyApache/Apache/SymlinkPatch http://www.sysadmindiaries.com/2013/07/how-to-prevent-cpanel-apache-symlink.html 0 Quote Link to comment Share on other sites More sharing options...
Alexandre Duran Posted July 21, 2014 Share Posted July 21, 2014 É uma boa utilizar CageFS, mas vale ressaltar que ele não vai salvar ninguém de um belo Privilege Escalation... O que eu recomendo utilizar é também as regras do ModSec do OWASP. -- Também existe outras formas de aplicar este path, que pode ser mesmo até via modsecurity. http://docs.cpanel.net/twiki/bin/view/EasyApache/Apache/SymlinkPatch http://www.sysadmindiaries.com/2013/07/how-to-prevent-cpanel-apache-symlink.html Eu testei o uso do OWASP mas não tive sucesso na instalação. 0 Quote Link to comment Share on other sites More sharing options...
edvan Posted July 21, 2014 Share Posted July 21, 2014 A WHMCS.com modificou as instruções nas permissões http://docs.whmcs.com/Installing_WHMCS#Installing_WHMCS Required file & folders permissions /configuration.php CHMOD 400 Readable /attachments CHMOD 777 Writeable /downloads CHMOD 777 Writeable /templates_c CHMOD 777 Writeable The above applies unless your php is suPHP or PHPSuExec. If using DSO as your php handler, you must use 644 permissions. 0 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.