[Бесплатная пицца] Взлом сайта доставки еды, взлом mobidel.ru


Эта статья о том, как я взломал сайт доставки еды и заказал себе бесплатную пиццу.

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

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

Первая уязвимость — самая популярная на таких сайтах — это отсутствие проверки суммы платежа за товар (iDOR).

Есть в POST запросе переменная price, есть finalPrice, переменная finalPrice поддается редактированию и можно будет сделать себе скидку на пиццу. Запрос:

POST /oplata.html HTTP/1.1































Host: www.pizza.com































User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64; rv:51.0) Gecko/20100101 Firefox/51.0































Accept: application/json, text/javascript, */*; q=0.01































Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3































Accept-Encoding: gzip, deflate































Content-Type: application/x-www-form-urlencoded; charset=UTF-8































X-Requested-With: XMLHttpRequest































Referer: http://yahoo.com/{{2+2}}































Content-Length: 262































Cookie:































































streetId=&streetName=qwqwqw&persons=1&change=500&name=qw&phone=%2B38(111)1111111&email=mm%40mm.mm&t-ord=&comment=&promocode=&agreement=on&check-ord=online&order%5B0%5D%5Bid%5D=1162&order%5B0%5D%5Bamount%5D=2&order%5B0%5D%5Btype%5D=rollyi&price=210&finalPrice=30

Изменяем 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 с адресом:

http://pizza.com/your_order.html?order=567808&curl1=aHR0cDovL29ubGluZS5tb2JpZGVsLnJ1L21ha2VPcmRlci5waHA/dXNlcj1yb290JnBhc3N3b3JkPXBhc3dvcmQmd2lkPTQwNTAmZmFtaWx5PSUyMiUzRSUzQ2ltZytzcmMlM0R4K29uZXJyb3IlM0Rwcm9tcHQlMjgxJTI5JTNFK3F3JTdCJTdCMisyJTdEJTdEcXcmc3RyZWV0PTElMkMxJTIyJTNFJTNDaW1nK3NyYyUzRHgrb25lcnJvciUzRHByb21wdCUyODElMjklM0UrcXclN0IlN0IyKzIlN0QlN0RxdyZob21lPSZyb29tPSZlbnRyYW5jZT0mZmxvb3I9JnBob25lPTM4MDYzNjgxOTQ2NCZjb21tZW50PSVEMCU5RSVEMCVCRiVEMCVCQiVEMCVCMCVEMSU4NyVEMCVCNSVEMCVCRCslRDAlQkUlRDAlQkQlRDAlQkIlRDAlQjAlRDAlQjklRDAlQkQlMjErJTNDYnIlM0UlRDAlOUQlRDAlQjArJUQwJUIyJUQxJTgwJUQwJUI1JUQwJUJDJUQxJThGJTNBJTIyJTNFJTNDaW1nK3NyYyUzRHgrb25lcnJvciUzRHByb21wdCUyODElMjklM0UrcXclN0IlN0IyKzIlN0QlN0RxdyslRDAlOUYlRDElODAlRDAlQkUlRDAlQkMlRDAlQkUtJUQwJUJBJUQwJUJFJUQwJUI0KyUyMiUzRSUzQ2ltZytzcmMlM0R4K29uZXJyb3IlM0Rwcm9tcHQlMjgxJTI5JTNFK3F3JTdCJTdCMisyJTdEJTdEcXclRDAlOUElRDAlQkUlRDAlQkIlRDAlQjglRDElODclRDAlQjUlRDElODElRDElODIlRDAlQjIlRDAlQkUrJUQwJUJGJUQwJUI1JUQxJTgwJUQxJTgxJUQwJUJFJUQwJUJEKy0rMSslRDAlOUYlRDAlQkUlRDAlQjQlRDAlQjMlRDAlQkUlRDElODIlRDAlQkUlRDAlQjIlRDAlQjglRDElODIlRDElOEMrJUQxJTgxJUQwJUI0JUQwJUIwJUQxJTg3JUQxJTgzKyVEMSU4MSsrJUQwJTlBJUQwJUJFJUQwJUJDJUQwJUJDJUQwJUI1JUQwJUJEJUQxJTgyJUQwJUIwJUQxJTgwJUQwJUI4JUQwJUI5KyVEMCVCRiVEMCVCRSVEMCVCQiVEMSU4QyVEMCVCNyVEMCVCRSVEMCVCMiVEMCVCMCVEMSU4MiVEMCVCNSVEMCVCQiVEMSU4RiUyMiUzRSUzQ2ltZytzcmMlM0R4K29uZXJyb3IlM0Rwcm9tcHQlMjgxJTI5JTNFK3F3JTdCJTdCMisyJTdEJTdEcXcmYXJ0aWNsZXMlNUIwJTVEPTA1ODkmYXJ0aWNsZXMlNUIxJTVEPTEyMDkmbm9uQ2FzaD0xJnF1YW50aXRpZXMlNUIwJTVEPTQmcXVhbnRpdGllcyU1QjElNUQ9MQ==

curl1 — это адрес сайта, который загрузится во фрейме, выглядит, как 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

Если отправить через заказ скрипт:
br>


">

">













> ,

То мы получим данные для авторизации (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).

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

Мемы по этой теме:


Дополнение к статьи:

Мне в почту написал письмо один хакер из хабра о том, что тоже обнаружил уязвимость на mobidel. Я не брутил (перебирал) директории, да и вообще после того, как меня долго игнорировали, сайт практически не трогал. А он пробрутил и обнаружил открытый php файл с конфигами сервера (было очень глупо не закрыть его), там данные для: доступа к базе данных, данные для доступа в личный кабинет платежной системы robokassa (можно смотреть транзакции пользователей и управлять счетом mobidel), данные для доступа к админке mobidel на их сайте. Я не пытался никуда войти, просто написал письмо «немедленно закройте этот файл в .htaccess и поменяйте пароли», исправили очень быстро, теперь файл не доступен. И сказали спасибо.

Надеюсь, эта статья будет для них уроком и они закроют все свои уязвимости.

Аудит ИБ за еду можно заказать здесь

P.S: Если вам интересны мои статьи, то подпишитесь, пожалуйста, на мой аккаунт golos.io и проголосуйте за этот пост , скоро я буду часто писать статьи на тему информационной безопасности. На habrahabr.ru у меня уже есть 7 похожих статей, и эта статья набрала почти 40 000 просмотров


Комментарии 10


Чтобы читать и оставлять комментарии вам необходимо зарегистрироваться и авторизоваться на сайте.

Моя страницаНастройкиВыход
Отмена Подтверждаю
100%
Отмена Подтверждаю
Отмена Подтверждаю