#mobile #deeplink
Если вы нашли XSS на сайте, но у неё низкий impact — не удаётся "украсть" аккаунт жертвы или актив вне скоупа.
Вам стоит поискать мобильное приложение, которое содержит WebView функциональность и присваивает токен при открытии страницы.
Возьмём для примера приложение от PayPal.
Открыв его в декомпиляторе можно найти функцию около webview функциональности
boolean isSecureVenmoHostUrl(Uri uri)
Внутри неё обнаруживаем хосты
host.endsWith(".venmo.com") || host.equals("venmo.com") || host.endsWith(".venmo.biz")
Теперь нужно проверить возможно ли передать свой url в класс webview.
Если да, составляем полезную нагрузку: <a href="venmo://webview?url=https://legal.venmo.com/index.php?p=<svg>">PoC Send</a>
Это был пример как поднять xss, до чего-то существенного. При открытии ссылки, возможно украсть access_token и получить доступ к платежам пользователя.
Такая же функциональность в приложении TripAdvisor:
Pattern f30622a = Pattern.compile("^(?:https?\\:\\/\\/(?:[A-Za-z0-9_\\-]+\\.(dhcp(\\-[A-Za-z]+)?\\.([A-Za-z0-9_\\-]+\\.corp\\.)?|(nw\\.)?dev(\\-[A-Za-z]+)?\\.|cmc\\.|d\\.)?)?tripadvisor\\.(?:com|(?:[a-z]{2})|(??:co|com)\\.[a-z]{2})))?\\/.*$");
В перечисленных случаях выше, разработчики исправляют только xss, поэтому вы всё ещё можете это воспроизвести.
Если вы нашли XSS на сайте, но у неё низкий impact — не удаётся "украсть" аккаунт жертвы или актив вне скоупа.
Вам стоит поискать мобильное приложение, которое содержит WebView функциональность и присваивает токен при открытии страницы.
Возьмём для примера приложение от PayPal.
Открыв его в декомпиляторе можно найти функцию около webview функциональности
boolean isSecureVenmoHostUrl(Uri uri)
Внутри неё обнаруживаем хосты
host.endsWith(".venmo.com") || host.equals("venmo.com") || host.endsWith(".venmo.biz")
Теперь нужно проверить возможно ли передать свой url в класс webview.
Если да, составляем полезную нагрузку: <a href="venmo://webview?url=https://legal.venmo.com/index.php?p=<svg>">PoC Send</a>
Это был пример как поднять xss, до чего-то существенного. При открытии ссылки, возможно украсть access_token и получить доступ к платежам пользователя.
Такая же функциональность в приложении TripAdvisor:
Pattern f30622a = Pattern.compile("^(?:https?\\:\\/\\/(?:[A-Za-z0-9_\\-]+\\.(dhcp(\\-[A-Za-z]+)?\\.([A-Za-z0-9_\\-]+\\.corp\\.)?|(nw\\.)?dev(\\-[A-Za-z]+)?\\.|cmc\\.|d\\.)?)?tripadvisor\\.(?:com|(?:[a-z]{2})|(??:co|com)\\.[a-z]{2})))?\\/.*$");
В перечисленных случаях выше, разработчики исправляют только xss, поэтому вы всё ещё можете это воспроизвести.