Оценить канал postimpact и оставить отзыв — могут только зарегестрированные пользователи. Все отзывы проходят модерацию.
5 звезд
0
4 звезд
1
3 звезд
0
2 звезд
0
1 звезд
1
Последние сообщения 2
2022-08-09 19:50:59
#mobile #deeplink
Наливайте чай, устраивайтесь поудобнее. Расскажу вам сказ, о том как нашёл уязвимость в мобильном приложении от PayPal https://hackerone.com/paypal?type=team А именно речь пойдёт об их активе com.venmo В одно прекрасное утро, как обычно, решил закинуть apk в jadx, чтобы найти уязвимость.
Просматривая строки кода, один класс, второй... Ничего интересного. Тут уж я расстроился, думал перейти к следующему активу, но мой глаз зацепился за класс webview. Да-да, там была интересная функция которая автоматически присваивала AuthorizationToken при загрузке страницы в WebView. Естественно можно было отправить url прямо в класс через deeplink venmo://webview?url=https://www.google.com/
Вот только там была проверка хоста. — Возможно она реализована неверно. Подумал я вслух.
А код проверки был следующим: public static boolean isSecureVenmoHostUrl(Uri uri) { boolean z = false; if (uri == null) { return false; } String host = uri.getHost(); String scheme = uri.getScheme(); if (host != null && scheme != null && scheme.equalsIgnoreCase(BuildConfig.SCHEME) && (host.endsWith(".venmo.com") || host.equals("venmo.com") || host.endsWith("venmo.biz"))) { z = true; } return z; } Вам даётся 5 секунд, на то чтобы найти ошибку. 5 4 Верно, здесь забыли добавить точку host.endsWith("venmo.biz")
Недолго думая, я решил организовать PoC и проверить: PoC Intent Send К моему удивлению, url был успешно загружен и мне удалось украсть Authorization токен. Радостный (конечно, ведь баунти 10к$) начал писать отчёт на hackerone. Потирая руки, приговаривая: — Триагер приди, триагер приди
Триагер пришёл. Поставил Triage. Ура! А потом поменял на Duplicate. Указав что у них уже есть отчёт с этой ошибкой 401940 . Моему негодованию не было предела.
Спустя год или два. PayPal наконец-то исправили приложение. Внеся невероятный Fix: host.endsWith(".venmo.biz") Верно, они добавили точку. — Теперь пользователи PayPal в безопасности. Сказал вслух, закатывая глаза.
Однако, они по прежнему присваивают AuthorizationToken при загрузке url в webview. Нужно запомнить это знание.
Спустя два года, в мои цепкие лапы попала xss на поддомене .venmo.com Недолго думая, составил deeplink venmo://webview?url=https://legal.venmo.com/index.php?p=