Fuck the Logic. Три исследования логических багов, получившие Pentest Award - «Новости» » Самоучитель CSS
Меню
Наши новости
Учебник CSS

Невозможно отучить людей изучать самые ненужные предметы.

Введение в CSS
Преимущества стилей
Добавления стилей
Типы носителей
Базовый синтаксис
Значения стилевых свойств
Селекторы тегов
Классы
CSS3

Надо знать обо всем понемножку, но все о немногом.

Идентификаторы
Контекстные селекторы
Соседние селекторы
Дочерние селекторы
Селекторы атрибутов
Универсальный селектор
Псевдоклассы
Псевдоэлементы

Кто умеет, тот делает. Кто не умеет, тот учит. Кто не умеет учить - становится деканом. (Т. Мартин)

Группирование
Наследование
Каскадирование
Валидация
Идентификаторы и классы
Написание эффективного кода

Самоучитель CSS

Вёрстка
Изображения
Текст
Цвет
Линии и рамки
Углы
Списки
Ссылки
Дизайны сайтов
Формы
Таблицы
CSS3
HTML5

Новости

Блог для вебмастеров
Новости мира Интернет
Сайтостроение
Ремонт и советы
Все новости

Справочник CSS

Справочник от А до Я
HTML, CSS, JavaScript

Афоризмы

Афоризмы о учёбе
Статьи об афоризмах
Все Афоризмы

Видео Уроки


Наш опрос



Наши новости

       
2-10-2023, 00:00
Fuck the Logic. Три исследования логических багов, получившие Pentest Award - «Новости»
Рейтинг:
Категория: Новости

Pentest Award — пре­мии для спе­циалис­тов по тес­тирова­нию на про­ник­новение, которую учре­дила ком­пания Awillix. Мы пуб­лику­ем луч­шие работы из каж­дой номина­ции.

 

Четвертое место: «Уязвимость переполнения целочисленной переменной и возможность без ограничений выводить средства на криптокошелек»



  • Ав­тор: arteb123

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


При этом ненуле­вое отри­цатель­ное зна­чение сче­та поз­воляло соз­дать вауче­ры с уже положи­тель­ной сум­мой валюты и неог­раничен­но вывес­ти внут­реннюю валюту на внеш­ний крип­токоше­лек. Для это­го недоб­росовес­тно­му поль­зовате­лю было дос­таточ­но обна­личить вауче­ры на вто­ром соз­данном акка­унте.


При­мер экс­плу­ата­ции выг­лядел сле­дующим обра­зом. Во вре­мя вывода средств из лич­ного кабине­та с помощью одной из крип­товалют соз­дает­ся тикет с ука­зани­ем сум­мы (с рас­четом комис­сии) и внеш­него крип­токошель­ка.


При этом ука­зан­ная сум­ма для вывода средств дол­жна была быть целочис­ленной и не быть мень­ше нуля или рав­ной нулю.


Тем не менее при обра­бот­ке зап­росов на сто­роне сер­вера была допуще­на ошиб­ка: зна­чение перемен­ной cashpoints, с помощью которой умень­шалось зна­чение сум­мы сче­та на акка­унте, поз­воляло передать зна­чение, пре­выша­ющее зна­чение int.


В резуль­тате этой ошиб­ки при отправ­ке зап­роса на вывод средств на сер­вер мож­но было передать очень боль­шое зна­чение перемен­ной cashpoints. Это про­изво­дило перепол­нение целочис­ленно­го зна­чения сче­та и делало его отри­цатель­ным (при этом в интерфей­се зна­чение сче­та отоб­ражалось как положи­тель­ное).


Fuck the Logic. Три исследования логических багов, получившие Pentest Award - «Новости»

Так как зап­рос на вывод средств на крип­токоше­лек тре­бовал положи­тель­ного зна­чения, а счет был отри­цатель­ным, необ­ходимо было при­думать, как все же получить плюс. Так мы наш­ли фун­кцию соз­дания вауче­ров на сай­те. Она поз­воля­ет переда­вать дру­гому поль­зовате­лю код для попол­нения сче­та. При этом про­вер­ки на отри­цатель­ное зна­чение сче­та не про­исхо­дит.


Соз­даем вауче­ры с ука­зани­ем сум­мы по ссыл­ке:


https://example.com/account/voucher/create

При этом сум­ма отри­цатель­ного сче­та акка­унта уве­личи­вает­ся на это зна­чение.


Соз­даем вто­рой акка­унт и при­меня­ем соз­данные вауче­ры:


https://example.com/account/voucher/redeem

В резуль­тате зна­чение сче­та акка­унта уве­личе­но на сум­му, соот­ветс­тву­ющую вауче­ру.


Соз­даем тран­закцию, что­бы вывес­ти день­ги на внеш­ний крип­токоше­лек:


https://example.com/withdraw/withdrawBalanceInstan>t

В резуль­тате получа­ем крип­товалю­ту.


Так мож­но было бес­конеч­но соз­давать вауче­ры, обна­личи­вать их на вто­ром акка­унте и выводить день­ги.


 

Вывод


Ис­поль­зуя най­ден­ную цепоч­ку уяз­вимос­тей, мы для демонс­тра­ции вывели средс­тва, экви­вален­тные 8,26 и 4,13 дол­лара США. При этом пер­воначаль­ный баланс обо­их акка­унтов был равен нулю и попол­нения кошель­ков не про­изво­дилось.


Для вла­дель­цев сай­та такая уяз­вимость — пря­мой риск финан­совых потерь. Кра­жа средств поч­ти мгно­вен­на и необ­ратима.


Для устра­нения уяз­вимос­ти мы пореко­мен­довали про­верять дли­ну вход­ных дан­ных и откло­нять тран­закцию при слиш­ком боль­шом зна­чении перемен­ной. Для уяз­вимос­ти с соз­дани­ем вауче­ров — про­верять зна­чение балан­са сче­та на отри­цатель­ное зна­чение.


 

Третье место: «Захват любого аккаунта в мессенджере»



  • Ав­тор: Денис Погонин, @Danr0

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


При­ложе­ние дос­тупно в виде вер­сий для iOS и Android, как вари­ант мож­но исполь­зовать веб‑интерфейс. На момент написа­ния этой статьи толь­ко на Android нас­читыва­ется более мил­лиона заг­рузок. Вер­сия для iOS вхо­дит в топ-200 самых популяр­ных при­ложе­ний для обще­ния в App Store.


Ана­лиз прог­раммы про­изво­дил­ся методом чер­ного ящи­ка — на осно­ве пуб­лично дос­тупных при­ложе­ний и веб‑кли­ента. При ана­лизе при­ложе­ний я обна­ружил хорошо нас­тро­енный SSL Pinning. На Android его уда­лось час­тично обой­ти с помощью кас­томиза­ции скрип­тов Frida. На iOS раз­работ­чики исполь­зовали пос­ледние вер­сии защит­ных фун­кций, обхо­да для которых пока что нет.


Глав­ной проб­лемой при иссле­дова­нии ста­ло то, что при­ложе­ние исполь­зовало gRPC (на осно­ве Protobuf) для обще­ния с сер­вером. Пос­коль­ку тес­тирова­ние про­исхо­дило методом чер­ного ящи­ка, proto-фай­ла с опи­сани­ем струк­тур у меня не было. Поэто­му все най­ден­ные уяз­вимос­ти были обна­руже­ны в про­цес­се руч­ного ана­лиза proto-зап­росов.


Что­бы работать gRPC, я исполь­зовал рас­ширение Blackbox Protobuf для Burp Suite. Одна­ко вер­сия из репози­тория некор­рек­тно пар­сила поля зап­росов. Что­бы зас­тавить ее нор­маль­но работать, приш­лось модифи­циро­вать рас­ширение, добавить сооб­щени­ям новый заголо­вок и изме­нить алго­ритм пар­синга поля Additional Data в gRPC.


Pentest Award — пре­мии для спе­циалис­тов по тес­тирова­нию на про­ник­новение, которую учре­дила ком­пания Awillix. Мы пуб­лику­ем луч­шие работы из каж­дой номина­ции. Четвертое место: «Уязвимость переполнения целочисленной переменной и возможность без ограничений выводить средства на криптокошелек» Ав­тор: arteb123 При иссле­дова­нии при­ложе­ния мы наш­ли уяз­вимость в фун­кции вывода средств из лич­ного кабине­та. Баг зак­люча­ется в перепол­нении целочис­ленной перемен­ной, что поз­воляло получить отри­цатель­ное зна­чение сче­та. При этом ненуле­вое отри­цатель­ное зна­чение сче­та поз­воляло соз­дать вауче­ры с уже положи­тель­ной сум­мой валюты и неог­раничен­но вывес­ти внут­реннюю валюту на внеш­ний крип­токоше­лек. Для это­го недоб­росовес­тно­му поль­зовате­лю было дос­таточ­но обна­личить вауче­ры на вто­ром соз­данном акка­унте. При­мер экс­плу­ата­ции выг­лядел сле­дующим обра­зом. Во вре­мя вывода средств из лич­ного кабине­та с помощью одной из крип­товалют соз­дает­ся тикет с ука­зани­ем сум­мы (с рас­четом комис­сии) и внеш­него крип­токошель­ка. При этом ука­зан­ная сум­ма для вывода средств дол­жна была быть целочис­ленной и не быть мень­ше нуля или рав­ной нулю. Тем не менее при обра­бот­ке зап­росов на сто­роне сер­вера была допуще­на ошиб­ка: зна­чение перемен­ной cashpoints, с помощью которой умень­шалось зна­чение сум­мы сче­та на акка­унте, поз­воляло передать зна­чение, пре­выша­ющее зна­чение int. В резуль­тате этой ошиб­ки при отправ­ке зап­роса на вывод средств на сер­вер мож­но было передать очень боль­шое зна­чение перемен­ной cashpoints. Это про­изво­дило перепол­нение целочис­ленно­го зна­чения сче­та и делало его отри­цатель­ным (при этом в интерфей­се зна­чение сче­та отоб­ражалось как положи­тель­ное). Так как зап­рос на вывод средств на крип­токоше­лек тре­бовал положи­тель­ного зна­чения, а счет был отри­цатель­ным, необ­ходимо было при­думать, как все же получить плюс. Так мы наш­ли фун­кцию соз­дания вауче­ров на сай­те. Она поз­воля­ет переда­вать дру­гому поль­зовате­лю код для попол­нения сче­та. При этом про­вер­ки на отри­цатель­ное зна­чение сче­та не про­исхо­дит. Соз­даем вауче­ры с ука­зани­ем сум­мы по ссыл­ке: https:/ / example. com/ account/ voucher/ create При этом сум­ма отри­цатель­ного сче­та акка­унта уве­личи­вает­ся на это зна­чение. Соз­даем вто­рой акка­унт и при­меня­ем соз­данные вауче­ры: https:/ / example. com/ account/ voucher/ redeem В резуль­тате зна­чение сче­та акка­унта уве­личе­но на сум­му, соот­ветс­тву­ющую вауче­ру. Соз­даем тран­закцию, что­бы вывес­ти день­ги на внеш­ний крип­токоше­лек: https:/ / example. com/ withdraw/ withdrawBalanceInstan

Теги: CSS

Просмотров: 212
Комментариев: 0:   2-10-2023, 00:00
Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь. Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

 
Еще новости по теме:



Другие новости по теме: