1. Надо оптимизировать код. Проверить на наличие ошибок!
2. Нужно проверить на использование в этом коде SQL-инекций
3. подключаю данный код через .htaccess
4. Внедрить доп код для определения прокси, код есть но как его внедрить немогу понять
Как работает данный файл:
При использование инекции он отправляет данные о взломе на e-mail + записывает IP в файл и запрещает доступ к сайту беря ip из файла.
<?php
$log_file="/home/ban_list.log";
// Получаем IP из лога
$ban = file($log_file);
// Получаем IP посетителя
$banuser = getenv("REMOTE_ADDR")."\n";
if (in_array($banuser, $ban)) {
$date = date('d-m-Y H:i:s');
/* Ваш адрес и тема сообщения */
$name = "Hacked";
$email = "hacked@sitename.ru";
$address = "info@sitename.ru";
$sub = "Взлом ".$_SERVER['HTTP_HOST']."";
$date = date('d-m-Y H:i:s');
/* Формат письма */
$mes = "Повтор входа: \r\n Сайт: ".$_SERVER['HTTP_HOST']." \r\n IP адрес: ".$_SERVER['REMOTE_ADDR']."";
/* Отправляем сообщение, используя mail() функцию */
$from = "From: $name <$email> \r\n Reply-To: $email \r\n";
if (mail($address, $sub, $mes, $from)) {
header('Refresh: 10; URL=http://www.google.com');
//echo 'Письмо отправлено';
} else {
header('Refresh: 10; URL=http://www.google.com');
//echo 'Письмо не отправлено';
}
die("Denied");
}
/* Бан */
//$patt = "~\<\?~i";
$patt = "~\<\?php[ a-zA-Z0-9]{5}";
if (is_array($_FILES)) {
foreach($_FILES as $anystring=>$file_data) {
if (preg_match($patt,file_get_contents($file_data['tmp_name']))) {
/* Ваш адрес и тема сообщения */
$name = "Hacked";
$email = "hacked@sitename.ru";
$address = "info@sitename.ru";
$sub = "Взлом ".$_SERVER['HTTP_HOST']."";
$date = date('d-m-Y H:i:s');
/* Формат письма */
$mes = "Идет попатка взлома #3: \r\n Сайт: ".$_SERVER['HTTP_HOST']." \r\n IP адрес: ".$_SERVER['REMOTE_ADDR']."";
/* Отправляем сообщение, используя mail() функцию */
$from = "From: $name <$email> \r\n Reply-To: $email \r\n";
if (mail($address, $sub, $mes, $from)) {
header('Refresh: 30; URL=http://www.sitename.ru');
//echo 'Письмо отправлено';
} else {
header('Refresh: 30; URL=http://www.sitename.ru');
//echo 'Письмо не отправлено';
}
$log_file="/home/ban_list.log";
// Получаем IP из лога
$ips = file($log_file);
// Получаем IP посетителя
$ip = getenv("REMOTE_ADDR")."\n";
if ( !in_array($ip, $ips) ) {
// IP нет в логе, добавляем
$ips[] = $ip;
}
$f=fopen($log_file,"wb");
fputs($f, implode("", $ips));
fclose($f);
die("Denied");
}
}
}
$patt = "~\/\.\.\/\.\.\/\.\.\/|{0-9a-zA-Z}[80]|eval[^\(]*\(|include[^\(]*\(|base64_decode[^\(]*\(|stripslashes[^\(]*\(|strip_tags[^\(]*\(|fopen[^\(]*\(|chmod[^\(]*\(|chown[^\(]*\(|chgrp[^\(]*\(|unlink[^\(]*\(|unset[^\(]*\(|fgetc[^\(]*\(|fgets[^\(]*\(|file_get_contents[^\(]*\(|file_put_contents[^\(]*\(|fwrite[^\(]*\(|move_uploaded_file[^\(]*\(|is_uploaded_file[^\(]*\(|rmdir[^\(]*\(|fromCharCode[^\(]*\(|tmpfile[^\(]*\(|tempnam[^\(]*\(|phpinfo[^\(]*\(|basename[^\(]*\(|curl_init[^\(]*\(|socket_create[^\(]*\(|popen[^\(]*\(|exec[^\(]*\(|system[^\(]*\(|passthru[^\(]*\(|proc_open[^\(]*\(|gzuncompress[^\(]*\(|shell_exec[^\(]*\(|delete from|insert into~i";
foreach ($_REQUEST as $v1x1) {
prfilter_x1($v1x1,$patt);
}
function prfilter_x1($v1x1,$patt) {
ob_start();
if (is_array($v1x1)) {
foreach ($v1x1 as $vx) {
prfilter_x1($vx,$patt);
}
}
else {
if (preg_match($patt, $v1x1) || preg_match($patt, stripslashes($v1x1))) {
/* Ваш адрес и тема сообщения */
$name = "Hacked";
$email = "hacked@sitename.ru";
$address = "info@sitename.ru";
$sub = "Взлом ".$_SERVER['HTTP_HOST']."";
$date = date('d-m-Y H:i:s');
/* Формат письма */
$mes = "Идет попатка взлома #1: \r\n Сайт: ".$_SERVER['HTTP_HOST']." \r\n IP адрес: ".$_SERVER['REMOTE_ADDR']."";
/* Отправляем сообщение, используя mail() функцию */
$from = "From: $name <$email> \r\n Reply-To: $email \r\n";
if (mail($address, $sub, $mes, $from)) {
header('Refresh: 30; URL=http://www.sitename.ru');
//echo 'Письмо отправлено';
} else {
header('Refresh: 30; URL=http://www.sitename.ru');
//echo 'Письмо не отправлено';
}
$log_file="/home/ban_list.log";
// Получаем IP из лога
$ips = file($log_file);
// Получаем IP посетителя
$ip = getenv("REMOTE_ADDR")."\n";
if ( !in_array($ip, $ips) ) {
// IP нет в логе, добавляем
$ips[] = $ip;
}
$f=fopen($log_file,"wb");
fputs($f, implode("", $ips));
fclose($f);
die("Denied");
}
if (preg_match($patt, base64_decode($v1x1) ) || preg_match($patt, stripslashes(base64_decode($v1x1)))) {
/* Ваш адрес и тема сообщения */
$name = "Hacked";
$email = "hacked@sitename.ru";
$address = "info@sitename.ru";
$sub = "Взлом ".$_SERVER['HTTP_HOST']."";
$date = date('d-m-Y H:i:s');
/* Формат письма */
$mes = "Идет попатка взлома #2: \r\n Сайт: ".$_SERVER['HTTP_HOST']." \r\n IP адрес: ".$_SERVER['REMOTE_ADDR']."";
/* Отправляем сообщение, используя mail() функцию */
$from = "From: $name <$email> \r\n Reply-To: $email \r\n";
if (mail($address, $sub, $mes, $from)) {
header('Refresh: 30; URL=http://www.sitename.ru');
//echo 'Письмо отправлено';
} else {
header('Refresh: 30; URL=http://www.sitename.ru');
//echo 'Письмо не отправлено';
}
$log_file="/home/ban_list.log";
// Получаем IP из лога
$ips = file($log_file);
// Получаем IP посетителя
$ip = getenv("REMOTE_ADDR")."\n";
if ( !in_array($ip, $ips) ) {
// IP нет в логе, добавляем
$ips[] = $ip;
}
$f=fopen($log_file,"wb");
fputs($f, implode("", $ips));
fclose($f);
die("Denied");
}
ob_end_clean();
}
}
?>
код который надо внедрить для определения прокси
function getRealIpAddr() {
if (!empty($_SERVER['HTTP_CLIENT_IP'])) // Определяем IP
{ $ip=$_SERVER['HTTP_CLIENT_IP']; }
elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) // Если IP идёт через прокси
{ $ip=$_SERVER['HTTP_X_FORWARDED_FOR']; }
else { $ip=$_SERVER['REMOTE_ADDR']; }
return $ip;
}
жду ваших ответов! может кто поможет оптимизировать код чтобы не дублировать все это добро или через функции как то переписать я просто далек от этого! спасибо!