TGViewer
Пост Импакта Пост Импакта @postimpact · 2.48K subscribers
Post #8 2.36K
#mobile #intent

Когда у нас проходит пентест, на активах иногда обнаруживаются уязвимости одного типа. Чаще всего такие находки также воспроизводятся, имеют одинаковое происхождение и один исходный код. Например: на сайте есть множество полей, которые можно заполнить различными данными, и рядом с каждым полем есть кнопка "сохранить".
А теперь представьте, что каждое поле уязвимо к XSS. "Почему?" - спросите вы.
— Да потому, что каждое поле пусть и имеет разные конечные точки, функция отвечающая за санитизацию параметров у них одна santizeField(input)
В итоге мы наблюдаем в отчёте (особенно когда пентест whitebox), множество и множество разных url адресов, для совершенно разных полей и параметров.
Нельзя упустить ничего, вдруг к одному из url назначена другая функция и пиши пропало. Спасибо пентестеру, что перечислил все.
Или вот, пример, когда XSS одна, а CNAME для этого домена — много https://securitytrails.com/list/cname/tilda.ws

Но лучше вернуться к мобильным приложениям, ибо канал не для веб разработчиков. Что исследователю, который с помощью технологии drag&drop переместил apk в декомпилятор, хочется увидеть больше всего в результате?

Есть такое приложение Mercado Pago, оно предназначено для совершения онлайн платежей пользователями из Латинской Америки.
Платежи — дело важное, нужно защищать пользователей и их средства. Поэтому, для улучшения своих процессов AppSec, компанией было принято решение запустить программу BugBounty. Ну и выложили они там своё мобильное приложение.

Давайте вместе посмотрим из чего оно состоит. Открываем AndroidManifest.xml
Загружается...
<activity android:name="com.mercadopago.activitiesdetail.activities.NewOperationDetailActivity" android:exported="true">
<activity android:name="com.mercadopago.android.google.connect.core.webview.WebviewActivity" android:exported="true">
<activity android:name="com.mercadopago.withdraw.activities.SecondPassActivity" android:exported="true">
<activity android:name="com.mercadopago.withdraw.activities.WebviewActivity" android:exported="true">
<activity android:name="com.mercadopago.withdraw.activities.AddBankAccountActivity" android:exported="true">
<activity android:name="com.mercadopago.withdraw.activities.SelectBankAccountActivity" android:exported="true">
<activity android:name="com.mercadopago.withdraw.activities.SecondPassActivity" android:exported="true">
...+90
— Невероятно, я не сплю? Это какая-то дичь, 100 экспортированных активностей!, и все они общаются постоянно между собой с помощью android.content.Intent?
Не может быть такого. Наверное, сейчас открою классы и в итоге там внутри окажется заглушка для флаттера.

На самом деле - действительно, вся логика приложения написана на Java (Kotlin).
Все эти 10 разных активити отвечающие за разные webview, открываются с помощью deeplink вида mercadopago://wallet?url=http://google.com
Естественно, я начал писать отчёты в компанию о Невероятной Угрозе Информационной Безопасности Пользователей, каждому отчёту присваивал Средний Уровень Серьёзности , и описывал насколько велика угроза фишинга в виде открытой страницы внутри платёжного приложения.
Главное делать перерывы между отчётами, чтобы они не догадались о том, что уязвимости похожи.

После первого отчёта, и выплаты за него, спустя неделю, они внесли невероятный фикс для одной из десяти WebviewActivity, вот такой : android:exported="false"
Затем, как можно более аккуратно, отправлял один отчёт за другим.
"Золотая жила! Больше мне не придётся работать." — подумал я.

Но жизнь не так проста, после нескольких отчётов они догадались и сразу внесли исправление для нескольких activity.
Проклятье! Ну и ладно, найду что-нибудь другое.
Просматривая классы, обнаружил следующий код в экспортированной активности:
  • 👍 8
More from @postimpact
  1. Jul 30, 2024Незабываемый отдых на Бали! 🌴 Хочешь полететь на Бали, поплавать в море и окунуться в атм…
  2. Apr 16, 2024Спасибо @ValyaRoller за приглашение на подкаст! Подписывайтесь на его замечательный канал…
  3. Apr 16, 2024В нашем новом выпуске мы пригласили человека из мира мобильного багхантинга, активного уча…
  4. Mar 7, 2024Новая статья в блоге PT SWARM про раскрытие исходного кода asp[.]net приложений https://sw…
  5. Feb 1, 20243️⃣, 2️⃣, 1️⃣ — поехали! Открываем прием заявок на выступления на киберфестивале Positive…
  6. Dec 18, 2023📁Отслеживаем изменения в файлах JS Недавно было раскрыто несколько отчетов (например тут…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →