注:原来于deepseek和百度AI
一、核心方法论与手段
无论Web端还是移动端,安全测试都遵循一些共通的方法论,但具体工具和侧重点不同。
| 测试方法 | Web端 (重点关注) | 移动端 (重点关注) |
|---|---|---|
| SAST 静态应用安全测试 |
分析源代码,寻找安全漏洞。工具:SonarQube, Checkmarx。 | 分析源代码或反编译的代码。工具:MobSF, SonarQube。 |
| DAST 动态应用安全测试 |
对运行中的应用进行黑盒测试。工具:OWASP ZAP, Burp Suite。 | 对运行中的应用进行黑盒测试。工具:MobSF, OWASP ZAP (配代理)。 |
| IAST 交互式应用安全测试 |
在应用运行时,通过插桩实时检测漏洞。结合了SAST和DAST的优点。 | |
| 组件分析 软件成分分析 |
扫描项目依赖库中的已知漏洞。工具:OWASP Dependency-Check。 | 扫描应用使用的第三方库、SDK中的已知漏洞。工具:MobSF。 |
二、Web端安全测试详解
Web端测试的核心围绕 OWASP Top 10,关注服务器、浏览器和数据传输之间的安全。
如何进行(以Burp Suite/ZAP为例):
-
信息收集:
-
使用工具爬取网站结构,发现所有接口(URL)、参数和表单。
-
识别使用的技术栈(如框架、服务器、数据库)。
-
-
漏洞扫描与手动验证:
-
启动主动扫描:让工具自动对发现的接口进行常见漏洞的探测。
-
手动深度测试(核心):自动化工具只会发现低悬果实,高级漏洞需要手动验证。
-
SQL注入:在参数中输入
'、and 1=1、and 1=2,或使用sqlmap等专业工具。 -
跨站脚本(XSS):在输入框提交
<script>alert('XSS')</script>,看是否会被执行。 -
跨站请求伪造(CSRF):检查关键操作(如修改密码、转账)是否缺少不可预测的Token。
-
越权访问:
-
水平越权:用户A是否可以通过修改ID(如从
user_id=123改为user_id=456)访问用户B的数据。 -
垂直越权:普通用户是否能够访问管理员功能的URL。
-
-
文件上传漏洞:尝试上传WebShell(如一个
.jsp或.php的木马文件),或可执行的脚本文件。 -
业务逻辑漏洞:这是自动化工具无法发现的,例如:
-
修改商品价格参数,尝试以0.01元购买高价商品。
-
重复提交订单,检查是否会重复发货或扣款。
-
-
-
1.1 工具
sqlmap
SQLMap是一款开源的自动化SQL注入工具,由Python编写,主要用于检测和利用Web应用程序中的SQL注入漏洞。
它支持多种数据库管理系统(如MySQL、Oracle、PostgreSQL等),能够自动识别注入点并执行多种攻击技术,是渗透测试人员和网络安全研究人员的常用工具之一。
核心功能
- 自动化检测:无需手动输入复杂SQL语句,自动识别目标网站的SQL注入漏洞。
- 多数据库支持:兼容主流数据库系统(MySQL、Oracle、SQL Server、PostgreSQL等)。
- 数据提取:可提取数据库表、列、数据,甚至执行文件系统和操作系统命令。
- 绕过技术:内置多种绕过WAF(Web应用防火墙)的脚本(如
--tamper参数)。
安装与使用
- 安装方式:
- Kali Linux:预装SQLMap,直接终端运行
sqlmap。 - 其他系统:通过GitHub下载源码或使用
pip安装。
- Kali Linux:预装SQLMap,直接终端运行
- 基础命令示例:
- 检测注入点:
sqlmap -u "http://example.com/vuln.php?id=1" - 列出数据库:
sqlmap -u "http://example.com/vuln.php?id=1" --dbs - 提取数据:
sqlmap -u "http://example.com/vuln.php?id=1" -D target_db -T target_table --dump
- 检测注入点:
注意事项
- 合法性:仅限授权测试,避免非法使用。 2
- 隐蔽性:减少对目标系统的干扰。 1
- 数据保护:避免使用破坏性参数(如
--drop),妥善处理敏感信息。
XSS
跨站脚本攻击(Cross-Site Scripting,简称 XSS)是一种常见的网络安全漏洞,它允许攻击者在网站上注入恶意脚本,这些脚本可以在用户的浏览器中执行。XSS 可以用来窃取用户信息、会话令牌、执行钓鱼攻击或进行其他恶意活动。
常见的 XSS 攻击类型
- 存储型 XSS:恶意脚本被存储在服务器端(如数据库),每当有用户访问含有该脚本的页面时,脚本就会被执行。
- 反射型 XSS:恶意脚本从未经过滤的输入直接反射回用户的浏览器。
- DOM-based XSS:攻击者通过修改客户端的 DOM(文档对象模型)来执行恶意脚本,通常通过 URL、DOM 事件等触发。
示例
1. 反射型 XSS 示例
假设有一个网站包含一个搜索功能,其 URL 类似于:http://example.com/search?query=something
如果网站没有对 query 参数进行适当的编码和过滤,攻击者可以通过如下 URL 进行攻击:http://example.com/search?query=<script>alert('XSS');</script>
当用户访问这个链接时,浏览器会执行 JavaScript 代码,显示一个警告框。
2. 存储型 XSS 示例
假设有一个留言板功能,用户在留言框中输入内容并提交。如果网站没有对用户输入进行适当的清理和编码,攻击者可以输入以下内容:
<script>alert('XSS')</script>
3. DOM-based XSS 示例
假设网站有一个功能,允许用户通过 URL 的某个参数直接在页面上显示消息:
var message = location.hash.substr(1); // 假设 # 后面的内容是要显示的消息 document.getElementById('message').textContent = message;
这将导致页面显示一个图像标签,当图像加载失败时触发 alert。
如何防御 XSS 攻击?
- 输入验证:对所有输入进行严格的验证和清理。
- 输出编码:在将数据输出到页面前,对数据进行适当的编码(如 HTML 实体编码)。
- 使用 HTTPOnly 标志的 Cookie:防止 XSS 通过窃取 Cookie 来获取敏感信息。
- 内容安全策略(CSP):通过 HTTP 头部设置 CSP,限制资源加载的来源。
- 使用现代框架和库:许多现代前端框架和库(如 React, Angular, Vue)内置了防止 XSS 的机制。
通过实施这些防御措施,可以显著减少网站遭受 XSS 攻击的风险。
OWASP ZAP
系统要求:需安装Java 8或更高版本(推荐JDK 11+)。
下载安装:
官网下载:ZAP下载页(支持Windows/Linux/macOS)。
Kali Linux用户可直接通过命令安装:apt-get install zaproxy。
执行测试步骤
启动ZAP:运行zaproxy命令或通过菜单启动,首次启动时选择是否保存会话。
快速扫描:
输入目标URL,点击“Attack”自动扫描。
或通过代理模式(如Postman)手动记录请求后右键“主动扫描”。
查看结果:扫描完成后,在“Alerts”标签页查看漏洞报告。
注意事项
HTTPS测试:需安装ZAP根证书以解密流量。
误报处理:调整扫描阈值(如调高“低”风险等级)减少误报。
三、移动端安全测试详解
移动端测试在关注服务端接口(同Web)的同时,更需关注客户端自身的安全。
如何进行(综合手段):
-
客户端自身安全:
-
反编译与代码审计:使用工具(如 Jadx-GUI)将APK文件反编译为Java代码,检查:
-
硬编码的敏感信息(API密钥、数据库密码)。
-
日志泄露敏感数据。
-
校验逻辑是否在客户端,可被绕过。
-
-
敏感数据存储:检查
/data/data/[应用包名]目录下的SharedPreferences, 数据库文件是否明文存储用户数据、密码等。 -
网络传输安全:
-
抓包(如使用Burp Suite)检查所有通信是否使用HTTPS。
-
检查是否进行了证书绑定(SSL Pinning),以及是否能被绕过(使用Frida, Objection等工具)。
-
-
身份认证与授权:测试登录令牌(Token)的过期机制是否安全,是否容易被伪造。
-
-
与Web端的交叉测试:
-
移动App的很多操作通过API与服务器通信。需要对这些API接口进行与Web端相同的安全测试(如SQL注入、越权等)。抓包获取API请求,然后将其导入到Burp Suite或ZAP中进行重放和测试。
-
-
平台特定问题:
-
Android:
-
检查
AndroidManifest.xml文件,确认权限申请是否为最小集。 -
测试组件暴露:
Activity,Service,Content Provider,Broadcast Receiver是否被不当导出,导致其他应用可恶意调用。
-
-
iOS:
-
检查钥匙串(Keychain)中的数据是否安全。
-
测试归档文件(plist)中是否存储敏感数据。
-
验证设备越狱检测机制是否有效。
-
-
四、通用测试流程
一次完整的安全测试应遵循以下步骤:
-
明确范围与授权:确定测试目标(哪些URL、哪个版本的App),并获取书面授权。
-
信息收集:尽可能多地收集目标系统的信息。
-
漏洞扫描/发现:使用自动化工具进行初步扫描。
-
手动漏洞验证与挖掘:这是最核心的一步,深入挖掘业务逻辑和复杂漏洞。
-
权限提升与横向移动(如果适用):尝试利用已发现的漏洞获取更高权限,访问更多数据。
-
报告与修复:
-
撰写报告,清晰描述漏洞位置、步骤、风险等级、修改建议。
-
提供漏洞复现的完整步骤和截图/视频。
-
-
复测:待开发修复后,对漏洞进行回归测试,确认已修复。
总结:
-
Web端:更像是在攻击一个“堡垒”,核心是服务器和应用逻辑。
-
移动端:像是在攻击一个“终端”,既要攻击它背后的“堡垒”(服务器API),也要攻击这个“终端”本身(客户端App)。
在实际工作中,自动化工具(DAST/SAST)是提高效率的帮手,但手动测试和业务逻辑漏洞的挖掘才是体现安全测试工程师价值的核心。
五、APP核心测试项详解
接下来,我们根据上述流程,详细拆解每一步需要做什么。
阶段一:信息收集与分析
在开始测试前,你需要尽可能多地了解你的“目标”。
-
安装包获取:获取测试版本的APK(Android)或IPA(iOS)文件。
-
包信息分析:
-
使用
aapt(Android Asset Packaging Tool) 或在线工具查看App包名、版本、权限列表。 -
对于iOS,检查
embedded.mobileprovision文件。
-
阶段二:静态安全测试 - “代码体检”
在不运行App的情况下,直接分析其代码和资源文件。
| 测试重点 | 测试方法 & 工具 |
|---|---|
| 1. 反编译与代码审计 | 工具:Jadx-GUI (Android), MobSF (Mobile Security Framework) • 将APK反编译为Java/Kotlin代码,检查是否存在硬编码的敏感信息(如API密钥、数据库密码、云服务凭证)。 • 检查代码逻辑,如密码学实现是否安全、校验逻辑是否在客户端可被绕过。 |
| 2. 敏感信息泄露 | 工具:MobSF, 手动检查 • 检查反编译后的代码、资源文件、日志中是否包含敏感信息。 • 检查 AndroidManifest.xml 文件,确认申请的权限是否为最小必要集合。 |
| 3. 组件安全测试 (Android) | 工具:Drozer • 测试 Activity, Service, Content Provider, Broadcast Receiver 四大组件是否被不当导出,导致其他应用可以恶意调用并获取数据。 |
阶段三:动态安全测试 - “运行时体检”
在App运行过程中进行测试,这是发现业务逻辑漏洞的关键。
| 测试重点 | 测试方法 & 工具 |
|---|---|
| 1. 网络传输安全 | 工具:Burp Suite, OWASP ZAP, Fiddler • 抓包测试:配置代理,拦截所有HTTP/HTTPS请求,检查: - 是否全站HTTPS?是否存在HTTP明文传输? - 证书有效性?是否接受自签名或过期证书? • 绕过证书绑定(SSL Pinning):很多App会启用此功能防止抓包。需要使用 Frida、Objection 等工具进行绕过。 |
| 2. 本地数据存储安全 | 工具:Root/越狱后的设备,adb • 在Root的Android或越狱的iOS设备上,查看App的沙盒目录: - SharedPreferences、数据库 文件是否明文存储用户密码、令牌、个人信息? - 密钥链(Keychain)/密钥库(KeyStore) 的使用是否规范? |
| 3. 身份认证与会话管理 | 工具:Burp Suite • 测试登录令牌(Token)的过期时间是否合理。 • 测试Token是否在注销后立即失效。 • 尝试伪造或重放Token,进行越权访问测试。 |
| 4. 运行时环境检测 | 工具:Frida, Xposed • 测试App的反调试、Root/越狱检测机制是否牢固。 • 尝试通过Hook技术(Frida)动态修改App的执行逻辑和返回值,绕过客户端限制。 |
阶段四:服务端接口测试 - “攻击后端”
切记:移动App的安全 ≈ 客户端安全 + 服务端API安全。
你需要将抓取到的API请求,导入到Burp Suite或OWASP ZAP中,对其进行全面的Web安全测试,包括但不限于:
-
SQL注入
-
越权访问(水平/垂直)
-
业务逻辑漏洞(如重复提交、金额篡改)
-
服务器配置漏洞
阶段五:报告与复测
-
撰写报告:清晰描述漏洞的位置、复现步骤、风险等级、危害,并给出修复建议。
-
漏洞复测:待开发修复后,进行回归测试,确保漏洞已彻底解决。
六、必备工具清单
| 工具类型 | 工具名 | 主要用途 |
|---|---|---|
| 综合扫描 | MobSF | 开源一站式平台,支持静态和动态分析,强烈推荐。 |
| 抓包代理 | Burp Suite | 行业标准,用于拦截、重放、修改HTTPS请求。 |
| OWASP ZAP | 开源替代品,功能强大。 | |
| 逆向分析 | Jadx-GUI | 将APK反编译为可读的Java代码。 |
| Frida | 动态插桩工具,用于绕过SSL Pinning、修改运行时逻辑。 | |
| Objection | 基于Frida的“神器”,命令行操作,简化移动端测试流程。 | |
| 组件测试 | Drozer | 专门用于测试Android组件安全。 |
总结一下,进行一次专业的App安全测试,你需要:
-
静态分析代码,找硬编码和配置错误。
-
动态测试运行时行为,抓包、绕证书绑定、检查本地存储。
-
服务端测试所有API接口,防止Web漏洞。
-
使用工具链(MobSF + Burp Suite + Frida/Objection)来提升效率。
遵循这个框架,你就能系统性地对App进行安全评估,发现从客户端到服务端的深层安全风险。
浙公网安备 33010602011771号