# Домашняя работа №8 (Задачи Insecure deserialization на portswigger)
###### tags: `Домашние задания Web Application Penetration Testing`
Первые 2 задачи выполняли на занятии. Выполним следующие 5.
1) Задача: Using application functionality to exploit insecure deserialization
Как и на занятии заходим под учетной записью что нам дана.
В данной задаче на доступна кнопку удалить аккаунт, попробуем сделать это. В итоге аккаунт успешно удален. Проверим этот запрос в burp.

Проверяем куку и видим, что там сериализован php код. Попробуем изменить значение на нужный нам путь.

Запрос выполняется. Задача выполнена.
2) Задача: Arbitrary object injection in PHP
Повторяем шаги аналогично, как в предыдущей задаче.
Снова видим сериализованный php код, но использовать его аналогично как в предыдущей задаче в явном виде не получится. Поищем другие пути. Проверим карту сайта. Видим библиотеку CustomTemplate.php. Проверим что в ней есть. Она пуста, но в задаче есть подсказка, что в файле бэкапов php можно посмотреть код с помощью ~. Попробуем.

Получили код, где есть функция destruct(), которая может быть использована для выполнения атаки.
Судя по этому коду мы можем использовать нашу куку для обращения к файлу. Используем это.

После выполнения запроса задача выполнена.
3) Задача: Exploiting Java deserialization with Apache Commons
Выполняем шаги как в предыдущей задаче.

И видим, что используется сериализация Java.
Для выполнения нужного нам действия можем использовать библиотеку ysoserial и нужную нам коллекцию с апаче (можно найти тут https://github.com/frohoff/ysoserial)
Собираем payload.

И передаем полученный пэйлоад в запрос. Несмотря на ошибку задача выполняется.
4) Задача: Exploiting PHP deserialization with a pre-built gadget chain
Открываем задачу. И как мы делали на занятии, заходим под доступной нам учетной записи на портал. Затем переходим в Burp и проверяем запрос. Видим, что у нас есть сессия с токеном.

С помощью декодера обнаруживаем, что токен это сериализованный код php.

Также, если посмотреть карту сайта то увидим, что нам доступна страница phpinfo

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

А теперь, используем секретный ключ и созданный нами в base64 эксплойт для создания вредоносной куки. Будем использовать следующий код.
<?php
$object = "OBJECT-GENERATED-BY-PHPGGC
$secretKey = "LEAKED-SECRET-KEY-FROM-PHPINFO.PHP";
$cookie = urlencode('{"token":"' . $object . '","sig_hmac_sha1":"' . hash_hmac('sha1', $object, $secretKey) . '"}');
echo $cookie;
Получаем следующую куку.

Меняем её в запросе, в результате задача выполняется.
5) Задача: Exploiting Ruby deserialization using a documented gadget chain
Выполняем все шаги аналогично как в предыдущей задаче.
Получаем куку судя по всеми сериализованную под Ruby.

Судя по подсказке мы можем использовтаь готовый скрипт для генерации нужной нам куки. В ходе поисков нашли нужную нам скрипт тут https://devcraft.io/2021/01/07/universal-deserialisation-gadget-for-ruby-2-x-3-x.html
Подставляем в конечный скрипт нашу команду и вывод в base64.

Запускаем скрипт.

Получаем эксплойт в base64. Передаем его в запрос.
Несмотря на ошибку задача выполняется.