news 2026/8/21 13:50:22

MASTG-Hacking-Playground 渗透测试:用 Frida 动态 hook 危险方法与 JS 接口的入门指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
MASTG-Hacking-Playground 渗透测试:用 Frida 动态 hook 危险方法与 JS 接口的入门指南

MASTG-Hacking-Playground 渗透测试:用 Frida 动态 hook 危险方法与 JS 接口的入门指南

【免费下载链接】MASTG-Hacking-Playground项目地址: https://gitcode.com/gh_mirrors/ma/MASTG-Hacking-Playground

MASTG-Hacking-Playground是面向移动安全初学者的漏洞演练场,它把 OWASP MASVS 中大量经典漏洞做成了可以运行的 Android(Kotlin + Java)与 iOS 示例应用。对于想入门Android 渗透测试的新手来说,这个项目最吸引人的地方在于:你能在一个真实可运行的 App 里,亲手体验 WebView 漏洞、不安全的 JS 接口、弱加密、SharedPreferences 明文存储等问题。本文将以Frida 动态 hook为主线,带你一步步 hook 掉应用中的危险方法与 JS 接口,完成一次完整的渗透测试实战,零基础也能跟上。

什么是 MASTG-Hacking-Playground?为什么适合渗透测试入门?

简单来说,它就是一个"故意写坏"的应用合集。项目内同时提供了 Java 与 Kotlin 两套实现,方便对照学习。在Android/目录下你可以看到:

  • MSTG-Android-Java-App:老牌 Java 版本,包含大量 OWASP 漏洞示例
  • MASTG-Android-Kotlin-App:Kotlin 版本,更贴近现代开发风格

每个漏洞示例都以OMTG_开头命名,并严格对应 OWASP MASVS 的测试类别,例如:

漏洞类别示例类名说明
代码注入OMTG_CODING_004_Code_Injection动态加载外部 dex/jar
WebView 漏洞OMTG_ENV_005_WebView_*不安全的 WebView 加载
不安全存储OMTG_DATAST_001_*明文存储、弱加密等
网络通信OMTG_NETW_004_SSL_PinningSSL 固定绕过练习

获取项目的方式很简单,克隆仓库即可:

git clone https://gitcode.com/gh_mirrors/ma/MASTG-Hacking-Playground

渗透测试前必看:WebView 与 JS 接口为何危险?

在做 Frida hook 之前,先搞清楚我们要攻击的目标长什么样。在unsafe_content.html(位于app/src/main/assets/)中,网页脚本可以直接调用原生方法:

var result = window.Android.returnString(); document.getElementById("output").innerHTML = result;

而对应的原生接口定义在owasp/mastgkotlin/util/JS_Interface.kt

@JavascriptInterface fun returnString(): String { return "<strong>This is a Secret String only obtainable via JavaScript</strong>" }

更危险的是 Java 版本中的local.htm,它通过 JS 接口直接反射执行系统命令:

function execute(cmd){ return window.jsinterface.getClass().forName('java.lang.Runtime') .getMethod('getRuntime',null).invoke(null,null).exec(cmd); }

只要 JS 接口被恶意网页利用,攻击者就能读写文件、执行命令,这也就是渗透测试中必须重点 hook 的目标。

Frida 动态 hook 入门:环境准备三步走

Frida 是目前移动端渗透测试最主流的动态插桩工具,它允许你在应用运行时注入 JavaScript 代码、拦截函数调用。准备环境只需三步:

  1. 安装 Frida 工具(在 PC 上执行):pip install frida-tools
  2. 安装 frida-server:从官网下载与 PC 端版本一致的 frida-server,推送到手机并运行
  3. 验证连接:执行frida-ps -U能列出手机进程即表示成功

💡 模拟器或已 root 的真机是最佳实验环境,MASTG-Hacking-Playground 的 APK 已编译好,直接安装即可开始。

核心实战一:用 Frida hook 危险方法

安装并启动 App 后,我们先找到目标进程。Kotlin 应用的包名是owasp.mastgkotlin,Java 应用是sg.vp.owasp_mobile。用frida-ps -U | grep owasp即可定位。

第 1 步:hook 不安全的 WebView 配置

应用在InsecureWebViewActivity.kt中开启了javaScriptEnabled = true,还调用了addJavascriptInterface。我们可以 hook 这些方法观察调用轨迹:

Java.perform(function () { var WebSettings = Java.use("android.webkit.WebSettings"); WebSettings.setJavaScriptEnabled.implementation = function (flag) { console.log("[*] setJavaScriptEnabled(" + flag + ") 被调用"); return this.setJavaScriptEnabled(flag); }; var WebView = Java.use("android.webkit.WebView"); WebView.addJavascriptInterface.overload( 'java.lang.Object', 'java.lang.String' ).implementation = function (obj, name) { console.log("[*] addJavascriptInterface 注入名: " + name); return this.addJavascriptInterface(obj, name); }; });

运行方式:frida -U -l hook_webview.js owasp.mastgkotlin,然后进入 App 的 WebView 页面,终端就会实时打印出调用记录。✅

第 2 步:hook JS 接口返回的敏感字符串

接下来是重头戏:拦截JS_InterfacereturnString(),看看它到底返回了什么,并尝试篡改返回值:

Java.perform(function () { var JSInterface = Java.use("owasp.mastgkotlin.util.JS_Interface"); JSInterface.returnString.implementation = function () { console.log("[*] returnString() 被调用"); var result = this.returnString(); console.log("[*] 原始返回值: " + result); return "Hooked by Frida: 敏感信息已拦截!"; }; });

刷新 WebView 页面,你会看到网页中原本显示的 "Secret String" 变成了我们注入的内容——这就是动态 hook 篡改业务逻辑的完整演示。🛑

第 3 步:hook root 检测方法绕过

Java 版菜单中提供了不安全的 root 检测(insecureCheckRootMethod只检查/system/bin/su)。用 Frida 直接让它"失效":

Java.perform(function () { var Menu = Java.use("owasp.mastgkotlin.MenuActivity"); Menu.insecureCheckRootMethod.implementation = function () { console.log("[*] root 检测被绕过"); return false; }; });

核心实战二:利用 JS 接口实现远程命令执行

理解 Frida 之后,我们再回到漏洞本身。在 Java 应用里,OMTG_ENV_005_WebView_Remote.java把 JS 接口以"Android"为名注入到 WebView,再加载远程URL。一旦远程页面被控制,攻击者就能通过window.Android调用原生方法。

完整的攻击链是:

  1. 恶意网页注入window.Android.returnString()
  2. 接口方法无权限校验,直接暴露给 JS
  3. 结合allowFileAccessFromFileURLs等配置,可进一步扩大攻击面

用 Frida hookaddJavascriptInterface,我们可以快速确认应用中所有被注入的 JS 接口及其名称,这是渗透测试中审计 WebView 组件的标准手法。配合OMTG_ENV_005_WebView_Local.java中通过反射执行Runtime.exec的示例,你就能理解为什么安全规范一再强调:不要把原生能力暴露给不可信的网页内容

安全加固建议:如何修复这类漏洞?

作为渗透测试新手,除了会攻击,还要会提修复建议。对照 SecureWebViewActivity 的安全实现,修复思路如下:

  • 关闭不必要的 JavaScriptsetJavaScriptEnabled(false)是默认最佳实践
  • 严格过滤 JS 接口:只暴露最小必要方法,且必须校验调用来源
  • 不要使用addJavascriptInterface暴露敏感数据:如 JS_Interface.kt 中返回 Secret String 的做法应避免
  • 限制 file 协议访问:不要开启allowFileAccessFromFileURLs
  • 优先 HTTPS 并做证书固定:参考OMTG_NETW_004_SSL_Pinning的示例

总结:从 Frida hook 入门到持续精进

通过本文,你已经完成了 MASTG-Hacking-Playground 上的第一次 Frida 实战:hook 了危险方法、篡改了 JS 接口返回值、绕过了 root 检测,并理解了 WebView 漏洞的成因与修复方向。🎉

后续你可以沿着Android/MSTG-Android-Java-App/app/src/main/java/sg/vp/owasp_mobile/OMTG_Android/目录逐个练习其余漏洞,例如用 Frida 解密 OMTG_DATAST_001_BadEncryption.java 的弱加密数据、绕过 SSL Pinning 等。记住:渗透测试的目的不是破坏,而是理解攻击路径、推动安全修复。多动手、多对照 OWASP MASVS,你很快就能从"照着脚本跑"进阶到"自己写 hook 脚本"。

【免费下载链接】MASTG-Hacking-Playground项目地址: https://gitcode.com/gh_mirrors/ma/MASTG-Hacking-Playground

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/21 13:46:59

JSONC解压不迷路:decompress与unpack用法及常见踩坑指南

JSONC解压不迷路&#xff1a;decompress与unpack用法及常见踩坑指南 【免费下载链接】JSONC JSON compressor and decompressor 项目地址: https://gitcode.com/gh_mirrors/json/JSONC 在Web开发中&#xff0c;前后端之间传输大体积JSON数据是性能瓶颈的重灾区。JSONC正…

作者头像 李华
网站建设 2026/8/21 13:45:10

完全不会写开题报告,有哪些专业的AI论文写作工具推荐?

毕业季一到&#xff0c;开题报告就成了很多同学的“第一道坎”&#xff1a;选题定不下来、研究背景和意义分不清、文献综述写不出头、研究方法和技术路线逻辑混乱&#xff0c;对着空白文档发愁好几天也理不出框架。尤其是零基础、在职读研或者跨专业的学生&#xff0c;对高校的…

作者头像 李华
网站建设 2026/8/21 13:42:33

Unity宋代美食展馆漫游系统开发全流程:从场景搭建到WebGL发布

在独立开发一个宋代美食展馆的漫游系统时&#xff0c;你是否曾为如何构建沉浸式的历史场景、实现流畅的交互体验以及优化最终发布的性能而头疼&#xff1f;网上关于Unity漫游的教程往往零散&#xff0c;要么只讲模型导入&#xff0c;要么只谈摄像机控制&#xff0c;很难找到一个…

作者头像 李华
网站建设 2026/8/21 13:41:57

eNSP网络仿真工具在Win10/11系统下的稳定安装与排错指南

1. 先搞清楚 eNSP 到底是什么&#xff0c;以及它现在还能不能用 如果你正在学习网络技术&#xff0c;或者准备考取华为认证&#xff0c;那么 eNSP 这个名字你肯定不陌生。简单来说&#xff0c;eNSP 是华为官方推出的一款网络仿真工具&#xff0c;它最大的价值在于&#xff0c;能…

作者头像 李华
网站建设 2026/8/21 13:41:09

JSONC使用避坑清单:小数据越压越大的6个陷阱与解决方案

JSONC使用避坑清单&#xff1a;小数据越压越大的6个陷阱与解决方案 【免费下载链接】JSONC JSON compressor and decompressor 项目地址: https://gitcode.com/gh_mirrors/json/JSONC JSONC 是一个专注于 JSON 压缩 的开源工具库&#xff0c;通过「键名映射压缩 GZIP 压…

作者头像 李华