Фиксация сессии (Session Fixation) является методом нападения, который принудительно устанавливает идентификатор сессии (session ID) в определенное значение. В зависимости от функциональности сайта-мишени, чтобы «зафиксировать» идентификатор сессии может быть применено множество методов. Разнообразие этих методов — от применения Межсайтового программирования до забрасывания веб-сайта предварительно сформированными HTTP-запросами. Затем идентификатор пользовательской сессии фиксируется и злоумышленник ожидает тех, кто будет входить в систему. Как только пользователь сделает это, злоумышленник использует предопределенное значение идентификатора сессии, чтобы получить его онлайн идентификацию со всеми вытекающими последствиями.

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

Без активной защиты от фиксации сессии, атака может быть предпринята против любого веб-сайта использующего сессии для идентификации подлинности пользователей. Веб-сайты использующие идентификаторы сессий обычно применяют ключики (Cookie), также применяются URL и скрытые поля форм. К сожалению, сессии основанные на ключиках проще для нападений. Большинство, на настоящий момент выявленных методов атак, направлены на фиксацию именно ключиков.

В отличие от похищения идентификаторов сессий пользователей, выполняемых после их входа на веб-сайт, фиксация сессии предоставляет значительно более широкие возможности для нападения. Активная часть нападения делается до входа пользователей в систему.

Пример

Обычно атака фиксация сессии состоит из трех действий

1) Установка сессии
Злоумышленник устанавливает «сессию-ловушку» на сайт-мишень и получает этот идентификатор сессии. Или, злоумышленник для нападения может выбрать случайный идентификатор сессии. Но в этом случае, значение установленное сессией ловушкой должно поддерживаться (чтобы «быть живым») с повторными соединениями с веб-сайтом.
2) Фиксация сессии
Злоумышленник помещает значение сессии ловушки в браузер пользователя и фиксирует идентификатор пользовательской сессии.
3) Вхождение сессии
Злоумышленник ожидает пока пользователь не войдет в систему сайта-мишени. Как только пользователь делает это, значение фиксированного идентификатора сессии будет использовано и злоумышленник может «вступить во владение».
Фиксация идентификатора пользовательской сессии может быть выполнена при помощи одного из следующих методов:
Выдача ключика, используя клиентский скрипт
Выдача нового значения идентификатора сессии в ключике, используя клиентский скрипт Межсайтовое Программирование в слабых местах в системе защиты на любом поддомене веб-сайта может быть использовано для изменения текущего значения ключика.   

Фрагмент кода:
http://example/<script>document.cookie=»sessionid=1234;%20domain=.example.dom»;</script>.idc
Выдача ключика, используя META тег
Этот метод проще предыдущего, но так же эффективен, особенно когда блокиратор Межсайтового Программирования предотвращает инъекцию тегов HTML скриптов, но не META тегов.   

Фрагмент кода:
http://example/<meta%20http-equiv=Set-Cookie%20content=»sessionid=1234;%20domain=.example.dom»>.idc
Выдача ключика, используя HTTP-заголовок ответа
Злоумышленник вызывает или на целевом веб-сайте, или на любом из его поддоменах, выдачу ключика с идентификатором сессии. Это может быть выполнено разными путями:  

  • взлом веб сервера в домене (например, плохо поддерживаемый WAP сервер)
  • заражение пользовательского DNS сервера, практически добавив веб-сервер злоумышленника в атакуемый домен
  • установка злонамеренного веб-сервера в атакуемый домен (например, на рабочей станции в Windows2000 домен, все рабочие станции также находятся в DNS домене)
  • использование атаки разбиение HTTP-ответа
Замечание

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

Фрагмент кода:
http://example/<script>document.cookie=»sessionid=1234;%20Expires=Friday,%201-Jan2017%2000:00:00%20GMT»;</script>.idc