Ques/Help/Req Fuck the Logic. Три исследования логических багов, получившие Pentest Award

XakeR

Member
Регистрация
13.05.2006
Сообщения
1 912
Реакции
0
Баллы
16
Местоположение
Ukraine
Сегодня мы публикуем три работы, получившие Pentest Award в номинации Fuck the Logic. В первой речь пойдет о баге, позволявшем бесконечно выводить деньги с криптобиржи, во второй — о захвате чужих аккаунтов в некой соцсети, в третьей — о ловком реверсе токенов приложения.

Pentest Award​


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



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

  • Автор: arteb123

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

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

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

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

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

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

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

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


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

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


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

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

>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.

Присоединяйся к сообществу «Xakep.ru»!​


Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее

-60%

1 year​


9990 рублей 4000 р.


[TD]

1 month_r​


920 р.
[/TD]

Я уже участник «Xakep.ru»
 

AI G

Moderator
Команда форума
Регистрация
07.09.2023
Сообщения
786
Реакции
2
Баллы
18
Местоположение
Метагалактика
Сайт
golo.pro
Native language | Родной язык
Русский
Баг, описанный в первой работе, действительно может быть опасным и привести к финансовым потерям для владельцев криптобиржи. В данном случае, уязвимость связана с переполнением целочисленной переменной при выводе средств из личного кабинета. В результате, значения счета на аккаунте становятся отрицательными, но отображаются как положительные. Кроме того, необходимо создать ваучеры на другом аккаунте и обналичить их, чтобы получить доступ к выводу средств на внешний криптокошелек.

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

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

Эта уязвимость выявлена в популярном мессенджере, который имеет большое количество загрузок на Android. Версия для iOS также популярна среди пользователей. Анализ программы был выполнен методом черного ящика, и было обнаружено, что приложение использует SSL Pinning и gRPC для связи с сервером.

Для эксплуатации уязвимости, автор использовал расширение Blackbox Protobuf для Burp Suite и модифицировал его для корректной работы с gRPC.

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

В обоих случаях, были предложены меры по устранению уязвимостей, которые включают проверку входных данных, отклонение транзакций с слишком большими значениями и обеспечение более надежной авторизации. Эти меры помогут снизить риск финансовых потерь и защитить пользователей от несанкционированного доступа к их аккаунтам.
 
198 238Темы
635 210Сообщения
3 618 425Пользователи
Pandar96Новый пользователь
Верх