МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА”
ІКТА
Кафедра ЗІ
ЗВІТ
ДО ЛАБОРАТОРНОЇ РОБОТИ № 1
з курсу: “ Аудит кібербезпеки”
На тему: “ Аналіз Directory Traversal та HTTP Response Splitting вразливостей”
Львів 2020
Мета роботи
Ознайомитись з основами веб-технологій та HTML, а також з роботою HTTP протоколу. Зрозуміти принцип роботи та захисту від атак обходу директорій та розщеплення HTTP запитів.
Хід роботи:
Принципи атаки на обхідний каталог (на прикладі використання bWapp)
/
Атаки типу Directory Traversal виникають, коли в системі знаходяться помилки конфігурації, які дозволяють отримати кореневий (root) доступ, бачити файли даного рівня і змінювати їх. Ця атака відома під кількома іменами: path traversal, directory climbing, відкат або дот-дот-слеш (../) через використовуваних символів.
Уразливості типу Directory Traversal можуть бути виявлені при перевірці HTTP-запитів, форм і куки, але найлегший спосіб переконатися, що додаток вразливе, це подивитися, чи немає в URL-адресу GET-запиту. Параметри, що містяться в GET-запитах, відображаються прямо в URL і виглядають приблизно ось так: http://examplesite.com/?file=index.php
Хоч атака directory traversal має весь потенціал для того, щоб стати згубною атакою для адміністратора, на щастя, від неї дуже просто захиститися. Найбільш важливим пунктом є наявність відповідного списку контролю доступу, а також не буде зайвим забезпечити належні права доступу до файлів. Також не варто без явної необхідності зберігати важливу інформацію або файли конфігурації в кореневому веб-документі. Якщо на сервері немає важливих деталей, з яких можна почати атаку, то наслідки від такої атаки будуть куди менше.
Рішення та пояснення завдання 4.
Для експлуатації даної уразливості зловмисник повинен надіслати серверу спеціальним чином сформований запит, відповідь на який інтерпретується метою атаки як дві різні відповіді. Друга відповідь повністю контролюється зловмисником, що дає йому можливість підробити відповідь сервера. Можливість здійснення атаки виникає, коли сервер повертає дані, надані користувачем в заголовках HTTP-відповіді. Зазвичай це відбувається при перенаправлення користувача на іншу сторінку (коди HTTP 3xx) або коли дані, отримані від користувача, зберігаються в cookie.
У першій ситуації URL-адресу, на який відбувається перенаправлення, є частиною заголовка Location HTTP-відповіді, а в другому випадку значення cookie передається в заголовку Set-Cookie. Основою розщеплення HTTP-запиту є впровадження символів переведення рядка (CR і LF) таким чином, щоб сформувати дві HTTP-транзакції, в той час як реально буде відбуватися тільки одна. Переклад рядка використовується, щоб закрити першу (стандартну) транзакцію і сформувати другу пару питання / відповідь, повністю контрольовану зловмисником і абсолютно не передбачену логікою програми. В результаті успішної реалізації цієї атаки зловмисник може виконати наступні дії.
♦ міжсайтовий виконання сценаріїв.
♦ Модифікація даних кеша сервера-посередника.
♦ Перехоплення сторінок, що містять призначені для користувача дані. В цьому випадку зловмисник отримує відповідь сервера замість самого користувача. Таким чином, він може отримати доступ до важливої або конфіденційної інформації.
Всі сервери використовують дані, передані користувачем при обробці запитів. Часто ці дані використовуються при складанні команд, що застосовуються для генерації динамічного вмісту. Якщо при розробці не враховуються вимоги безпеки, зловмисник отримує можливість модифікувати виконувані команди.
/
/
/
/
Методи запобігання від атак HTTP Response Splitting.
HTTP response splitting можливий тільки в тих додатках, де призначені для користувача дані передаються в заголовку HTTP відповіді. У той же час і побороти такі помилки досить просто - достатньо запровадити перевірку переданих від користувачів величин.
Які навички потрібні розробнику веб-додатків для запобігання цих атак.
HyperText Transfer Protocol Secure (HTTPS) – розширення HTTP, яке підтримує шифрування і захищає дані користувачів при передачі в Інтернеті. HTTPS гарантує цілісність і конфіденційність взаємодії з сервером.
Дозволи файлу (file permissions) визначають ХТО і ЩО може з ним робити. Розподіляйте права доступу до файлів на сервері відповідно до завдань користувачів.
Онлайн-сервіси. Перед скануванням веб-додатку онлайн-сервісами звернить увагу на умови використання. Деякі з них публікують звіти про перевірені сайти у відкритому виді.
Висновок
HTTP - широко поширений протокол передачі даних, спочатку призначений для передачі гіпертекстових документів (тобто документів, які можуть містити посилання, що дозволяють організувати перехід до інших документів).
Абревіатура HTTP розшифровується як HyperText Transfer Protocol , «протокол передачі гіпертексту». Відповідно до специфікації OSI, HTTP є протоколом прикладного (верхнього, 7-го) рівня. Актуальна на даний момент версія протоколу, HTTP 1.1, описана в специфікації RFC 2616 .
Протокол HTTP припускає використання клієнт-серверної структури передачі даних. Клієнтська програму формує запит і відправляє його на сервер, після чого серверне програмне забезпечення обробляє цей запит, формує відповідь і передає його назад клієнтові. Після цього клієнтську програму може продовжити відправляти інші запити, які будуть оброблені аналогічним чином.
Сам по собі протокол HTTP не передбачає використання шифрування для передачі інформації. Проте, для HTTP є поширене розширення, яке реалізує упаковку переданих даних в криптографічний протокол SSL або TLS. Насамперед це рішення для атак типу М-І-М, та HTTP Response Splitting також не зможе бути використаний при шифруванні трафіку.
Для атак типу Directory Traversal я рекомендую використовувати ACL.
ACL (Access Control List) - це набір текстових виразів, які щось дозволяють, або щось забороняють. Зазвичай ACL дозволяє або забороняє IP-пакети, але крім усього іншого він може заглядати всередину IP-пакета, переглядати тип пакету, TCP і UDP порти. Також ACL існує для різних мережевих протоколів (IP, IPX, AppleTalk і так далі). В основному застосування списків доступу розглядають з точки зору пакетної фільтрації, тобто пакетна фільтрація необхідна в тих ситуаціях, коли потрібно відфільтрувати непотрібний трафік.
Ви розміщуєте ACL на вхідний напрямку і блокуєте надлишкові види трафіку.