-
Вебмастеру
(
http://forum.oszone.net/forumdisplay.php?f=22)
Angel of death |
19-07-2007 02:33 615621 |
Сообщили о дыре в сайте. Помогите найти.
У меня проблема я подключен к провайдеру по витой паре и у нас есть локальная сеть. У меня имееться сайт в локальной сети. Недавно один человек мне пишет, что есть на сайте уязвимость. Причем именно в коде сайта. Он мне запускал блокнот и выводил листинги файлов на дисках, отличных от дисков сервера. Как можно защититься от подобных атак. ( он мне не чего плогово не зделал, но говарить отказываеться каким образом он меня сломал) Скоро я собираюсь переводить сайт и в интернет, вот я и задумываюсь, как бы чего мне не натворили.
Из скриптов на сайте
Код:
<?Php
if (@$title=="")
$title="Главная";
print ("<script>
var xzx=navigator.appName;
document.write (\"<title>\"+xzx+\"]]][[[- --::++_:::..$title..:::_++::--]]][[[</title>\");
if ((xzx!==\"Microsoft Internet Explorer\")&&(xzx!==\"Netscape\")&&(xzx!==\"Opera\"))
alert (\"У вас стоит некоректный браузер - \"+xzx+\". Возможно страница не будет отображенна коректно!\");
</script>");
?>
Код:
<?php
print ("<h3>--::++_:::..$title..:::_++::--</h3>");
?>
<?php
if (@!$name_pos)
{
print ("
<form action=\"in1.php\" method=\"POST\">
<input type=\"text\" name=\"name\" value=\"Имя\" size=\"10\">
<input type=\"password\" name=\"parol\" value=\"\" size=\"10\"><br>
<input type=\"submit\" value=\"Войти\"><br>
<a href=\"reg.php\">Регистрация</a>
</form>
");
}
else
{
print ("
<a href=\"index.php? &file=spis.php &script=1&title=Пользователи\">Список зарегестрированных пользователей</a>
<hr width=\"90%\">
<div align=\"center\">Ваше имя:</div>
<a href=\"index.php? &file=cab.php&script=1\">$name_pos</a><br>
<div class=\"link\">
<a href=\"exit.php\">
Выйти
</a>
</div>
<br>
");
}
//система регистрации
?>
Код:
<?PHP
print ("<a href=\"index.php\">Главная</a>");
$bites = @readfile("ssil1.php");
//ссылки
?>
Код:
<?php
$String1 = @strpos("$file", ":");
if ($String1=="")
{
if (@$file=="") $file="standart/index.htm";
if (@$script=="")
{
$bites = @readfile("$file");
}
else
{
$bites = @require("$file");
}
if (!$bites)
print ("<h3><div align=\"center\">Данный раздел не работает по техническим причинам.Просим прощения за неудобства.</div></h3>");
}
else
print ("<h1>Куда лезем?</h1>");
//основное содержание
?>
Как защетить сайт от взлома?
|
XCodeR |
19-07-2007 10:58 615719 |
Цитата:
Цитата Angel of death
$bites = @require("$file");
|
здесь может быть... потенциальный хакер через урл задает знаечние переменной $files и усе... подключается нужные ему срипт.
не используйте открытые переменные. Есть массивы $_GET, $_POST, $_SESSION, $_GLOBALS и т.д.
|
Prisoner |
19-07-2007 11:16 615731 |
Цитата:
Цитата XCodeR
Есть массивы $_GET, $_POST, $_SESSION, $_GLOBALS и т.д.
|
Которые в данном случае, согласись, не панацея - их значения также можно подделать.
Angel of death, XCodeR прав - как минимум одна дырка есть. Сделайте следующее - создайте механизм проверки и фильтрации допустимых значение переменной $file. К примеру руками набейте массив всех значений которые может принимать эта переменная и перед инклюдом проверяйте: то, что в $file (или $_GET['file'] если угодно) есть ли в массиве дозволенных значений? Нет? Атака!
Массив дозволенных значений можно формировать как руками, так и автоматически, если потенциально включаемых файлов у Вас много.
|
rus-4-ever |
28-07-2007 21:29 619922 |
Цитата:
Есть массивы $_GET, $_POST, $_SESSION, $_GLOBALS и т.д. Которые в данном случае, согласись, не панацея - их значения также можно подделать.
|
Извините, сейчас меня поставили немного в тупик... с массивом GET всё понятно... а как остальное подделать??? точнее массив Session??? Он ведь вроде на сервере хранится, и что можно сделать для защиты от подделок?
|
XCodeR |
28-07-2007 22:45 619941 |
rus-4-ever
$Session - массив переменных переданных по сессии.
|
Prisoner |
29-07-2007 03:25 619982 |
Да, SESSION тут более защищен - я просто процитировал весь список полностью не заметив возникнувшей неточности. К вопросу "более защищен" - можно украсть идентификатор сессии, к примеру, прослушивая канал клиент-сервер. Защитой может выступить шифрование канала силами SSL.
|
Время: 10:37.
© OSzone.net 2001-