Статья Поиск уязвимостей в интернет-магазине товаров от Xiaomi

CYBRED

CYBRED

Member
21.11.2019
5
86
На сайте все еще не прикрыли уязвимости, так что вы сможете увидеть и потрогать их "вживую" - . Рассказываю я о них потому, что владелец не захотел нормально общаться, сначала заигнорив на почте, а потом и вовсе добавив меня в ЧС во ВКонтакте, ссылаясь на то, что пентестестом займется их программист (ну что ж, думаю, у него все получится).
1.png

Ссылка на профиль дамы во ВКонтакте - Александра Александровна
Привязанный к странице номер телефона - +79787490741
1.png

Начать следует с того, как был найден вышеназванный магазин с техникой от компании Xiaomi. А найден он был очень просто - через рекламу на Youtube. Я зашел на видеохостинг, вбил в поиске "Xiaomi Gaming Laptop" (уж очень мне захотелось заменить свой старый ПК на что - то более мобильное и производительное) и под третьим видео в топе обнаружил ссылку на магазин:
1.png

Это была реклама. А на рекламные ссылки я смотрю с интересом - порой, кроме приевшихся вставок про танки, самолеты, ставки на спорт и прочее, встречается что - нибудь необычное и даже интересное. Конечно же, такие проекты никогда не стоит рассматривать всерьез - однако, иногда, с них можно попробовать самим извлечь прибыль - неформально.
К сожалению, зайдя на сайт, я не испытал ничего, кроме чувства тоски, - высокие цены и скудный дизайн будто бы говорили мне покинуть его как можно скорее.
1.png

Я решил пойти дальше и удостоверившись в том, что он написан без использования новомодных фреймворков, я даже немного воодушевился и принялся искать баги, уже предвкушаю возможную выплату, частично покрывающую покупку нового ноутбука.
Первое, что сразу бросается в глаза - строка поиска. Я привык к тому, что, как правило, разработчики хоть бы немного осведомлены в области безопасности Web-приложений и не допускают оплошностей на главной странице сайта. Но я рискнул и вставил простейший пейлоад:
"><script>alert("[USER=146120]@CYBRED[/USER]")</script>
Нажал кнопку поиска. Секунда, страница обновляется и... первая уязвимость найдена - XSS!
1.png

Стоит также отметить, что при серфинге по сайту, результаты внедрения HTML-кода сохранялись - каждый раз, переходя на новую страницу, я встречал свой порно-alert-баннер.
Переходим к регистрации на сайте. Форма выглядит так:
1.png

Ничего не бросается в глаза? - reCaptcha. Судя по тому, как аляписто выглядит сайт, я не был бы удивлен, если бы она была неправильно настроена. Чтобы убедиться в этом, я заполняю поля, отправляю запрос и перехватываю его при помощи Burp Suite.
1.png

Стираю значение ключа "g-recaptcha-response" и пробую отправить запрос:
1.png

Результат? Как вы уже видите, - Success!
Код:
{
   "success":{
       "id":399,
       "modal":"codeConfimForm",
       "text":"<h4>Нужно подвтерждение номера телефона</h4> <span>Пожалуйста, введите код из смс в следующем окне.</span>"
   }
}
Перед тем, как перейти к форме с подтверждением номера телефона, меня заинтересовало сообщение, пришедшее на электронную почту:
1.png

Увидев его, мне сразу же в голову пришла мысль - что, если значение поля пароль (а, возможно, и не только оно), вообще никак не фильтруется? Судя по тому, что я уже видел ранее, это возможно с большой долей вероятности.
Итак, теперь я регистрирую аккаунт с немного другими данными, а в качестве пароля указываю:
password123"
Please follow the link:
1.png

Отправляю запрос, смотрю на пришедшее письмо и...
1.png

