Тестування вразливостей веб-додатків за допомогою Burp Suite

27 березня 2023 4 хвилин Автор: Endpool

Burp Suite: потужний інструмент для тестування безпеки веб-застосунків

Burp Suite – це потужний інструмент для тестування вразливостей веб-додатків, який допомагає забезпечити високий рівень безпеки вашого веб-додатку. Це програмний комплекс, який містить у собі набір інструментів, призначених для виявлення та експлуатації різних типів вразливостей. Burp Suite дозволяє здійснювати аудит безпеки веб-додатків, перехоплювати та аналізувати трафік між клієнтом та сервером, перевіряти наявність різних типів вразливостей, таких як SQL-ін’єкції, XSS-атаки, CSRF-атаки, а також проводити тестування на проникнення. Burp Suite дозволяє проводити тестування як вручну, так і автоматично, що дозволяє забезпечити максимально ефективне виявлення вразливостей. Крім того, інструмент має можливість налаштування спеціальних скриптів для автоматизації процесу тестування та виявлення вразливостей. Завдяки своїм можливостям Burp Suite є незамінним інструментом для команд розробників та тестувальників, які займаються створенням та тестуванням веб-додатків.

Використання цього інструменту дозволяє забезпечити високий рівень безпеки веб-додатків та зменшити ризик їх вразливості до мінімуму. Якщо ви займаєтеся розробкою або тестуванням веб-додатків, то Burp Suite – це інструмент, який обов’язково варто мати на озброєнні. Він дозволить вам проводити ефективне тестування на вразливості та забезпечити високий рівень безпеки вашого веб-додатку. Сьогодні ми розглянемо найбільш важливі інструменти, за допомогою яких Burp робить життя краще. Burp має декілька вкладок, розглянемо найбільш популярні з них: Proxy; Intruder; Repeater Decoder; Logger; Comparer. Познайомимось з OWASP Top 10, OWASP Juice Shop. Дізнаємось найбільш відомі категорії вразливостей, та спробуємо на власному досвіді експлоїтування однієї з них за допомогою використання Juice Shop, веб додатку для розвитку навичок проведення тестування на вразливості.

Цільова карта сайту

Перейшовши на наш сайт ви можете побачити свого роду “мапу” сайту – усі посилання, які Burp зміг знайти на сайті. Це дуже сильно спрощує аналіз того чи іншого ресурсу.

У вікні зліва ми бачимо URL ресурсів. У вікні справа є наступні колонки, ось найбільш важливі з них:

– Host. Домен
– Method. HTTP метод для взаємодії з ресурсом. Почитати можна тут
– URL. Посилання яке було знайдено Burp’ом.
– Params. Поле відмічено, якщо були додані параметри до запиту.

У даному випадку це wc-ajax та elementor_page_id, як зображено на скриншоті нижче:

– Status. Статус відповіді сервера на запит клієнта. Почитати можна тут

Включити в сферу

Тут можна додавати цілі, які ви хочете відслідковувати або тестувати на проникнення. Для кожної дії є відповідна кнопка: – Add. Додати; – Edit. Редагувати; – Remove. Видалити; – Paste URL. Вставити посилання; – Load …. Завантажити.

Виключити зі сфери застосування

Тут можна виключати зі скоупу цілі, які наразі вас не цікавлять. Взаємодіяти з цим блоком можна за допомогою відповідних кнопок, опис яких є у блоці Include in scope вище.

Визначення проблем

Тут ви можете бачити пояснення та опис типів вразливостей. Дана таблиця скаладється з трьох колонок: – Name- Назва вразливості. – Typical severity- Рівень “небезпеки” даної вразливості. – Type index- Індекс у даній таблиц.

 

Перехоплення проксі

Одна з найбільш популярних функцій Burp’а. Дозволяє перехоплювати як запити від клієнта (твій браузер), так і відповіді сервера (та сама сторінка порнхабу, яку ти бажаєш відкрити).

Найбільш важливі кнопки щоб тицять:- Forward. У випадку, якщо перехоплення пакетів увімкнено(Intercept is ON), цей пакет можна відредагувати та надіслати далі. – Drop. Пропустити перехоплений пакет. – Intercept is on/off. Увімкнути або вимкнути перехоплення пакетів – Open Browser. Відкрити браузер вже налаштований для роботи з Burp’ом.

Історія HTTP

Історія запитів, майже теж саме що у тебе у браузері.

 

Filter. Дає можливість фільтрувати історію за наступними параметрами:

– Request type:
– Тільки ті, що були додані у скоуп;
– Скрити ті, що не відповідають;
– Тільки ті, що мають параметри.
– MIME Type. Тип даних
– Status Code. Відповідь від сервера.
– Search Term. Покращений пошук з можливістю використання регулярних виразів.
– File extension. Типи файлів.
– Annotation.
– Listener. TCP порт.

Історія WebSockets

Аналог HTTP history, але відноситься до протоколу WebSockets. Почитати детальніше можна на вікі.

Параметри проксі-слухачів

Листенер(слухач), який отримує HTTP трафік від браузера. Необхідно конфігурувати браузер для того щоб працювати з Burp’ом

Перехоплення запитів клієнтів

Дозволяє обрати, які реквести клієнта буде перехоплювати Burp.

Перехоплення відповідей сервера

Дозволяє обрати, які відповіді клієнта буде перехоплювати Burp.

 

Перехоплення повідомлень WebSockets

Дозволяє обрати, які повідомлення протоколу WebSockets буде перехоплювати Burp. Можливі повідомлення: – Client -> Server; – Server <- Client.

Модифікації відповіді

Дозволяє обрати дії, що будуть виконані автоматично при модифікації відповідей від сервера. Перелік:

– Показати приховані поля форм
– Замінити параметр disabled елементів форм на enabled
– Прибрати обмеження на введення користувачем даних у відповідних полях
– Прибрати валідацію форм на стороні клієнта, що здійснюється за допомогою мови JavaScript
– Прибрати весь JavaScript
– Прибрати усі теги

Зіставте та замініть

Використовується для автоматичної заміни даних у реквестах та відповідях клієнта та сервера. Взаємодія з даним блоком здійснюється за допомогою відповідних кнопок. У таблиці є наступні стовпці:

– Enabled. Відображає, чи застосовується даний патерн зараз;
– Item. Тип елементу, що буде замінятися;
– Match. Регулярний вираз того, що хочемо замінити.
– Replace. Дані на які хочемо замінити результат Match.
– Type. Тип даних, що знаходиться у стовпці Match
– Comment.

TLS Pass Through

Ці налаштування використовуються для визначення цільових веб-серверів, для яких Burp буде безпосередньо проходити через TLS-з’єднання. Ніякі відомості про запити чи відповіді, зроблені через ці з’єднання, не будуть доступні в перегляді або в історії перехоплення Proxy. Передача через TLS-з’єднання може бути корисною в тих випадках, коли непросто усунути помилки TLS на клієнті – наприклад, у мобільних програмах, які виконують закріплення сертифіката TLS. Якщо програма отримує доступ до кількох доменів або використовує комбінацію з’єднань HTTP і HTTPS, то передача з’єднань TLS до певних проблемних хостів все одно дозволяє вам працювати з іншим трафіком за допомогою Burp у звичайний спосіб.

Miscellaneous

Ці параметри керують деякими конкретними деталями поведінки Burp Proxy. Доступні такі варіанти: – Use HTTP/1.0 in requests to server. Цей параметр контролює, чи буде Burp Proxy застосовувати HTTP версії 1.0 у запитах до цільових серверів. Налаштуванням за замовчуванням є використання будь-якої версії HTTP, що використовується браузером. Однак для коректної роботи деяким застарілим серверам або додаткам може знадобитися версія 1.0. – Use HTTP/1.0 in responses to client. Усі поточні браузери підтримують як версії 1.0, так і 1.1 HTTP. Оскільки версія 1.0 має зменшений набір функцій, примусове використання версії 1.0 іноді може бути корисним для контролю аспектів поведінки браузерів, таких як запобігання спробам виконати HTTP pipelining. – Set response header “Connection: close”. Цей параметр також може бути корисним для запобігання HTTP pipelining в деяких ситуаціях. – Set “Connection: close” on incoming requests. Цей параметр також може бути корисним для запобігання HTTP pipelining в деяких ситуаціях. – Strip Proxy-* headers in incoming requests. Браузери іноді надсилають заголовки запитів, що містять інформацію, призначену для проксі-сервера, який використовується. Існують деякі атаки, за допомогою яких зловмисний веб-сайт може спробувати змусити браузер включити конфіденційні дані в ці заголовки. За замовчуванням Burp Proxy видаляє ці заголовки з вхідних запитів, щоб запобігти витоку будь-якої інформації. Зняття цього параметра призведе до того, що Burp залишить ці заголовки незмінними. – Remove unsupported encodings from Accept-Encoding headers in incoming requests. Браузери зазвичай пропонують приймати різні кодування у відповідях, напр. для стиснення вмісту. Деякі кодування викликають проблеми під час обробки відповідей у Burp. За замовчуванням Burp видаляє непідтримувані кодування, щоб зменшити ймовірність їх використання. Якщо сервер вимагає підтримки непідтримуваного кодування, можливо, вам доведеться зняти прапорець з цієї опції. – Strip Sec-WebSocket-Extensions headers in incoming requests. Браузери можуть запропонувати підтримку різних розширень, пов’язаних із з’єднаннями WebSocket, напр. для стиснення вмісту. Деякі кодування викликають проблеми під час обробки відповідей у Burp. За замовчуванням Burp видаляє цей заголовок, щоб зменшити ймовірність використання розширень. Якщо сервер вимагає певного розширення, можливо, вам доведеться зняти прапорець з цієї опції. – Unpack GZIP / deflate in requests. Деякі програми (часто ті, що використовують спеціальні клієнтські компоненти), стискають тіло повідомлення в запитах. Цей параметр контролює, чи Burp Proxy автоматично розпаковує стиснені тіла запиту. Зауважте, що деякі програми можуть зламатися, якщо очікують стиснення тіла, а стиснення було видалено Burp. – Unpack GZIP / deflate in responses. Більшість браузерів приймають у відповідях стиснений GZIP. Цей параметр визначає, чи автоматично Burp Proxy розпакує стислий контент відповідей. Зауважте, що ви часто можете запобігти спробам серверів стиснути відповіді, видаливши заголовок Accept-Encoding із запитів (можливо, використовуючи функцію відповідності та заміни Burp Proxy). – Disable web interface at http://burp. Ця опція може бути корисною, якщо ви змушені налаштувати прослуховувач на прийом з’єднань із незахищеним інтерфейсом і хочете перешкодити іншим отримати доступ до інтерфейсу Burp у браузері. – Suppress Burp error messages in browser. Коли виникають певні помилки, Burp за замовчуванням повертає повідомлення про помилку до браузера. Якщо ви хочете запустити Burp у прихованому режимі, щоб здійснити атаки «людина посередині» проти користувача-жертви, тоді може бути корисно приховати ці повідомлення про помилки, щоб замаскувати той факт, що Burp задіяний. – Don’t send items to Proxy history or live tasks. Цей параметр забороняє Burp реєструвати будь-які запити в історії проксі-сервера або надсилати їх до активних завдань, таких як пасивне сканування або живий аудит. Це може бути корисно, якщо ви використовуєте проксі-сервер Burp для певних цілей, наприклад, для автентифікації на верхніх серверах або виконання операцій зіставлення та заміни, і ви хочете уникнути накладних витрат на пам’ять і сховище, які тягне за собою ведення журналу. – Don’t send items to Proxy history or live tasks, if out of scope. Ця опція запобігає запису запитів, що виходять за межі області, в історію проксі-сервера або надсилання їх до активних завдань, таких як пасивне сканування або живий аудит. Корисно уникати накопичення даних проекту для елементів, що виходять за скоуп.

Intruder

Intruder — це вбудований інструмент для проведення фаззингу в Burp Suite. Це дозволяє нам приймати запит (зазвичай фіксується в проксі-сервері перед тим, як передаватися в Intruder) і використовувати його як шаблон для автоматичного надсилання багатьох запитів із дещо зміненими значеннями. Наприклад, зафіксувавши запит, що містить спробу входу, ми могли б потім налаштувати Intruder на заміну полів імені користувача та пароля значеннями зі списку слів, фактично дозволяючи нам грубим примусом використовувати форму входу.
Фаззинг – техніка автоматизованого тестування програмного забезпечення, яка намагається знайти помилки програмного забезпечення, які можна зламати, шляхом випадкової подачі недійсних і неочікуваних введених даних і даних у комп’ютерну програму, щоб знайти помилки кодування та лазівки в безпеці.

Тут користувач може обрати ціль для проведення атаки, у якій буде застосована конфігурація, описана у наступних табах.

Positions

  • Ця вкладка використовується для налаштування шаблону запиту для атаки, також маркерів пейлоадів та типу атаки (який визначає спосіб, яким корисні навантаження призначаються позиціям корисного навантаження).
  • На даному прикладі можна бачити, що у ході атаки будуть змінюватись на певні значення параметри user, pwd та cookie. На що саме буде змінюватись – буде визначено у наступному табі – Payloads.

Attack Type – тип атаки, існує 4 типи:

  • Sniper. Тут використовується один набір корисного навантаження. Він по черзі націлює кожну позицію корисного вантажу та по черзі розміщує кожне корисне навантаження в цю позицію. Цей тип атаки корисний для визначення окремих параметрів запиту для поширених уразливостей;
  • Battering Ram. Для цього використовується один набір корисного навантаження. Він перебирає корисні навантаження і розміщує те саме корисне навантаження в усі визначені позиції корисного навантаження одночасно. Цей тип атаки корисний, коли для атаки потрібно вставити один і той самий вхід у декілька місць у запиті;
  • Pitchfork. Використовує кілька наборів пейлоадів. Для кожної визначеної позиції існує окремий набір пейлоадів (максимум 20). Атака перебирає всі набори пейлоадів одночасно і розміщує один пейлоад в кожній визначеній позиції. Іншими словами, перший запит поміщає перший пейлоад з набору 1 пейлоаду в позицію 1, а перший пейлоад з набору пейлоадів 2 в позицію 2; другий запит помістить другий пейлоад з набору пейлоаду 1 в позицію 1, а другий пейлоад з набору пейлоадів 2 в позицію 2 і т. д. Цей тип атаки корисний, коли атака вимагає введення різних, але пов’язаних вхідних даних у кількох місцях всередині запит (наприклад, ім’я користувача в одному параметрі та відомий ідентифікаційний
    номер, що відповідає цьому імені користувача в іншому параметрі);
  • Cluster bomb. Для цього використовується кілька наборів пейлоадів. Для кожної визначеної позиції існує окремий набір пейлоадів (максимум 20). Атака по черзі повторює кожен набір пейлоадів, щоб перевірити всі перестановки комбінацій пейлоадів. Тобто, якщо є дві позиції пейлоадів, атака помістить перше пейлоад з набору пейлоадів 2 в позицію 2 і перебере всі пейлоади в наборі пейлоадів 1 в позиції 1; потім він помістить друге пейлоад з набору пейлоадів 2 в позицію 2 і перебере всі корисні навантаження в набір корисних даних 1 в позиції 1. Цей тип атаки корисний, коли атака вимагає вставлення різних непов’язаних або невідомих даних у кількох місцях у запиті (наприклад, під час вгадування облікових даних, імені користувача в одному параметрі та пароля в іншому параметрі).

Корисне навантаження

Тут ми можемо конфігурувати набори значень, які будуть підставлені до кожного із значень, заданих користувачем у Positions блоці.

Набори корисного навантаження

Тут обираються набори пейлоадів, які використовуються під час атак, відповідно до типу.

Параметри корисного навантаження

Завантаження набору пейлоадів. Тут можна завантажити з файлу або написати власноруч. Застосовується лише до пейлоадів, що відносяться до типу Simple list, але також варто розглянути усі доступні пейлоади, з якимим працює Burp:

  •  Simple list. Це найпростіший тип пейлоадів, який дозволяє налаштувати простий список рядків, які використовуються як корисні навантаження.
  • Runtime file. Цей тип пейлоадів дозволяє налаштувати файл, з якого читати рядки пейлоади під час виконання. Це корисно, коли потрібен дуже великий список пейлоадів, щоб уникнути збереження всього списку в пам’яті. Один пейлоад зчитується з кожного рядка файлу, тому пейлоади можуть не містити символів нового рядка;
  • Custom iterator. Цей тип пейлоадів дозволяє налаштувати кілька списків елементів і генерувати пейдлажи, використовуючи всі перестановки елементів у списках. Він забезпечує потужний спосіб генерувати власні перестановки символів або інших елементів відповідно до заданого шаблону.
  • Character substitution. Цей тип пейлоадів дозволяє налаштувати список рядків і застосувати різні заміни символів до кожного елемента. Це може бути корисно під час атак на вгадування пароля, для створення загальних варіантів словникових слів.
  • Numbers. Цей тип пейлоадів генерує числові корисні навантаження в заданому діапазоні та в заданому форматі.
  • Dates. Цей тип пейлоадів генерує пейлоади, що містять дату в межах заданого діапазону та у визначеному форматі.
  • Username generator. Цей тип пейлоадів дозволяє налаштувати список імен або адрес електронної пошти, а також отримати потенційні імена користувачів з них за допомогою різних поширених схем.

 

Обробка корисного навантаження

Тут можна зробити додаткові налаштування пейлоадів, які будуть виконані автоматично під час проведення атаки, саме перед підстановкою.
Використовуватися можуть усі типи пейлоадів, які підтримує Burp.

Вікно додавання правил зображено нижче:

Можливі правила:

  • Add prefix. Додати префікс перед пейлоадом;
  • Add suffix. Додати суфікс після пейлоаду;
  • Match/Replace. Заміна будь-яких частин корисного навантаження, які відповідають певному регулярному виразу, на певну строку;
  • Substring. Витяг частини пейлоадів, починаючи з заданого зміщення (індексовано 0) і до заданої довжини;
  • Reverse substring. Функціонує як правило підрядка, але кінцеве зміщення вказується з відліком у зворотному напрямку від кінця корисного навантаження, а довжина відраховується назад від кінцевого зміщення.
  • Modify case. Змінює регістр пейлоада, якщо можливо. Доступні наступні параметри:
    – No change. Без змін;
    – To lower case. Приведення до нижнього регістру;
    – To upper case. Приведення до верхнього регістру;
    – To Propername. Приведення першої літери до верхнього регістру, інші літери приводяться до нижнього регістру;
    – To ProperName. Приведення першої літери до верхнього регістру, інші літери не змінюються.
  • Encoding. Кодування пейлоадів за допомогою різних схем: URL, HTML, Base64, ASCII шістнадцятковий або інші рядки для різних платформ;
  • Decoding. Процесс зворотній до Encoding;
  • Hash – виконує операцію хешування над пейлоадом;
  • Add raw payload – це додає необроблене значення пейдлоаду до або після поточного обробленого значення, тобто список пейлоадів модифікується, і вставляється ще одне значення, яке буде згодом перевірено. Це може бути корисно, наприклад, якщо вам потрібно подати той самий пейлоад як у сирому, так і в хешованому вигляді;
  • Skip if matches regex. Це перевіряє, чи відповідає поточне значення заданому регулярному виразу, і якщо так, пропускає пейлоад та переходить до наступного. Це може бути корисно, наприклад, якщо ви знаєте, що значення параметра повинно мати мінімальну довжину, і хочете пропустити будь-які значення в списку, які коротші за цю довжину.
  • Invoke Burp Extension. Виклик розширення Burp для обробки корисних даних. Розширення повинно мати зареєстрований процесор пейлоадів, Intruder. Ви можете вибрати потрібний процесор зі списку доступних процесорів, які були зареєстровані поточними пейлоадами.

Кодування корисного навантаження

Виконання операції Encoding, описаної вище у формат URL. Будь-яке налаштоване кодування URL-адреси застосовується останнім, після виконання будь-яких правил обробки корисного навантаження.

Пул ресурсів

Дозволяє керувати наступними параметрами при проведенні атаки: – Максимальна кількість запитів, зроблених одночасно; – Затримка між запитами, у мілісекундах. Є можливість зробити фіксовану затримку, рандомізовану, або наростаючу.
Приклад зображено на рисунку нижче:


Параметри збереження

Можливість зберігати налаштування. Дуже корисно, у випадку ящко Burp є робочим інструментом, яким ви користуєтесь кожен день, збереження важливих налаштувань може зберігти досить велику кількість часу. Доступна тільки у Pro версії.

Заголовки запитів

