当前位置: 首页 > news >正文

H5渗透实战:从负数金额漏洞到签名绕过

前言

免责声明:本文仅供安全学习研究,所有测试均在授权环境或自建靶场中进行。严禁用于非法用途,否则后果自负。

某水卡系统漏洞实战

此次实战是针对混合开发APP的渗透测试,通过抓包提取APP内嵌的H5页面,对其API接口进行安全测试。

常见混合开发框架:

Cordova

  • 技术栈:WebView + H5

  • 代表应用:早期银行APP、政务APP

  • 特点:最早的混合开发方案,插件生态丰富

Ionic

  • 技术栈:Angular/React/Vue + WebView

  • 代表应用:企业OA、CRM系统

  • 特点:UI组件丰富,适合企业应用

原生WebView

  • 技术栈:原生壳 + H5页面

  • 代表应用:各种物业/水电缴费APP

  • 特点:开发成本低,更新灵活,最常见

为什么选择混合开发APP?因为原生APP需要逆向、Hook等技术门槛较高,而混合APP内嵌H5页面,只需抓包分析即可发现漏洞,是APP渗透的最佳入门目标。这次实战目标就是从app提取的h5页面进行挖掘(更偏向Web渗透)

混合APP容易测试的原因点如下:

  1. 业务逻辑在H5中,可直接抓包

  2. 前端JS代码可查看,签名算法可逆向

  3. 提取H5链接后可在浏览器中测试

如何判断APP类型

最简单的方法就是看请求包

举个栗子(比如接口里面带有h5关键词的):

GET https://h5.***/app/index.html

亦或者解包apk去搜索WebView相关代码or查看assets目录是否有H5文件

话不多说,直接开始实战!本次实战基于真实场景搭建的模拟靶场进行演示。

正文

由于充值后会立即重定向,浏览器F12抓不到完整请求,这里用Reqable抓包。

直接将amount改为 -50,充值成功!这是典型的负数金额漏洞——后端未校验金额正负,导致 balance + (-50) 使余额反减。既然充值接口没有校验金额正负,那么转账接口大概率也存在同样的问题

转账功能在前端是进行了校验的,跟充值一样,转账后会立即重定向,浏览器F12抓不到完整请求,继续使用Reqable抓包

转账也是一样,存在相同的逻辑漏洞

虽然页面展示的我转账至A-102是-50,但是我的余额没扣反加,余额从349.48变成了399.48。原理很简单:

我的余额 = 100 - (-50) = 150 ← 不减反加对方余额 = 200 + (-50) = 150 ← 被扣钱了

emmm,思考ing...既然是水电卡系统,那么充值也只是资金入口,真正的业务核心在缴费环节。继续沿着业务流程测试电费缴纳模块,看看是否存在类似的漏洞。

【----帮助网安学习,以下所有学习资料免费领!加vx:YJ-2021-1,备注 “博客园” 获取!】

 ① 网安学习成长路径思维导图
 ② 60+网安经典常用工具包
 ③ 100+SRC漏洞分析报告
 ④ 150+网安攻防实战技术电子书
 ⑤ 最权威CISSP 认证考试指南+题库
 ⑥ 超1800页CTF实战技巧手册
 ⑦ 最新网安大厂面试题合集(含答案)
 ⑧ APP客户端安全检测指南(安卓+IOS)

进入到缴费页面,发现只有两个接口

还是跟之前一样测试是否能修改成负值进行充电勒

充电的接口与充值、转账接口不同,电费缴纳接口增加了安全防护——请求中包含 sign 签名参数:直接修改 amount 为 -100 后发送,返回"签名验证失败"。这是一种常见的防篡改机制,后端会根据参数重新计算签名并与请求中的 sign 比对。要绕过签名校验,需要逆向分析签名算法。由于这是混合APP,签名逻辑在前端JS中实现,我们可以直接分析。