Бинго! Отсутствие фильтрации пароля открывает возможность DOS (отправляя очень длинную строку), либо возможность устроить масштабную фишинговую атаку на заранее заготовленный список Email-адресов.
Сразу после того, как мы мы зарегистрировали аккаунт, на сайте появляется всплавающее окно с просьбой ввести пришедший на телефон код для подтверждения регистрации - без его ввода мы не сможем продолжить работу на сайте.
1.png

Как вы помните, я указывал номер - +79999999998. Конечно же его у меня нет - придется искать следующую уязвимость. Ранее, перед тем, как начать писать статью, я уже на временном номере удостоверился в том, что код всегда состоит из 4-цифр. Осталось удостовериться в наличие No Rate Limit.
Для этого вводим код, нажимаем на кнопку "Отправить". Перехватываем запрос при помощи Burp и направляем его в Intruder.
1.png

На следующей вкладке выбираем:
Payload Type - Number,
Диапазон - от 1000 до 9999

1.png

И запускаем атаку!
Остается ждать ответ, отличный от
Код:
{
   "error":{
       "field":"code",
       "text":"Неверный код!"
   }
}
Это не долго, спустя пару минут меня радует следующий результат:
1.png

Код:
{
   "success":{
       "text":"<h4>Вы успешно подтвердили аккаунт!</h4> <span>Можете выполнить вход.</span>",
       "modal":"loginForm"
   }
}
Выполняем вход и видим, что номер успешно привязан к аккаунту:
1.png

В настройках, помимо личных данных, отображается адрес доставки, который можно самостоятельно задать в разделе "Настройки" - это отличный повод проверить наличие Stored XSS!
Вставляю следующий пэйлоад:
1.png

Возвращаюсь в "Обзор" и встречаю это:
1.png

Как можно заметить, в личном кабинете имеется возможность отправить заявку на оформление бонусной карты - я уверен, там также, наверняка, есть Blind XSS. Но мне уже не хочется регистрировать аккаунт на XSSHunter, так как это не имеет дальнейшего смысла (ведь профита я уже не получу за эту уязвимость - верно?).
Помимо этого, на страницах с товарами существует Blind SQLi, которую ни я, ни SQLMap, не смогли раскрутить. Вот вам ссылочка:

Эту статью можно продолжать практически бесконечно - названы не все уязвимости, с которыми мне удалось столкнуться. Я не удивлюсь, увидев спустя пару минут, после публикации статьи, дефейс этого сайта. Я очень сильно удивлен, как с таким наплевательским отношением, он продержался до сегодняшнего дня.
 
f22

f22

Red Team
05.05.2019
1 398
107
Отличная статья!
Из пожеланий - сделать отступ текста после картинки и сами картинки сделать в виде превью.
 
  • Нравится
Реакции: Vertigo
Vertigo

Vertigo

Lex mea est Vulgate Linux
Gold Team
15.02.2017
1 193
3 558
Странно и скромно.Автор не впервые постит годноту.
Конечно лукас без всяких сомнений.
 
explorer

explorer

Red Team
05.08.2018
821
1 739
Очень хорошо всё разложено, стиль изложения чёткий, без воды. Бро, только ссылки-то не нужно было выкладывать, сейчас набегут "пентестеры" и сайту будет очень плохо...
 
Justnik

Justnik

Member
27.02.2020
9
0
Кстати, автор, а можно ли как то узнать номер привязанный к закрытому ВК профиля ?
 
id2746

id2746

Grey Team
12.11.2016
402
631
  • Нравится
Реакции: HollyTIm и Bokucha
CyberMage

CyberMage

New member
05.08.2019
4
6
Мне кажется и правда, лучше его дефейснуть. Иначе очень скоро это дырявое дерьмо разберут на пароли и кредитки.
Как не стыдно вообще интернет магазину настолько наплевательски относиться к своим клиентам, ведь все в курсе что такое уязвимости, все в курсе что за ними следует... xss строке поиска (facepalm)
 
  • Нравится
Реакции: Shadow User
H11

H11

Member
02.02.2020
10
4
Считается ли это работой по РУ / СНГ или все в рамках приличия?)

Круто!
 
explorer

explorer

Red Team
05.08.2018
821
1 739
Считается ли это работой по РУ / СНГ или все в рамках приличия?)

Круто!
В рамках приличия не указывать данные ресурса. Целый месяц прошёл, а уязвимости даже не попытались исправить. И на удивление такое отношение владельцев ресурсов встречал уже не раз.

254135.png
 
  • Нравится
Реакции: Vertigo
Justnik

Justnik

Member
27.02.2020
9
0
Делать нечего, решил написать им. Якобы базу уже сперли, а им все весело, обещают закрыть ахахахаххаха
 

Вложения

Sombrero

Sombrero

Active member
23.09.2019
38
3
Продолжайте в том же духе и они перейдут к угрозам . А возможно и к судебному преследованию .
Вот тут , допустим , кейс про программу Open Bug Bounty :

Если вкрадце , положительный результат и вознаграждение от владельца сайта можно получить меньше чем в 1% случаев . При этом , скорее всего , вас будут считать вымогателем .
 
swagcat228

swagcat228

Grey Team
19.12.2019
222
51
На сайте все еще не прикрыли уязвимости, так что вы сможете увидеть и потрогать их "вживую" - . Рассказываю я о них потому, что владелец не захотел нормально общаться, сначала заигнорив на почте, а потом и вовсе добавив меня в ЧС во ВКонтакте, ссылаясь на то, что пентестестом займется их программист (ну что ж, думаю, у него все получится).
Посмотреть вложение 38497
Ссылка на профиль дамы во ВКонтакте - Александра Александровна
Привязанный к странице номер телефона - +79787490741
Посмотреть вложение 38498
Начать следует с того, как был найден вышеназванный магазин с техникой от компании Xiaomi. А найден он был очень просто - через рекламу на Youtube. Я зашел на видеохостинг, вбил в поиске "Xiaomi Gaming Laptop" (уж очень мне захотелось заменить свой старый ПК на что - то более мобильное и производительное) и под третьим видео в топе обнаружил ссылку на магазин:
Посмотреть вложение 38499
Это была реклама. А на рекламные ссылки я смотрю с интересом - порой, кроме приевшихся вставок про танки, самолеты, ставки на спорт и прочее, встречается что - нибудь необычное и даже интересное. Конечно же, такие проекты никогда не стоит рассматривать всерьез - однако, иногда, с них можно попробовать самим извлечь прибыль - неформально.
К сожалению, зайдя на сайт, я не испытал ничего, кроме чувства тоски, - высокие цены и скудный дизайн будто бы говорили мне покинуть его как можно скорее.
Посмотреть вложение 38500
Я решил пойти дальше и удостоверившись в том, что он написан без использования новомодных фреймворков, я даже немного воодушевился и принялся искать баги, уже предвкушаю возможную выплату, частично покрывающую покупку нового ноутбука.
Первое, что сразу бросается в глаза - строка поиска. Я привык к тому, что, как правило, разработчики хоть бы немного осведомлены в области безопасности Web-приложений и не допускают оплошностей на главной странице сайта. Но я рискнул и вставил простейший пейлоад:
"><script>alert("[USER=146120]@CYBRED[/USER]")</script>
Нажал кнопку поиска. Секунда, страница обновляется и... первая уязвимость найдена - XSS!
Посмотреть вложение 38501
Стоит также отметить, что при серфинге по сайту, результаты внедрения HTML-кода сохранялись - каждый раз, переходя на новую страницу, я встречал свой порно-alert-баннер.
Переходим к регистрации на сайте. Форма выглядит так:
Посмотреть вложение 38502
Ничего не бросается в глаза? - reCaptcha. Судя по тому, как аляписто выглядит сайт, я не был бы удивлен, если бы она была неправильно настроена. Чтобы убедиться в этом, я заполняю поля, отправляю запрос и перехватываю его при помощи Burp Suite.
Посмотреть вложение 38503
Стираю значение ключа "g-recaptcha-response" и пробую отправить запрос:
Посмотреть вложение 38504
Результат? Как вы уже видите, - Success!
Код:
{
   "success":{
       "id":399,
       "modal":"codeConfimForm",
       "text":"<h4>Нужно подвтерждение номера телефона</h4> <span>Пожалуйста, введите код из смс в следующем окне.</span>"
   }
}
Перед тем, как перейти к форме с подтверждением номера телефона, меня заинтересовало сообщение, пришедшее на электронную почту:
Посмотреть вложение 38505
Увидев его, мне сразу же в голову пришла мысль - что, если значение поля пароль (а, возможно, и не только оно), вообще никак не фильтруется? Судя по тому, что я уже видел ранее, это возможно с большой долей вероятности.
Итак, теперь я регистрирую аккаунт с немного другими данными, а в качестве пароля указываю:
password123"
Please follow the link:
Посмотреть вложение 38506
Отправляю запрос, смотрю на пришедшее письмо и...
Посмотреть вложение 38507
Бинго! Отсутствие фильтрации пароля открывает возможность DOS (отправляя очень длинную строку), либо возможность устроить масштабную фишинговую атаку на заранее заготовленный список Email-адресов.
Сразу после того, как мы мы зарегистрировали аккаунт, на сайте появляется всплавающее окно с просьбой ввести пришедший на телефон код для подтверждения регистрации - без его ввода мы не сможем продолжить работу на сайте.
Посмотреть вложение 38508
Как вы помните, я указывал номер - +79999999998. Конечно же его у меня нет - придется искать следующую уязвимость. Ранее, перед тем, как начать писать статью, я уже на временном номере удостоверился в том, что код всегда состоит из 4-цифр. Осталось удостовериться в наличие No Rate Limit.
Для этого вводим код, нажимаем на кнопку "Отправить". Перехватываем запрос при помощи Burp и направляем его в Intruder.
Посмотреть вложение 38509
На следующей вкладке выбираем:
Payload Type - Number,
Диапазон - от 1000 до 9999

