Как я могу динамически вызывать опасные функции PHP для разработки концепции? - PullRequest
0 голосов
/ 18 мая 2018

Я делаю тест на проникновение в «белый ящик», и мое незнакомство со спецификой PHP затрудняет разработку концепции.Вот урезанный пример функции, которую я считаю опасной.(Существует некоторая проверка и обработка ошибок, которые я удалил ради простоты.)

function makeCall($myClass, $method, $args){
   $theClass = new $myClass();
   return $theClass->$method($args);
}

Эта проблема заключается в том, что все параметры могут контролироваться потенциальным злоумышленником через что-то вроде site.com/program.php/class/method?args=args.Обычное использование makeCall заключается в том, что некоторые классы и методы, созданные компанией, передаются в функцию в виде строк.Я могу звонить другим классам, которые явно не предназначены для вызова, поэтому здесь определенно есть какая-то проблема.

Моя цель - иметь возможность использовать exec для параметра $method (или чего-то подобного), чтобы продемонстрировать, насколько опасен этот код - целью является удаленное выполнение кода.Я не могу на всю жизнь понять, какой "класс" exec (или подобный) будет внутри (или, если это даже правильный вопрос).Есть ли встроенный класс с опасным методом, который я мог бы использовать, чтобы доказать свою точку зрения?

Например, в C # я мог бы сделать что-то вроде System.IO.File для класса и ReadAllLines для метода, с аргументами, представляющими собой какой-нибудь секретный файл на сервере.Я совершенно готов принять ответ «это не сработает для любых общих методов PHP», но я хочу быть уверен.

...