直接全局搜索sign参数,触发充值事件,断点断住了,明文就是amount加上meter_no和时间戳放到generateSign函数进行了加密。

进入到generateSign函数进行分析

function generateSign(params) {   // 1. 获取所有参数名,过滤掉sign本身,然后按字母顺序排序   // → ["amount", "meter_no", "timestamp"]   const sortedKeys = Object.keys(params).filter(k => k !== 'sign').sort();   // 2. 将参数按 key=value 格式拼接,用 & 连接   let signStr = sortedKeys.map(k => `${k}=${params[k]}`).join('&');   // 3. 在末尾追加密钥(这就是签名的关键!密钥硬编码在前端)   signStr += '&key=WaterCard@2024#SecretKey';   // 4. 对拼接后的字符串进行MD5哈希,得到签名   return md5(signStr);
}

签名算法总结:

sign = MD5(参数按字母排序拼接 + &key=密钥)

加密算法分析完之后,进行py模拟发包

跟之前充值,转账的后端逻辑一样的,但是这次危害更大,因为不仅吸了钱还加了电费

负数度数 → 负数费用 → 扣负数 = 加钱

电表读数直接加负数 → 读数倒退

结尾:

本文仅供安全学习研究使用,请勿用于非法用途。

更多网安技能的在线实操练习,请点击这里>>

  

http://www.jsqmd.com/news/410402/

相关文章:

  • 2026年靠谱的成都工地住人集装箱/集装箱畅销厂家采购指南如何选 - 行业平台推荐
  • 3步释放微信数据价值:WechatDecrypt让数据管理更简单
  • RePKG技术指南:跨平台资源处理工具的创新应用
  • Anthropic一篇博客,IBM大跌13%,创25年来最大单日跌幅
  • 计算机毕业设计之springboot学生宿舍管理系统
  • 吐血推荐!千笔AI,本科生论文写作巅峰之作
  • 那个会自己写测试用例的AI,今天把我逼到了墙角
  • GeckoDriver实战指南:从环境搭建到性能调优的完整路径
  • 浸没式液冷技术研究进展
  • 如何解决游戏操作失灵?Hitboxer带来的精准输入体验
  • 德州初中毕业去哪个学校?哪家 学费合理? - mypinpai
  • 识破钓鱼网站陷阱,守护您的“钱袋子”
  • 2026年知名的发热电缆/高温发热电缆怎么联系实用公司采购参考 - 行业平台推荐
  • iOS安全定制指南:用Cowabunga Lite打造个性化体验
  • 测试了10款AI编程助手,我发现它们最大的bug居然是...
  • 专业守护,滴水不漏 | 上海堵漏防水公司首选:芮生建设,14年团队,资质齐全,全域快响 - shruisheng
  • 好写作AI:用AI写论文,每天多睡两小时
  • 教AI编程作弊,它却想统治世界?Anthropic首曝「人格选择模型」
  • 5步掌握系统级音频优化:Equalizer APO开源工具完全指南
  • 2026年质量好的烧烤餐饮品牌设计/网红餐饮品牌设计生产商采购建议怎么选 - 行业平台推荐
  • 文献管理效率倍增:Jasminum插件5大核心场景应用指南
  • AI大模型不会学习?腾讯姚顺宇团队来解答
  • 2026年有实力的青少年儿童视力防控,青少年儿童视力斜弱视防护,青少年儿童视力养护公司优质供应商推荐清单 - 品牌鉴赏师
  • 好写作AI:论文排版太难?AI一键搞定格式
  • OpenClaw + Codex/CC :单人用Agent集群替代整个开发团队
  • 基于行为特征与动态沙箱的AsyncRAT变种检测及防御机制研究
  • Java 变量命名规则详解
  • 好写作AI:导师批注看不懂?AI帮你解读
  • 基于SSM的课堂信息管理系统[SSM]-计算机毕业设计源码+LW文档
  • Nginx 报413 request entity too large 解决办法