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

资讯详情

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

MASTG-Hacking-Playground 修复指南:对照 MASTG 最佳实践给漏洞 App 打补丁的 12 个要点

MASTG-Hacking-Playground 修复指南:对照 MASTG 最佳实践给漏洞 App 打补丁的 12 个要点 MASTG-Hacking-Playground 修复指南对照 MASTG 最佳实践给漏洞 App 打补丁的 12 个要点【免费下载链接】MASTG-Hacking-Playground项目地址: https://gitcode.com/gh_mirrors/ma/MASTG-Hacking-PlaygroundMASTG-Hacking-Playground 是 OWASP MAS 项目下的移动应用安全教学仓库里面 Android 与 iOS 示例 App 全部是故意埋入漏洞的目的就是让开发者对照 [MASTGOWASP 移动应用安全测试指南]最佳实践练习发现漏洞 → 理解风险 → 动手修复的完整流程。本文是一份面向初学者的MASTG 修复指南不需要你精通逆向只需跟着 12 个要点就能给项目里的漏洞 App 打上像样的安全补丁并知道每类漏洞对应 MASTG 的哪条检查项。全程干货建议收藏慢慢对照。开始之前先把仓库克隆到本地方便随时查看源码、对照修改。git clone https://gitcode.com/gh_mirrors/ma/MASTG-Hacking-Playground1. 修复前先摸清项目结构建立漏洞对照表克隆后你会发现仓库分三大块修复前请先认路Android/MSTG-Android-Java-AppJava 版漏洞 App覆盖 MASTG 大多数测试用例是修复练习的主战场Android/MASTG-Android-Kotlin-AppKotlin 版漏洞 App重点演示 WebView 相关漏洞iOS/MSTG-JWTSwift 版 App配合Serverside/rails-api-originalRuby on Rails 后端使用演示 JWT 与数据存储问题。建议动手前先建一张漏洞点 → MASTG 检查项 → 修复方案的表格后面每修一个就划掉一个进度一目了然。✅2. 修复 WebView 漏洞关闭 JavaScript 与 JS 接口对应 MASTG 代码注入检查项Kotlin App 里的InsecureWebViewActivity.kt是 WebView 漏洞的典型样本短短几行就集齐了三大雷区javaScriptEnabled true开启 JS 执行注册了addJavascriptInterface(jsInterface, Android)把原生方法暴露给网页配合JS_Interface.kt里用JavascriptInterface标注的returnString()、showToast()网页就能直接调用 App 原生功能。修复要点对照同目录下的SecureWebViewActivity.kt——它把javaScriptEnabled设为false且不注册任何 JS 接口这就是最小权限的正确姿势。如果业务必须开启 JS也一定要用WebViewClient校验 URL 白名单绝不向不可信页面暴露接口。3. 关闭文件访问权限allowFileAccessFromFileURLs必须为 falseInsecureWebViewActivity.kt里还设置了allowFileAccessFromFileURLs true允许 file:// 协议的页面访问本地文件。一旦页面被注入恶意脚本攻击者就能读取 App 沙箱内的敏感文件风险极高。修复要点将该选项设为false默认即为 false并且不要对file:///android_asset/之外的路径放开加载。MASTG 的 WebView 检查项明确要求任何文件访问开关都应按需最小化开启。4. 修掉日志泄漏绝不在日志里打印密码对应 MASTG 敏感信息日志检查项OMTG_DATAST_002_Logging.java堪称教科书级反面教材Log.e(TAG, User successfully logged in. User: username Password: password);用户名密码直接进 Logcat手机连上 USB、打开 logcat 就能看光光。修复要点日志只记录非敏感的业务标识如用户 ID 的掩码密码、Token、信用卡号一律禁止入日志同时注意System.out.println这类容易漏网的口子也要一并清理。5. 替换弱加密算法自研 XOR 加密必须废弃对应 MASTG 密码学检查项OMTG_DATAST_001_BadEncryption.java演示了自研加密的惨案所谓加密只是对字节做 XOR 和取反密文vJqfip28ioydips明文是 SuperSecret硬编码在代码里。这类算法在逆向面前等于明文。修复要点丢弃自研算法改用标准库的 AES-GCM 等认证加密密钥不要写死在代码里而是存入 Android Keystore让系统负责密钥生命周期管理。6. SharedPreferences 明文存密码改用加密偏好存储OMTG_DATAST_001_SharedPreferences.java用MODE_WORLD_READABLE把administrator / supersecret明文写进偏好文件——世界可读模式下其他 App 也能读取修复要点使用MODE_PRIVATE且 API 17 起MODE_WORLD_READABLE已被废弃并会抛异常敏感字段改用 Jetpack Security 的EncryptedSharedPreferences加密存储。7. SQLite 明文库用 SQLCipher 给数据库加密对应 MASTG 数据库检查项OMTG_DATAST_001_SQLite_Not_Encrypted.java用原生SQLiteDatabase明文存储了admin / AdminPass设备 root 后可直接拉库。项目里其实已经内置了SQLCipher见app/libs与app/src/main/jniLibs下的libsqlcipher_android.so对照同目录的OMTG_DATAST_001_SQLite_Encrypted.java即可看到正确用法——用 SQLCipher 打开数据库密钥由用户口令或 Keystore 派生不落盘明文。8. 内部与外部存储明文文件必须改为加密写入OMTG_DATAST_001_InternalStorage.java把信用卡号明文写入内部存储String string Credit Card Number is 1234 4321 5678 8765;而OMTG_DATAST_001_ExternalStorage.java演示的是把敏感数据写到外部存储——外部存储对所有 App 可见风险更高。修复要点敏感数据优先放内部私有目录并做加密确实要落盘的机密用 Keystore 密钥加密后再写入禁止明文。9. 修补 SQL 注入一律使用参数化查询OMTG_CODING_003_SQL_Injection.java与对应的 Content Provider 版本演示了字符串拼接 SQL 的注入风险攻击者输入 OR 11--即可绕过校验。修复要点改用SQLiteDatabase的rawQuery参数绑定或selectionArgs配合OMTG_CODING_003_Best_Practice.java中的规范写法使用 Content Provider 时同样对查询条件做参数化。10. 关闭键盘缓存与剪贴板泄漏对应 MASTG 平台交互检查项OMTG_DATAST_005_Keyboard_Cache.java和OMTG_DATAST_006_Clipboard.java演示了两个小细节大风险输入框开启文本缓存后第三方输入法可能记录敏感输入App 主动把敏感内容写入系统剪贴板任何 App 都能监听。修复要点敏感输入框设置android:inputType关闭缓存并避免用ClipboardManager复制机密信息必要时在复制后立即清除。11. 修复证书校验与 SSL Pinning对应 MASTG 网络安全检查项OMTG_NETW_001_Secure_Channel.java与OMTG_NETW_004_SSL_Pinning.java系列演示两类问题一是未校验证书或信任所有证书HardenedX509TrustManager.java里甚至有放行一切的危险实现二是缺少证书固定导致中间人攻击。修复要点使用系统默认的 TrustManager 并校验主机名高安全场景下做 SSL PinningSSLPinning.java与OMTG_NETW_004_SSL_Pinning_Certificate.java提供证书固定写法固定证书或公钥哈希。12. 密钥与凭据统一收口到 Keystore / KeyChain最后把散落各处的硬编码集中治理OMTG_DATAST_001_KeyStore.java、OMTG_DATAST_001_KeyChain.java与 iOS 侧的 KeychainiOS/MSTG-JWT中集成了 KeychainSwift 与CreateSensitiveData.swift展示了正确方向——密钥放进系统安全容器由硬件/系统级隔离保护。修复要点扫描全项目把硬编码的密码、密钥、密文如 BadEncryption 里的vJqfip28ioydips全部替换为运行时从 Keystore/Keychain 获取并设置不可导出属性。修复完成后的自检清单 打完补丁别急着收工用下面几步快速验证重新跑一遍 App确认功能未受影响安全修复不能以可用性为代价用adb抓取日志确认敏感关键字不再出现root/模拟器上检查data/data/包名目录确认数据库与偏好文件已加密用抓包工具验证 HTTPS 链路与 Pinning 生效对照 MASTG 文档逐条复查形成自己的安全基线。修复过程中如果卡住可以多翻翻仓库里 Java 版与 Kotlin 版 App 的一正一反对照实现比如InsecureWebViewActivity.kt与SecureWebViewActivity.kt、明文与 SQLCipher 两个 SQLite 版本这是这个项目最有价值的学习资源。修完 12 个要点你就已经走完了一轮完整的漏洞发现 → 风险评估 → 修复加固闭环这正是 OWASP MASTG 想教给你的核心能力。【免费下载链接】MASTG-Hacking-Playground项目地址: https://gitcode.com/gh_mirrors/ma/MASTG-Hacking-Playground创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表