问答
发起
提问
文章
攻防
活动
Toggle navigation
首页
(current)
问答
商城
实战攻防技术
漏洞分析与复现
NEW
活动
摸鱼办
搜索
登录
注册
某积分商城任意金额支付漏洞分析利用及思考
漏洞分析
大部分开发人员在开发时都会有一种思维惯性,传参处处有校验==处处都可信,但这个等式并非恒成立
前言 == 这个漏洞是在工作中例行渗透测试的时候发现的,虽然前端做了防篡改措施,但这是很经典的没有后端校验导致的任意价格支付。 漏洞已在内部提交并确认修复。 漏洞描述 ==== 兑换积分商品时数据包会携带extendKey ,在分析js代码时发现,其值是商品id、数量、商品价格、可用积分这几项的拼接值,再进行加密得到的。本意是使用extendKey实现数据包关键内容二次校验防篡改,但extendKey的加解密方式以及key均写在js代码中,这就使得extendKey的篡改变得可行。在兑换积分商品时经解密发现其值会携带商品价格信息,篡改后实现任意使用任意积分对商品的兑换。 漏洞分析利用 ------ ### 0x01 加解密说明 在js代码中找到extendKey的加密方式,可以看到用的是aes-128-ecb加密,密钥n也明文写在js代码中。 ![js代码加密段.jpg](https://shs3.b.qianxin.com/attack_forum/2024/04/attach-add6f1afb85d5bea71f9f96980d65dcae0f1bd2e.jpg) 加密流程:先aes-128-ecb再base64编码。 解密流程:先base64解码再aes-128-ecb解密 对extendKey的值做解密验证 ![请求价格数据包.jpg](https://shs3.b.qianxin.com/attack_forum/2024/04/attach-06505927a2d52d5aee5aa32645efb646cea28532.jpg) 解密发现,原始字符串是将商品id和数量使用“|”做了拼接 ![对extendkey解密.jpg](https://shs3.b.qianxin.com/attack_forum/2024/04/attach-89401eb841fbd4924c0dbb6cc1c176a4c9064ecd.jpg) ### 0x02 利用过程 账户中原始可用的积分 ![原始可用积分.jpg](https://shs3.b.qianxin.com/attack_forum/2024/04/attach-d59853f90b7293cb9cc15a7970a6f87f782ccfa5.jpg) 选择一个所需积分大于账户已有积分的商品,点击立即购买,拦截响应数据包 ![商品截图.jpg](https://shs3.b.qianxin.com/attack_forum/2024/04/attach-2ce3142cd3f5911ca56615ff609649a4d8383c52.jpg) ![截获的响应数据包.jpg](https://shs3.b.qianxin.com/attack_forum/2024/04/attach-c6bacbf2f12689e0db6b8ce5de2673174c4e4981.jpg) 解密extendKey发现是 两个商品id+数量+商品积分价格 的组合字符串 ![解密响应的extendkey.jpg](https://shs3.b.qianxin.com/attack_forum/2024/04/attach-6c6acae72b79eb9d22f364a3d84dc82ef389b1fc.jpg) 修改字符串中最后一个值及价格为10,并重新生成extendKey ![生成篡改后extendkey.jpg](https://shs3.b.qianxin.com/attack_forum/2024/04/attach-b2bc13a0698465a2a9c490aef520fc4429096c23.jpg) 接着修改返回包中tradePointAmount的值为10,并填入篡改后的extendKey值 ![篡改响应数据包价格等.jpg](https://shs3.b.qianxin.com/attack_forum/2024/04/attach-335ce7ec934f87e35f21a0e89aca683160d54929.jpg) 然后释放响应包前端出现提交订单页面,虽然前端显示的还是29900的价格,这是因为控制前端显示价格值的不是tradePointAmount这个键值 ![提交订单.jpg](https://shs3.b.qianxin.com/attack_forum/2024/04/attach-e5b77677f6908739b454ed27f55dc5e13205acb6.jpg) 点击提交订单可以看到交易价格已经是10积分,从后续的响应包也可以确认这一点 ![篡改后下单的响应数据包.jpg](https://shs3.b.qianxin.com/attack_forum/2024/04/attach-e8152c9d95f46cdc202a574ad2fb8f4e65e53df2.jpg) 紧接着释放响应包,确认前端10积分的订单已经生成成功等待支付 ![生成的10积分订单.jpg](https://shs3.b.qianxin.com/attack_forum/2024/04/attach-175e11780480dae02896f1fef2e8b9a8e46a3878.jpg) 最后支付订单 ![微信图片_20240510141358.jpg](https://shs3.b.qianxin.com/attack_forum/2024/05/attach-749a903a1eaf107d3a565cce55eb5c11e13998c0.jpg) ![10积分兑换成功1.jpg](https://shs3.b.qianxin.com/attack_forum/2024/04/attach-8ca92e402b1cc6c891edee23ff9ce6c954c7f6ea.jpg) ![10积分兑换成功2.jpg](https://shs3.b.qianxin.com/attack_forum/2024/04/attach-0e1f04458939462fb54d73bc887c10911c450116.jpg) ![10积分兑换成功3.jpg](https://shs3.b.qianxin.com/attack_forum/2024/04/attach-1d0806821b6bb2d4c1f9ea53c254839ad8a7ec08.jpg) ![剩余积分.jpg](https://shs3.b.qianxin.com/attack_forum/2024/04/attach-3267461de23a56fd413b94b7ae55af53597c8c23.jpg) 分析总结 ---- 这个漏洞就是经典的未对金额进行正确的后端校验,先从开发者的视角分析一下开发者的思路: 1. 点击立即购买,请求带上商品id以及数量,向后端获得价格等信息。 2. 后端服务查询得到商品价格,返回前端,前端接收并校验为提交订单做准备。 3. 提交订单,前端传递“可靠”的价格值去请求订单处理服务,生成了支付订单。 第1步,前端认为应该先向后端询问商品价格,第2步完成时前端开发者视角下认为金额是后端传递给前端的且对金额数量等值做了加密,只要前端进行解密、校验,便认为是“可靠”的,到第3步向支付系统请求生成订单时,后端支付系统开发在对接时得知有个extendKey值可以做校验,也就放心的进行了价格校验。虽然也对价格等关键参数值做了加密、校验,但忽略了AES是对称加密,而js也未作混淆之类的处理,算法密钥以明文的形式暴露给攻击者,篡改extendKey轻而易举。问题就出在支付订单生成服务未在订单生成前在后端向商品价格的数据库查询做二次校验,而只是校验了前端传的值。开发时觉得,传参处处有校验==处处都可信,这是一个思维惯性,但必须要注意避免。 ### ps: 至于为什么要在第2步就修改金额,是因为前端有个账户积分和商品价格比较的机制,积分不足不会有下一步订单提交生成,如果商品原本价格就低于已有积分,那么直接从第3步修改金额就可以
发表于 2024-05-10 10:00:00
阅读 ( 16788 )
分类:
漏洞分析
3 推荐
收藏
5 条评论
King
2024-05-10 10:53
最后支付订单bp截图中,origin未做打码
请先
登录
后评论
joker
2024-05-11 10:05
求解密网站链接
RCE
回复
joker
CyberChef
请先
登录
后评论
网安泡泡
2024-05-14 10:09
请问大佬, 截取数据包的软件叫什么名字?
4everup
回复
网安泡泡
bp
请先
登录
后评论
请先
登录
后评论
K1v1n
2 篇文章
×
发送私信
请先
登录
后发送私信
×
举报此文章
垃圾广告信息:
广告、推广、测试等内容
违规内容:
色情、暴力、血腥、敏感信息等内容
不友善内容:
人身攻击、挑衅辱骂、恶意行为
其他原因:
请补充说明
举报原因:
×
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!