Получи случайную криптовалюту за регистрацию!

#mobile #intent Когда у нас проходит пентест, на активах иног | Пост Импакта

#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
Загружается...







...+90
— Невероятно, я не сплю? Это какая-то дичь, 100 экспортированных активностей!, и все они общаются постоянно между собой с помощью android.content.Intent?
Не может быть такого. Наверное, сейчас открою классы и в итоге там внутри окажется заглушка для флаттера.

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

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

Но жизнь не так проста, после нескольких отчётов они догадались и сразу внесли исправление для нескольких activity.
Проклятье! Ну и ладно, найду что-нибудь другое.
Просматривая классы, обнаружил следующий код в экспортированной активности: