На странице
Небезопасные прямые ссылки на объекты — IDOR
Лаборатория
Insecure direct object references · Apprentice
Решение
Дано
This lab stores user chat logs directly on the server's file system, and retrieves them using static URLs.
Solve the lab by finding the password for the user `carlos`, and logging into their account.
Анализ задания
История переписки хранится на файловой системе сервера и доступна по статическим адресам. Нужно найти пароль для пользователя carlos, судя по всему, найдя его в переписках пользователя.
Разведка
Заходим на сайт, видим Live Chat. Открываем, напишем пару сообщений. О, есть кнопка View transcript, нажимаем — скачивает TXT-файл.
Ок, посмотрим, что происходило в Burp. При нажатии на View transcript:
POST /download-transcript
Возвращается HTTP/2 302 Found:
Location: /download-transcript/2.txt
Редирект на скачивание файла получается.
Ок, попробуем подобрать другие переписки:
Location: /download-transcript/3.txt
Location: /download-transcript/4.txt
Location: /download-transcript/5.txt
No transcript. Сходу не получилось. Закину в Intruder, параметры от 0 до 100 для начала. Ха, нашёл всего одну — 1.
GET /download-transcript/1.txt
You: Ok so my password is v6skv9vlon85s20dcidq. Is that right?
Пароль получен. Входим на сайт. Лаба решена.
Ещё в этой категории
Внедрение произвольного объекта в PHP (PortSwigger Lab)
Восстановление утёкшего исходного кода и внедрение сериализованного объекта CustomTemplate, чей __destruct удаляет произвольный файл.
Эксплуатация небезопасной десериализации через функции приложения (PortSwigger Lab)
Подмена поля `avatar_link` в объекте сессии для удаления произвольного файла через функцию удаления аккаунта.
Изменение типов сериализованных данных (PortSwigger Lab)
Эксплуатируем нестрогое сравнение PHP, меняя тип `access_token` на целое `0` и обходя аутентификацию.