Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
В этой статье я расскажу, как одна маленькая ошибка с установочным скриптом в CMS PrestaShop может открыть дверь для удаленного выполнения кода. Оказалось, что некоторые аспекты этой CMS устроены так, что не подлежат исправлению и создают опасные лазейки для опытных хакеров. Pentest Award
Этот текст получил третье место на премии Pentest Award 2024 в категории «Пробив WEB». Это соревнование ежегодно проводится компанией Awillix.
Я изучил две уникальные RCE-уязвимости, которые останутся открытыми для эксплуатации, и провел успешный пробив через десериализацию в движке кеша, воспользовавшись трюком с базой данных.
Дальше я постараюсь не просто описать кейс о найденных уязвимостях, а вдохновить тебя, рассказав о скрытых возможностях багбаунти. Готов погружаться в детали?
Эта история случилась со мной не так давно. Я участвовал в багбаунти и бороздил просторы скоупа в поисках уязвимостей. И тут наткнулся на ненастроенный инстанс PrestaShop у одного из больших вендоров с хорошими выплатами. Я был впечатлен своей находкой и сразу же начал искать информацию о векторах проникновения и способах эксплуатации.
Оказалось, что такой информации вообще нет и придется все выяснять самому.
Поскольку это суровый мир багбаунти, где ты должен быть быстрее других, я решил немедленно завершить настройку сам, ведь если бы этого не сделал я, сделал бы кто‑то другой.
Процесс устроен так же, как и в других CMS вроде WordPress или Joomla. Необходимо пройти несколько шагов установки. Из важных я могу выделить два:
И если со вторым пунктом все просто и понятно, пароль мы уж как‑нибудь зададим, то для первого есть целый ряд проверок, которые нужно пройти, чтобы установка считалась завершенной. Эта установка может быть доступна только один раз, я хотел сразу проверить возможные баги. Например:
--enable-local-infile
на клиенте). Но мы не хотим отвлекаться на долгие проверки, потому что в это время кто‑то может успеть увести у нас доступ к установщику. По‑всякому сканировать сеть через подключение к MySQL звучит не очень перспективно и не даст нам никаких реальных способов атаки. Из других векторов же ничего не сработало.
Если указать localhost в качестве хоста для базы данных, то получаем сообщение об ошибке service timeout.
Но без базы завершить установку не выйдет, поэтому быстренько поднимем свой сервис MySQL и укажем его при настройке PrestaShop.
Завершаем установку, и вот мы владельцы сервиса и полностью контролируем его БД. Теперь никакие конкуренты не смогут угнать учетную запись.
Но заканчивать на этом было бы преждевременно, нужно попробовать раскрутить эту уязвимость до RCE.
Первое, что приходит на ум по аналогии с WordPress, — это зайти как админ, скрафтить уязвимый плагин и установить его. Давай посмотрим, можно ли тут провернуть нечто такое.
Источник: xakep.ru