HOME    FORUMS    MEMBERS    RECENT POSTS    LOG IN  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > Программирование_OLD > PHP, PERL, MySQL, JavaScript
   
 
 
Опции темы Поиск в этой теме Опции просмотра

  #31  
Старый 24.09.2007, 00:45
Digimortal
Banned
Регистрация: 22.08.2006
Сообщений: 608
Провел на форуме:
6144796

Репутация: 1095


По умолчанию

>> Вот это отличная идея, если кто сможет, реализуйте плиииз!!!

ок, напишу на Perl.. +)
 

  #32  
Старый 24.09.2007, 01:56
George767
Участник форума
Регистрация: 10.01.2006
Сообщений: 193
Провел на форуме:
553876

Репутация: 81
По умолчанию

Цитата:
Сообщение от TANZWUT  
Вспоминаем сниффер!!!
к примеру через SQL-inj или PHP-inj заливаем shell.jpg и .htaccess который будет асоциировать картинку с php файлом.
ну а далее дело техники....
Квартет (с) Крылов
Вспоминай) Вообще-то на сервере файлы лежат в изначальном виде (формате), это когда они вызываются по-другому (к примеру через mod_rewrite в .htaccess), их сервер открывает. Так что если это банальный шелл, то он всегда будет на сервере лежать как .php файл.
 

  #33  
Старый 24.09.2007, 01:59
George767
Участник форума
Регистрация: 10.01.2006
Сообщений: 193
Провел на форуме:
553876

Репутация: 81
По умолчанию

Я завтра напишу на Php, но в моей версии кроме отправления сообщения на мыла, сайт будет закрыватся (тут естевственно надо под конкретный проект писать)
 

  #34  
Старый 24.09.2007, 05:23
life_is_shit
Постоянный
Регистрация: 21.08.2007
Сообщений: 367
Провел на форуме:
3578960

Репутация: 468
Отправить сообщение для life_is_shit с помощью ICQ
По умолчанию

4 Nightmarе.
Делать было нечего, сделал

Скрипт пользуеца мускулом, предварительно ему нужны данные для доступа.
Он делает слепок директории и заносит в базу, делая мд5 и определяя размер файлов и директоии.
При проверке эти данные сверяются, если что-то не совпадает то в корне контролируемой директоии создается
.htaccess блокирующий файл для всех (кто хочет может поменять на локалхост) и высылает репорт админу.

Код:
<?php
$server = 'localhost';     //хост
$username = 'anti_change'; //юзер мускула
$password = 'password';    //пароль мускула
$database = 'anti_change'; //база мускула
$path = 'C:/TopServer/home/localhost/wordpress'; //реальный путь к контролируемой директории
$mail_to = 'admin@localhost';  //кому писать репорт
$mail_from = 'axtung@localhost';  //от кого
$mail_subj = 'axtung!!!';  //тема письма

mysql_connect($server, $username, $password);
mysql_select_db($database);

function scan_dir($dirname) 
  { 
    GLOBAL $text, $retext; 
    $dir = opendir($dirname); 
    while (($file = readdir($dir)) !== false) 
    { 
      if($file != "." && $file != "..") 
      { 
      if(is_file($dirname."/".$file)) 
        { 
          $sql = "INSERT INTO `first_scan` (`category`, `name`, `md5_file`, `size`) VALUES ('file', '".$dirname."/".$file."', '".md5_file($dirname.'/'.$file)."', '".filesize($dirname.'/'.$file)."')";
          mysql_query($sql);
        } 
        if(is_dir($dirname."/".$file)) 
        { 
          $sql = "INSERT INTO `first_scan` (`category`, `name`, `md5_file`, `size`) VALUES ('directory', '".$dirname."/".$file."', '---', '".disk_total_space($dirname."/".$file)."')";
          mysql_query($sql);
          scan_dir($dirname."/".$file); 
        } 
      } 
    } 
    closedir($dir); 
  }

