对酒店房间自助售货机的支付漏洞挖掘
字数 1186 2025-08-20 18:18:10

酒店房间自助售货机支付漏洞挖掘技术分析

前言

本文详细分析了一种酒店房间自助售货机支付系统的逻辑漏洞,通过修改支付参数实现低价购买商品的漏洞挖掘过程。该漏洞属于业务逻辑漏洞范畴,具有较高的实际危害性。

测试环境准备

移动端抓包环境配置

  1. 安卓系统证书配置

    • 安卓7.0+系统默认不信任用户安装的证书
    • 需要进行ROOT操作
    • 证书转换与安装步骤:
      # 证书格式转换(如非PEM格式)
      openssl x509 -inform DER -in cacert.cer -out cacert.pem
      
      # 计算MD5 hash(OpenSSL 1.0+版本)
      openssl x509 -inform PEM -subject_hash_old -in cacert.pem
      
      # 重命名证书文件(使用上一步获取的hash值)
      mv cacert.pem 347bacb5.0
      
      # 将证书放入系统目录
      cp 347bacb5.0 /system/etc/security/cacerts/
      chmod 644 /system/etc/security/cacerts/347bacb5.0
      chgrp root 347bacb5.0
      
  2. 抓包工具

    • 使用Burp Suite作为主要抓包工具
    • 配置手机代理指向Burp监听端口

漏洞发现过程

初步信息收集

  1. 通过微信小程序访问酒店自助售货机系统
  2. 发现系统采用无cookie设计,仅使用固定token进行身份验证

参数遍历测试

  1. 商品ID遍历

    • 发现POST请求中的id参数可遍历
    • 通过修改id值可获取不同房间的商品信息
    • 示例请求:
      POST /getItemInfo HTTP/1.1
      Host: xxx.com
      Content-Type: application/x-www-form-urlencoded
      
      id=123&token=xxxxxx
      
  2. 价格修改测试

    • 尝试修改返回包中的price相关字段
    • 前端显示价格可被修改,但实际支付仍按原价
    • 说明价格验证在服务端完成

支付流程深入分析

  1. 支付流程分解

    • 第一阶段:获取商品信息(可修改前端显示)
    • 第二阶段:发起实际支付(关键验证点)
  2. 关键参数发现

    • 拦截支付请求发现discount参数(默认值为0)
    • 参数名称明确指示其折扣功能
  3. 漏洞验证

    • discount从0修改为1
    • 支付金额成功减少1元
    • 实际测试购买商品(TT)验证漏洞有效性
    • 支付0.1元后售货机正常出货

漏洞原理分析

  1. 业务逻辑缺陷

    • 前端与后端价格验证不一致
    • 折扣参数未做有效性验证
    • 支付金额计算依赖客户端可修改参数
  2. 安全设计缺失

    • 缺乏价格签名验证机制
    • 关键业务参数未做服务端二次确认
    • 无防篡改设计

漏洞修复建议

  1. 服务端改进

    • 实现价格签名机制
    • 商品价格应从服务端获取,不依赖客户端参数
    • 对折扣参数进行严格验证(范围、权限等)
  2. 架构设计优化

    • 关键业务参数应加密或签名
    • 实现前后端价格一致性验证
    • 支付流程增加二次确认环节
  3. 监控措施

    • 异常价格交易监控
    • 折扣使用日志审计

漏洞挖掘方法论总结

  1. 全面参数测试

    • 测试所有请求参数的可修改性
    • 特别关注业务相关参数(如price、discount等)
  2. 流程分段分析

    • 将复杂业务流程分解测试
    • 关注各阶段的数据一致性
  3. 参数命名线索

    • 通过参数名推测功能(如discount)
    • 注意拼音首字母缩写等非常规命名
  4. 实际效果验证

    • 漏洞需在实际业务场景中验证
    • 确认漏洞的完整利用链

扩展思考

  1. 同类系统测试方向

    • 自动售货机系统
    • 自助服务终端
    • 无人零售设备
  2. 进阶测试技术

    • 时序攻击测试
    • 并发请求测试
    • 支付结果状态测试
  3. 业务逻辑漏洞挖掘要点

    • 理解正常业务流程
    • 寻找流程中的信任边界
    • 测试各环节的数据一致性

本漏洞分析展示了业务逻辑漏洞的典型特征和挖掘方法,强调了全面参数测试和流程分析的重要性,为类似系统的安全测试提供了可复用的方法论。

酒店房间自助售货机支付漏洞挖掘技术分析 前言 本文详细分析了一种酒店房间自助售货机支付系统的逻辑漏洞,通过修改支付参数实现低价购买商品的漏洞挖掘过程。该漏洞属于业务逻辑漏洞范畴,具有较高的实际危害性。 测试环境准备 移动端抓包环境配置 安卓系统证书配置 : 安卓7.0+系统默认不信任用户安装的证书 需要进行ROOT操作 证书转换与安装步骤: 抓包工具 : 使用Burp Suite作为主要抓包工具 配置手机代理指向Burp监听端口 漏洞发现过程 初步信息收集 通过微信小程序访问酒店自助售货机系统 发现系统采用无cookie设计,仅使用固定token进行身份验证 参数遍历测试 商品ID遍历 : 发现POST请求中的 id 参数可遍历 通过修改 id 值可获取不同房间的商品信息 示例请求: 价格修改测试 : 尝试修改返回包中的 price 相关字段 前端显示价格可被修改,但实际支付仍按原价 说明价格验证在服务端完成 支付流程深入分析 支付流程分解 : 第一阶段:获取商品信息(可修改前端显示) 第二阶段:发起实际支付(关键验证点) 关键参数发现 : 拦截支付请求发现 discount 参数(默认值为0) 参数名称明确指示其折扣功能 漏洞验证 : 将 discount 从0修改为1 支付金额成功减少1元 实际测试购买商品(TT)验证漏洞有效性 支付0.1元后售货机正常出货 漏洞原理分析 业务逻辑缺陷 : 前端与后端价格验证不一致 折扣参数未做有效性验证 支付金额计算依赖客户端可修改参数 安全设计缺失 : 缺乏价格签名验证机制 关键业务参数未做服务端二次确认 无防篡改设计 漏洞修复建议 服务端改进 : 实现价格签名机制 商品价格应从服务端获取,不依赖客户端参数 对折扣参数进行严格验证(范围、权限等) 架构设计优化 : 关键业务参数应加密或签名 实现前后端价格一致性验证 支付流程增加二次确认环节 监控措施 : 异常价格交易监控 折扣使用日志审计 漏洞挖掘方法论总结 全面参数测试 : 测试所有请求参数的可修改性 特别关注业务相关参数(如price、discount等) 流程分段分析 : 将复杂业务流程分解测试 关注各阶段的数据一致性 参数命名线索 : 通过参数名推测功能(如discount) 注意拼音首字母缩写等非常规命名 实际效果验证 : 漏洞需在实际业务场景中验证 确认漏洞的完整利用链 扩展思考 同类系统测试方向 : 自动售货机系统 自助服务终端 无人零售设备 进阶测试技术 : 时序攻击测试 并发请求测试 支付结果状态测试 业务逻辑漏洞挖掘要点 : 理解正常业务流程 寻找流程中的信任边界 测试各环节的数据一致性 本漏洞分析展示了业务逻辑漏洞的典型特征和挖掘方法,强调了全面参数测试和流程分析的重要性,为类似系统的安全测试提供了可复用的方法论。