Продовжуємо розповідати про корисні інструменти для пентестера. У новій статті ми розглянемо інструменти аналізу захищеності веб-додатків.
Наш колега BeLove вже робив подібну добірку близько семи років тому. Цікаво подивитись, які інструменти зберегли та зміцнили свої позиції, а які відійшли на задній план і зараз використовуються рідко.
Зауважимо, що сюди ж відноситься і Burp Suite, але про нього та його корисні плагіни буде окрема публікація.
Нагромадити — інструмент Go для пошуку та перебору піддоменів DNS та складання карти зовнішньої мережі. Amass — проект OWASP, створений для того, щоб показати, як для стороннього спостерігача виглядають організації в Інтернеті. Імена піддоменів Amass отримує різними способами, в інструменті використовується як рекурсивний перебір піддоменів, так і пошук відкритих джерел.
Для виявлення пов'язаних між собою мережевих сегментів та номерів автономних систем Amass використовує IP-адреси, отримані під час роботи. Вся знайдена інформація використовується для побудови картки мережі.
Плюси:
Техніки зі збору інформації включають:
* DNS - перебір піддоменів за словником, bruteforce піддоменів, "розумний" перебір з використанням мутацій на основі знайдених піддоменів, зворотні DNS-запити та пошук DNS-серверів, на яких можна зробити запит на трансфер зони (AXFR);
Забезпечує найбільш повне покриття завдання пошуку DNS-піддоменів.
Мінуси:
Акуратніше з amass.netdomains — він спробує звернутися до кожної IP-адреси в ідентифікованій інфраструктурі та отримати імена доменів із зворотних DNS-запитів та сертифікатів TLS. Це «гучна» техніка, вона може розкрити ваші розвідувальні дії у досліджуваній організації.
Високе споживання пам'яті може споживати до 2 ГБ RAM у різних налаштуваннях, що не дозволить запустити цей інструмент у хмарі на дешевій VDS.
Altdns
Altdns — інструмент Python для складання словників для перебору DNS-піддоменів. Дозволяє генерувати безліч варіантів піддоменів за допомогою мутацій та перестановок. Для цього використовуються слова, які часто зустрічаються в піддоменах (наприклад: test, dev, staging), всі мутації та перестановки застосовуються до відомих піддоменів, які можна подати на вхід Altdns. На виході виходить список варіацій піддоменів, які можуть існувати, і список надалі можна використовувати при DNS-брутфорсі.
Плюси:
Добре працює з великими наборами даних.
акватон
акватон — раніше був відомий як ще один інструмент для пошуку піддоменів, але сам автор відмовився від цього на користь вищезгаданого Amass. Зараз aquatone переписаний на Go і більше заточений для попередньої розвідки веб-сайтів. Для цього aquatone проходить по вказаним доменам та шукає на них веб-сайти на різних портах, після чого збирає всю інформацію про сайт та робить скріншот. Зручний для швидкої попередньої розвідки на веб-сайтах, після якої можна вибрати пріоритетні цілі для атак.
Плюси:
На виході створюється група файлів і папок, які зручно використовувати при подальшій роботі з іншими інструментами:
* HTML-звіт із зібраними знімками екрану та згрупованими за подібністю заголовками відповідей;
* Файл з усіма URL-адресами, на яких були знайдені веб-сайти;
* Файл зі статистикою та даними сторінки;
* Папка з файлами, що містять заголовки відповіді від знайдених цілей;
* Папка з файлами, що містять тіло відповіді від знайдених цілей;
* Скріншоти знайдених веб-сайтів;
Підтримує роботу з XML-звітами від Nmap та Masscan;
Використовує headless Chrome/Chromium для рендерування скріншотів.
Мінуси:
Може звернути на себе увагу систем виявлення вторгнень, тому потребує налаштування.
Скріншот зроблено для однієї зі старих версій aquatone (v0.5.0), в якій було реалізовано пошук DNS-піддоменів. Старі версії можна знайти на сторінці релізів.
MassDNS
MassDNS — ще один інструмент пошуку DNS-доменів. Головна його відмінність у тому, що він робить DNS-запити безпосередньо до багатьох різних DNS-резолверів і робить це зі значною швидкістю.
Плюси:
Швидкий – здатний дозволяти понад 350 тисяч імен за секунду.
Мінуси:
MassDNS може викликати значне навантаження на DNS-резолвери, що використовуються, що може призвести до бана на цих серверах або скарг до вашого провайдера. Крім цього, викличе велике навантаження на DNS-сервера компанії, якщо вони мають і якщо вони відповідають за домени, які ви намагаєтеся резолвувати.
Список резолверів зараз застарів, проте якщо відібрати непрацюючі DNS-резолвери і додати нові відомі — все буде добре.
Скріншот aquatone v0.5.0
nsec3map
nsec3map — інструмент Python для отримання повного списку доменів, захищених DNSSEC.
Плюси:
Швидко виявляє хости в DNS-зонах із мінімальною кількістю запитів, якщо в зоні включена підтримка DNSSEC;
У складі плагін для John the Ripper, який можна використовувати для злому отриманих хеш NSEC3.
Мінуси:
Багато помилок DNS обробляються некоректно;
Немає автоматичного розпаралелювання обробки NSEC-записів - доводиться розділяти простір імен вручну;
Високе споживання пам'яті.
Acunetix
Acunetix — сканер веб-уразливостей, що автоматизує процес перевірки безпеки веб-застосунків. Тестує додаток на наявність SQL-ін'єкцій, XSS, XXE, SSRF та багатьох інших веб-уразливостей. Однак, як і будь-який інший сканер безлічі веб-уразливостей не замінює пентестера, оскільки складні ланцюжки уразливостей чи вразливості в логіці не зможе знайти. Зате він покриває дуже багато різних вразливостей, у тому числі різних CVE, про які пентестер міг і забути, тому дуже зручний для звільнення рутинних перевірок.
Плюси:
Низький рівень хибних спрацьовувань;
Результати можна експортувати як звітів;
Здійснює велику кількість перевірок на різні уразливості;
Паралельне сканування кількох хостів.
Мінуси:
Немає алгоритму дедублікації (однакові за функціональністю сторінки Acunetix визнає різними, тому що на них ведуть різні URL), але розробники над цим працюють;
Вимагає встановлення на окремий веб-сервер, що ускладнює тестування клієнтських систем з підключенням за VPN та використання сканера в ізольованому сегменті локальної клієнтської мережі;
Може "зашумити" досліджуваний сервіс, наприклад, надіслати у форму зв'язку на сайті дуже багато атакуючих векторів, тим самим сильно ускладнивши бізнес-процеси;
Є пропрієтарним та, відповідно, небезкоштовним рішенням.
Dirsearch
Dirsearch — інструмент Python для брутфорсу директорій і файлів на веб-сайтах.
Плюси:
Може відрізняти справжні “200 ОК” сторінки сторінок “200 ОК”, але з текстом “сторінка не знайдена”;
Поставляється разом із зручним словником, що має гарний баланс між розміром та ефективністю пошуку. Містить стандартні шляхи, характерні для багатьох CMS та стеків технологій;
Свій формат словника, який дозволяє досягти хорошої ефективності та гнучкості перебору файлів та директорій;
Зручний висновок – простий текст, JSON;
Вміє робити throttling – паузу між запитами, що життєво необхідне будь-якого слабкого сервісу.
Мінуси:
Розширення потрібно передавати у вигляді рядка, що незручно, якщо потрібно передати багато розширень одразу;
Щоб використати свій словник, його потрібно буде трохи доопрацювати до формату словників Dirsearch для максимальної ефективності.
wfuzz
wfuzz - Python-фаззер веб-додатків. Напевно, один із найвідоміших веб-фазерів. Принцип простий: wfuzz дозволяє фазити будь-яке місце в HTTP-запиті, що дозволяє фазити GET/POST-параметри, HTTP-заголовки, включаючи Cookie та інші автентифікаційні заголовки. У той же час зручний і для простого брутфорсу директорій та файлів, для чого потрібен хороший словник. Також має гнучку систему фільтрів, за допомогою якої можна фільтрувати відповіді від веб-сайту за різними параметрами, що дозволяє досягти ефективних результатів.
Плюси:
Багатофункціональний - модульна структура, складання займає кілька хвилин;
Зручний механізм фільтрації та фаззингу;
Можна фазити будь-який HTTP-метод, також будь-яке місце в HTTP-запиті.
Мінуси:
У стані розробки.
ффуф
ффуф — веб фазер на Go, створений за “образом та подобою” wfuzz, дозволяє брутувати файли, директорії, URL-шляхи, назви та значення GET/POST-параметрів, HTTP-заголовки, включаючи заголовок Host для брутфорсу віртуальних хостів. Від свого побратима wfuzz відрізняється вищою швидкістю та деякими новими фічами, наприклад підтримуються словники формату Dirsearch.
Плюси:
Фільтри схожі на фільтри wfuzz, що дозволяють гнучко налаштувати брутфорс;
Дозволяє фазити значення HTTP-заголовків, дані POST-запитів та різні частини URL, включаючи імена та значення GET-параметрів;
Можна вказати будь-який HTTP-метод.
Мінуси:
У стані розробки.
gobuster
gobuster - Інструмент на Go для розвідки, має два режими роботи. Перший використовується для брутфорсу файлів та директорій на веб-сайті, другий – для перебору DNS-піддоменів. Інструмент спочатку не підтримує рекурсивний перебір файлів та директорій, що, звичайно, заощаджує час, але з іншого боку брутфорс кожного нового ендпоінта на веб-сайті потрібно запускати окремо.
Плюси:
Висока швидкість роботи як для перебору DNS-піддоменів, так і для брутфорсу файлів та директорій.
Мінуси:
У поточній версії не підтримує налаштування HTTP-заголовків;
За умовчанням вважає валідними лише деякі з HTTP-статус кодів (200,204,301,302,307).
Арджун
Арджун — інструмент для брутфорсу прихованих HTTP-параметрів у GET/POST-параметрах, а також JSON. Вбудований словник має 25 980 слів, які Ajrun перевіряє майже за 30 секунд. Фокус у тому, що Ajrun не перевіряє кожен параметр окремо, а перевіряє відразу ~1000 параметрів за раз і дивиться, чи змінилася відповідь. Якщо відповідь змінилася, то ділить цю 1000 параметрів на дві частини та перевіряє, яка з цих частин впливає на відповідь. Таким чином, за допомогою нехитрого бінарного пошуку є параметр або кілька прихованих параметрів, які впливали на відповідь і, отже, можуть існувати.
Плюси:
- Висока швидкість роботи за рахунок бінарного пошуку;
Підтримка GET/POST-параметрів та параметрів у вигляді JSON;
За схожим принципом працює і плагін для Burp Suite. param-miner, який теж дуже гарний у пошуку прихованих HTTP-параметрів. Докладніше ми про нього розповімо у майбутній статті про Burp та його плагіни.
LinkFinder
LinkFinder - Скрипт на Python для пошуку посилань у JavaScript-файлах. Корисний для пошуку прихованих або забутих ендпоінтів/URL у веб-застосунку.
Плюси:
Швидкий;
Є спеціальний плагін для Chrome на основі LinkFinder-а.
.
Мінуси:
Незручний підсумковий висновок;
Не аналізує JavaScript у динаміці;
Досить проста логіка пошуку посилань — якщо JavaScript якимось чином обфусцьований, або посилання спочатку відсутні і динамічно генеруються, то не зможе нічого знайти.
JSParser
JSParser - Скрипт на Python, який використовує Торнадо и JSBeautifier для аналізу відносних URL-адрес із JavaScript-файлів. Дуже корисний для виявлення AJAX-запитів та складання списку API-методів, з якими взаємодіє програма. Ефективно працює в парі з LinkFinder.
Плюси:
Швидкий парсинг JavaScript-файлів.
sqlmap
sqlmap — мабуть, один із найвідоміших інструментів для аналізу веб-додатків. Sqlmap автоматизує пошук та експлуатацію SQL-ін'єкцій, працює з кількома діалектами SQL, має у своєму арсеналі величезну кількість різних технік, починаючи від лапки "в лоб" і закінчуючи складними векторами для time-based SQL-ін'єкцій. Крім того, має безліч техніки подальшої експлуатації для різних СУБД, тому корисний не просто як сканер для SQL-ін'єкцій, а ще і як потужний інструмент для експлуатації вже знайдених SQL-ін'єкцій.
Плюси:
Велика кількість різних технік та векторів;
Низька кількість помилкових спрацьовувань;
Багато можливостей з точного настроювання, різні техніки, цільова БД, тампер-скрипти для обходу WAF;
Можливість створення дампи вихідних даних;
Багато різних можливостей з експлуатації, наприклад, для деяких БД - автоматичне завантаження/вивантаження файлів, отримання можливості виконання команд (RCE) та інші;
Підтримка прямого підключення до БД з використанням отриманих під час атаки даних;
На вхід можна подати текстовий файл з результатами роботи Burp — не потрібно складати вручну всі атрибути командного рядка.
Мінуси:
Складно кастомізувати, наприклад, написати якісь свої перевірки через мізерну документацію для цього;
Без відповідних налаштувань проводить неповний набір перевірок, що може вводити в оману.
NoSQLMap
NoSQLMap — інструмент Python для автоматизації пошуку та експлуатації NoSQL-ін'єкцій. Зручно використовувати не лише в базах даних NoSQL, але й безпосередньо під час аудиту веб-додатків, які використовують NoSQL.
Плюси:
Як і sqlmap, дозволяє не тільки знаходить потенційну вразливість, а й перевіряє можливість її експлуатації для MongoDB та CouchDB.
Мінуси:
Не підтримує NoSQL для Redis, Cassandra, у цьому напрямі ведеться розробка.
oxml_xxe
oxml_xxe — інструмент для вбудовування XXE XML-експлойтів у різні типи файлів, у яких використовується XML-формат.
Плюси:
Підтримує багато поширених форматів, таких як DOCX, ODT, SVG, XML.
Мінуси:
Не до кінця реалізовано підтримку PDF, JPEG, GIF;
Створює лише один файл. Для вирішення цієї проблеми можна використовувати інструмент docem, який може створити велику кількість файлів із пейлодами в різних місцях.
Вищезгадані утиліти чудово справляються з тестуванням XXE у разі завантаження документів, що містять XML. Але також не забувайте, що обробники XML-форматів можуть зустрічатися в багатьох інших випадках, наприклад, XML може використовуватися як формат даних замість JSON.
Тому рекомендуємо звернути увагу на наступний репозиторій, що містить велику кількість різноманітних пейлоадів: PayloadsAllTheThings.
tplmap
tplmap — інструмент Python для автоматичного виявлення та експлуатації вразливостей Server-Side Template Injection, має схожі з sqlmap налаштування та прапори. Використовує кілька різних технік та векторів, включаючи blind-ін'єкції, а також має техніку для виконання коду та завантаження/вивантаження довільних файлів. Крім того, має в своєму арсеналі техніки для десятка різних движків для шаблонів і деякі техніки для пошуку eval()-подібних ін'єкцій коду Python, Ruby, PHP, JavaScript. У разі успішної експлуатації відкриває інтерактивну консоль.
Плюси:
Велика кількість різних технік та векторів;
Підтримує безліч двигунів для рендер шаблонів;
Багато технік експлуатації.
CeWL
CeWL — генератор словників на Ruby, створений для отримання унікальних слів із зазначеного веб-сайту, проходить за посиланнями на сайті на вказану глибину. Складений словник з унікальних слів надалі можна використовувати для брутфорсу паролів на сервісах або брутфорсу файлів та директорій на тому ж веб-сайті, або для атаки на отримані хеші за допомогою hashcat або John the Ripper. Корисний при складанні цільового списку потенційних паролів.
Плюси:
Простий у використанні.
Мінуси:
Потрібно бути обережнішими з глибиною пошуку, щоб не захопити зайвий домен.
Weakpass
Weakpass - Сервіс, що містить безліч словників з унікальними паролями. Вкрай корисний для різних завдань, пов'язаних із зламуванням паролів, починаючи від простого онлайн брутфорсу облікових записів на цільових сервісах, закінчуючи офф-лайн брутфорсом отриманих хешів за допомогою хешкет або Джон Потрошитель. У складі близько 8 мільярдів паролів завдовжки від 4 до 25 символів.
Плюси:
Містить як специфічні словники, так і словники з паролями, що найчастіше зустрічаються - можна підібрати конкретний словник під власні потреби;
Словники оновлюються та поповнюються новими паролями;
Словники відсортовані за ефективністю. Можна вибрати варіант як для швидкого он-лайн бруту, так і докладного підбору паролів з об'ємного словника з останніми витоками;
Є калькулятор, який показує час брутто паролів на вашому устаткуванні.
В окрему групу ми хотіли б винести інструменти для CMS-перевірок: WPScan, JoomScan та AEM hacker.
AEM_hacker
AEM hacker — інструмент для виявлення вразливостей у програмах Adobe Experience Manager (AEM).
Плюси:
Може виявляти AEM-програми зі списку URL, поданих йому на вхід;
Містить сценарії для отримання RCE шляхом завантаження JSP-шелла або експлуатацією SSRF.
JoomScan
JoomScan — інструмент для Perl для автоматизації виявлення вразливостей при розгортанні Joomla CMS.
Плюси:
здатний знаходити недоліки зміни та проблеми адміністраторських налаштувань;
Перераховує версії Joomla та пов'язані з ними уразливості, аналогічно для окремих компонентів;
Містить більше ніж 1000 експлойтів під компоненти Joomla;
Виведення підсумкових звітів у текстовому та HTML-форматах.
WPScan
WPScan - Інструмент для сканування сайтів на WordPress, має в своєму арсеналі вразливості як для самого движка WordPress, так і для деяких плагінів.
Плюси:
Здатний перераховувати не тільки небезпечні WordPress-плагіни та теми, але й отримувати список користувачів та TimThumb-файли;
Може проводити брутфорс-атаки на WordPress-сайти.
Мінуси:
Без відповідних налаштувань проводить неповний набір перевірок, що може вводити в оману.
Загалом різні люди вважають за краще різні інструменти: всі вони по-своєму хороші, і те, що сподобалося одній людині, може зовсім не підійти іншій. Якщо ви вважаєте, що ми незаслужено оминули якусь гарну утиліту — пишіть про неї у коментарях!