# Домашняя работа №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. Передаем его в запрос. Несмотря на ошибку задача выполняется.