function check_dir($dirname) 
  { 
    GLOBAL $text, $retext; 
    $dir = opendir($dirname); 
    while (($file = readdir($dir)) !== false) 
    { 
      if($file != "." && $file != "..") 
      { 
      if(is_file($dirname."/".$file)) 
        { 
          $sql = "SELECT * FROM `first_scan` WHERE `name` = '".$dirname."/".$file."' and `category` = 'file'";
          $result_file = mysql_query($sql);
          $array_file = mysql_fetch_array($result_file);
          if ($array_file)
          {
             if ($array_file['md5_file'] != md5_file($dirname.'/'.$file)) 
             {
                $sql_md5 = "INSERT INTO `axtung!` (`category_error`, `description`) VALUES ('error md5_file', '".$dirname."/".$file." error checksum')";
                $res=mysql_query($sql_md5);
             }  
             if ($array_file['size'] != filesize($dirname.'/'.$file)) 
             {
                $sql_size = "INSERT INTO `axtung!` (`category_error`, `description`) VALUES ('error size file', '".$dirname."/".$file." error size file')";
                mysql_query($sql_size);
             }       
          }
          else
          {
            $sql_nf = "INSERT INTO `axtung!` (`category_error`, `description`) VALUES ('file not found', '".$dirname."/".$file." file not found')";
            mysql_query($sql_nf);
          }
        } 
        if (is_dir($dirname."/".$file)) 
        { 
          $sql = "SELECT * FROM `first_scan` WHERE `name` = '".$dirname."/".$file."' and `category` = 'directory'";
          
          $result_dir = mysql_query($sql);
          $array_dir = mysql_fetch_array($result_dir);
          if ($array_dir)
          {
             if ($array_dir['size'] != disk_total_space($dirname."/".$file)) 
             {
                $sql_size = "INSERT INTO `axtung!` (`category_error`, `description`) VALUES ('error size directory', '".$dirname." error size directory')";
                mysql_query($sql_size);
             }       
          }
          else
          {
            $sql_nf = "INSERT INTO `axtung!` (`category_error`, `description`) VALUES ('directory not found', '".$dirname."/".$file." directory not found')";
            mysql_query($sql_nf);
          }
          check_dir($dirname."/".$file);
        } 
      } 
    } 
    closedir($dir); 
  }
  
function check_del()
{
  $sql = "SELECT * FROM `first_scan`";
  $result = mysql_query($sql);
  while ($array = mysql_fetch_array($result))
  {
    if (!is_dir($array['name']) && ($array['category'] == 'directory'))
    { 
      $sql_del_dir = "INSERT INTO `axtung!` (`category_error`, `description`) VALUES ('directory deleted', '".$array['name']." directory deleted')";
      mysql_query($sql_del_dir);
    }  
    if (!file_exists($array['name']) && ($array['category'] == 'file'))
    {
      $sql_del_file = "INSERT INTO `axtung!` (`category_error`, `description`) VALUES ('file deleted', '".$array['name']." file deleted')";
      mysql_query($sql_del_file);
    }  
  }
}
  
if (isset($action) && ($action == 'first')) 
{ 
  mysql_query("DROP TABLE `axtung!`");
  mysql_query("CREATE TABLE `axtung!` (
  `id` int(11) NOT NULL auto_increment,
  `category_error` text,
  `description` text NOT NULL,
  PRIMARY KEY  (`id`)
  ) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=1");
  mysql_query("DROP TABLE `first_scan`");
  mysql_query("CREATE TABLE `first_scan` (
  `id` int(10) NOT NULL auto_increment,
  `category` text NOT NULL,
  `name` text NOT NULL,
  `md5_file` text NOT NULL,
  `size` text NOT NULL,
  PRIMARY KEY  (`id`)
  ) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=501;
  ");
  scan_dir($path);
  echo 'слепок сделан';
}

if (isset($action) && ($action == 'check'))
{
  check_dir($path);
  check_del();
  $mail = '';
  $report = '';
  $sql_mail = "SELECT * FROM `axtung!`";
  $result = mysql_query($sql_mail);
  while ($array = mysql_fetch_array($result))
  {
    $mail .= $array['description']."\n";
    $report .= $array['description']."<br>";
  }
  if (!empty($mail))
  {
    $fh = fopen ('C:/TopServer/home/localhost/wordpress/.htaccess', "w");
    fwrite($fh, "\n"."deny from all");
    fclose ($fh);
    mail('admin@localhost','axtung!',$mail,"From: axtung@localhost\r\n");
    echo 'Ахтунг!!!<br>'.$report.'Внимание доступ к сайту закрыт!!!';
  }
  else
  {
    echo 'Все норм, спи спокойно';
  }
}
if (isset($action) && ($action == 'clear_error'))
{
  mysql_query('TRUNCATE `axtung!`');
  echo 'лог очищен';
}
?>
<form action="<?=basename($PHP_SELF)?>?action=first" method="POST">
  <input type="submit" value="создать слепок файловой системы">
</form>
<br>
<form action="<?=basename($PHP_SELF)?>?action=check" method="POST">
  <input type="submit" value="проверить">
</form>
<br>
<form action="<?=basename($PHP_SELF)?>?action=clear_error" method="POST">
  <input type="submit" value="очистить лог из базы">
</form>
Юзай на здоровье.

З.Ы. Просьба на корявости не обращать внимания, ибо писал ночью и особенной ценности скрипт для меня не представлял.
З.Ы.Талисману пасиба за реверсивный поиск, ибо самому было лень)

Последний раз редактировалось life_is_shit; 24.09.2007 в 05:25..
 

  #35  
Старый 25.09.2007, 02:27
Nightmarе
Познавший АНТИЧАТ
Регистрация: 29.04.2007
Сообщений: 1,189
Провел на форуме:
5749763

Репутация: 1680


Отправить сообщение для Nightmarе с помощью ICQ
По умолчанию

Супер, пасиб за скрипт!!!!!!
 

  #36  
Старый 25.09.2007, 08:45
Isis
Флудер
Регистрация: 20.11.2006
Сообщений: 3,316
Провел на форуме:
16641028

Репутация: 2371


По умолчанию

life_is_shit, в твоем скрипте дырок 5 минимум...
Инклуд и скули уже увидел...
 

  #37  
Старый 25.09.2007, 09:20
The_HuliGun
Участник форума
Регистрация: 19.05.2007
Сообщений: 228
Провел на форуме:
4325663

Репутация: 240
Отправить сообщение для The_HuliGun с помощью ICQ
По умолчанию

Нету там ни одного вызова инклуд функций.
life_is_shit, пасиб за скрипт.
 

  #38  
Старый 25.09.2007, 09:37
blackybr
♠ ♦ ♣ ♥
Регистрация: 18.05.2006
Сообщений: 1,828
Провел на форуме:
8042357

Репутация: 3742


Отправить сообщение для blackybr с помощью ICQ Отправить сообщение для blackybr с помощью AIM Отправить сообщение для blackybr с помощью Yahoo
По умолчанию

В идеале брать чексум файла и проверять на изменение. Скрипт кодится зендом и все. никаких проблем. Зенд платный? О_о
__________________
Привет! Меня зовут Джордж, и я хотел бы рассказать вам про реинкарнацию (ц) 2x2
 

  #39  
Старый 25.09.2007, 09:39
Егорыч+++
Administrator
Регистрация: 27.05.2002
Сообщений: 1,241
Провел на форуме:
20377164

Репутация: 0


По умолчанию

Безусловно скрипт не имеет смысла и не от чего не защищает. Защита от инклюда файлов должна быть сделана на основании серии исследований:

1) Проверка контрольной суммы всех файлов.
2) Поиск записей в файлах, которые попадают под возможности шела (типа инклюде, eval , system и т. д.) . Файлы в которых нужны эти функции и места в них помечаются (хотя по любому проверка мд5 такие файлы защитит).
3) Создаем серию ловушек. Типо файлы конфигов и мониторим время их просмотра. В случае измениния времени начинаем думать какая зараза смотрит наши файлы.

Этого будет достаточно. Могу тоже самое продолжить про мониторинг всег sql инъекций, но это на уровне шаре хостинга реализовать сложнее.
 

  #40  
Старый 25.09.2007, 14:01
life_is_shit
Постоянный
Регистрация: 21.08.2007
Сообщений: 367
Провел на форуме:
3578960

Репутация: 468
Отправить сообщение для life_is_shit с помощью ICQ
По умолчанию

4 Егорыч+++
Полностью прав, но для магазина к примеру скрипт вполне подойдет.
4 Nightmarе & 4 The_HuliGun
всегда пожалуйста, если нада туда чонить дописать пишите в аську, без проблем.
4 Isis
вообще-то скрипт желательно запоролить, или поставить доступ с одного Ip.
недостаток в том, что пароли к базе в открытом виде, но есть зенд)
 
 



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Books PSalm69 Избранное 248 27.10.2009 04:52



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