RFI (Remote File Inclusion) — та самая уязвимость, которая позволяет хакеру залить свой shell в твой блог на php-движке. За ней стоит фича, которая появилась в PHP начиная с пятой версии: автоматическая подгрузка классов. Она позволяет не включать каждый класс в скрипты через include и require — вместо этого применяется magic-функция autoload. С примером будет яснее.

<?php
  function __autoload($class_name) {
      include $class_name . '.php';
  }

  $obj  = new MyClass1();
  $obj2 = new MyClass2();
?>

Как видишь, здесь нет описания обоих классов. Но как только мы обращаемся к ним при создании объектов, происходит вызов __autoload с именем неизвестного класса. Далее совершается попытка загрузить этот класс (с добавлением в конец .php). Удобная возможность.

Несмотря на то что теоретически имя класса может содержать только ограниченный набор символов (буквы, цифры, нижнее подчеркивание и слеш), до версий PHP 5.4.24 и 5.5.8 (не включительно) не имелось проверки на «нестандартные» символы, которые передавались функции autoload. В результате если атакующий мог контролировать имя класса, то он мог выполнить в приложении классический Remote или Local File Inclusion. Для этого ему необходимо было иметь возможность передать имя класса в одну из функций (не считая передачи через оператор new).

class_exists()
interface_exists()
method_exists()
property_exists()
is_subclass_of()
class_implements()

Это не весь перечень функций — другие проверки подвержены той же уязвимости. Вот как это работает:

Продолжение статьи доступно только подписчикам

Вариант 1. Оформи подписку на «Хакер», чтобы читать все статьи на сайте

Подписка позволит тебе в течение указанного срока читать ВСЕ платные материалы сайта, включая эту статью. Мы принимаем оплату банковскими картами, электронными деньгами и переводами со счетов мобильных операторов. Подробнее о подписке

Вариант 2. Купи одну статью

Заинтересовала статья, но нет возможности оплатить подписку? Тогда этот вариант для тебя! Обрати внимание: этот способ покупки доступен только для статей, опубликованных более двух месяцев назад.


Комментарии

Подпишитесь на ][, чтобы участвовать в обсуждении

Обсуждение этой статьи доступно только нашим подписчикам. Вы можете войти в свой аккаунт или зарегистрироваться и оплатить подписку, чтобы свободно участвовать в обсуждении.

Check Also

Специалисты IOActive показали, что взлом современных роботов может быть опасно легким

Эксперты компании IOActive рассказали, как взламывать промышленных и «домашних» роботов с …