Панель управления в WordPress - довольно безопасное место: только пользователи с повышенными привилегиями могут получить к ней доступ. Эксплуатация панели администратора плагина здесь не принесет никакой пользы - администратор уже имеет необходимые разрешения для выполнения всех действий, которые может вызвать уязвимость.
Хотя обычно это так, существует ряд приемов, которые злоумышленники используют, чтобы обмануть администратора и заставить его выполнить действия, которых они не ожидают, например, подделка межсайтовых запросов (CSRF) или атаки с использованием Clickjacking. Используя эти методы, злоумышленник может использовать уязвимость от имени администратора, что потенциально может превратить незначительную проблему в серьезную проблему безопасности.
Злоумышленник может воспользоваться этими уязвимостями, попросив администратора перейти по ссылке или даже просмотреть изображение, используя специально созданную полезную нагрузку, специфичную для целевого веб-сайта.
Вот список плагинов, которые были уязвимы для этой атаки:
- Absolutely Glamorous Custom Admin < 6.5.5
- All In One WP Security & Firewall< 4.4.4
- This one only works when an administrator has an older browser. New browsers aren’t vulnerable to this technique.
- Asset CleanUp: Page Speed Booster < 1.3.6.7
- Cookiebot < 3.6.1
- Elementor Addon Elements < 1.6.4
- LearnPress < 3.2.7.3
- Sticky Menu, Sticky Header (or anything!) on Scroll < 2.21
Конфиденциальные действия на веб-сайте необходимо защищать с помощью самых разных методов: проверки разрешений, одноразовых номеров, секретов и т.д.. С точки зрения безопасности часто упускаются из виду страницы, которые не запускают действия, такие как настройки плагина или страницы обзора.
Мы обнаружили, что все эти плагины имеют одну и ту же проблему: они доверяют URL-адресу браузера, содержащему только действительную информацию, и не используют другие механизмы для очистки или проверки содержащихся в нем данных. Поскольку данные не обрабатывались должным образом, это всегда приводило к отраженной XSS-уязвимости, когда вредоносный код мог быть выполнен от имени пользователя.
Поскольку для каждого из этих плагинов существует несколько вариантов уязвимости, давайте рассмотрим типичный сценарий: страница уязвимых настроек.
Страницы настроек часто имеют несколько вкладок, на которых информация разбита по категориям. Чтобы отличить, какая из этих вкладок используется в настоящее время, эти плагины часто используют аргумент запроса вкладки для условного рендеринга различных разделов страницы.
Вот уязвимый образец:
В этом сценарии, используя $ activeTab в качестве значения, класса или отображая его в любом месте без очистки, мы получаем отраженный XSS с использованием аргумента tab.
Наконец, чтобы использовать этот XSS, все, что нам нужно сделать, это отправить администратору ссылку на страницу настроек с нашей полезной нагрузкой в аргументе tab:
Код:
http://website.invalid.com/wp-admin/options-general.php?page=plugin-settings&tab="><script>alert(document.domain)</script>
Поскольку ссылка предназначена для того же веб-сайта, у ничего не подозревающего администратора может возникнуть соблазн щелкнуть по ней - действие, которое приведет к срабатыванию эксплойта в его собственной учетной записи.
Вывод
Хотя некоторые уязвимости определенно более опасны, чем другие, все уязвимости, независимо от их серьезности, могут быть использованы злоумышленниками для нанесения ущерба вашему веб-сайту.
Чтобы снизить риск и предотвратить эксплойт, обязательно обновляйте все программное обеспечение веб-сайта и сторонние компоненты с помощью последних исправлений безопасности. Мы также рекомендуем владельцам веб-сайтов воспользоваться услугами мониторинга целостности файлов, которые могут помочь вам определить индикаторы взлома.
Если у вас возникают проблемы с отслеживанием обновлений, вы можете использовать брандмауэр веб-приложений для виртуального исправления известных уязвимостей, пока не доберетесь до них самостоятельно.