Зловмиснику важливо розуміти, де саме в мережі зазвичай застосовується WAF, перш ніж проводити ідентифікацію його особливостей.
Фахівцям з тестування на проникнення слід враховувати наявність WAF перед початком взаємодії з веб-додатком, оскільки це може вплинути на результативність їхніх спроб атак.
Але перш ніж перейти до практики…
Що ж таке WAF?
WAF, або міжмережевий екран веб-застосунків, є ключовим елементом у системі безпеки веб-ресурсів. Він виконує функцію фільтрації та контролю трафіку. Екрани веб-застосунків надають захист від серйозних вразливостей. Багато компаній впроваджують WAF у свою інфраструктуру. Проте, за словами експертів з етичного хакінгу, WAF не може самостійно вирішувати всі питання безпеки; для ефективного виявлення та блокування зовнішніх загроз потрібна його правильна настройка.
Відмінність WAF від звичайного міжмережевого екрана полягає в тому, що WAF здатний фільтрувати вміст конкретних веб-додатків, тоді як традиційні екрани діють як бар’єр між серверами.
Взаємодія за протоколом HTTP відбувається на основі набору правил. Ці правила протидіють типовим вразливостям, як-от міжсайтовий скриптинг та SQL-ін’єкції.
В інтернеті існує безліч безкоштовних інструментів з відкритим вихідним кодом, які допомагають виявити екрани, що захищають веб-застосунки.
У цій статті ми розглянемо методи та інструменти, що використовуються для ідентифікації WAF.
Зверніть увагу: для демонстраційних цілей я використовував власний сайт. Не проводите сканування чи інші хакерські дії на будь-якому сайті без дозволу власника.
Ручне виявлення
Виявлення за допомогою TELNET
Telnet найчастіше використовується мережевими адміністраторами та фахівцями з тестування на проникнення. За допомогою Telnet можна з’єднуватися з віддаленими хостами через будь-який порт.
- Міжмережеві екрани веб-застосунків часто залишають (або додають) HTTP-параметри до заголовків відповідей.
- Telnet можна застосовувати для отримання базової інформації, такої як тип сервера та файли cookie, необхідної для ідентифікації.
- Введіть команду: Telnet targetwebsite.com 80
[email protected]: # telnet Targetwebsite.com 80 Trying 18.166.248.208... Connected to Targetwebsite.com. Escape character is '^]'.
Після виконання вищенаведеної команди введіть `HEAD / HTTP / 1.1` і натисніть Enter.
[email protected]: # telnet 18.166.248.208 80 Trying 18.166.248.208... Connected to 18.166.248.208. Escape character is '^]'. HEAD / HTTP/1.1 Host: 18.166.248.208 HTTP/1.1 200 OK Date: SUN, 10 Oct 2021 05:08:03 IST Server: Apache X-Powered-By: PHP/5.3.5 ZendServer/5.0 Set-Cookie: SESSIONID VULN SITE=t25put8gliicvqf62u3ctgjm21; path=/ Expires: Thu, 19 Nov 1981 08:52:00 IST Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Pragma: no-cache X-Varnish: 4723782781 Age: 0 Via: 1.1 varnish Connection: close Content-Type: text/html Connection closed by foreign host.
Ця інформація вказує на сервер, на якому розміщено веб-сайт, і мову програмування, на якій він був розроблений. Після використання telnet на порту 80, ми визначили, що брандмауер/граничний шлюз – Varnish.
Деякі WAF-системи дозволяють змінювати заголовки, а також можуть спонукати веб-сервер відправляти HTTP-відповіді, що відрізняються від стандартних.
Як видно з результатів вище, веб-сервер відповів на наш запит і виявив, що брандмауер/граничний шлюз – Varnish.
Автоматизоване виявлення
#1. Виявлення за допомогою NMAP
Nmap, маючи в своєму арсеналі сценарій для ідентифікації брандмауерів веб-додатків, також придатний для цієї мети.
- Nmap – це інструмент для оцінки безпеки, який часто використовують тестувальники на проникнення та мережеві адміністратори.
- Nmap застосовується для отримання інформації про цільову систему.
- Сценарій був запущений на тій самій веб-сторінці, що і раніше.
- Введіть команду: `nmap –script=http-waf-fingerprint targetweb.com`
[email protected]:# nmap --script=http-waf-fingerprint targetwebsite.com Starting Nmap 7.90 ( https://nmap.org ) at 2021-10-10 07:58 IST Nmap scan report for targetsite.com (18.166.248.208) Host is up (0.24s latency). Not shown: 982 filtered ports PORT STATE SERVICE 53/tcp open domain 80/tcp open http | http-waf-fingerprint: | Detected WAF | Citrix Netscaler 443/tcp open https 5432/tcp closed postgresql 8080/tcp closed http-proxy Nmap done: 1 IP address (1 host up) scanned in 25.46 seconds
Використавши наведену вище команду, Nmap визначив наявність брандмауера Citrix Netscaler.
#2. Виявлення за допомогою Whatwaf
Whatwaf – це інструмент для сканування веб-додатків, який дозволяє виявити наявність будь-якого WAF. Він корисний для визначення того, чи захищений веб-додаток екраном під час оцінки його безпеки.
Якщо так, то знання стратегій обходу та уникнення може бути корисним для подальшого тестування або використання веб-застосунку.
WhatWaf зазвичай застосовується для обходу брандмауерів, виявлення додатків, визначення їхніх особливостей та ідентифікації програмного забезпечення. Мережеві спеціалісти з безпеки та пен-тестери є цільовою аудиторією цього інструменту.
Як встановити WhatWaf?
Інсталяція на Kali-Linux:
sudo apt install python3-pip git clone https://github.com/ekultek/whatwaf cd whatwaf sudo pip3 install -r requirements.txt
Під час запуску без конкретної версії Python можна вказати виконуваний файл:
./whatwaf --help
Але, оскільки ми не встановили залежності Python 2, радимо використовувати спеціальну версію Python:
python3 ./whatwaf --help
Використання інструменту
Інструмент виявлення брандмауера Whatwaf простий у використанні! Потрібно лише виконати таку команду:
./whatwaf -u https://www.targetsite.com
Як показано нижче, цей інструмент виявив брандмауер для зазначеної URL-адреси веб-сайту.
Нагадування! – Я використовував власний сайт для сканування
┌──(root💀kali)-[/home/writer/WhatWaf] └─# ./whatwaf -u https://www.renjith.org ,------. ' .--. ' ,--. .--. ,--. .--.| | | | | | | | | | | |'--' | | | | | | | | | | __. | | |.'.| | | |.'.| | | .' | | | | |___| | ,'. |hat| ,'. |af .---. '--' '--' '--' '--' '---' /><script>alert("WhatWaf?<|>v2.0.3($dev)");</script>%00 [11:12:34][ERROR] you must install psutil first `pip install psutil` to start mining XMR [11:12:34][INFO] checking for updates [11:12:34][WARN] it is highly advised to use a proxy when using WhatWaf. do so by passing the proxy flag (IE `--proxy http://127.0.0.1:9050`) or by passing the Tor flag (IE `--tor`) [11:12:34][INFO] using User-Agent 'whatwaf/2.0.3 (Language=2.7.18; Platform=Linux)' [11:12:34][INFO] using default payloads [11:12:34][INFO] testing connection to target URL before starting attack [11:12:35][SUCCESS] connection succeeded, continuing [11:12:35][INFO] running single web application 'https://www.renjith.org' [11:12:35][WARN] URL does not appear to have a query (parameter), this may interfere with the detection results [11:12:35][INFO] request type: GET [11:12:35][INFO] gathering HTTP responses [11:12:42][INFO] gathering normal response to compare against [11:12:42][INFO] loading firewall detection scripts [11:12:42][INFO] running firewall detection checks [11:12:44][FIREWALL] detected website protection identified as 'Apache Generic' [11:12:44][INFO] starting bypass analysis [11:12:44][INFO] loading payload tampering scripts [11:12:45][INFO] running tampering bypass checks [11:19:09][SUCCESS] apparent working tampers for target: ------------------------------ (#1) description: tamper payload by changing characters into a wildcard example: '/bin/cat /et?/?asswd' load path: content.tampers.randomwildcard ------------------------------
Як видно з результатів, веб-сервер відповів на наш запит і виявив, що брандмауером є Apache. Ми також можемо використовувати службу tor для сканування WAF, але це може збільшити затримку.
./whatwaf -u https://www.targetsite.com --tor
Основна перевага інструмента Whatwaf полягає в тому, що він автоматично намагається надати корисні навантаження в обхід виявленого брандмауера.
#3. Виявлення за допомогою Wafw00f
Найбільш відомим інструментом для виявлення брандмауерів веб-додатків є Wafw00f. Wafw00f надсилає HTTP-запит на брандмауер веб-застосунку для його ідентифікації. Коли відправлення звичайних HTTP-запитів не вдається, wafw00f виконує шкідливий HTTP-запит. Якщо й це не дає результату, то wafw00f аналізує попередні HTTP-запити та за допомогою простого алгоритму визначає, чи реагує брандмауер веб-застосунку на наші атаки.
Wafw00f не встановлено за замовчуванням в дистрибутивах Kali Linux.
Як встановити Wafw00f?
Пакет у форматі zip можна завантажити з офіційного ресурсу GitHub.
Завантажте інструмент Wafwoof. Також можна використати клієнт git для клонування репозиторію. Для отримання пакета виконайте команди:
$ git clone https://github.com/EnableSecurity/wafw00f.git
Щоб інсталювати інструмент wafw00f у систему, перейдіть до папки або каталогу wafw00f і виконайте команду:
$ python setup.py install
Файл інсталяції буде оброблено, і wafw00f буде встановлено у системі.
Використання інструменту
Щоб скористатися цим інструментом, виконайте таку команду:
$ wafw00f <url>
НАГАДУВАННЯ. Скануйте лише ті веб-сайти, на тестування яких ви маєте дозвіл.
┌──(root💀kali)-[/home/writer/wafw00f] └─# wafw00f https://webhashes.com ______ / ( Woof! ) ____/ ) ,, ) (_ .-. - _______ ( |__| ()``; |==|_______) .)|__| / (' /| ( |__| ( / ) / | . |__| (_)_)) / | |__| ~ WAFW00F : v2.1.0 ~ The Web Application Firewall Fingerprinting Toolkit [*] Checking https://whatismyip.com [+] The site https://whatismyip.com is behind Cloudflare (Cloudflare Inc.) WAF. [~] Number of requests : 2
На жаль, брандмауер виявлено!
Спробуємо інший цільовий сайт для обговорення.
┌──(root💀kali)-[/home/writer/wafw00f] └─# wafw00f https://renjith.org ______ / ( Woof! ) ____/ ) ,, ) (_ .-. - _______ ( |__| ()``; |==|_______) .)|__| / (' /| ( |__| ( / ) / | . |__| (_)_)) / | |__| ~ WAFW00F : v2.1.0 ~ The Web Application Firewall Fingerprinting Toolkit [*] Checking https://renjith.org [+] Generic Detection results: [-] No WAF detected by the generic detection [~] Number of requests: 7
Цього разу брандмауер не виявлено.
Щоб використовувати його в режимі детальної інформації, введіть таку команду:
wafw00f <url> -v
Можна побачити додаткові можливості цієї утиліти, виконавши команду:
wafw00f <url> --help
Підсумок 👨💻
У цій статті ми розглянули різні методи та інструменти для виявлення брандмауерів веб-застосунків. Це важливий етап, який потрібно проходити на стадії збору інформації під час кожного тесту на проникнення веб-ресурсів.
Крім того, знання про наявність WAF дає можливість тестувальнику на проникнення випробувати різні підходи, щоб обійти захист і скористатися вразливостями веб-застосунку.
За словами дослідників етичного хакінгу, наявність брандмауера веб-додатків (WAF) стає дедалі необхіднішою. Аналіз журналів веб-додатків для виявлення нових атак на внутрішній сервер завжди важливий. Це допомагає налаштовувати правила екрана веб-застосунку для забезпечення максимального захисту.
Також, вам може бути цікаво дізнатися про вразливості, виявлені за допомогою сканера Nikto.