В данной статье я бы хотел показать как можно эксплуатировать плохо настроенный API.
Покажу на примере www.coinbaazar.com
1. Регистрируем аккаунт
2. Заходим в настройки аккаунта и смотрим что можно такого сменить дабы отловить обычный запрос, в нашем случае можно просто ник сменить.
3. Ловим такой запрос
Ловим программой (снифером) HttpAnalyzerStdV7 для меня он удобней в плане снифа WEB
4. В данном случае айди "_id" сайт воспринимает какому человеку менять, а name можно менять на что угодно, лично я сменил на userType для повышении привилегий
Как я обычно ищу переменную отвечающую за привилегию юзера ? всё просто ! снифаем момент авторизации, в этот момент сервер возвращает всю инфу об аккаунте, дальше остаётся только
поискать среди ответов то что нам надо
Теперь как скинуть нужный нам запрос на сервер, я использую Private Keeper в нём спакойно можно составить свой запрос но в есть более лёгкий вариант это дополнение к браузеру Tamper Dev
Он ловит запрос и даёт вам его изменить до отправки на сервер.
То есть вам просто надо поймать момент запроса на смену данных и добавить переменную userType и поставить нужное значение.
Получилось так...
и отсылаем на сервер любым удобным способом !!!
5. Остаётся найти админку - https://admin.coinbaazar.com/ и подключится
В моём случае Админ Панель на поддомене, для её поиска можно использовать этот сервис - https://subdomainfinder.c99.nl/ (поиск поддоменов) или этот https://suip.biz/ru/?act=subfinder
Так же можно дюпать баланс (правда бан системой сразу) менять другим юзерам почты пароли да что угодно и на что хватит фантазии...
Таких сайтов (приложений прилично встречал) везде по разному эта уязвимость действует, где то пины сменить можно без 2fa где то юзерам пароли по сносить, на всё что хватит вашей фантазии, иногда можно положить BD отправив большой обьём данных в переменой и он их сохраняет
Если кривая адмнка то можно ещё Shell пролить
Продолжаем абузить кривое API...
Возьмём другой пример, приложение на Андроид - HandyPick
Для брутфорсеров частая проблема встаёт в PIN для вывода монеток, тут рассмотрим пример как можно менять эти пины
Видим такую картину при регистрации, печаль беда, но не спешим бросать наше дело, ставим пин и продолжаем !!!
Всё так же ловим запрос на смену данных
1. Ловим запрос
----------------------------------------------
Теперь у нас приложение на телефоне и HttpAnalyzerStdV7 уже не подойдёт !!!
Для приложения я использую Fiddler 4 + NoxPlayer (эмулятор Android)
Как настроить Fiddler ?!
Во-первых, вы должны включить параметр Разрешить удаленным компьютерам подключаться в Fiddler
1. Откройте Fiddler и выберите Инструменты -> Параметры
2. Выберите вкладку Подключения
3. Установите флажок Разрешить подключение удаленных компьютеров, чтобы включить эту настройку
4. Перезапустите Fiddler, чтобы изменения вступили в силу
Fiddler теперь прослушивает порт 8888 (это порт по умолчанию, вы можете изменить его с помощью приведенных выше настроек).
Настройка устройства Android...
Как только Fiddler прослушивает, мы должны использовать его в качестве прокси-сервера в Android.
1. Откройте меню Wi-Fi.
2. Нажмите и удерживайте текущую сеть, чтобы отобразить сведения о сети
3. Выберите опцию Управление сетевыми настройками
4. Установите флажок Показывать дополнительные параметры
5. Выберите Ручной из выпадающего списка Прокси
6. Введите свой IP-адрес в поле Имя хоста прокси-сервера
7. ПРИМЕЧАНИЕ: Вы можете проверить свой IP-адрес, наведя указатель мыши на значок сетевого подключения на панели инструментов Fiddler.
8. Введите порт прослушивания Fiddler (по умолчанию 8888) в поле Порт прокси-сервера
9. Нажмите кнопку Сохранить, чтобы применить изменения
Трафик вашего устройства должен быть виден в Fiddler
При текущей настройке вы должны иметь возможность перехватывать HTTP-трафик. Однако, если вы попытаетесь открыть любой веб-сайт HTTPS, вы получите сообщение о том,
что сертификат безопасности этого сайта не является доверенным! ошибка. Чтобы исправить это, вы должны доверять корневому сертификату Fiddler.
1. В вашем браузере перейдите к http://ipv4.fiddler:8888
2. Загрузите корневой сертификат Fiddler.
3. Установите сертификат на свое устройство.
И всё теперь вы можете спокойно снифать Android приложение где нету защиты...
Так, а мы остановились на том что нам надо поймать запрос всё так же в смене никнейма в профиле
-----------------------------------------------------------------------------------------------------------------
2. Теперь идём искать как называется переменная для пин кода
Так как это наш акк для теста мы просто меняем PIN и снифаем запрос получаем pincode теперь мы знаем название переменой и идём менять
Получается вот такой POST запрос
В этом cлучае для отправки запроса лучше конечно уже использовать Private Keeper
не забываем менять ник иначе не пропустит
Запрос сменился данные поменялись, теперь идём на акк который хотим обнулить и проворачиваем систему, получаем PIN и выводим
Рассмотрим ещё способ как сменить он очень простой !!!
Когда меняется пин запрос вот такой
Как мы видим тут нету 2FA кода который идёт на почту, а значит это просто визуальная защита то есть приложение не как не отслеживает прошли мы 2fa для смены пина или нет и достаточно просто повторить запрос на смену
Если где то что вы недопоняли, я открыт для помощи, напишите мне в лс и я объясню.
Покажу на примере www.coinbaazar.com
1. Регистрируем аккаунт
2. Заходим в настройки аккаунта и смотрим что можно такого сменить дабы отловить обычный запрос, в нашем случае можно просто ник сменить.
3. Ловим такой запрос
Код:
POST
https://www.coinbaazar.com/api/v1/user/updateUserInfo
{"_id":"******3f6e2f**1e900******","name":"XSS"}
Ловим программой (снифером) HttpAnalyzerStdV7 для меня он удобней в плане снифа WEB
4. В данном случае айди "_id" сайт воспринимает какому человеку менять, а name можно менять на что угодно, лично я сменил на userType для повышении привилегий
Как я обычно ищу переменную отвечающую за привилегию юзера ? всё просто ! снифаем момент авторизации, в этот момент сервер возвращает всю инфу об аккаунте, дальше остаётся только
поискать среди ответов то что нам надо
Теперь как скинуть нужный нам запрос на сервер, я использую Private Keeper в нём спакойно можно составить свой запрос но в есть более лёгкий вариант это дополнение к браузеру Tamper Dev
Tamper Dev
Он ловит запрос и даёт вам его изменить до отправки на сервер.
То есть вам просто надо поймать момент запроса на смену данных и добавить переменную userType и поставить нужное значение.
Получилось так...
Код:
{"_id":"******3f6e2f**1e900******"","userType":"ADMIN"}
и отсылаем на сервер любым удобным способом !!!
5. Остаётся найти админку - https://admin.coinbaazar.com/ и подключится
В моём случае Админ Панель на поддомене, для её поиска можно использовать этот сервис - https://subdomainfinder.c99.nl/ (поиск поддоменов) или этот https://suip.biz/ru/?act=subfinder
Так же можно дюпать баланс (правда бан системой сразу) менять другим юзерам почты пароли да что угодно и на что хватит фантазии...
Таких сайтов (приложений прилично встречал) везде по разному эта уязвимость действует, где то пины сменить можно без 2fa где то юзерам пароли по сносить, на всё что хватит вашей фантазии, иногда можно положить BD отправив большой обьём данных в переменой и он их сохраняет
Если кривая адмнка то можно ещё Shell пролить
Продолжаем абузить кривое API...
Возьмём другой пример, приложение на Андроид - HandyPick
Для брутфорсеров частая проблема встаёт в PIN для вывода монеток, тут рассмотрим пример как можно менять эти пины
Видим такую картину при регистрации, печаль беда, но не спешим бросать наше дело, ставим пин и продолжаем !!!
Всё так же ловим запрос на смену данных
1. Ловим запрос
----------------------------------------------
Код:
POST
https://appapi.handypick.io/user/update
{"id":347***1,"picture":null,"nickname":"UUFh4isdfs","bio":""}
Теперь у нас приложение на телефоне и HttpAnalyzerStdV7 уже не подойдёт !!!
Для приложения я использую Fiddler 4 + NoxPlayer (эмулятор Android)
Как настроить Fiddler ?!
Во-первых, вы должны включить параметр Разрешить удаленным компьютерам подключаться в Fiddler
1. Откройте Fiddler и выберите Инструменты -> Параметры
2. Выберите вкладку Подключения
3. Установите флажок Разрешить подключение удаленных компьютеров, чтобы включить эту настройку
4. Перезапустите Fiddler, чтобы изменения вступили в силу
Fiddler теперь прослушивает порт 8888 (это порт по умолчанию, вы можете изменить его с помощью приведенных выше настроек).
Настройка устройства Android...
Как только Fiddler прослушивает, мы должны использовать его в качестве прокси-сервера в Android.
1. Откройте меню Wi-Fi.
2. Нажмите и удерживайте текущую сеть, чтобы отобразить сведения о сети
3. Выберите опцию Управление сетевыми настройками
4. Установите флажок Показывать дополнительные параметры
5. Выберите Ручной из выпадающего списка Прокси
6. Введите свой IP-адрес в поле Имя хоста прокси-сервера
7. ПРИМЕЧАНИЕ: Вы можете проверить свой IP-адрес, наведя указатель мыши на значок сетевого подключения на панели инструментов Fiddler.
8. Введите порт прослушивания Fiddler (по умолчанию 8888) в поле Порт прокси-сервера
9. Нажмите кнопку Сохранить, чтобы применить изменения
Трафик вашего устройства должен быть виден в Fiddler
При текущей настройке вы должны иметь возможность перехватывать HTTP-трафик. Однако, если вы попытаетесь открыть любой веб-сайт HTTPS, вы получите сообщение о том,
что сертификат безопасности этого сайта не является доверенным! ошибка. Чтобы исправить это, вы должны доверять корневому сертификату Fiddler.
1. В вашем браузере перейдите к http://ipv4.fiddler:8888
2. Загрузите корневой сертификат Fiddler.
3. Установите сертификат на свое устройство.
И всё теперь вы можете спокойно снифать Android приложение где нету защиты...
Так, а мы остановились на том что нам надо поймать запрос всё так же в смене никнейма в профиле
Код:
POST
https://appapi.handypick.io/user/update
{"id":347***1,"picture":null,"nickname":"UUFh4isdfs","bio":""}
2. Теперь идём искать как называется переменная для пин кода
Так как это наш акк для теста мы просто меняем PIN и снифаем запрос получаем pincode теперь мы знаем название переменой и идём менять
Получается вот такой POST запрос
Код:
POST
https://appapi.handypick.io/user/update
{"id":34***31,"picture":null,"nickname":"UUFh4isq","bio":"","pincode":"222222"}
В этом cлучае для отправки запроса лучше конечно уже использовать Private Keeper
не забываем менять ник иначе не пропустит
Код:
"results":1
Запрос сменился данные поменялись, теперь идём на акк который хотим обнулить и проворачиваем систему, получаем PIN и выводим
Рассмотрим ещё способ как сменить он очень простой !!!
Когда меняется пин запрос вот такой
Код:
POST
https://appapi.handypick.io/user/change-pincode
{"email":"******@songsign.com","new_pincode":"111111"}
Как мы видим тут нету 2FA кода который идёт на почту, а значит это просто визуальная защита то есть приложение не как не отслеживает прошли мы 2fa для смены пина или нет и достаточно просто повторить запрос на смену
Если где то что вы недопоняли, я открыт для помощи, напишите мне в лс и я объясню.
Последнее редактирование:
