• XSS.stack #1 – первый литературный журнал от юзеров форума

Статья Пример взлома mi-xx.ru (баги XSS, Blind SQLi)

top

(L3) cache
Пользователь
Регистрация
03.02.2020
Сообщения
252
Реакции
342
На сайте все еще не прикрыли уязвимости, так что вы сможете увидеть и потрогать их "вживую" - https://mi-xx.ru. Рассказываю я о них потому, что владелец не захотел нормально общаться, сначала заигнорив на почте, а потом и вовсе добавив меня в ЧС во ВКонтакте, ссылаясь на то, что пентестестом займется их программист (ну что ж, думаю, у него все получится).

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

b5c28e189f3e1bcb27904.png


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

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

1b0f6e051f9e13a1ab466.png

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

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

9502f5553c82ff8465a35.png

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

Переходим к регистрации на сайте. Форма выглядит так:
a7ccd15ba4c5889663a08.png

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

808e05e4bc479b724d274.png

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

e6d8024ca9b50b5374d37.png

Результат? Как вы уже видите, - Success!
Код:
    {

       "success":{

           "id":399,

           "modal":"codeConfimForm",

           "text":"<h4>Нужно подвтерждение номера телефона</h4> <span>Пожалуйста, введите код из смс в следующем окне.</span>"

       }

    }
Перед тем, как перейти к форме с подтверждением номера телефона, меня заинтересовало сообщение, пришедшее на электронную почту:

ae52de29e8b08e9b034d3.png

Увидев его, мне сразу же в голову пришла мысль - что, если значение поля пароль (а, возможно, и не только оно), вообще никак не фильтруется? Судя по тому, что я уже видел ранее, это возможно с большой долей вероятности.

Итак, теперь я регистрирую аккаунт с немного другими данными, а в качестве пароля указываю:
Код:
password123"
Please follow the link: https://google.com
54372292d1894910b7051.png

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

9980bcd349ad3095369cf.png

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

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

3d0f6d664386e86c50530.png

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

Для этого вводим код, нажимаем на кнопку "Отправить". Перехватываем запрос при помощи Burp и направляем его в Intruder.

acc50127c139df23eff52.png

На следующей вкладке выбираем:

Payload Type - Number,

Диапазон - от 1000 до 9999


32dc038fc43b6480f996d.png

И запускаем атаку!

Остается ждать ответ, отличный от
Код:
    {

       "error":{

           "field":"code",

           "text":"Неверный код!"

       }

    }
Это не долго, спустя пару минут меня радует следующий результат:

7c95752d7599cbcf9fc5d.png

Код:
    {

       "success":{

           "text":"<h4>Вы успешно подтвердили аккаунт!</h4> <span>Можете выполнить вход.</span>",

           "modal":"loginForm"

       }

    }
Выполняем вход и видим, что номер успешно привязан к аккаунту:

6752a9b44b24908017479.png

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

Вставляю следующий пэйлоад:

52f3e9081ab41ec864933.png

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

04f5da7f81d23a06939b0.png

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

Помимо этого, на страницах с товарами существует Blind SQLi, которую ни я, ни SQLMap, не смогли раскрутить. Вот вам ссылочка:
Код:
https://mi-xx.ru/remeshki-dlja-fitnes-brasletov?max_price=690&min_price=250&options[318][]=1&options[31][]=2243&options[342][]=2552&options[350][]=2583&options[351][]=2585&options[352][]=2573&options[777][]=4016

Автор: Moody
взято с канала @ Cybred
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх