Есть еще
несколько вариантов, но они
требуют «особых условий» для
реализации. Докручивать инклуд
мы будем двумя способами — с
помощью так называемого
«упаковщика» data и фильтров
filter. Разберем подробнее.

1. Могучий data.

Требования для использования
метода:

a)
allow_url_include должна быть
включена. (allow_url_include =
on в файле php.ini)

b)
Отсутствие символов перед нашим
значением, т.е.
include('./dir/'.$file); не
подходит, а include($file);
отлично подойдет!

Это, конечно же, немного
осложняет ситуацию, однако, если
стоят какиелибо фильтры на
присутствие слов «http://»,
«ftp://» и т.п., то,
естественно, провести RFI не
удастся, тут-то нам и пригодится
данный метод. К примеру, если у
нас есть уязвимый код:

<?php include
$_GET["file"]; ?>

Смело составляем запрос


?file=data:application/x-httpd-php;base64,PD8gZXZhbCgkX0dFVFsnY29kZSddKTsgPz4&code=phpinfo();

Разберем подробнее:

data
непосредственно указывает, что
будем использовать "упаковщик"
data application/x-httpd-php
указывает mime-тип данных, в
нашем случае это тип данных
php-скрипта
base64
указывает, что входящие данные
зашифрованы в base64
PD8gZXZhbCgkX0dFVFsnY29kZSddKTsgPz4
— входящие данные (после
расшифровки "<? eval($_GET['code']);
?>") code=phpinfo();

переменная, используемая в eval
Выполняем запрос и созерцаем
заветный phpinfo().

2. Фильтруем базар
или удобный filter.

Требования для использования
метода:

a)
Отсутствие символов ПЕРЕД нашим
значением в инклуде (аналогично
первому методу).
b) Наличие
соответствующего фильтра (для
просмотра установленных фильтров
использовать функцию
stream_get_filters).

3) PHP версии 5.0.0 и
выше.

Уязвимый код:

<?php include
$_GET["file"]; ?>

Составляем запрос:


?file=php://filter/convert.base64-encode/resource=/home/user/www/index.php

Разбор полетов:

php://filter
— указывает, что используются
фильтры convert — указывает,
используются преобразовывающие
фильтры
base64-encode
указывается сам фильтр
resource
указывается расположение
требуемого файла

Результатом данного запроса
мы получим исходный код файла
index. php, зашифрованный
base64, останется лишь
расшифровать и изучать исходный
код недруга.

Почитать подробнее о данных
функциях можно на

php.net

  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    0 комментариев
    Межтекстовые Отзывы
    Посмотреть все комментарии