Минимальный набор команд для чистки веб-сервера после взлома

в 21:28, , рубрики: взлом сайта, взлом сайтов, информационная безопасность, метки: ,

Есть сервер — на котором стоит зоопарк разных сайтов, на всяческих платформах.
Позним ночером мне стукнул владелец данного зоопарка, и попросил помогти вичистить ифрейм с его сайта.
В результате чего и был написан данный пост — как памятка для себя и для тех, кто не особо разбирается в администрировании(как я), но сайты нужно почистить здесь и сейчас.
Сразу зделаю оговорку, я ни разу не администратор, хотя базовый набор команд, для работы в командной строке знаю.

Вы владелец сайта, вы его систематически обновляете, и само-собой у вас есть его бекап, ну или хотя бы древняя копия движка.
Сайт кторый находиться по пути /var/www/domain.com, вы заметили что у вас начало что то не так работать, или появился дополнительный контент который вы не выводили итд.
Минимальный порядок действий которые надо выполнить чтоб вычистить всякие бекдоры и закладки из ваших файлов:

 find /var/www/domain.com/ -printf '%CD %CT %pn' | sort -n|grep php

команда показывает нам измененные файлы php, отсортированные по дате — самые новые — внизу

На этом можна закончить, так как проще всего дальше сравнить показанные файлы с эталоном вашего движка.
Но если вы еще беспокоитесь про свой парк сайтов — можете прогнать команду для поиска всяких маркеров которые в 80% случаев актуальны для веб-шеллов

grep '((eval.*(base64_decode|gzinflate|$_))|$[0O]{4,}|FilesMan|JGF1dGhfc|IIIl|die(PHP_OS|posix_getpwuid|Array(base64_decode|document.write("\u00|sh(3(ll|11)))' /var/www/ -roE --include=*.php* 

думаю что она тоже поймает несколько веб-шеллов, не факт что новых — иногда они лежат чуть ли не годами, особенно когда у вас есть/была привычка ставить всякие нулленые скрипты

И на остаток если и предыдущий вариант вас не удовлетворил, можна попробовать запустить команду которая зделает поиск по наличию закодированного в файлах base64 кода длинной более 30 символов(в большинстве случаев именно так маскируют всякие закладки, или выводы ифрейма)

grep '[A-Za-z0-9+/]{30,}' /var/www/ -roE --include=*.php* 

Так же есть несколько вариантов — чтоб поискать еще следы, либо потенциальные дырки:
— Если нашли файл с шеллом, и он недавний — смотрим в access логах веб сервера ИП пользователя который заходил на данный урл, а дальше уже следим за его действиями как в access так и в error логах, иногда так вы можете увидеть способ как вас ломанули.

ПС: это был самый базовый набор команд и действий для поиска

Автор: smolyar

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js