Eu discordo totalmente da afirmação de Chris S de que todos os arquivos / diretórios devem ser de propriedade de root. Existe uma razão para o sistema de permissões do Unix.
Existem duas maneiras básicas de executar o Apache / PHP. Uma delas é executá-la como o usuário www-data e ter os arquivos pertencentes a um nome de usuário não raiz. O Apache é executado como uma conta de baixo privilégio e deve ter acesso a diretórios / arquivos particulares para poder escrever para eles. É por isso que o Joomla tem a camada ftp, para compensar isso. No entanto, em um ambiente de servidor compartilhado, o fato de que todos os arquivos precisam ser legíveis no mundo torna os arquivos de configuração de outros sites dessa máquina fáceis de ler.
A outra maneira é executar o Apache com o PHP rodando o suPHP, que é o que o CPanel prefere. Nesse caso, o Apache é executado como um usuário de baixo privilégio, mas todas as solicitações do PHP são entregues a um script que altera a propriedade para o nome de usuário que possui os arquivos. Embora agora você possa usar as permissões do Unix para impedir que outros scripts maliciosos na máquina naveguem em seus diretórios, qualquer script PHP comprometido pode ser executado como seu nome de usuário e, como consequência, modificar / desfigurar qualquer um dos arquivos de seu nome de usuário. / p>
Como você não é bem versado em segurança de servidores, encontrar rootkits bem escondidos, etc. na máquina não seria uma tarefa divertida. Primeiro, você teria que saber se o kernel era explorável (a menos que você esteja executando um kernel muito recente, a resposta aqui seja sim) e se alguma coisa foi afetada. Esse hack específico geralmente ocorre por meio de uma conta de FTP comprometida, no ponto em que eles são capazes de executar scripts. Desde que você encontrou esse código, ele também sugere que o 'hacker' não era muito sofisticado. Existem muitas maneiras pelas quais ele poderia ter escondido esse código e impedido seus logs de ver o que ele estava fazendo.
mojah está correto. Uma vez que eles entram, eles tentam executar um script de /dev/shm/.alguma coisa ou / tmp que se conecta à sua rede de IRC, ou atua como um bot de controle sobre o undernet ou outra rede concorrente. Você provavelmente encontrará um ou dois scripts em execução, talvez uma entrada do cron para reiniciá-lo, e outros shells remotos escondidos durante a instalação do Joomla. Procure arquivos no diretório / uploads ou / images com nome semelhante aos arquivos existentes. img_1034.jpg.php. Eles geralmente escondem seu bot irc em vários lugares que não são acessíveis pela web, de modo que você não vai tropeçar neles quando você logar, mas, terá escondido seus shells remotos em lugares para que eles possam voltar e reexecutar seus roteiro e reconectar a rede deles.
Em qualquer caso, a tarefa que você está enfrentando é um pouco complicada. Você tem um site que precisa ficar on-line, falta-lhe um pouco da experiência com essas situações e deseja apenas que seu site funcione.
Pegue um despejo de seu banco de dados através da função de exportação do Joomla, verifique se ele é um dump completo. Crie um segundo site e importe o despejo para verificá-lo. Quando tiver certeza de que tem um bom despejo importável, faça um backup do site. Exclua todos os arquivos, reinstale o Joomla, a instalação básica, use as informações de conexão existentes do MySQL - pode ser que você esteja atualizando e, nesse caso, permita a atualização. Se você estiver em um VPS em algum lugar, peça a ele uma nova imagem e reinstale-o.