Тестирование на проникновение Принцип уязвимости XSS и проверка (2) - Сеансовая атака
Тестирование на проникновение Принцип уязвимости XSS и проверка (2) - Сеансовая атака

Сеансовая атака

Сессия является наиболее важной и сложной для веб-приложений. Для веб-приложений первым принципом повышения безопасности является: не доверяйте данным от клиента. Данные должны быть проверены и отфильтрованы, прежде чем их можно будет использовать в программе, а затем сохранить на уровне данных. Однако, чтобы поддерживать состояние между различными запросами от одного и того же пользователя, клиент должен отправить серверу уникальный идентификатор идентификации (SessionID). Очевидно, что это противоречит упомянутым выше принципам безопасности, но нет другого способа. Протокол http не сохраняет состояние. У нас нет выбора. Из этого видно, что наиболее уязвимой ссылкой в ​​веб-приложении является сеанс. Поскольку сервер аутентифицирует пользователя посредством удостоверения клиента, сеанс является ссылкой в ​​веб-приложении, которая должна быть наиболее безопасной.

Существует множество способов атаки на основе сеанса. Большинство методов сначала захватывают или фиксируют сеанс законного пользователя, а затем выдают себя за пользователя для доступа к системе. Другими словами, злоумышленник должен как минимум получить действительный идентификатор сеанса для последующей аутентификации.

Злоумышленник может получить действительный идентификатор сеанса как минимум тремя способами:

  • предсказывать
  • захват (угнать)
  • зафиксированный

Принцип прогнозирования сеанса

Прогнозирование сеанса требует, чтобы злоумышленник угадал действительный идентификатор сеанса, используемый в системе (формат PHPSESSID=1234 в PHP), что аналогично взлому методом грубой силы.

В настоящее время прогнозирование сеанса маловероятно, что этот метод атаки будет успешным.

  • Генерация случайных идентификаторов сеансов в PHP часто бывает чрезвычайно сложной и трудной для генерации.
  • PHP генерирует строки сеанса без каких-либо правил и порядка.

Принцип перехвата сессии

  • Перехват сеанса
  • Метод атаки, который крадет идентификатор сеанса законного пользователя и затем использует этот идентификатор для входа в целевую учетную запись.
  • Наиболее важной частью перехвата сеанса является получение законного идентификатора сеанса, чтобы выдавать себя за законного пользователя.

1. Целевому пользователю необходимо сначала войти на сайт.

2. После успешного входа в систему пользователь получит идентификатор сеанса, предоставленный сайтом.

3、Злоумышленник перехватывает идентификатор сеанса с помощью какого-либо метода атаки.

4. Злоумышленник может получить законный сеанс целевого пользователя, получив доступ к сайту через захваченный идентификатор сеанса.

Принципиальная схема:

Как получить SessionlD

Существует много типов злоумышленников.

  • Взлом методом грубой силы: пробуйте различные SessionID, пока не взломаете
  • предсказать: Если SessionID генерируется неслучайным образом, его можно вычислить
  • Кража: получена с помощью сетевого анализа, XSS-атак и т. д.

Для PHP, хотя его внутренний механизм реализации сеанса не очень безопасен, процесс генерации идентификатора сеанса относительно безопасен. Этот случайный идентификатор сеанса часто чрезвычайно сложен и его трудно предсказать. Поэтому взлом SessionID и прогнозирование атак SessionID практически маловероятны. добиться успеха.

Большинство методов кражи идентификаторов сеансов используют уровень передачи сетевых данных для атаки и захвата, а SSL можно использовать для защиты.

метод защиты

  • 1. Измените имя сеанса. Имя сеанса по умолчанию в PHP — PHPSESSID. Эта переменная будет сохранена в файле cookie. Если злоумышленник не проанализирует сайт, он не сможет угадать имя сеанса, что может заблокировать его. атаки.
  • 2. Отключите прозрачный идентификатор сеанса. Прозрачный идентификатор сеанса означает, что, когда HTTP-запрос в браузере не использует файлы cookie для хранения идентификатора сеанса, идентификатор сеанса передается с использованием URL-адреса.
  • 3. Установите HttpOnly: установив для HttpOnly файла cookie значение true, вы можете запретить клиентским сценариям доступ к этому файлу cookie, тем самым эффективно предотвращая XSS-атаки.
  • 4. Закройте все страницы phpinfo, которые сбрасывают информацию о запросе: страница phpinfo будет сбрасывать информацию о запросе, включая информацию о файлах cookie.
  • 5. Проверьте информацию HTTP-заголовка.

атака «человек посередине»