Посмотреть вложение 38510
И запускаем атаку!
Остается ждать ответ, отличный от
Код:
{
   "error":{
       "field":"code",
       "text":"Неверный код!"
   }
}
Это не долго, спустя пару минут меня радует следующий результат:
Посмотреть вложение 38511
Код:
{
   "success":{
       "text":"<h4>Вы успешно подтвердили аккаунт!</h4> <span>Можете выполнить вход.</span>",
       "modal":"loginForm"
   }
}
Выполняем вход и видим, что номер успешно привязан к аккаунту:
Посмотреть вложение 38512
В настройках, помимо личных данных, отображается адрес доставки, который можно самостоятельно задать в разделе "Настройки" - это отличный повод проверить наличие Stored XSS!
Вставляю следующий пэйлоад:
Посмотреть вложение 38513
Возвращаюсь в "Обзор" и встречаю это:
Посмотреть вложение 38514
Как можно заметить, в личном кабинете имеется возможность отправить заявку на оформление бонусной карты - я уверен, там также, наверняка, есть Blind XSS. Но мне уже не хочется регистрировать аккаунт на XSSHunter, так как это не имеет дальнейшего смысла (ведь профита я уже не получу за эту уязвимость - верно?).
Помимо этого, на страницах с товарами существует Blind SQLi, которую ни я, ни SQLMap, не смогли раскрутить. Вот вам ссылочка:

Эту статью можно продолжать практически бесконечно - названы не все уязвимости, с которыми мне удалось столкнуться. Я не удивлюсь, увидев спустя пару минут, после публикации статьи, дефейс этого сайта. Я очень сильно удивлен, как с таким наплевательским отношением, он продержался до сегодняшнего дня.
интересная статья. только лежит в паблике. что есть не безопасно для кодеби.
 
  • Нравится
Реакции: Vertigo
Мы в соцсетях: