
10.12.2007, 01:05
|
|
Leaders of The World
Регистрация: 06.07.2007
Сообщений: 246
Провел на форуме: 2030482
Репутация:
1796
|
|
Вот скрипт для защиты от измененных/удаленных файлов и залитых веб шеллов, не панацея но все же.
Скрипт сканирует все файлы/папки начиная от папки в которой лежит скрипт и пишет результат в файл data.txt. В котором будут хранится имена каталогов+все файлы в этом каталоге с их контрольной суммой.
Ну а затем скрипт сверяется со снимком и на основании отсутствия файла/измененной контрольной суммы/отсутствия записи о файле делает выводы о том что файл был удален/изменен/создан. Также заодно и происходит сканирование на созданные/удаленные папки...
Собственно например создали сайт, довели до ума - он работает, делаем снимок, сливаем с хоста data.txt и сохраняем этот файл у себя на компе(с хоста удаляем!)...
Затем через месяцок узнаем что этот сайт взломали, ну а хацкеров есть привычка еще и лить веб шелл, и иногда троянить скрипты. Ну чтобы не парится и не просматривать каждый файл, мы сканируем скриптом хост, и он выдаст все веб шеллы с головой
PHP код:
<?php
set_time_limit(0);
ignore_user_abort(true);
function new_scan_dir($catalog){
$cat_file='';
$cat_file[$catalog]='';
$dir = opendir ($catalog);
$i=0;
$filesh='';
while ($file = readdir ($dir)){
if(($file!='..')&&($file!='.')){
if(filetype($catalog.'/'.$file)==='file')$cat_file[$catalog].=urlencode($file).':'.md5(implode('',file($catalog.'/'.$file))).'>';
if((filetype($catalog.'/'.$file)==='dir')){
foreach(new_scan_dir($catalog.'/'.$file) as $key => $value){
$cat_file[$key]=$value;
}
}
$filesh.=$catalog.'/'.$file.'
';
if($i===5){
echo($filesh);
flush();
$filesh='';
$i=0;
}
$i++;
}
}
closedir ($dir);
return $cat_file;
}
function scan_dir($all_files,$catalog){
$ret='';
$ent='
';
if(file_exists($catalog)){
if(array_key_exists($catalog, $all_files)){
if(!empty($all_files[$catalog])){
$now_dir1=explode('>',$all_files[$catalog]);
foreach($now_dir1 as $value){
$now_dir2=explode(':',$value);
$now_dir[urldecode($now_dir2[0])]=$now_dir2[1];
}
foreach($now_dir as $key => $value){
if(file_exists($catalog.'/'.$key)){
if(md5(implode('',file($catalog.'/'.$key)))!=$value)$ret.='Файл "'.$catalog.'/'.$key.'" был изменен.'.$ent;
}else $ret.='Файл "'.$catalog.'/'.$key.'" был удаленн.'.$ent;
}
$dir = opendir ($catalog);
while ($file = readdir ($dir)){
if(($file!='..')&&($file!='.')){
if((filetype($catalog.'/'.$file)==='dir'))$ret.=scan_dir($all_files,$catalog.'/'.$file);
if((filetype($catalog.'/'.$file)==='file')){
if(!array_key_exists($file, $now_dir))$ret.='Файл "'.$catalog.'/'.$file.'" был создан'.$ent;
}
}
}
closedir ($dir);
}else{
$dir = opendir ($catalog);
while ($file = readdir ($dir)){
if(($file!='..')&&($file!='.')){
if((filetype($catalog.'/'.$file)==='dir')){
if(!array_key_exists($catalog.'/'.$file, $all_files))$ret.='Папка "'.$catalog.'/'.$file.'" была создана'.$ent;
else $ret.=scan_dir($all_files,$catalog.'/'.$file);
}
if((filetype($catalog.'/'.$file)==='file'))$ret.='Файл "'.$catalog.'/'.$file.'" был создан'.$ent;
}
}
closedir ($dir);
}
}else $ret.='Папка "'.$catalog.'" была созданна.'.$ent;
}else $ret.='Папка "'.$catalog.'" была удаленна.'.$ent;
return $ret;
}
function scan_d_dir($all_files){
$ret='';
$ent='
';
foreach($all_files as $key => $value){
if(!file_exists($key))$ret.='Папка "'.$key.'" была удалена'.$ent;
}
return $ret;
}
$ent='
';
if(!empty($_GET['do'])){
if($_GET['do']==='new'){
echo('<pre>');
echo('Создание снимка...'.$ent);
$save_text='';
foreach(new_scan_dir('.') as $key => $value){
$save_text.=urlencode($key).'=>'.substr($value,0,strlen($value)-1).$ent;
}
$save_text=substr($save_text,0,strlen($save_text)-2);
$file = fopen ('data.txt','w');
fputs ( $file, $save_text);
fclose ($file);
echo('Снимок сделан...');
echo('</pre>');
}elseif($_GET['do']==='scan'){
if(file_exists('data.txt')){
$files=explode($ent,implode('',file('data.txt')));
foreach($files as $value){
$now_dir=explode('=>',$value);
$all_files[urldecode($now_dir[0])]=$now_dir[1];
}
echo('<pre>'.scan_dir($all_files,'.').scan_d_dir($all_files).'</pre>');
}
}
}
echo('<hr>
<input type="submit" value="Сделать снимок" onclick="document.location.replace(\'?do=new\')"><br>
<input type="submit" value="Сканировать" onclick="document.location.replace(\'?do=scan\')">');
?>
Вот полученный снимок:
Код:
.=>index.php:44ecd2d513e0faec7acfff7f849f7e70>data.txt:c1fe1feab40f6853be5d0555f33d596c
.%2F1=>1%F2.txt:d41d8cd98f00b204e9800998ecf8427e
.%2F1%2F2=>
.%2F1%2F2%2F3=>
.%2F1%2F2%2F3%2F4=>
.%2F1%2F2%2F3%2F4%2F5=>
.%2F1%2F2%2F3%2F4%2F5%2F6=>1.txt:e11170b8cbd2d74102651cb967fa28e5
ЗЫ Люди кто поюзал/юзает напишите нравится оно вам или нет какие минусы/плюсы, только без наркоманской критики
__________________
Кто я?..
Последний раз редактировалось I-I()/Ib; 10.12.2007 в 01:09..
|
|
|