WordPress Plugin Limit Login Attempts Reloaded

IB Tree
4 min readJan 6, 2021

--

Рассмотрим две уязвимости:

1 — Обход ограничения брута: в нестандартной конфигурации заголовок IP клиента принимает любую произвольную строку. При рандомизации ввода заголовка количество попыток входа в систему никогда не достигает максимально допустимого числа попыток.

2 — Отраженная XSS: при входе в систему как администратор WordPress параметр URL вкладки в /wp-admin/options-general.php?page=limit-login-attempts

Информация о плагине

Название плагина: Limit Login Attempts Reloaded

Затронутая версия:> = 2.13.0

Веб-страница плагина: https://wordpress.org/plugins/limit-login-attempts-reloaded/

Этот плагин WordPress предназначен для защиты от атак методом перебора и в настоящее время установлен более чем на 1 миллионе активных сайтов.

Однако во время быстрой проверки плагина было обнаружено две проблемы. Первая — обход ограничения брутфорса при нестандартной конфигурации, а другой — отраженная XSS.

Детали уязвимостей

1 — Неправильное ограничение чрезмерных попыток аутентификации — CWE-307

Пошаговые инструкции и PoC:

Необходимым предварительным условием является настраиваемый заголовок на странице настроек плагина в Trusted IP Origins, включая, например, X-Forwarded-For.

Страница конфигурации может выглядеть следующим образом:

Affected Endpoints

URL: http: //hostname/wp-login.php

Параметр HTTP: X-Forwarded-For

Действительно, брутфорс пароля блокируется:

Используем список слов в значении пароля:

После нескольких попыток плагин успешно нас останавливает:

Однако значение X-Forwarded-For не проверяется IP-адрес или массив IP-адресов.

Действительно, если добавить заголовок X-Forwarded-For в запрос на вход, он может проверить обход ограничения брутфорса.

Ниже приведены доказательства с подробностями об уязвимости и используемой полезной нагрузке.

Первый набор значений — это список слов, используемый для проверки значения пароля:

Второй список может быть любой строкой, даже с простым увеличением числа от 1 до 10:

Действительно, можем обойти ограничение и потенциально найти учетные данные для входа:

Полезная нагрузка, используемая для использования уязвимости, изменяя значение X-Forwarded-For при каждой попытке:

POST /wp-login.php HTTP/1.1
Host: wordpress
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded
X-Forwarded-For: 1
Connection: close
Cookie: wordpress_test_cookie=WP+Cookie+check
Upgrade-Insecure-Requests: 1
log=admin&pwd=password&wp-submit=Log+In&redirect_to=http%3A%2F%2Fwordpress%2Fwp-admin%2F&testcookie=1

2 — Неправильная нейтрализация ввода во время создания веб-страницы (Reflected Cross-Site Scripting) — CWE-79

Пошаговые инструкции и PoC

Можем заставить администратора предоставить опасный контент на уязвимую страницу, который затем отражается обратно пользователю и запускается веб-браузером. Наиболее распространенный механизм доставки вредоносного контента — это включение его в качестве параметра в URL, который публикуется публично или отправляется по электронной почте непосредственно жертвам.

Затронутые конечные точки:

• URL: http://wordpress/wp-admin/options-general.php?page=limit-login-attempts

• Параметр HTTP: tab

Ниже приведены доказательства с подробностями об уязвимости и используемых пейлоадов.

Данные считываются непосредственно из HTTP-запроса и отражаются обратно в HTTP-ответе:

Выполнение полезной нагрузки JavaScript в контексте браузера:

Пейлоад, используемый для выполнения уязвимости:

http://wordpress/wp-admin/options-general.php? page = лимит-попыток входа & tab = d7raf% 22% 3E% 3Cscript% 3Ealert (1)% 3C / script% 3E

Обратите внимание, что страница options-general.php доступна только администраторам WordPress. Пользователи с более низкими привилегиями не затронуты, потому что страница для них запрещена (ошибка 403).

Не забудьте подпиcаться на наш канал!

--

--

IB Tree
IB Tree

Written by IB Tree

Киберкриминалистика; Offensive security; Red teaming; OSINT; Обучение; Инсайты, опыт и lifestyle. 🏴‍☠️ t.me/ib_tree

No responses yet