1 (19.06.2012 18:23:14 отредактировано merlin.metso)

Доброго времени суток!

Столкнулся с бедой. Вирус поразил 180 .js файлов на хостинге. Анализ этих файлов показал, что строки вируса начинаются на 
try{q=document.createElement

Вот стоит задача уничтожить эту дрянь.

Гугл, как мог, помогал мне, но лучшее что я нашел это удаление ЦЕЛИКОМ ФАЙЛОВ содержащих фрагмент вируса ( try{q=document.createElement ), а хотелось бы найти файлы содержащие описанный выше кусок и удалить в них ОДНУ СТОКУ (или более) но, только содержащие этот фрагмент.

Вот, то, что исправно удаляет целые файлы, но сами файлы нужны, поэтому скрипт бесполезен

 grep -rls "try{q=document.createElement" /path/to/directory/ | xargs rm -rf 

Вот, что, что попытался сделать я, читая МАН на заморском языке

 grep -rls "try{q=document.createElement" /path/to/directory/ | xargs sed -e 's/try{q=document.createElement//g' 

но, это не работает.

Может кто подскажет как оно делается. или даст ссыль на хороший МАН на русском языке?

2 (19.06.2012 19:20:51 отредактировано gramozeka)

merlin.metso пишет:

но, это не работает.

merlin.metso пишет:

grep -rls "try{q=document.createElement" /path/to/directory/ | xargs sed -e 's/try{q=document.createElement//g'

вот так попробуй :

sed -e 's/try{q=document\.createElement//g' "имя возвращённое grep"

но тут нужно построить целый скрипт который будет брать имя файла возвращенного grep скармливать его sed'у, то что возвращает sed сохранять во временный файл, который нужно будет переименовывать в оригинальное имя.

" si contuderis stultum in pila quasi tisanas feriente desuper pilo non auferetur ab eo stultitia eius " © Proverbs 27:22

3

а чем вирус заканчивается?
если только эту стручку удалить, то достаточно только sed/bash
find /path/to/folder |while read FILE; do sed -i 's/try{q=document\.createElement//g' $FILE; done

gramozeka пишет:

sed -e 's/try{q=document\.createElement//g' "имя возвращённое grep"

ключик -i забыл

95% процентов проблем находятся между клавиатурой и стулом.

4

Fat-Zer пишет:

ключик -i забыл

да, бывает ... ab

" si contuderis stultum in pila quasi tisanas feriente desuper pilo non auferetur ab eo stultitia eius " © Proverbs 27:22

5

Спасибо Gromozeka & Fat-Zer за участие.

Fat-Zer пишет:

если только эту стручку удалить, то достаточно только sed/bash
find /path/to/folder |while read FILE; do sed -i 's/try{q=document\.createElement//g' $FILE; done

к сожалению скрипт указанный выше удаляет только try{q=document\.createElement , а хотелось бы удалить строчку содержащую это выражение просто каждая строка вируса стабильно содержит именно этот отрывок кода, а всё остальное это набор различных спец символов. Вот и хочется чтобы вырезались все строчки, содержащие бяку try{q=document\.createElement ab


grep -rls "try{q=document.createElement" /path/to/file/ | xargs sed -i -e 's/try{q=document\.createElement//g'

Виноват, а что такое "имя возвращенное grep" ?

Самое грустное это то, что ClamAV лечить не умеет, а DR-Web файлы содержащие это  вирус лечить, почему то, отказывается и предлагает просто удалить, что не приемлемо, ибо сайт то работает, значит файлы рабочие и их бы просто вылечить, ну или покалечить код вируса так, чтобы он не шалил ab

6

merlin.metso пишет:

к сожалению скрипт указанный выше удаляет только try{q=document\.createElement , а хотелось бы удалить строчку содержащую это выражение просто каждая строка вируса стабильно содержит именно этот отрывок кода, а всё остальное это набор различных спец символов. Вот и хочется чтобы вырезались все строчки, содержащие бяку try{q=document\.createElement

find /path/to/folder |while read FILE; do sed -i '/try{q=document\.createElement/d' $FILE; done

95% процентов проблем находятся между клавиатурой и стулом.

7 (20.06.2012 11:22:26 отредактировано gramozeka)

merlin.metso пишет:

а хотелось бы удалить строчку содержащую это выражение

удали один слеш и делов :

find /path/to/folder |while read FILE; do sed -i 's/try{q=document\.createElement/g' $FILE; done

вот тебе мануал тыц

" si contuderis stultum in pila quasi tisanas feriente desuper pilo non auferetur ab eo stultitia eius " © Proverbs 27:22

8

Спасибо, gtamozeka & Fat-Zer, за посильный вклад ab В итоге сработала следующая команда

find /path/to/files/ | while read FILE; do sed -i '/try{q=document\.createElement/d' $FILE; done

но, по всей видимости, sed не может работать с картинками и.т.д. по этому во время исполнения скрипт сыпал ошибками (но дело своё делал!). Поэтому в поиск был добавлен ключик -name

В итоге команда имеет следующий вид

find /путь/до/файлов/ -name *.js | while read FILE; do sed -i '/try{q=document\.createElement/d' $FILE; done

Теперь сайт здоров!!!!!!!!!!!

Тему можно закрыть