атака «человек посередине»(Man-in-the-MiddleAttack,Атака MITM (называемая «атакой MITM») — это метод сетевой атаки, который косвенно завершает атаку путем кражи или взлома физических и логических каналов связи. Злоумышленник создает независимые соединения с обоими концами связи.,и обмениваться полученными данными,Заставьте оба конца связи думать, что они разговаривают друг с другом напрямую через частное соединение.,Фактически вся сессия полностью контролируется злоумышленником. Этот узел связи, контролируемый злоумышленником, представляет собой так называемого «человека посередине».

Существует две распространенные формы атаки «человек посередине»:

  • Кража информации на основе мониторинга
  • Выдача себя за личность на основе слежки

Принципиальная схема выглядит следующим образом:

Причины, по которым от нападения «человека посередине» трудно защититься:

  • 1. Когда злоумышленник подслушивает, общее сетевое соединение может работать нормально и не будет отключено, поэтому мало кто сможет его активно обнаружить.
  • 2. Трояны или вредоносные программы не будут установлены на компьютер жертвы, что затрудняет обнаружение антивирусного программного обеспечения.
  • 3. Хотя злоумышленник оставит некоторые улики при обмане сетевого протокола, поскольку сетевое оборудование не сохраняет слишком много записей, их впоследствии трудно отследить.
  • 4、Подавляющее большинство сетевых протоколов по-прежнему работают на основе предположения, что «данные другой стороны надежны», что приводит к слишком большому количеству лазеек, которые злоумышленники могут использовать для обмана сетевых устройств.、Притвориться посредником

закрепление сеанса

закрепление сеанса(Session fixation) — метод атаки, который обманом заставляет жертву использовать идентификатор сеанса (SessionID), указанный злоумышленником.

Это самый простой способ для злоумышленника получить законный идентификатор сеанса. (Разрешить законным пользователям входить в систему, используя предустановленный злоумышленником SessionID, тем самым предотвращая создание в Интернете новых SessionID, в результате чего предустановленный злоумышленником SessionID станет легитимным мостом).

закрепление сеанса также можно рассматривать как разновидность перехвата сеанса, поскольку закрепление Основной целью сеансовой атаки также является получение легитимной сессии целевого пользователя, но закрепление Сеанс также может заставить жертву использовать действительный сеанс, установленный злоумышленником, для получения конфиденциальной информации пользователя.

Шаги атаки обычно включают в себя:

  • 1. Злоумышленник каким-либо образом сбрасывает SessionID целевого пользователя, а затем отслеживает состояние сеанса пользователя;
  • 2. Целевой пользователь входит на сайт с SessionID, установленным злоумышленником;
  • 3. Злоумышленник получает законный сеанс через идентификатор сеанса.

Принципиальная схема выглядит следующим образом:

Механизм веб-приема SessionID

Идентификатор сеанса, хранящийся в ранних браузерах, легко доступен и использует URL-адрес для передачи идентификатора сеанса.

Сначала проверьте, содержит ли передаваемый файл cookie идентификатор сеанса; если нет, затем проверьте, включен ли он в данные получения и отправки, и если да, используйте эти данные, если нет, система сгенерирует идентификатор сеанса и отправит его клиенту;

Способ 1 для сброса SessionlD

Используйте клиентский скрипт для установки файлов cookie в браузер.

Язык кода:js
копировать
<script> document.cookie="PHPSESSID=99999";</script>

Таким образом, вы можете использовать XSS для достижения своей цели.

план защиты

Включите Httponly, чтобы злоумышленники не могли читать файлы cookie.

Однако в некоторых браузерах более ранних версий есть лазейки, и файлы cookie можно переписать, даже если установлен HttpOnly. Поэтому необходимо добавить другие методы проверки, такие как проверка User-Agent и проверка токена.

Способ 2 для сброса SessionlD

использоватьHTMLиз<META>тег плюсSet-Cookieсвойство。

Сервер может вернутьсяизHTMLДобавлено в документ<META>ярлык для установкиCookie

Язык кода:js
копировать
<meta http-equiv='Set-Cookie'content='PHPSESSID=23333'>

По сравнению с клиентским скриптом,верно<META>Этикеткаиз Обработка пока не может быть отключена браузерами.

Способ 3 для сброса SessionlD

Установите файл cookie с помощью HTTP-заголовка ответа Set-Cookie.

Злоумышленник может использовать некоторые методы, чтобы добавить HTTP-заголовок ответа Set-Cookie к ответу веб-сервера.

метод защиты

  • 1. Сбрасывайте идентификатор сеанса каждый раз, когда пользователь входит в систему.
  • 2. Если идентификатор сеанса не используется слишком долго, сбросьте идентификатор сеанса.
  • 3. Большинство методов предотвращения перехвата сессии не подходят для засоединения. сеанса Атаки одинаково эффективны。Например, настройкаHttpOnly,Отключить прозрачный SessionlD,Проверка пользовательского агента,Проверка токена и т. д.

Некоторые изображения в этой статье взяты из учебного курса для сертифицированных инженеров службы безопасности Sangfor. Они предназначены для удобства личного изучения и использования и не предназначены для коммерческого использования! ! ! ! Текстовый контент набран лично мной, а не перенесен напрямую! Если есть какие-либо нарушения, пожалуйста, свяжитесь с нами, чтобы удалить их! ! !

Этот документ обеспечиваетиз Информация предназначена только дляОбразовательные цели и тестирование на проникновение с явным разрешением。любой несанкционированныйиспользовать Техническая информация в этом документеиз Поведение строго запрещеноиз,И может нарушать «Сетевой закон Китайской Народной Республики» и связанные с ним законы и правила. Пользователи должны использовать полученные знания законным и соответствующим требованиям образом.,Он не может использоваться для незаконного вторжения, разрушения информационных систем и других злонамеренных действий. Мы настоятельно рекомендуем всем читателям соблюдать местные законы и этические правила.,Исследуйте информационные технологии в пределах правовых границ.

Я участвую в 21-дневном конкурсе Tencent по созданию технологий 2024 года |Специальный сезон обзоров в середине года, накопление технологий в середине года, сохраните свой флаг, приходите и разделите со мной главный приз!

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose