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

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

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

  #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 Избранное 273 13.02.2016 01:24
Books PHP FRAGNATIC PHP 186 21.02.2010 02:41



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


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




ANTICHAT.XYZ