1. 项目概述与背景
作为一名网络安全从业者,我经常需要在虚拟机环境中进行各种安全测试。最近在搭建一个模拟电商环境时,发现了一个有趣的价格篡改漏洞。这个案例很好地展示了Web应用安全中常见的参数篡改风险,也是初级安全测试人员需要掌握的基础技能之一。
这个实验基于Windows虚拟机环境,通过IIS搭建本地Web服务,模拟一个简易的电商平台。我们将使用Burp Suite这款专业的安全测试工具,演示如何通过拦截和修改HTTP请求参数来实现"0元购"的效果。整个过程不涉及任何真实电商平台,纯粹是技术研究和学习目的。
2. 环境准备与配置
2.1 虚拟机环境搭建
首先需要准备一个Windows虚拟机,我使用的是Windows 10专业版。确保虚拟机网络设置为桥接模式或NAT模式,这样可以让主机和虚拟机处于同一局域网段。
提示:建议使用VMware或VirtualBox这类成熟的虚拟化软件,它们对网络配置的支持更完善。
2.2 IIS服务配置
- 打开"控制面板"→"程序"→"启用或关闭Windows功能"
- 勾选"Internet Information Services"及其子项
- 等待安装完成后,打开IIS管理器
- 右键"网站"→"添加网站",命名为"07"
- 设置物理路径为你的网站文件存放位置
- 在绑定中设置IP地址为虚拟机的本地IP(如192.168.163.131)
2.3 网络配置检查
关键步骤是确保IIS网站绑定的IP地址与虚拟机实际IP一致。可以通过以下命令查看虚拟机IP:
bash复制ipconfig
在IIS管理器中,右键网站→"编辑绑定",确认IP地址与虚拟机IP一致。如果不一致,会导致无法通过浏览器访问网站。
3. 安全测试工具准备
3.1 Burp Suite安装与配置
Burp Suite是本次测试的核心工具,社区版即可满足需求:
- 从官网下载Burp Suite Community Edition
- 安装后启动,选择"Temporary project"→"Next"→"Start Burp"
- 进入"Proxy"→"Options"选项卡,确认代理监听端口(默认8080)
3.2 浏览器代理配置
为了拦截浏览器流量,需要配置浏览器使用Burp作为代理:
- 打开Firefox浏览器
- 进入"选项"→"常规"→"网络设置"
- 选择"手动代理配置"
- 输入HTTP代理为127.0.0.1,端口8080
- 勾选"同时使用此代理进行FTP和HTTPS"
注意:测试完成后记得关闭代理设置,否则会影响正常上网。
3.3 证书安装(HTTPS站点)
如果目标网站使用HTTPS,还需要安装Burp的CA证书:
- 在浏览器访问http://burp
- 点击"CA Certificate"下载证书
- 在浏览器证书管理中导入并信任该证书
4. 漏洞测试实操过程
4.1 访问目标网站
在配置好代理后,在浏览器地址栏输入虚拟机的IP地址(如192.168.163.131),访问模拟的电商网站。网站应该能正常显示商品列表和价格信息。
4.2 正常购物流程
- 选择任意商品加入购物车
- 进入结算页面,填写必要的订单信息
- 在最后提交订单前暂停(不要点击提交)
4.3 开启请求拦截
- 返回Burp Suite,确保"Intercept is on"(拦截已开启)
- 在浏览器点击"提交订单"按钮
- 此时请求会被Burp拦截,显示在"Proxy"→"Intercept"选项卡中
4.4 参数分析与修改
在拦截的请求中,查找包含价格参数的字段。根据截图显示,价格参数值为290。我们可以尝试以下修改:
- 找到类似"price=290"或"amount=290"的参数
- 将数值修改为0
- 点击"Forward"发送修改后的请求
- 关闭拦截功能(Intercept is off)
4.5 结果验证
回到浏览器,应该能看到订单已成功提交,且订单金额显示为0元。这表明我们成功利用了参数篡改漏洞完成了"0元购"。
5. 技术原理深度解析
5.1 HTTP请求篡改漏洞
这个漏洞的本质是服务器完全信任客户端提交的参数,没有进行充分的验证。在Web安全中,这属于"不安全的直接对象引用"(IDOR)的一种表现形式。
5.2 防御措施分析
作为开发人员,应该采取以下防护措施:
- 关键参数(如价格)应该在服务端重新计算,而不是依赖客户端提交
- 实现数字签名或Token机制,防止参数被篡改
- 对敏感操作增加二次确认或验证码
- 记录完整的操作日志,便于审计追踪
5.3 Burp Suite工作原理
Burp Suite作为中间人代理,能够拦截和修改HTTP/HTTPS请求。其工作流程如下:
- 浏览器发送请求到Burp代理(127.0.0.1:8080)
- Burp拦截请求并允许用户查看和修改
- 修改后的请求被转发到目标服务器
- 服务器响应同样经过Burp返回给浏览器
6. 常见问题与解决方案
6.1 请求无法拦截
可能原因及解决方法:
- 浏览器代理设置不正确 → 重新检查代理配置
- Burp监听端口被占用 → 更改Burp监听端口
- 系统防火墙阻止 → 添加防火墙例外规则
6.2 修改参数后无效
可能原因:
- 服务器端有二次验证 → 尝试找出所有相关参数一起修改
- 参数经过加密 → 需要分析加密算法
- 使用了HTTPS但未安装证书 → 安装Burp CA证书
6.3 订单状态异常
如果修改价格后订单状态异常,可能是:
- 服务器有金额一致性检查 → 需要找出所有金额相关字段
- 数据库触发器限制 → 需要更精细的参数控制
- 支付网关验证 → 可能需要绕过支付环节
7. 安全测试伦理与规范
在进行此类安全测试时,必须遵守以下原则:
- 仅限授权测试,不得在未经允许的情况下测试任何生产环境
- 测试数据应该使用模拟数据,避免使用真实用户信息
- 发现漏洞后应及时报告,不得利用漏洞获取不当利益
- 测试完成后应恢复系统原状,清理测试数据
在实际工作中,我建议使用专门的测试平台如DVWA、WebGoat等进行练习,这些平台专门设计用于安全学习,包含了各种常见漏洞的模拟环境。