Pickle: удобство, которое может стоить вам сервера
Каждый питон-разработчик хоть раз кидал объект в
pickle.dumps() — две строчки, и готово. Но pickle восстанавливает не данные, а целые объекты, послушно выполняя всё, что нужно для сборки. И если данные пришли снаружи и попали в
pickle.loads() без проверки, злоумышленник дописывает вызов системной функции, а сервер сам выполняет его команды. Base64 тут не спасает, ведь это не шифрование, а обёртка над тем же опасным потоком.
В новой статье разбираем, почему
__reduce__ превращает удобную сериализацию в готовый RCE, по каким признакам пентестер вычисляет проблему и почему фильтрация символов почти не работает. А ещё про то, как безопасный внутренний сервис однажды тихо начинает принимать пользовательские данные, и так рождается классическая уязвимость.
Проверить всё руками можно на задаче «Элитный сомелье» из бесплатного курса
«Профессия Белый Хакер». По легенде ваш знакомый Володя запустил сайтик про вино, увлёкся «нотками дуба» и забыл про безопасность. Сайт крутит pickle, а ваше дело найти, где сломана граница доверия, добиться выполнения команд и забрать флаг из корня.
@SecLabNews
Обсуждение 0
Обсуждение не доступно в веб-версии. Чтобы написать комментарий, перейдите в приложение Telegram.
Обсудить в Telegram