14 Лют, 2023

Фіксація сеансу

Vulnerability Assessment as a Service (VAaaS)

Tests systems and applications for vulnerabilities to address weaknesses.

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

Атака працює шляхом обману користувача з використанням ідентифікатора сеансу, який відомий зловмиснику, зазвичай шляхом надсилання посилання з включеним ідентифікатор сеансу. Потім зловмисник чекає, поки користувач пройде аутентифікацію у веб-додатку, використовуючи цей ідентифікатор сеансу, після чого зловмисник може використовувати той же ідентифікатор сеансу для доступу до сеансу користувача та виконання дій від його імені.

Приклад уразливого коду на різних мовах програмування:

• PHP:

				
					<?php
session_start();
if (!isset($_SESSION['id'])) {
    $_SESSION['id'] = session_id();
}

				
			

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

Щоб запобігти атакам з фіксацією сеансу в PHP, ідентифікатор сеансу повинен бути відновлений після входу користувача в систему, наприклад:

				
					<?php
session_start();
if (!isset($_SESSION['id'])) {
    session_regenerate_id(true);
    $_SESSION['id'] = session_id();
}

				
			

Java:

				
					HttpSession session = request.getSession();
if (session.isNew()) {
    session.setAttribute("id", session.getId());
}

				
			

Цей код створює новий сеанс і встановлює ідентифікатор сеансу користувача значення поточного ідентифікатора сеансу, якщо він ще не був встановлений. Однак цей підхід уразливим для атак з фіксацією сеансу з тих же причин, що і в прикладі PHP.

Щоб запобігти атакам з фіксацією сеансу в Java, ідентифікатор сеансу повинен бути відновлений після входу користувача в систему, наприклад:

				
					HttpSession session = request.getSession();
if (session.isNew()) {
    session.invalidate();
    session = request.getSession(true);
    session.setAttribute("id", session.getId());
}

				
			

Javascript:

				
					if (!sessionStorage.getItem("id")) {
    sessionStorage.setItem("id", Math.random());
}

				
			

Цей код присвоює ідентифікатор сеансу користувача випадкове значення, якщо воно ще не було встановлено. Однак цей підхід уразливим для атак з фіксацією сеансу, оскільки він дозволяє зловмиснику встановити ідентифікатор сеансу до входу користувача в систему, точно так само, як у прикладах PHP і Java.

Щоб запобігти атакам з фіксацією сеансу в JavaScript, ідентифікатор сеансу повинен бути відновлений після входу користувача в систему, наприклад:

				
					if (!sessionStorage.getItem("id")) {
    var xhr = new XMLHttpRequest();
    xhr.open('GET', '/generate_session_id', false);
    xhr.send(null);
    sessionStorage.setItem("id", xhr.responseText);
}

				
			

Python:

				
					session = request.session
if 'id' not in session:
    session['id'] = request.session.session_key

				
			

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

Щоб запобігти атакам з фіксацією сеансу в Python, ідентифікатор сеансу повинен бути відновлений після входу користувача в систему, наприклад:

				
					session = request.session
if 'id' not in session:
    request.session.cycle_key()
    session['id'] = request.session.session_key

				
			

Приклади використання уразливості фіксації сеансу

Фіксація сеансу - це уразливість, що дозволяє зловмисникові зафіксувати (або встановити) ідентифікатор сеансу користувача на відоме значення, яке потім зловмисник може використовувати для злому сеансу користувача. Деякі приклади використання цієї уразливості включають:

  1. Фішингу: зловмисник може відправити жертві фішінговий електронний лист, що містить посилання на додаток, але з заздалегідь визначеним ідентифікатор сеансу. Якщо жертва натискає на посилання, зловмисник може перехопити їх сеанс.

  2. Міжсайтовий скриптінг (XSS): якщо зловмисник може впровадити шкідливий код на сторінку програми, він може встановити для ідентифікатор сеансу жертви відоме значення, а потім перенаправити жертву в додаток.

  3. Атака "людина посередині" (MITM): зловмисник перехоплює зв'язок між користувачем і програмою, змінює ідентифікатор сеансу передачі, а потім пересилає його додатком.

  4. Фіксація сеансу з допомогою соціальної інженерії: зловмисник може обманом змусити жертву натиснути на посилання, яка встановлює для її ідентифікатор сеансу відоме значення, наприклад, замаскувавши посилання під законної посилання для входу.

Методи підвищення привілеїв для фіксації сеансу

