[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Анализатор SQL-инекций
rulestyle
Добрый день друзья! помогите я не гуру в пхп но ваша помощь очень нужна! помогите мне решить 3 задачи, код готов но его надо подкорректировать! Всех с праздниками!

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;
}





жду ваших ответов! может кто поможет оптимизировать код чтобы не дублировать все это добро или через функции как то переписать я просто далек от этого! спасибо!
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.