Это способ, которым я всегда пользовался для тестирования атак фиксации сеанса.Это требует знания протокола HTTP, но если вы достаточно хороши, чтобы взглянуть на фиксацию сеанса, немного HTTP не должен вас пугать:)
Версия фиксации сеанса, которую я представляюздесь мы видим идею общедоступного компьютера, когда вы идете в библиотеку, переходите на сайт, такой как www.myawesomesite.com, и, не входя в систему, записываете назначенный вам идентификатор сеанса.
Затем вы уходите и ждете, пока кто-нибудь зайдет на сайт www.myawesomesite.com.Как только они войдут в систему, вручную измените сеанс на вашем компьютере на файл cookie, который использовался на общедоступном компьютере.Затем сервер считает, что вы являетесь аутентифицированным пользователем.
Чтобы проверить это на локальном хосте, мы можем использовать два разных браузера для просмотра эффекта, так как браузеры обычно не делятся файлами cookie.
Вот шаги, чтобы сделать это:
Откройте Chrome и перейдите к localhost
.Это будет представлять общедоступный компьютер.Проверьте идентификатор сеанса и запишите его.Вы можете сделать это либо с помощью программы, подобной Fiddler, для просмотра запроса, либо с помощью плагина, такого как веб-разработчик, для просмотра файлов cookie.Значение cookie должно выглядеть примерно так: PHPSESSID=46l11p0vt81ouo2hkt0ck8ij76
Откройте Firefox и перейдите к localhost
.Это будет представлять компьютер злоумышленника.Используя плагин Web Developer, измените файл cookie PHPSESSID на значение, которое вы записали в Chrome.
В Chrome войдите в систему как Алиса.Это будет означать, что жертва вошла в систему.
Вернувшись в Firefox, нажмите «Обновить» или перейдите на страницу только для аутентификации.Если вы подвержены фиксации сеанса, то вы должны войти в систему как Алиса в Firefox, минуя логин.
Исправить это просто (так как я уверен, что вывидел).Просто позвоните session_regenerate_id()
, как только пользователь авторизуется в вашем коде.Это делает недействительным любой идентификатор сеанса, который использовался до входа в систему, и означает, что теперь Оскар должен попытаться украсть ваш идентификатор сеанса после входа в систему (но до выхода из системы), что гораздо труднее сделать.