Методи підвищення привілеїв для фіксації сеансу включають використання фіксованого ідентифікатор сеансу для отримання більш високих рівнів доступу або дозволів у додатку. Деякі поширені методи включають в себе:

  1. Перехоплення сеансу: після фіксації ідентифікатор сеансу жертви зловмисник може перехопити сеанс, щоб отримати доступ до облікового запису жертви і виконати дії, на які вони уповноважені, але зловмисник не має права.

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

  3. Маніпулювання файлами cookie: фіксуючи ідентифікатор сеансу і маніпулюючи файлами cookie, зловмисник може отримати доступ до адміністративних функцій або конфіденційної інформації, до яких у нього зазвичай немає доступу.

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

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

Загальна методологія та контрольний список для фіксації сеансу

Загальна методологія та контрольний список для виявлення і усунення вразливостей, пов'язаних з фіксацією сеансу, включають наступні кроки:

  1. Ідентифікація: визначте сторінки веб-додатки, які використовують сеанси, і визначте метод генерації ідентифікатор сеансу. Визначте масштаб атаки з фіксацією сеансу, проаналізувавши механізми аутентифікації програми та управління сеансом.

  2. Відтворення: Спробуйте відтворити вразливість, пов'язану з фіксацією сеансу, виконавши дії, які зробив би зловмисник. Це включає в себе ідентифікацію початкового ідентифікатор сеансу, а потім спробу зафіксувати ідентифікатор сеансу, надавши жертві новий, фіксований ідентифікатор сеансу.

  1. Аналіз: Проаналізуйте вразливість, вивчивши код програми і мережевий трафік між клієнтом і сервером. Визначте першопричину уразливості і визначте, який вплив вона чинить на додаток.

  2. Усунення: усуньте вразливість, впровадивши кращі методи управління сеансами, такі як повторне створення ідентифікаторів сеансів після аутентифікації, обмеження тривалості сеансів та використання безпечних випадкових чисел для ідентифікаторів сеансів. Інші методи пом'якшення наслідків можуть включати впровадження багатофакторної аутентифікації і моніторинг програми на предмет підозрілої активності.

  3. Тестування: протестуйте додаток, щоб переконатися, що уразливість була належним чином усунуто. Це може включати тестування програми на наявність інших вразливостей, пов'язаних з управлінням сеансами, таких як перехоплення сеансу або атаки з повторним відтворенням сеансу.

  4. Технічне обслуговування: Слідкуйте за додатком на предмет будь-яких нових вразливостей, які можуть виникнути, і переконайтеся, що методи пом'якшення наслідків залишаються ефективними з плином часу.

Набір інструментів для використання фіксації сеансу вразливі місця

Топ-10 Ручних інструментів для фіксації сеансу тестування:

• Burp Suite
• OWASP ZAP
• Netsparker
• AppScan
• WebInspect
• Acunetix
• Wapiti
• Skipfish
• Arachni
• Grabber

Топ-10 Автоматичних інструментів для фіксації сеансу тестування:

• OWASP Dependency-Check
• OWASP Dependency-Track
• Nmap
• Metasploit
• Nikto
• Vega
• W3af
• OpenVAS
• Skipfish
• Arachni

Середній бал CVSS за фіксацію сеансу вразливі місця

Середній бал CVSS для вразливостей з фіксацією сеансу визначити складно, оскільки бал CVSS може змінюватись в залежності від конкретної уразливості і її впливу. Однак, як правило, проблеми, пов'язані з фіксацією сеансу, вважаються середньої або високої серйозності і можуть мати оцінки CVSS в діапазоні від 4,0 до 9,0 або вище, залежно від конкретних обставин.

