Тестуємо безпеку веб-програми за допомогою w3af


Xakep #240. Ghidra

Xakep #239. Розкрити та вивчити

Xakep #238. Забутий Android

Xakep #237. Даркнет 2018

Зміст статті
Проект w3af дуже виділяється серед багатьох інших інструментів для дослідження безпеки веб-додатків. Це не звичайний сканер із жорстко забитим функціоналом, а фреймворк, що дозволяє використовувати більше сотні різних плагінів для дослідження сайту, пошуку вразливостей та їх подальшої експлуатації.
Інформація надана виключно для ознайомлення. Редакція не несе відповідальності за її використання у протизаконних цілях. Подібні дії спричиняють кримінальне переслідування.
Що таке w3af?
Сучасні веб-застосунки вже мало чим схожі на своїх попередників, які були в ході ще п'ять років тому. Вони стають все популярнішими, використовують набагато більше технологій, що збільшує можливий вектор атаки, обробляють все більше різної інформації, включаючи фінансові та персональні дані. Щоб зменшити ризики безпеки, ми можемо впровадити процес безпечної розробки програмного забезпечення (так званий SDL), важливим етапом якого є тестування безпеки. Умовно кажучи, можна виділити чотири види тестування безпеки веб-додатків:
- Автоматизоване сканування на вразливості.
- Ручне тестування безпеки (пентестинг).
- Статичний аналіз коду.
- Аудит коду.
Сьогодні я хочу розповісти про проект w3af. Це фреймворк для тестування безпеки веб-застосунку (Web Application Attack and Audit Framework), який може бути використаний для перших двох видів тестування. Автором цьоговідкритого проекту є Андреас Ріанчо з Аргентини. Розробкою проекту зараз займається в основному він разом із групою контриб'юторів з усього світу. Фреймворк w3af написаний на Python, який, як ти знаєш, є "мовою з батарейками". Батарейки w3af — це його розширення, яких набралося вже понад сотню. Це, звичайно, ще не Mozilla Firefox, але досить потужний засіб.

Хакер #158. Зламати Wi-Fi за 10 годин
Як влаштований w3af?
Фреймворк w3af складається з двох важливих частин: ядра та плагінів. Ядро запускає головний процес та координує роботу плагінів, а також обмін інформацією між ними. Плагіни, у свою чергу, знаходять уразливості та дозволяють проексплуатувати їх. Через ядро плагіни обмінюються інформацією, наприклад, про знайдені запити для фазінгу. Як центральне сховище інформації виступає так звана «база знань».
Слово "фреймворк" у назві розробки вживається не випадково. W3af надає платформу, у той час як весь функціонал для пентесту реалізований у різних плагінах. Для кожного нового сканування ти можеш вибирати лише потрібні тобі аддони, комбінуючи їх. Плагін кожного типу, яких загалом налічується вісім, відповідає за виконання певного завдання.
Скануємо веб-додаток
Холодний запуск
- gtkUi - графічний, заснований на тулкіті GTK;
- consoleUi - хакерський UI для консольних старожилів (звісно ж, зі зручним автозавершенням команд).
Будемо використовувати перший із них. Для запуску GUI-версії набираємо в консолі "./w3af_gui" і бачимо щось схоже на зображене на скріншоті 1. Головне вікно розділене на кілька секцій: профіль, ціль, плагіни та тулбар. Небагаторозповім про профілі.

Як можна здогадатися, це іменовані набори опцій, які можна завантажувати в w3af. По суті, це ini-файли, в яких ти можеш зберігати конфігурацію w3af, що полюбилася тобі, в тому числі тестований URL, вибрані і налаштовані плагіни, core-налаштування і багато іншого. Наприклад, для сканування Itter я створив простий профіль під назвою My Profile, далі підключив у ньому discovery-плагіни webSpider і pykto (порт знаменитого Nikto на Python), пару grep-плагінів для пошуку DOM XSS і кілька плагінів для пошуку XSS- та SQL- ін'єкцій. Щоб розпочати сканування, натискаємо Start і чекаємо кілька хвилин, доки не з'являться перші результати. До речі, ми завжди можемо спостерігати за діями w3af на вкладці Log, куди у реальному часі виводяться інформаційні повідомлення від ядра та плагінів. Хід процесу відображається через прогрес-бар та інші ідентифікатори.
Пентестінг веб 2.0

Для тестування подібних програм не обійтися без спеціалізованих проксі, таких як OWASP WebScarab і Burp Suite, або навіть популярного аддону до Firefox - Tamper Data. Такі «проксі користувача» дозволяють в реальному часі відстежувати (і навіть змінювати) HTTP-трафік між веб-браузером і веб-сервером. Звичайно, такий інструмент є і в комплекті w3af. Точніше, таких проксі в ньому аж дві:
- discovery-плагін spiderMan;
- Інтерактивний інструмент Intercepting Proxy для ручного тестування.

Для наших цілей будемо використовувати spiderMan, який, як ми вже розібралися, є discovery-плагін. Спробуємо його у справі. Підключаємо плагін у головному вікні та запускаємо сканування. У веб-браузер як проксі прописуємо 127.0.0.1:44444 (я використовую для цього аддон для Firefox, що дозволяє легко керувати проксями і перемикатися між ними). SpiderMan буде запущений до webSpider, тому останній зможе використовувати його результати. Переключившись на spiderMan у нашому браузері, трохи полазимо по веб-додатку, що тестується. У Log-табі бачимо:
Додам трохи про експлуатацію знайдених багів. W3af вміє експлуатувати деякі види вразливостей і, наприклад, може надати тобі заповітний шелл на цільовій машині. Для експлуатації виявленої вразливості потрібно просто перетягнути відповідний експлоїт на вкладці Exploit на вразливість. Для експлуатації SQL-ін'єкцій використовується, напевно, знайомий тобі sqlmap, вбудований у w3af.
Ручне тестування
Розглянемо типовий сценарій використання цих інструментів. Запускаємо проксі і нишпоримося по досліджуваному веб-додатку (не забуваємо включити проксіювання трафіку в браузері). На вкладці History бачимо HTTP-трафік між браузером і сервером, що відображається в реальному часі. У випадку з більш потужним додатком, наприклад, чатом, транзакцій буде значно більше. У такій ситуації дуже доречним буде хороший фільтр: за його допомогою можна, наприклад, виводити тільки транзакції з такими запитами, які містять параметри в рядку «Запити» і на які було отримано 2xx-й відповідь.


W3af - це дійсно потужний фреймворк для тестування безпеки веб-застосунків. Розповідати про нього можна довго, тому я ставив собі завдання показати його в дії. Важливо, що це не просто черговий сканер безпеки, а саме фреймворк, велика кількістьдоповнень доказ цього. До того ж для людини, на базовому рівні знає веб і Python, не важко додати недостатній функціонал або перевірку. До речі, як і будь-якому вільному проекту, w3af потрібні нові розробники, тестувальники та просто активні користувачі. Кого це зацікавило, ласкаво просимо до відповідного списку розсилки (w3af.sourceforge.net) або на IRC-канал #w3af у мережі Freenode.
