Автор: Чуприлин Андрей
Крупная корпорация не может обойтись без собственного сервиса для хранения документов. В жизни не поверю, что кто-то может прочитать чужой документ или, не дай Бог, прочитать файлы с сервера.
Сервис находится в папке service
и обернут в докер.
Внутри докера сервис работает на порту 9999.
В сервисе возможность работать с документами имеется только у пользователя с логином admin
.
Однако простой вход из-под аккаунта администратора не работает.
Для проверки администратора используется криптостойкая хэш-функция с солью.
Войдя в сервис от имени администратора, появляется возможность создавать и редактировать документы, содержимое которых отображается необычным образом.
Хэш-функция была взята из задания crypto-200
из Hack you 2014 и частично переделана автором.
Поискав по папкам с помощью dirsearch
(или его аналога), можно найти исходник алгоритма, хэширующего строку.
Хэш-функция уязвима к HLE (Hash Length Extension) атаке. Имея на руках данные и хэш от них, мы можем "дописать" новые данные, при этом правильно посчитав хэш. Подменив данные и хэш одновременно, мы сможем пройти проверку на админа и войти в сервис.
Далее, при создании или редактировании документа, в содержимом есть возможность исполнить код (уязвимость SSTI). Использовав pyaload для данной уязвимости, можно прочитать файл flag.txt
, содержащий флаг.
Файл solver.py
содержит реализацию использования данной уязвимости.
Cup{hl5_@nd_sst1}