В-общем, через локальный инклюд на сайте залил шелл. Нычки не делал нигде. Но шелл заtouchил и папку в которой шелл был. Забил на два дня на ресурс. Потом пробую зайти на шелл - хоппа - forbidden - я в ахуе. Метнулся к инклюду - прикрыли багу. Ну я нашел еще инклюд на другом поддомене - залил снова шелл. Решил проверить, что со старым - папка в которой он лежал уже не имеет прав на чтение, исполнение и запись, поэтому шелл не работал. Ну залил еще щеллов и нычек на рес и поддомены. Даты откатывал. На шеллы не заходил с веба. Заодно глянул, что с тем бажным скриптом первым(инклюд) - ддействительно залатали. Через два дня захожу снова на шелл - снова forbidden. Лезу на другие шеллы - аналогично. Нычки тоже в большинстве - forbidden. Одна осталась - залил через нее шелл снова. Смотрю значит - все шеллы и нычки не удалены, а просто имеют права 000, также и с папками, что я создавал - 000 Как так меня палили? ведь даты я менял, в папки заливал у которых права были такие же , что и у вебсервера. (apache 48), в логах не палил файлы. Что это за суперадмины такие, что так за серваком бдят? И как у них так это выходит? И почему они не удаляли тупо файлы, а меняли права на 000 - зачем это ?
)) а touch на всё делал, на файлы, на изменяемые ПАПКИ, обратил внимание, какие владелец и группа у файла, чисто визуально не отличались от остальных в папочке?) PS: Да элементарно - слепок системы, при каждом появлении ЧЕГО_ТО нового при очередном сканировании - алерт
Конечно на все, что изменял. А владелец - я писал в диры, владельцем которых является апач и файлы там апачевые.. поэтому подозрений никаких не должно быть... Вот насчет слепка системы и сканирования - может быть.. Но это сервак большой довольно таки.. так часто сканирование что-ли проводится там?
тебе диж бы бред какой то написать. а темп к примеру? сессии, аццесс логи и тд, да куча всего, место на винте никогда не будет статичным. если и есть такой скрипт то он проверяет скорее сам сайт
вообще то нормально настроенный сервер имеет корень под www где логи, темпы не хранят... бд обычно находится также в отдельном корне... Или ты думаешь что админы серверов все хранят на диске С???? Добавил: Ну если и это тебе кажется ахинеей то проверять размер папок где разрешено выполнение пхп (и т.д) скриптов...
Попробуй вынести код шелла за пределы веб диры, или например в БД ну а в каком ни будь малозаметном оригинальном файл внеси в начали include c exit c срабатыванием например по браузеру, кукисам и etc, у меня была схожая фигня именно так я и поступил к моему счастью там не было чексуммов и etc, просто сносились все новые файлы и каталоги раз в полчаса.
Такое поведение напоминает работу антивируса, который определяет по сигнатуре твой шелл. Проблему может решить какой-нибудь пока что мало известный веб-шелл, например WSO2 (кстати к тому же очень удобный, рекомендую). В похожей ситуации шифрованные с помощью base64 и сжатые gzip'ом шеллы удалялись буквально через 30 секунд.
+1 , на линухах тоже антивири бывают, если там р57 какой-нибудь, то любой антивирь его найдет, иногда вообще бывает заливаешь Р57 - сразу Forbidden, заливаешь непаленый - все нормально
Думаете антивирус? c99madshell тоже палят? Он же несколько раз гзипованный... Другие пока не пробовал - но попробую - сообщу.. Вот кстати ps -aux с серва. Посмотрите, пожалуйста, кто разбирается, есть что нибудь похожее на антивирь? http://rapidshare.com/files/243372824/lsbkypsaux.txt http://slil.ru/27750160
Вот скрипт, с помощью которого в секунду можно вычислить появление нового файла (у меня 146 344 файла, 64 мб оперативки, скрипт работал секунду или меньше). Состоит из двух частей, сначала запускаем первую часть: 1. Создаёт образ (эталон) всех файлов на диске: PHP: <?php @set_time_limit(0); @ini_set("display_errors","1"); $path = '/home/www/lalala/http'; // Абсолютный путь к корню, без слеша в конце //Функция рекурсивного получения списка файлов и папок function fold($rootDir, $allData=array()) { $invisibleFileNames = array(".", ".."); $dirContent = scandir($rootDir); foreach($dirContent as $key => $content) { $path = $rootDir.'/'.$content; if(!in_array($content, $invisibleFileNames)) { if(is_file($path) && is_readable($path)) { $allData[] = $path;//Файлы }elseif(is_dir($path) && is_readable($path)) { $allData = fold($path, $allData); } } } return $allData; } $a = fold($path); $count = count($a); $b = implode("\r\n",$a); $c = fopen("etalon.txt","w"); fwrite ($c,$b); fclose($c); echo "Base of files updated, there are $count files in base"; ?> 2. Чекает появление/удаление (относительно эталона) файлов: PHP: <pre> <?php @set_time_limit(0); @ini_set("display_errors","1"); $path = '/home/www/lalala/http'; // Абсолютный путь к корню, без слеша в конце //Функция рекурсивного получения списка файлов и папок function fold($rootDir, $allData=array()) { $invisibleFileNames = array(".", ".."); $dirContent = scandir($rootDir); foreach($dirContent as $key => $content) { $path = $rootDir.'/'.$content; if(!in_array($content, $invisibleFileNames)) { if(is_file($path) && is_readable($path)) { $allData[] = $path;//Файлы }elseif(is_dir($path) && is_readable($path)) { $allData = fold($path, $allData); } } } return $allData; } $a = fold($path); $count = count($a); $h= fopen("etalon.txt","r"); while (!feof($h)) $c[]=trim(fgets($h)); fclose($h); $count1 = count($c); $diff = $count - $count1; if ($diff>=0) $result = array_diff($a, $c); else $result = array_diff($c, $a); sort ($result); $count2 = count($result); if ($diff>=0 && $count2!=0) { echo "Etalon base - $count1 files, Current base - $count files, difference is $diff files, new files below:\r\n\n\n"; if ($count2!=0) { for($i=0;$i<$count2;$i++) { echo "File - {$result[$i]}, FileDate - ".date("d.m.Y H:i", fileatime($result[$i])). " , FileSize - " . round(filesize($result[$i])/1024,2) . "Kb\r\n"; } } } if ($diff<0) { echo "Etalon base - $count1 files, Current base - $count files, difference is $diff files, deleted files below:\r\n\n\n"; if ($count2!=0) { for($i=0;$i<$count2;$i++) { echo "File - {$result[$i]} was deleted\r\n"; } } } if ($count2==0) echo "Etalon base - $count1 files, Current base - $count files, difference is $diff files, no changes\r\n\n\n"; ?> </pre> если etalon.txt хранить не на серве, то будет трудновато залить полноценный шелл, не меняя содержимого уже существующих файлов