Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Вебмастеру (http://forum.oszone.net/forumdisplay.php?f=22)
-   -   Сообщили о дыре в сайте. Помогите найти. (http://forum.oszone.net/showthread.php?t=87249)

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.

Время: 10:37.
© OSzone.net 2001-