白帽江湖实战靶场实战SRC逻辑漏洞-白嫖大法

靶场地址:https://www.baimaojianghu.com/range/4

✅ 通关成功!Flag 已获取

Flag: flag{md5_s1gn_byp4ss_pr1ce_t4mper}


漏洞分析摘要

1. 签名密钥硬编码泄露 🔑

前端 JS 源码中直接暴露了 MD5 签名密钥:

var _cybermall_runtime = {
   _ak: "cybermall_sign_key_2024_s3cure!",
};

任何用户查看页面源码即可获取该密钥。

2. 签名算法可复现

function generateSign(params) {
   var keys = Object.keys(params).filter(function(k) { return k !== 'sign'; }).sort();
   var str = keys.map(function(k) { return k + '=' + params[k]; }).join('&');
   str += '&key=' + _cybermall_runtime._ak;
   return md5(str);
}

参数按 key 字母排序 → 拼接成 k=v 对 → 尾部追加 &key= + 密钥 → 整体 MD5。

3. 核心漏洞:服务端未校验 price

后端仅验证签名「是否合法」,但未校验 price 是否等于该商品在数据库中的真实价格。因此攻击者可:

  1. price12990(¥12,999.00)改为 0
  2. 用泄露的密钥按相同算法重新计算 sign
  3. 提交请求 → 0 元购买成功

攻击点(严重程度:Critical)

问题 风险
签名密钥暴露在前端 JS 任何用户都能提取密钥
price 参数不参与服务端校验 篡改价格重新签名即可绕过
无服务端价格校验 可无限次 0 元购,经济系统崩溃

修复建议

  1. 密钥仅存服务端,前端只负责提交订单号,由服务端生成签名
  2. 服务端校验 price:下单时从数据库读取商品真实价格,拒绝客户端提交的 price
  3. 用服务端 session + HMAC 或 JWT 替代前端 MD5 签名方案

温馨提示:本文内容仅用于合法授权的安全学习与研究交流,严禁用于未授权渗透测试、漏洞利用或任何违法行为。

涉及企业或平台的未公开漏洞信息,请遵循负责任披露原则,勿公开传播可直接复现的敏感细节。

如存在侵权、错误信息或不当内容,请联系站方处理,我们将及时核实并删除。邮箱:admin@baimaojianghu.com。