Примеры уязвимостей с использованием плагинов eval () в WordPress - PullRequest
4 голосов
/ 05 января 2012

Я унаследовал веб-сайт WordPress, который использует плагин RunPHP для выполнения фрагментов кода PHP между постами. У меня такое ощущение, что это не лучший способ реализовать такую ​​функциональность. Но так как это устаревший код, который был функционально корректным в течение очень долгого времени, мне понадобятся несколько убедительных примеров проблемных сценариев.

Для тех, кто не знаком с RunPHP, это плагин, который выполняет код PHP, встроенный в тело сообщения или страницы, используя eval (). Блок кода никогда не поступает от пользователя, но вводится в базу данных владельцем сайта / создателем контента.

Вариант использования этого плагина в нашем контексте следующий.

Форма создается как сообщение, действие отправки которого установлено на страницу (назовем ее обработчиком формы). Обработчик формы содержит код PHP в своем теле, и плагин RunPHP активирован для этой страницы. Когда форма отправляется, обработчик формы получает данные и выполняется код PHP в ее теле.

Это помимо некоторых довольно явных проблем безопасности в коде обработчика форм (динамическая оценка переменных, переданных пользователем, без очистки ввода, без параметризованных запросов SQL).

Может ли кто-нибудь здесь подтвердить мои сомнения по поводу подключаемых модулей выполнения кода во время выполнения в WP?

Очень ценится.

Код формы в сообщении -

<form action="/?p=1234" method="post">
    <input name="foobar" type="text" />
    <input type="submit" />
</form>

Код обработчика на странице (он хранится в базе данных и eval () - редактируется во время выполнения) -

<?php
    $foobar = $_POST["foobar"]; // This contains a SQL-injection vulnerability; But that's a separate issue, I think
    $query = "INSERT INTO table (field) VALUES (\"" . $foobar . "\")"; // Use variable in a query string
?>

Ответы [ 2 ]

0 голосов
/ 09 марта 2012

Кто подает эти формы? Если это может быть предоставлено кем-либо и всеми, что мешает им выполнить код для извлечения того, что их интересует?

Вы можете использовать этот эксплойт для потенциально чтения файлов, выполнения запросов MySQL и т. Д.

0 голосов
/ 05 января 2012

Трудно сказать, не видя реального сайта / кода, но, как правило, eval является потенциальным шлюзом для проблем безопасности. Представьте, что у вашего сайта есть проблема с SQL-инъекцией: у злоумышленников есть возможность не только внедрить данные, но и ввести PHP-код в ваше приложение. Eval имеет несколько (несколько) допустимых областей применения, но в целом я бы этого избегал. Wordpress довольно легко расширить, возможно, попробуйте портировать функциональность на плагины.

...