WordPress не стал самой популярной платформой на планете для CMS и размещения блога, потому что он является довольно сложным в использовании. Скорее всего, его удобный и богатый набор функций привлек около 70 миллионов вебсайтов и это только количество блогов, размещенных на WordPress.com
Сегодня, нас интересует использование платформой
Ссылка скрыта от гостей
, удаленный вызов процедур (под названием RPC), позволяющий закодированному XML вызывать то, что передаётся через HTTP протокол. Это позволяет сотрудникам WordPress, с легкостью размещать материал удаленно, а также размещать большие массивы данных.Но эта возможность поместить большое количество данных, также подразумевает, что мы хакеры, можем разместить там пароли. Нет сомнений, что вы сможете получить доступ к чужому аккаунту на WordPress, но все ваши 500 попыток выглядят очень неуклюже и неловко. Процедура подбора пароля может быть намного проще.
Эта уязвимость впервые
Ссылка скрыта от гостей
в сентябре 2015 года, и является одной из многих прошедших через XML-RPC. WordPress быстро
Ссылка скрыта от гостей
, так что большинство версий начиная с WordPress 4.4.1 имеют иммунитет к этому хаку. Однако, не забывайте про те 70 миллионов сайтов, многие из которых используют более старую версию или являются непропатченными, что делает их уязвимыми к вашему паролю.Step 1 Тестирование на наличие уязвимости
Сначала, если ваш WordPress запущен локально или на виртуальной машине, вы должны проверить базовый каталог установки. Нас интересует файл xmlrpc.php, который вы должны найти там, и это означает, что он уязвим к данному типу атак.
Вы можете просто проверить свой сайт на наличие файла /xmlrpc.php, как сделал я выше на своем локальном WordPress (замените "localhost" на URL вашего вебсайта). Если XML-RPC прослушивается, или находится там, вам сообщат об этом. Похоже, что мы нашли потенциально уязвимый блог (вам сообщат "forbidden" или что-то на подобие).
Не вдаваясь глубоко в дебри, XML-RPC работает вместе с WordPress system.multicall функциональностью, что намекает на то, как вы можете направить большое количество информации на сайт в одно время, скажем, во время загрузки контента или поиска всех последних сообщений.
Этот эксплойт использует способ, с помощью которого содержание или, в данном случае, пароли перемещаются процедура идентификации пользователя. Во время процедуры входа, WP просто передает XML файл со строкой вашего имени и строкой с вашим паролем.
Код:
<string>admin</string>
<string>MyPassword</string>
Вы могли заметить, если кто-то пытается войти в систему через каждые несколько секунд в течение нескольких часов, вы могли иметь набор инструментов для ограничения попыток входа. Все это ощутимая защита WordPress. Но, что касается данной статьи, если вы соедините XML-RPC с system.multicall, вы можете перенести сотни логинов на WordPress параллельно, но только так, чтобы несколько попыток входа отображались как одна, как это указано выше.
Это все, что я хотел рассказать в этом разделе.
Step 2 Взлом сервера
Ниже приведен пример того, как это выглядит в формате XML. Выделенный раздел, это только одна попытка подбора пароля, так что вам придется повторить этот раздел множество раз, используя различные пароли. Как вы можете себе представить, это займет много времени, перебирать варианты пароля один за другим.
Чтобы ускорить этот процесс, мы используем скрипт, найденный на GitHub, который читает наш список паролей и автоматически повторяет выделенную секцию, показанную выше, каждый раз подставляя новый пароль из нашего списка. Так что, перейдите на 1N3/Wordpress-XMLRPC-Brute-Force-Exploit на GitHub и скачайте файлы через HTTP ссылку (Скачайте ZIP, или Git если вы зарегистрированы в нем.)
Откройте окно терминала и перейдите в директорию, в которую вы сохранили скачанный файл, затем разархивируйте его в следующее место:
Код:
unzip Wordpress-XMLRPC-Brute-Force-Exploit-master.zip
Код:
cd Wordpress-XMLRPC-Brute-Force-Exploit-master
Код:
chmod 755 wordpress-xmlrpc-brute.py
Код:
./wordpress-xmlrpc-brute.py
Я выделил инструкцию голубым цветом. Для локального хоста это:
Код:
./wordpress-xmlrpc-brute.py http://localhost/xmlrpc.php passwords.txt username
Так что, когда вы произведете указанные выше действия, используя имя вашего целевого сервера вместо "localhost," ваш файл пароля и ваше имя пользователя, Python скрипт пропустит их через включенный файл passwords.txt и запустится в большей мере не обнаруженным способом. Если все прошло успешно, скрипт выдаст ваш логин в форме имя пользователя/пароль.
Как защититься от этого эксплойта
Защититься от XML-RPC уязвимости довольно просто — более новые версии вообще не включают в себя функциональность. Это означает, что многие инструменты WordPress стороннего производства, такие как
Ссылка скрыта от гостей
, и приложения для смартфонов типа
Ссылка скрыта от гостей
, могут требовать использования XML-RPC, таким образом, даже некоторые современные версии WordPress оснащены уязвим кодом и являются открытыми для внешнего внедрения.Проверьте свою версию WordPress, и убедитесь, что устанавливая новый инструмент, который позволяет взаимодействие с WP с удаленной позиции, вы не откроете дверь для XML-RPC вторжения или какого-либо другого вмешательства. Это одна из многих уязвимостей WordPress, и этот простой скрипт атаки будет хорошим началом для вашего изучения WordPress.