PDA

Просмотр полной версии : Как такое возможно?


попугай
10.06.2009, 21:13
В-общем, через локальный инклюд на сайте залил шелл. Нычки не делал нигде. Но шелл заtouchил и папку в которой шелл был. Забил на два дня на ресурс. Потом пробую зайти на шелл - хоппа - forbidden - я в ахуе. Метнулся к инклюду - прикрыли багу. Ну я нашел еще инклюд на другом поддомене - залил снова шелл. Решил проверить, что со старым - папка в которой он лежал уже не имеет прав на чтение, исполнение и запись, поэтому шелл не работал.

Ну залил еще щеллов и нычек на рес и поддомены. Даты откатывал. На шеллы не заходил с веба. Заодно глянул, что с тем бажным скриптом первым(инклюд) - ддействительно залатали.

Через два дня захожу снова на шелл - снова forbidden. Лезу на другие шеллы - аналогично. Нычки тоже в большинстве - forbidden. Одна осталась - залил через нее шелл снова. Смотрю значит - все шеллы и нычки не удалены, а просто имеют права 000, также и с папками, что я создавал - 000

Как так меня палили? ведь даты я менял, в папки заливал у которых права были такие же , что и у вебсервера. (apache 48), в логах не палил файлы.
Что это за суперадмины такие, что так за серваком бдят? И как у них так это выходит? И почему они не удаляли тупо файлы, а меняли права на 000 - зачем это ?

Pashkela
10.06.2009, 21:49
)) а touch на всё делал, на файлы, на изменяемые ПАПКИ, обратил внимание, какие владелец и группа у файла, чисто визуально не отличались от остальных в папочке?:))

PS: Да элементарно - слепок системы, при каждом появлении ЧЕГО_ТО нового при очередном сканировании - алерт

gold-goblin
10.06.2009, 21:52
при каждом появлении ЧЕГО_ТО нового при очередном сканировании - алерт и права по 000 пока админ не проверит

попугай
10.06.2009, 23:02
)) а touch на всё делал, на файлы, на изменяемые ПАПКИ, обратил внимание, какие владелец и группа у файла, чисто визуально не отличались от остальных в папочке?:))

PS: Да элементарно - слепок системы, при каждом появлении ЧЕГО_ТО нового при очередном сканировании - алерт


Конечно на все, что изменял. А владелец - я писал в диры, владельцем которых является апач и файлы там апачевые.. поэтому подозрений никаких не должно быть...

Вот насчет слепка системы и сканирования - может быть.. Но это сервак большой довольно таки.. так часто сканирование что-ли проводится там?

Pashkela
10.06.2009, 23:05
Через два дня захожу снова


Достаточно такой скрипт на хрон раз в сутки поставить, и вуаля

gold-goblin
10.06.2009, 23:14
раз в час проверить уменьшилось ли место на винче если уменьшилось то скан и тд

Krist_ALL
10.06.2009, 23:19
А мона скрипт такой мне?

Stik
10.06.2009, 23:33
раз в час проверить уменьшилось ли место на винче если уменьшилось то скан и тд
тебе диж бы бред какой то написать. а темп к примеру? сессии, аццесс логи и тд, да куча всего, место на винте никогда не будет статичным. если и есть такой скрипт то он проверяет скорее сам сайт

gold-goblin
10.06.2009, 23:38
тебе диж бы бред какой то написать. а темп к примеру? сессии, аццесс логи и тд, да куча всего, место на винте никогда не будет статичным. если и есть такой скрипт то он проверяет скорее сам сайт
вообще то нормально настроенный сервер имеет корень под www где логи, темпы не хранят...
бд обычно находится также в отдельном корне...
Или ты думаешь что админы серверов все хранят на диске С????
Добавил:

Ну если и это тебе кажется ахинеей то проверять размер папок где разрешено выполнение пхп (и т.д) скриптов...

Spyder
11.06.2009, 11:19
ids (http://www.citforum.ru/security/internet/firewalls_ids/)

PaCo
11.06.2009, 11:33
Попробуй вынести код шелла за пределы веб диры, или например в БД ну а в каком ни будь малозаметном оригинальном файл внеси в начали include c exit c срабатыванием например по браузеру, кукисам и etc, у меня была схожая фигня именно так я и поступил к моему счастью там не было чексуммов и etc, просто сносились все новые файлы и каталоги раз в полчаса.

[Raz0r]
11.06.2009, 14:28
Такое поведение напоминает работу антивируса, который определяет по сигнатуре твой шелл. Проблему может решить какой-нибудь пока что мало известный веб-шелл, например WSO2 (кстати к тому же очень удобный, рекомендую). В похожей ситуации шифрованные с помощью base64 и сжатые gzip'ом шеллы удалялись буквально через 30 секунд.

zerling
11.06.2009, 17:05
']Такое поведение напоминает работу антивируса, который определяет по сигнатуре твой шелл. Проблему может решить какой-нибудь пока что мало известный веб-шелл, например WSO2 (кстати к тому же очень удобный, рекомендую). В похожей ситуации шифрованные с помощью base64 и сжатые gzip'ом шеллы удалялись буквально через 30 секунд.
+1 , на линухах тоже антивири бывают, если там р57 какой-нибудь, то любой антивирь его найдет, иногда вообще бывает заливаешь Р57 - сразу Forbidden, заливаешь непаленый - все нормально

попугай
11.06.2009, 18:16
Думаете антивирус?
c99madshell тоже палят? Он же несколько раз гзипованный...
Другие пока не пробовал - но попробую - сообщу..

Вот кстати ps -aux с серва. Посмотрите, пожалуйста, кто разбирается, есть что нибудь похожее на антивирь?

http://rapidshare.com/files/243372824/lsbkypsaux.txt
http://slil.ru/27750160

Pashkela
11.06.2009, 18:38
Вот скрипт, с помощью которого в секунду можно вычислить появление нового файла (у меня 146 344 файла, 64 мб оперативки, скрипт работал секунду или меньше).

Состоит из двух частей, сначала запускаем первую часть:

1. Создаёт образ (эталон) всех файлов на диске:

<?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. Чекает появление/удаление (относительно эталона) файлов:


<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 хранить не на серве, то будет трудновато залить полноценный шелл, не меняя содержимого уже существующих файлов