---
# System prepended metadata

title: Домашняя работа №8 (Задачи Insecure deserialization на portswigger)
tags: [Домашние задания Web Application Penetration Testing]

---

# Домашняя работа №8 (Задачи Insecure deserialization на portswigger)
###### tags: `Домашние задания Web Application Penetration Testing`

Первые 2 задачи выполняли на занятии. Выполним следующие 5.

1) Задача: Using application functionality to exploit insecure deserialization

    Как и на занятии заходим под учетной записью что нам дана.
    В данной задаче на доступна кнопку удалить аккаунт, попробуем сделать это. В итоге аккаунт успешно удален. Проверим этот запрос в burp.
    ![](https://i.imgur.com/qMYi5Lc.png)
    Проверяем куку и видим, что там сериализован php код. Попробуем изменить значение на нужный нам путь.
    ![](https://i.imgur.com/sazypKk.png)
    Запрос выполняется. Задача выполнена.

2) Задача: Arbitrary object injection in PHP

    Повторяем шаги аналогично, как в предыдущей задаче.
    Снова видим сериализованный php код, но использовать его аналогично как в предыдущей задаче в явном виде не получится. Поищем другие пути. Проверим карту сайта. Видим библиотеку CustomTemplate.php. Проверим что в ней есть. Она пуста, но в задаче есть подсказка, что в файле бэкапов php можно посмотреть код с помощью ~. Попробуем.
    ![](https://i.imgur.com/5lYe18J.png)
    Получили код, где есть функция destruct(), которая может быть использована для выполнения атаки.
    Судя по этому коду мы можем использовать нашу куку для обращения к файлу. Используем это.
    ![](https://i.imgur.com/D5iq2Hd.png)
    После выполнения запроса задача выполнена.

3) Задача: Exploiting Java deserialization with Apache Commons

    Выполняем шаги как в предыдущей задаче.
    ![](https://i.imgur.com/UVTDtUc.png)
    И видим, что используется сериализация Java.
    Для выполнения нужного нам действия можем использовать библиотеку ysoserial и нужную нам коллекцию с апаче (можно найти тут https://github.com/frohoff/ysoserial)
    Собираем payload.
    ![](https://i.imgur.com/wQ2zZbn.png)
    И передаем полученный пэйлоад в запрос. Несмотря на ошибку задача выполняется.

4) Задача: Exploiting PHP deserialization with a pre-built gadget chain

   Открываем задачу. И как мы делали на занятии, заходим под доступной нам учетной записи на портал. Затем переходим в Burp и проверяем запрос. Видим, что у нас есть сессия с токеном.
   ![](https://i.imgur.com/m2iHLsn.png)
   С помощью декодера обнаруживаем, что токен это сериализованный код php.
   ![](https://i.imgur.com/pV6ebFl.png)
   Также, если посмотреть карту сайта то увидим, что нам доступна страница phpinfo
   ![](https://i.imgur.com/fb5krRu.png)
   На ней есть секретный ключ. Оставим его, он нам пригодится.
   Попробуем воспользоваться утилитой phpggc для создания эксплойта удаления нужного нам файла в кодировке base64.
   ![](https://i.imgur.com/pAeZHg8.png)
   А теперь, используем секретный ключ и созданный нами в 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;
   
    Получаем следующую куку.
    ![](https://i.imgur.com/8r3e8G1.png)
    Меняем её в запросе, в результате задача выполняется.

5) Задача: Exploiting Ruby deserialization using a documented gadget chain

    Выполняем все шаги аналогично как в предыдущей задаче.
    Получаем куку судя по всеми сериализованную под Ruby.
    ![](https://i.imgur.com/HrSfSZo.png)
    Судя по подсказке мы можем использовтаь готовый скрипт для генерации нужной нам куки. В ходе поисков нашли нужную нам скрипт тут https://devcraft.io/2021/01/07/universal-deserialisation-gadget-for-ruby-2-x-3-x.html
    Подставляем в конечный скрипт нашу команду и вывод в base64.
    ![](https://i.imgur.com/MtIE5VQ.png)
    Запускаем скрипт.
    ![](https://i.imgur.com/myGMAU3.png)
    Получаем эксплойт в base64. Передаем его в запрос.
    Несмотря на ошибку задача выполняется.


    