Загальна перерахування слабких місць (CWE)

  1. CWE-384: Фіксація сеансу: зловмисник може встановити ідентифікатор сеансу іншого користувача, що дозволяє йому перехопити сеанс і отримати несанкціонований доступ.

  2. CWE-287: Неправильна аутентифікація: програмі не вдається належним чином аутентифікувати особистість користувача, що може призвести до атак з фіксацією сеансу.

  3. CWE-602: Примусове забезпечення безпеки на стороні клієнта на стороні сервера: Примусове забезпечення безпеки на стороні клієнта на стороні сервера можна обійти, що призводить до вразливостей, пов'язаних з фіксацією сеансу.

  4. CWE-613: Недостатній термін дії сеансу програмі не вдається належним чином завершити сеанси, що може дозволити зловмисникам повторно використовувати ідентифікатори сеансів.

  5. CWE-614: Конфіденційний файл cookie сеансу HTTPS без атрибуту "Безпечний": конфіденційні файли cookie передаються по незашифрованному з'єднанню, що робить їх уразливими для атак з фіксацією сеансу.

  6. CWE-319: Передача конфіденційної інформації відкритим текстом: Конфіденційна інформація, включаючи ідентифікатори сеансів, передається відкритим текстом, який може бути перехоплений і використаний для злому сеансу користувача.

  7. CWE-522: Недостатньо захищені облікові дані: облікові дані, включаючи ідентифікатор сеансу, недостатньо захищені, що може дозволити зловмисникам вкрасти їх і використовувати для злому сеансу користувача.

  8. CWE-400: Неконтрольоване споживання ресурсів: зловмисник може використовувати атаку з фіксацією сеансу для використання надмірних ресурсів на сервері, що призводить до відмови в обслуговуванні.

  9. CWE-653: Недостатнє поділ: програмі не вдається належним чином розділити сеанси, що може призвести до атак з фіксацією сеансу.

  10. CWE-942: Надмірно дозвільний міждоменної білий список: додаток дозволяє міждоменної запити з довільних доменів, що може дозволити зловмисникам проводити атаки з фіксацією сеансу.

Уразливості для фіксації сеансу подвиги

Існують різні експлойти, які зловмисники можуть використовувати для використання вразливостей, пов'язаних з фіксацією сеансу. Ось деякі з найбільш часто використовуваних експлойтів:

  1. Фіксація сеансу попередньої аутентифікації: зловмисник обманом змушує жертву увійти в додаток з відомим ідентифікатор сеансу, який знаходиться під контролем зловмисника.

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

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

  4. Міжсайтовий скриптінг (XSS) з фіксацією сеансу: зловмисник впроваджує скрипт на вразливу веб-сторінку, яка встановлює ідентифікатор сеансу значення, контрольоване зловмисником. Коли жертва відвідує сторінку, її ідентифікатор сеансу присвоюється значення зловмисника.

Практикуюся в тестуванні для фіксації сеансу вразливі місця

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

  1. Визначте механізм управління сеансами, використовуваний додатком: Перш ніж ви зможете протестувати вразливості для фіксації сеансів, вам необхідно знати, як додаток управляє сеансами користувачів. Загальні механізми включають файли cookie, параметри URL і приховані поля форми.

  2. Спроба атаки з фіксацією сеансу: як тільки ви дізнаєтеся механізм управління сеансом, використовуваний додатком, спробуйте атаку з фіксацією сеансу, встановивши свій власний ідентифікатор сеансу, а потім обманом змусивши жертву використовувати цей ідентифікатор сеансу. Для автоматизації атаки можна використовувати такі інструменти, як Burp Suite, ZAP або OWASP Mantra.

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

  4. Усунення уразливості: Якщо додаток вразливе, вам слід вжити заходів щодо усунення цієї уразливості. Це може включати впровадження методів безпечного керування сеансами, таких як створення нового ідентифікатора сеансу для кожного сеансу користувача і забезпечення того, щоб ідентифікатори сеансів не могли бути легко передбачені або контролюватися зловмисником.

Для фіксації навчальної сесії вразливі місця

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

  1. Шпаргалка по керуванню сеансами OWASP: Цей ресурс містить огляд кращих практик управління сеансами і включає інформацію про загальні вразливості, пов'язаних з сеансом, включаючи фіксацію сеансу.

  2. Керівництво хакера веб-додатків: У цій книзі міститься вичерпне керівництво по тестуванню безпеки веб-додатків, включаючи інформацію про уразливість в управлінні сеансами і про те, як їх ідентифікувати та використовувати.

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

  4. Інститут SANS: Інститут SANS пропонує різні навчальні курси з безпеки веб-додатків, в тому числі курс "Тестування веб-додатків на проникнення і етичний злом", який охоплює уразливості в управлінні сеансами та інші суміжні теми.

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

Вивчаючи ці ресурси і практикуючи етичні методи злому, ви можете краще зрозуміти проблеми, пов'язані з фіксацією сеансів, а також способи їх запобігання і пом'якшення.

Книги з оглядом Фіксації сеансу вразливі місця

  1. "Безпека веб-додатків, керівництво для початківців" Брайана Саллівана, Вінсента Ллю і Майкла Кросу: У цій книзі представлений огляд безпеки веб-додатків, включаючи глави про уразливості в управлінні сеансами, включаючи фіксацію сеансу.

  2. "Заплутана мережа: керівництво по забезпеченню безпеки сучасних веб-додатків" Міхала Залевського: Ця книга пропонує вичерпне керівництво з безпеки веб-додатків, включаючи опис вразливостей в управлінні сеансами і атак з фіксацією сеансів.

  3. "The Web Application hacker's Handbook: пошук і використання вразливостей безпеки" Дафидд Штуттард і Маркус Пінто: У цій книзі міститься докладний посібник з тестування безпеки веб-додатків, включаючи опис вразливостей в управлінні сеансами і способи їх виявлення і використання.

  4. "Керівництво по тестуванню OWASP v4" від Open Web Application Security Project: У цій книзі представлено керівництво з тестування безпеки веб-додатків, включаючи глави про тестуванні управління сеансами і вразливості, таких як фіксація сеансу.

  5. "Безпека веб-додатків, повне керівництво" Теджасвини Херат: У цій книзі представлений всеосяжний огляд безпеки веб-додатків, включаючи опис вразливостей в управлінні сеансами і способів їх запобігання та усунення.

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

Список корисних навантажень Фіксація сеансу вразливі місця

Фіксація сеансу - це тип уразливості веб-програми, яка дозволяє зловмисникові перехопити сеанс користувача. Нижче наведені приклади корисних навантажень, які можна використати для використання цієї уразливості:

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

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

  3. Міжсайтовий скриптінг (XSS): зловмисник може впровадити скрипт на вразливу веб-сторінку, яка встановлює ідентифікатор сеансу значення, контрольоване зловмисником. Це дозволило б зловмиснику використовувати той же ідентифікатор сеансу, що і користувач, і отримати доступ до його сеансу.

Як захиститися від фіксації сеансу вразливі місця

Ось кілька прикладів правил Sigma та правил брандмауера, які можна використовувати для блокування або зупинки вразливостей, пов'язаних з фіксацією сеансу:

• Правило сігми для виявлення і оповіщення про спроби фіксації сеансу:

				
					title: Session Fixation Attempt Detected
detection:
  selection1:
    selection:
      field: http.request.method
      pattern: POST
    condition: any
  selection2:
    selection:
      field: http.cookie
      pattern: (JSESSIONID|PHPSESSID)
    condition: any
  selection3:
    selection:
      field: http.set_cookie
      pattern: (JSESSIONID|PHPSESSID)
    condition: any
  selection4:
    selection:
      field: http.response.status_code
      pattern: 3\d\d
    condition: any
  condition: all
falsepositives:
  - Some applications may legitimately use cookies or response codes
  that match the pattern. Adjust the pattern to reduce false positives.

				
			

• Правило брандмауера для блокування спроб фіксації сеансу:

				
					Rule Name: Block Session Fixation Attempts
Action: Block
Source: Any
Destination: Web server IP address
Protocol: TCP
Port: 80, 443
Condition: http.cookie contains "JSESSIONID" or "PHPSESSID"

				
			

• Правило брандмауера, що дозволяє використовувати тільки захищені файли cookie:

				
					Rule Name: Allow Secure Session Cookies Only
Action: Allow
Source: Any
Destination: Web server IP address
Protocol: TCP
Port: 80, 443
Condition: http.set_cookie contains "secure; HttpOnly"

				
			

Зверніть увагу, що наведені вище правила є лише прикладами, і вам може знадобитися змінити їх у відповідності з вашими конкретними умовами і вимогами. Крім того, рекомендується протестувати будь-яке нове правило в проміжній середовищі, перш ніж застосовувати його в робочому середовищі.

Заходи по пом'якшенню наслідків для фіксації сеансу вразливі місця

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

  • Використовуйте унікальні ідентифікатори сеансу: створюйте нові ідентифікатори сеансу для кожного сеансу користувача і переконайтеся, що вони є досить випадковими і непередбачуваними.

  • Використовуйте методи безпечного керування сеансом: реалізуйте методи безпечного управління сеансом, такі як тайм-аути сеансу, атрибути cookie, такі як HttpOnly, та безпечні прапори.

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

  • Обмежити область дії ідентифікаторів сеансу: переконайтеся, що ідентифікатори сеансу мають обмежену сферу дії, наприклад, для домену або програми.

  • Моніторинг активності сеансу: моніторинг активності сеансу на предмет підозрілої поведінки і автоматичне завершення сеансів, які здаються скомпрометованими.

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

Висновок

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

Інші Послуги

Готові до безпеки?

зв'язатися з нами