Ще одна вразливість в Apache httpd дозволяє звернутися за межі кореневого каталогу сайту

Знайдено новий вектор атаки на http-сервер Apache, який залишився невиправленим в оновленні 2.4.50 і дозволяє отримати доступ до файлів із областей поза кореневим каталогом сайту. Крім того, дослідниками знайдено спосіб, що дозволяє за наявності певних нестандартних налаштувань не лише прочитати системні файли, але й віддалено виконати свій код на сервері. Проблема проявляється тільки у випусках 2.4.49 і 2.4.50, більш ранні версії вразливості не схильні. Для усунення нового варіанта вразливості оперативно сформовано випуск Apache httpd 2.4.51.

За своєю суттю нова проблема (CVE-2021-42013) повністю аналогічна початковій вразливості (CVE-2021-41773) в 2.4.49, різниця лише в іншому кодуванні символів "..". Зокрема, у випуску 2.4.50 було заблоковано можливість використання послідовності «%2e» для кодування точки, але втрачено можливість подвійного кодування — при вказівці послідовності «%%32%65» сервер декодував її в «%2e», а потім у « .», тобто. символи "../" для переходу до попереднього каталогу можна було закодувати як ".%%32%65/".

Що стосується експлуатації вразливості через виконання коду, то подібне можливе при включенні mod_cgi та використанні базового шляху, в якому дозволено виконання CGI-скриптів (наприклад, якщо включено директиву ScriptAlias ​​або вказано прапор ExecCGI у директиві Options). Обов'язковою вимогою для успішного проведення атаки є явне надання в налаштуваннях Apache доступу до каталогів з виконуваними файлами, таким як /bin, або доступу до кореня ФС «/». Так як зазвичай такий доступ не надається, то атака виконання коду малозастосовна до реальних систем.

При цьому залишається актуальною атака з отримання вмісту довільних системних файлів та вихідних текстів web-скриптів, доступних для читання користувачеві, під яким запущено http-сервер. Для проведення такої атаки достатньо наявності на сайті каталогу, налаштованого за допомогою директив Alias ​​або ScriptAlias ​​(DocumentRoot не достатньо), такого як cgi-bin.

Приклад експлоїту, що дозволяє виконати утиліту «id» на сервері: curl 'http://192.168.0.1/cgi-bin/.%%32%65/.%%32%65/.%%32%65/.%% 32%65/.%%32%65/bin/sh'-data 'echo Content-Type: text/plain; echo; id' uid=1(daemon) gid=1(daemon) groups=1(daemon)

Приклад експлоїтів, що дозволяє вивести вміст /etc/passwd та одного з web-скриптів (для віддачі коду скриптів як базовий повинен бути зазначений визначений через директиву «Alias» каталог, для якого не включено виконання скриптів): curl 'http://192.168.0.1 .32/cgi-bin/.%%65%32/.%%65%32/.%%65%32/.%%65%32/.%%65%192.168.0.1/etc/passwd' curl 'http: //32/aliaseddir/.%%65%32/.%%65%32/.%%65%32/.%%65%32/.%%65%2/.usr/local/apacheXNUMX/cgi -bin/test.cgi'

Проблема торкається переважно безперервно оновлюваних дистрибутивів, таких як Fedora, Arch Linux і Gentoo, а також порти FreeBSD. Пакети в стабільних гілках консервативних серверних дистрибутивів Debian, RHEL, Ubuntu та SUSE уразливості не піддаються. Проблема не виявляється, якщо доступ до каталогів явно заборонено за допомогою "require all denied".

Джерело: opennet.ru

Додати коментар або відгук