Я часто заказываю пиццу в Одессе, больше всего люблю доставку pizza.od.ua, там не жалеют начинки и можно создать пиццу из своих ингредиентов, в других же службах доставки можно выбрать только ту пиццу, которую тебе предлагают, добавить еще ингредиентов или выбрать другие нельзя. Месяца два назад я подсел на суши в pizza.od.ua. С недавних пор суши временно не доставляют, тогда я нашёл другую доставку суши и пиццы.

Решил проверить её на уязвимости.

Первая уязвимость — самая популярная на таких сайтах — это отсутствие проверки суммы платежа за товар(iDOR). Есть в POST запросе переменная price, есть finalPrice, переменная finalPrice поддается редактированию и можно будет сделать себе скидку на пиццу. Запрос

 

Изменяем finalPrice и мы заплатили за пиццу 30 гривен вместо 210. Заказ приняли, но администраторы заметили подмену и отказались присылать мне пиццу.

Вторая уязвимость. Когда отправился заказ, происходит редирект на страницу pizza.com/your_order.html?order=567808&ret=1, номер заказа выводится на страницу. Вместо номера вписываем js pizza.com/your_order.html?order=«>&ret=1 и получаем Reflected XSS уязвимость.

Третья уязвимость это Logout csrf и clickjacking Disclosure information и захват административной панели заказов.

Оказалось, что когда мы заказали еду, то она еще не добавлена в админку на проверку. Чтобы добавить заказ, сайт создает на странице pizza.com/your_order.html?order=567808&ret=1 iframe с адресом

— это адрес сайта, который загрузится во фрейме, выглядит, как base64, декодируем его, получается раскодируем, получается это online.mobidel.ru/makeOrder.php?user=root&password=password&wid=5040&family=даннные_нашего_заказа, wid -ид площадки, пытаемся войти в админку online.mobidel.ru и у нас это получилось. Смотрим на наш заказ, его можно редактировать, отправить в обработку от имени диспетчера и получить бесплатную пиццу (делать я этого конечно не буду).

Ещё можем смотреть данные всех клиентов и текущие заказы


Сообщаем в службу доставки пиццы об этой уязвимости, получаем 10 любых бесплатных пицц или суши.

Хронология:

29 января. Сообщил об уязвимости.
30 января. Присвоена награда 20 бесплатных пицц или суши со скидкой 50 % (10 бесплатных пицц).

19 февраля. Уязвимость исправлена.

Теперь перейдем к mobidel.ru. Заказ создавался в get запросе с логином и паролем в открытом виде pizza.com/your_order.html?order=567808&curl1=хэш. Есть вероятность, что такая же уязвимость есть и в других клиентов. Смотрим страницу с клиентами, оттуда собираем url-ы их клиентов. Проверили, оказалось, что это был единственный случай, где логин и пароль идут в открытом виде.
Идём дальше.

1) Обнаруживаем Stored XSS.
Если отправить через заказ скрипт

то мы получим cookies диспетчера и взломаем админку заказов любого сайта, где выполнится данный скрипт. Уязвимые поля: Дом, время, промокод, комментарий.

2) Находим уязвимость Bruteforce & Account Takeover.
Проходим регистрацию, нам приходит сообщение об активации тестового периода в 30 дней с нашими данными для входа:

  • ID предприятия:5687
  • Имя пользователя:disp5687
  • Пароль:123456

Я вошел в аккаунт, и сразу не смог найти, где изменить свой пароль. Наверное, и остальные пользователи тоже. Так и есть — почти каждый ид имеет пароль 123456. Около 2,5 тысяч пользователей имеют дефолтный пароль(те, кто активировал 30 дней бесплатно и некоторые аккаунты тех, кто на постоянной основе). Раскрывается множество email адресов, номеров телефонов и ФИО.

Если для кабинета диспетчера и был условный пароль 123456, то насчет кабинета курьера не стали заморачиваться:

  • ID предприятия:5687
  • Имя пользователя:5687
  • Пароль:5687

У этой компании за их услуги максимальная цена 2500 за мес, минимальная 500, у них всего 5600 клиентов, уверен, что хоть 2000 из них заказали услуги, 2000 умножаем на

1000, получается 2 000 000 рублей в месяц. Зарабатывают они неплохо(возможно, я ошибаюсь, и конверсия из 5600 может быть меньшей, но все равно неплохо), а вот о безопасности не заботятся.

29 января — присылаем 2 сообщения о нахождении уязвимости, 28 февраля — ещё одно письмо, 1 марта — ещё три письма, компания до сих пор игнорирует мои сообщения. 1 марта я связался с руководителем службы доставки пиццы, он сбросил ссылку на vk программиста, что работает в мобидел. Я отписал ему об уязвимости, он сказал, напиши на тот же email адрес, на этот раз тебя не проигнорируют.

Ответ компании:

Здравствуйте!

мы бы не назвали это уязвимостью, а ваши действия вполне логичны, пароль
123456 стандартный для всех, те кто пользуется системой на постоянной основе
его меняют.

Мой ответ:

те кто пользуется системой на постоянной основе
его меняют. — а те, кто не пользуется, вам наплевать на то, что их личные данные украдут?

Сообщение опять игнорируют, еще ответ:

Не нужно игнорировать эту уязвимость, игнорирование — не решение проблемы.

+ присылаем репорт о xss уязвимости с захватом любой службы доставки.

Даём компании 20 дней для того, чтобы она устранила свои уязвимости или хотя бы ответила на мои сообщения. Этого не происходит, выкладываю в общий доступ.

Как бонус вот такая фича пентестерам: Когда необходимо протестировать уязвимость на сайте на двух аккаунтах, и Ваша почта находится в Яндексе, то на одну почту можно зарегистрировать два аккаунта (mail@yandex.ru; mail@ya.ru).

Вывод с этой статьи: Никогда не нужно ставить дефолтные пароли на аккаунты, нужно генерировать только сложные пароли, с верхним, нижним регистром, цифрами и символами.

Честно скопировано отсюда.