AWS - WAF Enum
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
AWS WAF - це фаєрвол веб-додатків, призначений для захисту веб-додатків або API від різних веб-експлойтів, які можуть вплинути на їх доступність, безпеку або споживання ресурсів. Він надає користувачам можливість контролювати вхідний трафік, налаштовуючи правила безпеки, які зменшують типові вектори атак, такі як SQL-ін'єкції або міжсайтове скриптування, а також визначаючи власні правила фільтрації.
Web ACL - це колекція правил, які ви можете застосувати до своїх веб-додатків або API. Коли ви асоціюєте Web ACL з ресурсом, AWS WAF перевіряє вхідні запити на основі правил, визначених у Web ACL, і виконує вказані дії.
Група правил - це повторно використовувана колекція правил, які ви можете застосувати до кількох Web ACL. Групи правил допомагають управляти та підтримувати послідовні набори правил для різних веб-додатків або API.
Кожна група правил має свою асоційовану ємність, яка допомагає розрахувати та контролювати операційні ресурси, що використовуються для виконання ваших правил, груп правил і веб ACL. Після встановлення значення під час створення його не можна змінити.
Правило визначає набір умов, які AWS WAF використовує для перевірки вхідних веб-запитів. Існує два основних типи правил:
Звичайне правило: Цей тип правила використовує вказані умови, щоб визначити, чи дозволити, заблокувати або підрахувати веб-запити.
Правило на основі швидкості: Підраховує запити з певної IP-адреси протягом п'яти хвилин. Тут користувачі визначають поріг, і якщо кількість запитів з IP перевищує цей ліміт протягом п'яти хвилин, наступні запити з цієї IP блокуються, поки швидкість запитів не знизиться нижче порогу. Мінімальний поріг для правил на основі швидкості становить 2000 запитів.
AWS WAF пропонує попередньо налаштовані, керовані набори правил, які підтримуються AWS та продавцями AWS Marketplace. Ці набори правил забезпечують захист від загальних загроз і регулярно оновлюються для усунення нових вразливостей.
Набір IP - це список IP-адрес або діапазонів IP-адрес, які ви хочете дозволити або заблокувати. Набори IP спрощують процес управління правилами на основі IP.
Набір шаблонів Regex містить один або кілька регулярних виразів (regex), які визначають шаблони для пошуку у веб-запитах. Це корисно для більш складних сценаріїв відповідності, таких як фільтрація конкретних послідовностей символів.
Токен блокування використовується для контролю паралелізму під час внесення змін до ресурсів WAF. Він забезпечує, щоб зміни не були випадково перезаписані кількома користувачами або процесами, які намагаються оновити один і той же ресурс одночасно.
API ключі в AWS WAF використовуються для аутентифікації запитів до певних операцій API. Ці ключі шифруються та управляються безпечно, щоб контролювати доступ і забезпечити, щоб тільки авторизовані користувачі могли вносити зміни до конфігурацій WAF.
Приклад: Інтеграція API CAPTCHA.
Політика дозволів - це політика IAM, яка визначає, хто може виконувати дії з ресурсами AWS WAF. Визначаючи дозволи, ви можете контролювати доступ до ресурсів WAF і забезпечити, щоб тільки авторизовані користувачі могли створювати, оновлювати або видаляти конфігурації.
Параметр області в AWS WAF визначає, чи застосовуються правила та конфігурації WAF до регіонального додатку або розподілу Amazon CloudFront.
РЕГІОНАЛЬНИЙ: Застосовується до регіональних послуг, таких як Application Load Balancers (ALB), Amazon API Gateway REST API, AWS AppSync GraphQL API, пул користувачів Amazon Cognito, служба AWS App Runner та екземпляр AWS Verified Access. Ви вказуєте регіон AWS, де розташовані ці ресурси.
CLOUDFRONT: Застосовується до розподілів Amazon CloudFront, які є глобальними. Конфігурації WAF для CloudFront управляються через регіон us-east-1
, незалежно від того, де подається контент.
Умови визначають елементи вхідних HTTP/HTTPS запитів, які моніторить AWS WAF, включаючи XSS, географічне положення (GEO), IP-адреси, обмеження розміру, SQL-ін'єкції та шаблони (рядки та відповідність regex). Важливо зазначити, що запити, обмежені на рівні CloudFront на основі країни, не досягнуть WAF.
Кожен обліковий запис AWS може налаштувати:
100 умов для кожного типу (за винятком Regex, де дозволено лише 10 умов, але цей ліміт можна збільшити).
100 правил та 50 Web ACL.
Максимум 5 правил на основі швидкості.
Пропускну здатність 10,000 запитів на секунду, коли WAF реалізовано з балансувальником навантаження додатків.
Дії призначаються кожному правилу, з можливими варіантами:
Дозволити: Запит пересилається до відповідного розподілу CloudFront або балансувальника навантаження додатків.
Заблокувати: Запит терміново припиняється.
Підрахувати: Підраховує запити, які відповідають умовам правила. Це корисно для тестування правил, підтверджуючи точність правила перед його встановленням на Дозволити або Заблокувати.
CAPTCHA та Виклик: Перевіряється, що запит не надходить від бота, використовуючи головоломки CAPTCHA та тихі виклики.
Якщо запит не відповідає жодному правилу в Web ACL, він підлягає за замовчуванням дії (Дозволити або Заблокувати). Порядок виконання правил, визначений у Web ACL, є критично важливим і зазвичай слідує цій послідовності:
Дозволити IP-адреси зі списку білих.
Заблокувати IP-адреси зі списку чорних.
Заблокувати запити, що відповідають будь-яким шкідливим підписам.
AWS WAF інтегрується з CloudWatch для моніторингу, пропонуючи метрики, такі як AllowedRequests, BlockedRequests, CountedRequests та PassedRequests. Ці метрики звітуються щохвилини за замовчуванням і зберігаються протягом двох тижнів.
Щоб взаємодіяти з розподілами CloudFront, ви повинні вказати регіон US East (N. Virginia):
CLI - Вкажіть регіон US East, коли ви використовуєте область CloudFront: --scope CLOUDFRONT --region=us-east-1
.
API та SDK - Для всіх викликів використовуйте регіональний кінцевий пункт us-east-1.
Щоб взаємодіяти з регіональними послугами, ви повинні вказати регіон:
Приклад з регіоном Європа (Іспанія): --scope REGIONAL --region=eu-south-2
З точки зору атакуючого, цей сервіс може допомогти атакуючому виявити захисти WAF та мережеві вразливості, які можуть допомогти йому скомпрометувати інші веб-сайти.
Однак атакуючий також може бути зацікавлений у порушенні цього сервісу, щоб веб-сайти не були захищені WAF.
У багатьох операціях видалення та оновлення буде необхідно надати lock token. Цей токен використовується для контролю паралельності над ресурсами, забезпечуючи, щоб зміни не були випадково перезаписані кількома користувачами або процесами, які намагаються одночасно оновити один і той же ресурс. Щоб отримати цей токен, ви можете виконати відповідні list або get операції над конкретним ресурсом.
wafv2:CreateRuleGroup
, wafv2:UpdateRuleGroup
, wafv2:DeleteRuleGroup
Атакуючий зможе скомпрометувати безпеку ураженого ресурсу, виконуючи:
Створення груп правил, які можуть, наприклад, блокувати легітимний трафік з легітимних IP-адрес, викликаючи відмову в обслуговуванні.
Оновлення груп правил, маючи можливість змінювати їх дії, наприклад, з Block на Allow.
Видалення груп правил, які забезпечують критично важливі заходи безпеки.
Наступні приклади показують групу правил, яка блокує легітимний трафік з конкретних IP-адрес:
Файл rule.json виглядатиме так:
Потенційний вплив: Несанкціонований доступ, витоки даних та потенційні атаки DoS.
wafv2:CreateWebACL
, wafv2:UpdateWebACL
, wafv2:DeleteWebACL
З цими дозволами зловмисник зможе:
Створити новий Web ACL, вводячи правила, які або дозволяють шкідливий трафік, або блокують легітимний трафік, фактично роблячи WAF безкорисним або викликаючи відмову в обслуговуванні.
Оновити існуючі Web ACL, маючи можливість змінювати правила для дозволу атак, таких як SQL-ін'єкції або міжсайтове скриптування, які раніше були заблоковані, або порушити нормальний потік трафіку, блокуючи дійсні запити.
Видалити Web ACL, залишаючи уражені ресурси абсолютно незахищеними, піддаючи їх широкому спектру веб-атак.
Ви можете видалити вказаний WebACL лише якщо ManagedByFirewallManager є false.
Наступні приклади показують, як оновити Web ACL, щоб заблокувати легітимний трафік з конкретного набору IP. Якщо вихідний IP не відповідає жодному з цих IP, то за замовчуванням також буде заблоковано, що призведе до DoS.
Оригінальний Web ACL:
Команда для оновлення Web ACL:
Файл rule.json виглядатиме так:
Потенційний вплив: Неавторизований доступ, витоки даних та потенційні атаки DoS.
wafv2:AssociateWebACL
, wafv2:DisassociateWebACL
Дозвіл wafv2:AssociateWebACL
дозволив би зловмиснику асоціювати веб ACL (Списки контролю доступу) з ресурсами, що дозволяє обійти засоби безпеки, дозволяючи несанкціонованому трафіку досягати програми, що потенційно призводить до експлуатацій, таких як SQL-ін'єкція або міжсайтове скриптування (XSS). Навпаки, з дозволом wafv2:DisassociateWebACL
зловмисник міг би тимчасово відключити засоби безпеки, піддаючи ресурси вразливостям без виявлення.
Додаткові дозволи знадобляться в залежності від типу захищеного ресурсу:
Асоціювати
apigateway:SetWebACL
apprunner:AssociateWebAcl
appsync:SetWebACL
cognito-idp:AssociateWebACL
ec2:AssociateVerifiedAccessInstanceWebAcl
elasticloadbalancing:SetWebAcl
Від'єднати
apigateway:SetWebACL
apprunner:DisassociateWebAcl
appsync:SetWebACL
cognito-idp:DisassociateWebACL
ec2:DisassociateVerifiedAccessInstanceWebAcl
elasticloadbalancing:SetWebAcl
Потенційний вплив: Скомпрометована безпека ресурсів, підвищений ризик експлуатації та потенційні збої в обслуговуванні в середовищах AWS, захищених AWS WAF.
wafv2:CreateIPSet
, wafv2:UpdateIPSet
, wafv2:DeleteIPSet
Зловмисник зможе створювати, оновлювати та видаляти набори IP, які керуються AWS WAF. Це може бути небезпечно, оскільки він може створити нові набори IP для дозволу шкідливого трафіку, змінити набори IP для блокування легітимного трафіку, оновити існуючі набори IP, щоб включити шкідливі IP-адреси, видалити довірені IP-адреси або видалити критично важливі набори IP, які призначені для захисту критичних ресурсів.
Наступний приклад показує, як перезаписати існуючий набір IP на бажаний набір IP:
Потенційний вплив: Несанкціонований доступ та блокування легітимного трафіку.
wafv2:CreateRegexPatternSet
, wafv2:UpdateRegexPatternSet
, wafv2:DeleteRegexPatternSet
Зловмисник з цими дозволами зможе маніпулювати наборами шаблонів регулярних виразів, які використовуються AWS WAF для контролю та фільтрації вхідного трафіку на основі конкретних шаблонів.
Створення нових шаблонів регулярних виразів допоможе зловмиснику дозволити шкідливий контент
Оновлення існуючих шаблонів дозволить зловмиснику обійти правила безпеки
Видалення шаблонів, які призначені для блокування шкідливих дій, може дозволити зловмиснику надсилати шкідливі дані та обійти заходи безпеки.
Потенційний вплив: Обхід засобів безпеки, що дозволяє шкідливому контенту і потенційно викриває чутливі дані або порушує роботу сервісів і ресурсів, захищених AWS WAF.
wavf2:PutLoggingConfiguration
& iam:CreateServiceLinkedRole
), wafv2:DeleteLoggingConfiguration
Зловмисник з wafv2:DeleteLoggingConfiguration
зможе видалити конфігурацію журналювання з вказаного Web ACL. Після цього, з дозволами wavf2:PutLoggingConfiguration
та iam:CreateServiceLinkedRole
, зловмисник може створити або замінити конфігурації журналювання (після їх видалення), щоб або зовсім запобігти журналюванню, або перенаправити журнали до несанкціонованих місць призначення, таких як кошики Amazon S3, групи журналів Amazon CloudWatch Logs або Amazon Kinesis Data Firehose під контролем.
Під час процесу створення сервіс автоматично налаштовує необхідні дозволи, щоб дозволити запис журналів до вказаного місця призначення для журналювання:
Amazon CloudWatch Logs: AWS WAF створює політику ресурсу на призначеній групі журналів CloudWatch Logs. Ця політика забезпечує, що AWS WAF має дозволи, необхідні для запису журналів у групу журналів.
Amazon S3 Bucket: AWS WAF створює політику кошика на призначеному кошику S3. Ця політика надає AWS WAF дозволи, необхідні для завантаження журналів до вказаного кошика.
Amazon Kinesis Data Firehose: AWS WAF створює роль, пов'язану з сервісом, спеціально для взаємодії з Kinesis Data Firehose. Ця роль дозволяє AWS WAF доставляти журнали до налаштованого потоку Firehose.
Можливо визначити лише одне місце призначення для журналювання на веб ACL.
Потенційний вплив: Непрозорість у безпекових подіях, ускладнення процесу реагування на інциденти та сприяння прихованим злочинним діям у середовищах, захищених AWS WAF.
wafv2:DeleteAPIKey
Зловмисник з цими правами зможе видалити існуючі API-ключі, що зробить CAPTCHA неефективним і порушить функціональність, яка на ньому базується, таку як надсилання форм та контроль доступу. Залежно від реалізації цього CAPTCHA, це може призвести або до обходу CAPTCHA, або до DoS, якщо управління помилками не налаштоване належним чином у ресурсі.
Потенційний вплив: Вимкнення захисту CAPTCHA або порушення функціональності програми, що призводить до порушень безпеки та потенційної крадіжки даних.
wafv2:TagResource
, wafv2:UntagResource
Зловмисник зможе додавати, змінювати або видаляти теги з ресурсів AWS WAFv2, таких як Web ACL, групи правил, набори IP, набори шаблонів regex та конфігурації журналювання.
Потенційний вплив: Підробка ресурсів, витік інформації, маніпуляція витратами та порушення операційної діяльності.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)