
Задание CodePath для 7-й и 8-й недель: CVE-2017-14719, CVE-2019-9787 и неавторизованная модификация содержимого страниц/записей через REST API
Задание CodePath для недель 7 и 8: CVE-2017-14719, CVE-2019-9787 и несанкционированная модификация содержимого страниц/записей через REST API
Затраченное время: всего 16 часов
Цель: найти, проанализировать, воспроизвести и задокументировать уязвимости, затрагивающие старую версию WordPress
- [ ] Шаги для воспроизведения: Если злоумышленнику удалось получить доступ к учетной записи администратора, он может нажать кнопку «Плагины» и просмотреть установленные плагины. Рядом с каждым перечисленным плагином есть кнопка «Удалить», при нажатии на которую злоумышленник переходит на страницу, где администратор может просмотреть содержимое каталога, который он пытается удалить, прежде чем внести постоянные изменения. На этой странице злоумышленник может удалить имя плагина из URL (находится сразу после checked[0]= и перед '&'). Злоумышленник заменяет имя плагина одним или несколькими символами « ../ », пока не достигнет нужного каталога, который хочет удалить.
- [ ] Затронутый исходный код:
- https://core.trac.wordpress.org/browser/tags/3.8/src/wp-admin/plugins.php


#######################################################################################
########################################################################################
Я использовал код эксплойта на Python с этого URL: https://www.exploit-db.com/exploits/41223
При работе над «Несанкционированной модификацией содержимого страниц/записей через REST API» я столкнулся с ошибкой импорта файла Python из-за отсутствия установленного пакета lxml. После установки lxml я снова попытался выполнить 'python [exploit_file_name].py http://wpdistillery.vm'. Тут я столкнулся со второй проблемой: я получил UnicodeEncodeError. Я решил эту проблему, удалив лишние записи, которые содержали символ, порядковый номер которого выходил за допустимый диапазон.

Я создал новую запись с простым текстовым содержимым и снова запустил скрипт. Он выполнился успешно, обнаружив конечные точки API и получив доступные ID записи, заголовок и ссылку.
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.