Можливість налаштувати оновлення значень у хедерах HTTP під час проведення атаки, а саме: – Content-Length; – Set Connection.

Обробка помилок

Можливість налаштувати поведінку у випадку виникнення мережевих проблем, а саме: – Кількість спроб у випадку виникнення мережевої помилки; – Пауза між спробами

Результати нападу

Налаштування інформації для відображення у результатах атаки, а саме:

Store requests. Зберігання запитів;
Store responses. Зберігання відповідей;
Make unmodified baseline request. Генерація запиту зі звичайними параметрами;
Use DoS mode. За принципом DoS Burp не буде чекати на опрацювання будь яких відповідей від сервера;
Store full payloads. Збереження значень пейлоадів для кожного результату.

Grep – Match

Ці параметри можна використовувати для позначення елементів результатів, що містять вказані вирази у відповіді. Для кожного елемента, налаштованого в списку, Burp додасть новий стовпець результатів, що містить число, яке вказує, скільки разів вираз було знайдено в кожній відповіді. Ви можете натиснути на заголовок стовпця, щоб відсортувати результати за кількістю знайдених виразів.

На додаток до списку виразів для відповідності доступні такі параметри:

Match Type. Визначає, чи є вирази простими рядками чи регулярними виразами.
Case sensitive match. Це визначає, чи має перевірка виразу бути чутливою до регістру.
Exclude HTTP headers. Вказує, чи слід виключати заголовки відповіді HTTP з перевірки.

Grep – Extract

Ці налаштування можна використовувати для вилучення корисної інформації з відповідей у таблицю результатів атаки. Для кожного елемента, налаштованого в списку, Burp додасть новий стовпець результатів, що містить текст, витягнутий для цього елемента. Потім ви можете відсортувати цей стовпець (клацнувши заголовок стовпця), щоб упорядкувати витягнуті дані. Цей параметр корисний для видобутку даних із програми та може підтримувати широкий спектр атак. Наприклад, якщо ви перебираєте ряд ідентифікаторів документів, ви можете витягти заголовок сторінки кожного документа, шукаючи цікаві елементи.

Grep – Payloads

Ці параметри можна використовувати для позначення елементів результатів, що містять відображення поданого пейлоаду. Якщо цей параметр увімкнено, Burp додасть новий стовпець результатів, який містить число, яке вказує, скільки разів корисне навантаження було знайдено в кожній відповіді. Якщо використовується більше одного набору корисного навантаження, для кожного набору корисного навантаження буде додано окремий стовпець.

Перенаправлення

Ці налаштування визначають, як Burp обробляє перенаправлення під час виконання атак. Часто для досягнення цілей вашої атаки необхідно дотримуватися перенаправлень. Наприклад, під час атаки вгадування пароля результат кожної спроби може відображатися лише після переспрямування. Під час фаззінгу відповідний зворотний зв’язок може з’являтися лише в повідомленні про помилку, яке повертається після початкової відповіді на переспрямування.

Доступні такі варіанти:

-Follow redirections. Цей параметр керує цілями переспрямувань, за якими слідувати.

-Process cookies in redirections. Якщо вибрано цей параметр, усі файли cookie, встановлені у відповіді на переспрямування, будуть повторно надіслані, коли буде досягнуто ціль переспрямування. Наприклад, ця опція може знадобитися, якщо ви намагаєтеся застосувати метод грубого входу в систему, який завжди повертає переспрямування на сторінку, що вказує результат входу, і новий сеанс створюється у відповідь на кожну спробу входу.

Repeater

Щоб використовувати Burp Repeater з повідомленнями HTTP, ви можете вибрати повідомлення HTTP в будь-якому місці Burp і вибрати «Senr to Repeater» з контекстного меню. Це створить нову вкладку запиту в Repeater і автоматично заповнить деталі цілі та редактор повідомлень запиту відповідними деталями. Крім того, ви можете відкрити нову вкладку Repeater вручну та вибрати параметр «HTTP». Для повідомлень HTTP кожна вкладка Repeater містить такі елементи:

  • Елементи керування для надсилання запитів та навігації в історії запитів.
  • Показано цільовий сервер, на який буде надіслано запит – ви можете натиснути на деталі цілі, щоб змінити їх.
  • Редактор повідомлень HTTP, що містить запит, який має бути виданий. Ви можете редагувати запит і повторно надсилати його знову і знову.
  • Редактор повідомлень HTTP, що показує відповідь, отриману від останнього надісланого запиту.

Decoder

Burp Decoder — це простий інструмент для перетворення закодованих даних у їх канонічну форму або для перетворення необроблених даних у різні закодовані та хешовані форми. Він здатний розумно розпізнавати кілька форматів кодування за допомогою евристичних прийомів.

До різних частин даних можна застосувати різні перетворення. Доступні такі операції декодування та кодування:

  • URL;

  • HTML;

  • База64;

  • ASCII hex;

  • Hex;

  • Octal;

  • Binary;

  • GZIP

Крім того, доступні різні загальні функції хешування залежно від можливостей вашої платформи Java.

Comparer

Burp Comparer — це простий інструмент для порівняння (візуальної «різниці») між будь-якими двома елементами даних. Нижче наведено деякі поширені варіанти використання Burp Comparer:

  • Шукаючи умови перерахування імен користувачів, ви можете порівнювати відповіді з невдалими вхідами, використовуючи дійсні та недійсні імена користувачів, шукаючи незначні відмінності у відповідях.
  • Коли атака призвела до дуже великих відповідей з різною довжиною, ніж базова відповідь, ви можете порівняти їх, щоб швидко побачити, в чому полягають відмінності.
  • Порівнюючи карти сайтів або записи історії проксі, згенеровані різними типами користувачів, ви можете порівняти пари подібних запитів, щоб побачити, де полягають відмінності, які спричиняють різну поведінку додатків.
  • Під час тестування на наявність помилок сліпої ін’єкції SQL за допомогою ін’єкції логічних умов та інших подібних тестів ви можете порівняти дві відповіді, щоб побачити, чи призвело введення різних умов до відповідної різниці у відповідях.

Logger

Logger — це інструмент для запису мережевої активності. Logger записує весь HTTP-трафік, який створює Burp Suite, для дослідження та аналізу, але особливо корисний для:

  • Дослідження того, що сталося, якщо Burp Suite дає несподівані результати.
  • Перегляд деталей того, що надсилає Burp Suite, коли ваша робота пов’язана з обробкою сеансів.
  • Переконання, що довгострокові поточні завдання (наприклад, фонове сканування) все ще виконуються.
  • Аналіз будь-яких проблем, які потребують видимості того, що робить Burp Suite.

Також доступний експорт інформації з логера у форматі CSV. Щоб експортувати записи Logger як файл CSV, виберіть відповідні записи в таблиці, клацніть правою кнопкою миші та виберіть «Export as CSV». Зауважте, що вибір нуля або одного запису експортує всю таблицю.
Під час експорту записів у форматі CSV Logger кодує певні дані таким чином:

  • Час дати представлено у форматі ISO 8601 із зміщенням UTC: yyyy-MM-dd’T’HH:mm:ss.SSS’Z’.
  • Бінарні(binary) дані (наприклад, запити та відповіді HTTP/2) представлені у вигляді рядків, закодованих Base64.
  • Будь-які дані, які містять кому, екрануються шляхом загортання даних у подвійні лапки. напр. a,b стануть “a,b”.
  • Будь-які дані, що містять подвійні лапки, екрануються додатковою подвійною лапкою, наприклад. “a” стане “””a”””.
  • Будь-які дані, які починаються з -, +, = або @, екрануються для Excel за допомогою префікса одинарної лапки (‘).

Трохи теорії дізналися, а тепер можна і ще теоріі дізнатись…

Знайомимось з OWASP

Open Web Application Security Project® (OWASP) — це некомерційний фонд, який працює над підвищенням безпеки програмного забезпечення. Через проекти програмного забезпечення з відкритим кодом, керовані спільнотою, сотні місцевих відділень по всьому світу, десятки тисяч членів, а також провідні освітні та навчальні конференції, OWASP Foundation є джерелом для розробників і технологів для захисту Інтернету.

  • Інструменти та ресурси
  • Спільнота та мережа
  • Освіта та навчання

OWASP Top 10

Як спеціаліст з інформаційної безпеки, ви будете чути цю назву дуже часто, бо це є свого роду стандарт. OWASP Top 10 — це стандарт для розробників та безпеки веб-додатків. Він являє собою широкий консенсус щодо найбільш критичних ризиків безпеки для веб-додатків.

Компанії повинні прийняти цей документ і розпочати процес перетворення процесів розробки, щоб їхні веб-додатки мінімізували ризики, що описані у даному стандарті. Використання OWASP Top 10, мабуть, є найефективнішим першим кроком до зміни культури розробки програмного забезпечення у більшості організацій на культуру, яка створює більш безпечний та надійний код. 10 найбільших ризиків безпеки веб-додатків. Є три нові категорії, чотири категорії зі змінами назв і обсягів, а також деяка консолідація в Топ-10 на 2021 рік.

Трохи історії змін популярності типів вразливостей.

A01:2021-Broken Access Control. Контроль доступу запроваджує політику таким чином, що користувачі не можуть діяти за межами передбачених ним дозволів. Помилки налаштування таких конфігурацій зазвичай призводять до несанкціонованого розкриття інформації, модифікації або знищення всіх даних або виконання  бізнес-функції за межами обмежень користувача.

A02:2021-Cryptographic Failures. Відповідає за потреби в захисті даних під час передачі та спокою. Наприклад, паролі, номери кредитних карток, медичні картки, особиста інформація та ділові таємниці потребують додаткового захисту, в основному, якщо ці дані підпадають під дію законів про конфіденційність, наприклад, Загального регламенту ЄС про захист даних (GDPR) або правил, наприклад, про захист фінансових даних. наприклад, PCI Data Security Standard (PCI DSS).

A03:2021-Injection. Деякі з найпоширеніших ін’єкцій – це SQL, NoSQL, виконання команд операційної системи(ОС), об’єктно-реляційне відображення (ORM), LDAP і мова виразів (EL) або ін’єкція бібліотеки навігації графів об’єктів (OGNL). Концепція ідентична серед усіх інструментів. Огляд вихідного коду є найкращим методом виявлення, чи є програми вразливими до ін’єкцій. Настійно вітається автоматичне тестування всіх параметрів, заголовків, URL-адрес, файлів cookie, введених даних JSON, SOAP і XML.
Організації можуть включити статичні (SAST), динамічні (DAST) та інтерактивні (IAST) інструменти тестування безпеки додатків у конвеєр CI/CD, щоб виявити недоліки ін’єкції перед розгортанням у продакшені.

