На странице
Небезопасные прямые ссылки на объекты — 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?
Пароль получен. Входим на сайт. Лаба решена.
Ещё в этой категории
Web Shell Upload через обход блек-листа расширений (PortSwigger Lab)
.php в блек-листе, но .htaccess заливается без вопросов — подсовываем свой конфиг Apache и заставляем сервер исполнять shell.bug как PHP.
Web Shell Upload через обфускацию расширения (PortSwigger Lab)
Блек-лист расширений не пускает .php, двойное расширение shell.php.jpg отдаётся как картинка — null-byte shell.php%00.jpg обходит обе проверки.
Remote Code Execution через загрузку web shell (PortSwigger Lab)
Загрузка аватарки без валидации — заливаем PHP web shell и читаем /home/carlos/secret.