尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

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

MASTG-Hacking-Playground 渗透测试:用 Frida 动态 hook 危险方法与 JS 接口的入门指南 MASTG-Hacking-Playground 渗透测试用 Frida 动态 hook 危险方法与 JS 接口的入门指南【免费下载链接】MASTG-Hacking-Playground项目地址: https://gitcode.com/gh_mirrors/ma/MASTG-Hacking-PlaygroundMASTG-Hacking-Playground是面向移动安全初学者的漏洞演练场它把 OWASP MASVS 中大量经典漏洞做成了可以运行的 AndroidKotlin 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-AppKotlin 版本更贴近现代开发风格每个漏洞示例都以OMTG_开头命名并严格对应 OWASP MASVS 的测试类别例如漏洞类别示例类名说明代码注入OMTG_CODING_004_Code_Injection动态加载外部 dex/jarWebView 漏洞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.ktJavascriptInterface fun returnString(): String { return strongThis 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 代码、拦截函数调用。准备环境只需三步安装 Frida 工具在 PC 上执行pip install frida-tools安装 frida-server从官网下载与 PC 端版本一致的 frida-server推送到手机并运行验证连接执行frida-ps -U能列出手机进程即表示成功 模拟器或已 root 的真机是最佳实验环境MASTG-Hacking-Playground 的 APK 已编译好直接安装即可开始。核心实战一用 Frida hook 危险方法安装并启动 App 后我们先找到目标进程。Kotlin 应用的包名是owasp.mastgkotlinJava 应用是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_Interface的returnString()看看它到底返回了什么并尝试篡改返回值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调用原生方法。完整的攻击链是恶意网页注入window.Android.returnString()接口方法无权限校验直接暴露给 JS结合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),仅供参考
返回列表