A04:2021-Insecure Design. Небезпечний дизайн — це широка категорія, яка представляє різні недоліки, виражені як «відсутній або неефективний дизайн контролю». Небезпечний дизайн не є джерелом для всіх інших 9 категорій ризику. Існує різниця між небезпечним дизайном і небезпечною реалізацією. Ми неспроста розрізняємо недоліки дизайну та дефекти реалізації, вони мають різні першопричини та їх усунення.
Захищений дизайн все ще може мати дефекти реалізації, які призводять до вразливостей, які можуть бути використані. Небезпечний дизайн неможливо виправити ідеальною реалізацією, оскільки за визначенням необхідні засоби контролю безпеки ніколи не створювались для захисту від конкретних атак. Одним із факторів, що сприяють небезпечному дизайну, є відсутність профілю бізнес-ризиків, властивого програмному забезпеченню або системі, що розробляється, і, таким чином, неможливість визначити, який рівень проектування безпеки необхідний.

A05:2021-Security Misconfiguration. Програма може бути вразливою, якщо вона має один з наведених нижче недоліків:
– відсутнє відповідне посилення безпеки в будь-якій частині стеку програми або неправильно налаштовані дозволи для використання cloud сервісів;
– увімкнено або встановлено непотрібні функції (наприклад, непотрібні порти, служби, сторінки, облікові записи чи привілеї);
– облікові записи за замовчуванням та їхні паролі залишаються активними та незмінними;
– обробка помилок виявляє користувачам сліди стека або інші надто інформативні повідомлення про помилки.
– для оновлених систем найновіші функції безпеки вимкнено або не налаштовано надійно;
– параметри безпеки на серверах додатків, фреймворках програм (наприклад, Struts, Spring, ASP.NET), бібліотеках, базах даних тощо, не налаштовані на безпечні значення;
– сервер не надсилає заголовки чи директиви безпеки, або вони не налаштовані на захищені значення;
– програмне забезпечення застарілe.

A06:2021-Vulnerable and Outdated Components. Додаток є вразливим, якщо:
– Якщо ви не знаєте версії всіх компонентів, які ви використовуєте (як на стороні клієнта, так і на стороні сервера). Це включає компоненти, які ви
використовуєте безпосередньо, а також вкладені залежності;
– Якщо програмне забезпечення є вразливим, не підтримується або застаріло. Це включає ОС, веб-сервер/сервер додатків, систему керування базами даних (СУБД), програми, API та всі компоненти, середовища виконання та бібліотеки;
– Якщо ви регулярно не скануєте на наявність уразливостей і не підписуєтесь на бюлетені з безпеки, пов’язані з компонентами, які ви використовуєте;
– Якщо ви не виправляєте чи не оновлюєте базову платформу, фреймворки та залежності вчасно та з урахуванням ризиків. Це зазвичай трапляється в середовищах, коли виправлення є щомісячним або щоквартальним завданням під контролем змін, залишаючи організації відкритими на дні або місяці непотрібного впливу фіксованих уразливостей.

A07:2021-Identification and Authentication Failures. Підтвердження ідентичності користувача, аутентифікація та керування сеансами є критичними для захисту від атак, пов’язаних із автентифікацією. Можуть бути недоліки автентифікації, якщо програма:
– Дозволяє автоматизовані атаки, такі як заповнення облікових даних, коли зловмисник має список дійсних імен користувачів і паролів;
– Дозволяє brute force або інші автоматизовані атаки;
– Дозволяє стандартні, слабкі або добре відомі паролі, такі як «Пароль1» або «admin/admin»;
– Використовує слабкі або неефективні процеси відновлення облікових даних і забуття пароля, такі як «відповіді на основі знань», які неможливо зробити безпечними;
– Використовує звичайний текст, зашифровані або слабо хешовані сховища паролів;
– Відсутня або неефективна багатофакторна автентифікація;
– Видає ідентифікатор сеансу в URL-адресі;
– Повторне використання ідентифікатора сеансу після успішного входу;
– Неправильно скасовує ідентифікатори сеансів. Сеанси користувача або маркери автентифікації (переважно маркери єдиного входу (SSO)) належним чином не анулюються під час виходу або періоду бездіяльності;

A08:2021-Software and Data Integrity Failures. Порушення цілісності програмного забезпечення та даних стосуються коду та інфраструктури, які не захищають від порушення цілісності. Прикладом цього є те, коли програма покладається на плагіни, бібліотеки або модулі з ненадійних джерел, репозиторіїв і мереж доставки вмісту (CDN).
Небезпечний конвеєр CI/CD може створити потенційну можливість несанкціонованого доступу, шкідливого коду або компрометації системи. Нарешті, багато програм тепер мають функцію автоматичного оновлення, де оновлення завантажуються без достатньої перевірки цілісності та застосовуються до раніше надійної програми.
Зловмисники потенційно можуть завантажувати власні оновлення для розповсюдження та запуску на всіх установках. Іншим прикладом є те, коли об’єкти або дані кодуються або серіалізуються в структуру, яку зловмисник може побачити та
змінити, є вразливими для небезпечної десеріалізації.

A09:2021-Security Logging and Monitoring Failures. Повертаючись до топ-10 OWASP за 2021 рік, ця категорія має допомогти виявляти, ескалувати та реагувати на активні порушення. Без реєстрації та моніторингу порушення неможливо виявити.
Недостатня реєстрація, виявлення, моніторинг та активна відповідь відбувається будь-коли, ось кілька наявних проблем:
– Події, які підлягають аудиту, такі як вхід у систему, невдалий вхід та транзакції високої вартості, не реєструються;
– Попередження та помилки не генерують, неадекватні або нечіткі повідомлення журналу;
– Журнали програм і API не відстежуються на предмет підозрілої активності;
– Журнали зберігаються лише локально.

A10:2021-Server-Side Request Forgery. Помилки SSRF виникають щоразу, коли веб-додаток отримує віддалений ресурс без перевірки URL-адреси, наданої користувачем. Це дозволяє зловмиснику змусити програму надіслати створінь запит до несподіваного місця призначення, навіть якщо він захищений брандмауером, VPN або іншим типом списку контролю доступу до мережі (ACL, access control list).
Оскільки сучасні веб-додатки надають кінцевим користувачам зручні функції, отримання URL-адреси стає звичайним сценарієм. В результаті зростає захворюваність на РСР. Крім того, серйозність SSRF стає вищою через хмарні сервіси та складність архітектур.

Практикуємось з Burp: OWASP Juice Shop

OWASP Juice Shop, мабуть, найсучасніший і найскладніший незахищений веб-додаток! Його можна використовувати в тренінгах з безпеки, демонстраційних демонстраціях, CTF і як піддослідний кролик для інструментів безпеки! Juice Shop охоплює вразливості з усієї десятки кращих OWASP разом із багатьма іншими недоліками безпеки, які можна знайти в реальних програмах!

Практикуємось з Burp: Встановлення Juice Shop локально

Для того щоб бахати по ворогу як ЗСУ це робить з джавелінів, потрібна практика. Тож встановимо цей магазин та навчимося робити круті штуки!
Встановимо Juice Shop. Інструкція для маленьких:
Йдемо сюди, та тицяємо на GitHub*, та потрапляємо сюди, скриншот нижче для перевірки, що ви прийшли саме туди, куди треба:

Далі тицяємо на <> Code та потравляємо сюди:

Скролимо донизу, поки не побачимо наступне:

Слідкуємо інструкціям. Встановимо node.js:

Створимо папку для нашого джус шопа:

Скачаємо репозиторій Juice Shop у цю папку:

У випадку якщо гіт у вас не встановлений, встановлюємо його:

sudo apt-get install git

Встановимо npm:

Тепер нарешті встановимо Juice Shop:

Тепер для того щоб потрапити до магазину, нам треба його “відкрити”(запустити):

На скриншоті вище можна бачити порт, на якому запущений сервер, тож підемо за цією адресою у браузері:

Бачимо, що сайт успішно запустився, тож приступимо до розвитку практичних навичок у використанні Burp’а. Запускаємо його. Зайдемо у проксі, та запустимо браузер натискаючи на Open Browser. Потім перейдемо на сторінку логіну у браузері від Burp.

Далі увімкнемо режим перехоплення, щоб перехопити запит логування.

Введемо якісь дані у поля логіну та паролю, і натиснемо кнопку Log in. Ми побачимо запит, який було надіслано у Proxy.

Бачимо, що використовується POST запит до серверу. Спробуємо перевірити дану форму на SQL ін’єкції. Надішлемо цей запит до Repeater’y за допомогою комбінації CTRL+R. Та після цього вимкнемо режим перехоплення, натиснувши на “Intercept is on”.
Після того, як перейшли до репітеру, спробуємо замінити значення email на єдину лапку, як показано на скріншоті нижче. Потім натиснемо CTRL + SPACE щоб надіслати запит.

Після цього, бачимо, що у відповіді від серверу є помилка SQL синтаксису, та бачимо вихідний запит.

Це означає що ми можемо спробувати експлоітувати дану вразливість. Відредагуємо поле наступним чином, та надішлемо запит до серверу:

Бачимо, що нам було надіслано токен авторизації, тобто ми виконали логін успішно. Перейдемо на сайт, та подивимось як це виглядає наочно. Перейшовши до браузеру, можна бачити 2 повідомлення про успішне виконання завдання:

Спробуємо залогуватися у браузері використовуючи дані, що були введені у Burp, і бачимо, що ми успішно екплоїтували вразливість SQL Injection.


Таким чином можна розвивати даний вектор атаки, знаходячи інші вразливості, які відносяться до категорій OWASP Top 10. Спробуйте самі, та становіться крутими хакерами, для забезпечення безпеки нашої країни!

Інші статті по темі
СервісиСофт
Читати далі
Злом веб-серверів
Зазвичай користувачі звертаються до Інтернету, щоб отримати інформацію та купити продукти та послуги. З цією метою більшість організацій мають веб-сайти. Більшість веб-сайтів зберігають цінну інформацію, таку як номери кредитних карток, адреси електронної пошти та паролі тощо. Це зробило їх мішенню для зловмисників.
336
Знайшли помилку?
Якщо ви знайшли помилку, зробіть скріншот і надішліть його боту.