Что нового
  • Что бы вступить в ряды "Принятый кодер" Вам нужно:
    Написать 10 полезных сообщений или тем и Получить 10 симпатий.
    Для того кто не хочет терять время,может пожертвовать средства для поддержки сервеса, и вступить в ряды VIP на месяц, дополнительная информация в лс.

  • Пользаватели которые будут спамить, уходят в бан без предупреждения. Спам сообщения определяется администрацией и модератором.

  • Гость, Что бы Вы хотели увидеть на нашем Форуме? Изложить свои идеи и пожелания по улучшению форума Вы можете поделиться с нами здесь. ----> Перейдите сюда
  • Все пользователи не прошедшие проверку электронной почты будут заблокированы. Все вопросы с разблокировкой обращайтесь по адресу электронной почте : info@guardianelinks.com . Не пришло сообщение о проверке или о сбросе также сообщите нам.

В Wordpress Найдена Уязвимость, Которая Позволяет Менять Содержимое Любого Поста

Sascha

Заместитель Администратора
Команда форума
Администратор
Регистрация
9 Май 2015
Сообщения
1,071
Баллы
155
Возраст
51
В WordPress обнаружена уязвимость, которая позволяет незарегистрированным пользователям модифицировать контент любого поста или страницы на сайте. Данный баг распространяется на версии 4.7.0 и 4.7.1. С версией 4.7.2 вышел фикс.

Технические детали


Разберемся подробнее, чем вызван данный баг. Первое, на что стоит обратить внимание — это файл ./wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php:


Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.



Данный кусок кода спроектирован так, чтобы принимать параметр запроса ID в виде цифрового значения. Например, если вы посылаете запрос на /wp-json/wp/v2/posts/1234, ID будет равняться 1234.

Это хороший способ предотвратить использование невалидных ID, но если взглянуть на код еще раз, можно увидеть, что значения от $_GET и $_POST являются приоритетными по отношению к тем, которые вычисляются из регулярного выражения. Исходя из этого, злоумышленник может послать запрос вроде /wp-json/wp/v2/posts/1234?id=12345helloworld, и ID будет равняться 12345helloworld.

Взглянем на метод update_item_permissions_check на скриншоте ниже.

Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.

Вкратце, он передает наше значение ID, содержащее буквы и цифры, в метод get_post(). Эта функция валидирует запрос, проверяя, что такой пост существует и что у текущего пользователя есть привилегии на редактирование этого поста. Если мы пошлем ID, который не соответствует ни одному посту, мы можем обойти проверку привилегий и перейти в метод update_item, продолжая выполнение запроса.

Интересно то, что метод get_post() также может потерпеть неудачу в поиске поста вследствие использования статического метода get_instance(), который используется в wp_posts для поиска постов.

Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.

Как вы можете увидеть в коде, метод работает неправильно на любой строке, которая состоит не только из цифр.

Для злоумышленников это означает, что WordPress выполнит метод update_item, посчитав, что у пользователя достаточно привилегий для редактирования поста.

Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.

Последнее, на что стоит обратить внимание — WordPress приводит параметр ID к типу integer перед тем, как передать его в get_post. Это вызывает проблемы из-за того, как в PHP реализовано приведение типов. На скриншоте ниже можно увидеть эту проблему наглядно:
Это приводит нас к опасной ситуации, когда злоумышленник может использовать запрос, вроде /wp-json/wp/v2/posts/123?id=456ABC, чтобы изменить пост с ID 456. Следовательно, любой пост на сайте с версией WordPress 4.7.0 или 4.7.1 может быть изменен злоумышленниками.

Если вы используете версии WordPress, подверженные данной уязвимости, рекомендуем вам немедленно обновить версию WordPress.

Запись

Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.

впервые появилась

Пожалуйста Авторизируйтесь или Зарегистрируйтесь для просмотра скрытого текста.

.
 
Вверх