Proxy / WAF Protections Bypass
Техніки з цього дослідження.
Приклад правила Nginx:
Щоб запобігти обхіду, Nginx виконує нормалізацію шляху перед перевіркою. Однак, якщо сервер backend виконує іншу нормалізацію (видаляючи символи, які не видаляє nginx), це може призвести до обхіду цієї захисту.
NodeJS - Express
Flask
Spring Boot
PHP-FPM
Конфігурація Nginx FPM:
Nginx налаштований на блокування доступу до /admin.php
, але можна обійти це, звернувшись до /admin.php/index.php
.
Як запобігти
Обхід Правил Mod Security
Плутанина Шляхів
У цьому пості пояснено, що ModSecurity v3 (до версії 3.0.12), неправильно реалізував змінну REQUEST_FILENAME
, яка повинна була містити доступний шлях (до початку параметрів). Це тому, що він виконував URL-декодування, щоб отримати шлях.
Отже, запит, подібний до http://example.com/foo%3f';alert(1);foo=
, в ModSecurity припустить, що шлях - це просто /foo
, оскільки %3f
перетворюється в ?
, закінчуючи URL-шлях, але фактично шлях, який отримає сервер, буде /foo%3f';alert(1);foo=
.
Змінні REQUEST_BASENAME
та PATH_INFO
також були пошкоджені цим багом.
Щось подібне трапилося в версії 2 Mod Security, що дозволяло обійти захист, який запобігав користувачам отримувати доступ до файлів з певними розширеннями, пов'язаними з резервними копіями файлів (наприклад, .bak
), просто надсилаючи URL-кодований крапку у вигляді %2e
, наприклад: https://example.com/backup%2ebak
.
Обхід AWS WAF ACL
Неправильний Заголовок
У цьому дослідженні зазначено, що було можливо обійти правила AWS WAF, застосовані до HTTP-заголовків, надсилаючи "неправильний" заголовок, який не був належним чином розібраний AWS, але був розібраний сервером backend.
Наприклад, надсилаючи наступний запит зі впровадженням SQL-ін'єкції у заголовку X-Query:
Було можливо обійти AWS WAF, оскільки він не розумів, що наступний рядок є частиною значення заголовка, тоді як сервер NODEJS це розумів (це було виправлено).
Посилання
Last updated