Muitas vezes tenho problemas com sites que são hackeados. Geralmente eles acabam com scripts inseridos em arquivos diferentes. Existe uma maneira, no Linux, de procurar esse conteúdo e excluí-lo automaticamente? Normalmente esse conteúdo começa e termina com algo assim.
<!--2d3965--><script type="text/javascript" language="javascript">
</script><!--/2d3965-->
Seria possível usar algum tipo de combinação de grep para procurar arquivos contendo esse conteúdo e depois canalizá-lo para sed para excluir tudo de
para
Responder1
Eu escrevi esse script, pode ser útil.
#!/usr/bin/env python
import os
import sys
for infile in sys.argv[1:]:
print infile
filetmp=infile+'.tmp'
BEGIN='<!--2d3965-->'
END='<!--/2d3965-->'
f = open(infile, 'r')
ftmp = open(filetmp, 'w')
skip=False
for line in f:
if BEGIN in line:
#print line.partition(BEGIN)[0]
ftmp.write(line.partition(BEGIN)[0])
skip=True
if END in line:
#print line.partition(END)[2]
ftmp.write(line.partition(END)[2])
skip=False
else:
if not skip:
ftmp.write(line)
#you can add save restrictions here
os.rename(filetmp, infile)
Você deve dar:
- nome de arquivo com vírus
- string, que marcavírus começacorda
string, que marcafim do vírus
Não se esqueça de alterar as permissões novamente, se o arquivo exigir. aliás, acho que é aplicável apenas a arquivos de texto.
Por favor, teste e faça backup antes de usar.
Use-o desta forma:
python cleaner.py index.html js/jquery.js
Responder2
Eu adicionaria esses arquivos ao Subversion ou git e compararia automaticamente a versão oficial desses arquivos com os arquivos dos sites regularmente. Se você notar alguma diferença, você sabe que foi hackeado e pode procurar o vazamento. Enquanto isso, você pode restaurar o arquivo original a partir da ferramenta de controle de versão.