Site icon Pingvin.Pro

Уразливість, яка зачіпала понад 600 тисяч сайтів, вже виправлена

Уразливість

Команда Wordfence виявила уразливість міжсайтового скриптингу, що зберігається без аутентифікації в Limit Login Attempts. Це плагін WordPress, який встановлений на більш ніж 600 000 сайтів, що надає власникам сайтів можливість блокувати IP-адреси.




Плагін вразливий у версіях до 1.7.1 включно. Патч, який усуває цю вразливість, був випущений 4 квітня 2023 року у версії 1.7.2. Всім власникам сайтів рекомендується оновитись до версії 1.7.2 якнайшвидше.

Як працювала уразливість

Плагін Limit Login Attempts пропонує кілька найпростіших параметрів конфігурації. До них належать максимальна кількість спроб входу в систему, тривалість блокування, час закінчення терміну блокування, а також деякі параметри реєстрації та сповіщень. Вразливість, позначена як CVE-2023-1912, потребує певного налаштування: для параметра підключення до сайту має бути встановлено значення «Через реверсивний [sic] проксі» і повинна бути ввімкнена реєстрація IP-адрес при блокуванні.

При ввімкненій опції виявлення зворотного проксі плагін використовує заголовок X-Forwarded-For визначення IP-адреси відвідувача. Хоча цей http-заголовок можна підробити, плагін пропонує його використання як альтернативу для тих, хто працює з балансувальником навантаження або обробником кешу. Типово цей параметр не використовується.

Коли функцію журналу плагіна увімкнено, блоки входу в систему реєструються та відображаються на сторінці конфігурації. Це виконується в наступному коді (злегка відредагованому для зручності читання).

Як видно, ця функція збирає таблицю інформації, але не уникає значень, які вона використовує. Коли очищення рекомендується при отриманні вхідних даних, екранування вихідних даних, навіть якщо вони вже очищені, є набагато ефективнішим засобом запобігання міжсайтовому скриптингу. На жаль, цей плагін не використовував ні очищення, ні екранування збереженого IP значення, яке могло бути надано через заголовок X-Forwarded-For.

Щоб скористатися цією вразливістю, зловмисник може надіслати запит на вхід з наступним набором заголовків X-Forwarded-For:

X-Forwarded-For: <span onmouseover=alert(1)>23.23.23.23</span>

Цей заголовок можна встановити багатьма способами, наприклад, за допомогою плагіна для браузера або перехоплення запиту на вхід і додавання його вручну. Як тільки буде досягнуто поріг блокування плагіна, він запише наведений вище код як заблоковану IP-адресу і виконає шкідливий код JavaScript, коли адміністратор відвідає сторінку конфігурації, де відображається список заблокованих IP-адрес. Цей шкідливий код виконується під аутентифікацією адміністратора і може використовуватись для полегшення захоплення сайту.