问答
发起
提问
文章
攻防
活动
Toggle navigation
首页
(current)
问答
商城
实战攻防技术
漏洞分析与复现
NEW
活动
摸鱼办
搜索
登录
注册
小程序渗透记录 通过细节挖掘漏洞的艺术
渗透测试
近期挖掘的几个有意思的支付漏洞逻辑漏洞,记录一下。希望能对师傅们有一点点的思路帮助,欢迎指正及交流学习!
> 免责声明:本文仅用于网络安全相关知识分享,请严格遵守网络安全相关法律法规。 未经授权利用本文相关技术从事违法活动的,一切后果由违法人自行承担!作者不承担任何法律责任 ### 低价享受高价 锁定一个购票小程序.购买出行船票或车票时都区分为 二等座 一等座 包括舱位、上下卧铺价格也不同上,包括成人价格 儿童老年人优惠等,站点特征明显,厚码叠甲 选择一个目的地出行,然后下单记录数据包  选择一个目的地BP记录到了创建订单的接口shipgateway/shipOrderApi/createOrder 创建订单观察到并没有`sign`校验字段,存在问题可能性较大。遂将这个接口发送到重发器进行修改测试   测试支付漏洞我喜欢搜索数据包`price`价格 每个字段都改变为最小的数字,再逐一发包创建新订单 但并未起效,订单也还是正常票价, 说明决定订单总价的字段并不是`price` 而是订单其他参数,目的地、票价类型、乘客类型都有可能,;而后开始对每个存在字段的数字增增改改 观察到底是哪个字段可以影响订单的生成  修改到`passengerType`字段为2响应包显示 价格不匹配 ,根据字段意思推测这里决定用户的类型身份,正常情况的1为成人,2则是其他的类型得到响应包线索后,现在我需要知道其他`passenger Type`类型对应分别是哪些用户,业务提示很明显了,成人类型为1 那么`ticketPrice`票价为`100`业务推敲一下也就是对应下列  经过测试`passengerType`字段和`ticketPrice`价格字段挂购,二者需要一起修改,单独修改为固定的价格则会响应价格不匹配, 两个字段需要一起满足才能达到对应身份的票价 ```php ticketPrice=票价 passengerType=成人类型 成人: passengerType=1 && ticketPrice=100 儿童: passengerType=2 && ticketPrice=50 长者: passengerType=3 && ticketPrice=50 ``` 那么改两个字段为其他儿童类型所对应的价格,成功以成人身份证生成低价学生票订单,并且身份证还是原本成人   这个时候我想再提高一下危害, 既然订单的价格是由用户类型所关联的价格决定了,我是否可以自主的再次修改增值的业务参数呢?享受到最高的优惠, 船票分为上等中等, 利用普通订单价格享受高等舱位服务,通过对比普通舱订单和头等舱位订单定位到`seatId`字段决定了舱位等级 ```php "seatId":1 # 普通舱 "seatId":0 # 头等舱 ```  在中等舱数据包中,当我把三个字段都修改好后,订单虽然可以创建成功,但是舱位的类型还是中等舱,价格反而变成了头等舱的价格, 思考一下,既然在中等舱无法直接修改成高等舱,那我生成高等舱的订单,把它的用户类型、票价、舱位3个字段为最低的层面尝试绕过 ```php "seatId":0 // 头等舱 passengerType=2 // 儿童类型 ticketPrice=50 // 儿童票价 ``` 当这样修改后就可以成功创建高等舱位的低价订单,后端只是校验了 决定价格字段和类型字段间是否是一一对应,对当前舱位字段没有限制, 可以单独的去修改`seatId`字段控制舱位价格 ```php "seatId":1 // 中等舱 passengerType=2 // 儿童类型 ticketPrice=50 // 儿童票价 ```  成功生成正常可以支付的订单   ### 0元购思路 同样还是这个业务站点,有的船票是存在携童免费措施的,有的没有,那么将我的身份伪造为更低的是不是就可以0元上船呢  但是这里不能直接通过上面的手法修改类型、价格, 测试发现决定是否免费的关键是身份证的处理,身份证需要是儿童的出生年月,但是添加乘客接口是身份证大多是实名认证,我不清楚验证的原理是什么,按道理前端了身份证号对应的身份证,说明是后端查询到了, 但是我在BP里面拦截这个数据包又可以修改,说明并没有走后端,那么一开始的前端验证是什么逻辑呢,有懂的师傅可以解释一下,难道身份证认证的接口放到前端查询吗,可能是调用了身份证的接口  首先添加正常的乘客信息绕过验证,找到添加的数据包 修改身份证和日期为儿童的,往大了写就可以,这一步如果身份证有婴儿身份证的话可以不用,或者自己有牛逼的`sgk`  那么现在已经有了儿童的身份了,但是还需要在下单的时候把身份证修改回来,不然买的票身份证不是自己的买了也没用,找到一处可以携童免费的船票,选择上面添加的携带乘客信息,选择免费的票  儿童免费票不能独立购买需要携带一名成人,正常添加一名成人乘客,然后正常下单记录接口  抓取到创建订单接口发送重发器,上方为添加的成人,下面则是免费的儿童身份儿童身份证,出生年月为自己修改的2022年身份证  朴实无华的将出生年月及其身份证号修改为自己本人的身份发包,成功创建订单  一份钱买两个成人的票 0元上船,但是无奈这个点后续虽然可以支付订单 但是会自动退票,或者会有人工客服打电话来,审核回应`SRC`排查过这个点  ### 输出点思考 生成订单后出现的订单号,查询订单的接口会回显当前订单的乘客信息三要素,经过大小号替换订单号测试,是可以越权查询到他人的订单信息要素的,但是此订单号无法遍历,在网站其他功能点都没有找到可以出现订单号的地方,评论区 投诉 都没有  虽然无法利用,但是这个接口引发了另一种思考,订单号查询正常只返回订单对应乘客信息,但是这里却返回了用户的凭证字段 ```php "openId" : "xxxxx", "unionId" : "xxxxx" ``` 这两个字段都是鉴权字段,有了此字段的就可以跟替换Cookie一样替换别人的身份其他人的,操作此小程序所有增删改查功能点,当前虽然开着Hae但并没有相关的规则字段正则所以匹配不到,真的是细心才能发现,如果这个订单接口可以继续利用遍历的话,再结合返回的这两个字段,整个小程序用户信息全部会被接管,所有乘客三要素包括小程序所有功能点  **总结** 虽然这个订单接口无法遍历继续的去利用,但却有了新的思考,不经意的响应包可能会带出其他的信息,发在攻防社区另一篇文章,<https://forum.butian.net/share/4163>介绍了这个情况,借鉴了L@2uR1te师傅的文章《如何寻找参数的蛛丝马迹》[https://mp.weixin.qq.com/s/kSxl\_VM2dQbkBQEE\_DQrPQ](https://mp.weixin.qq.com/s/kSxl_VM2dQbkBQEE_DQrPQ)讲的很清楚,输出的参数拿到输入点去使用会有不一样的惊喜,只要一个点可以越权查看到别人的某些东西,把他人信息的铭感的参数收集下来替换到其他输出点使用,尝试是否能看到对应的信息,鉴权字段往往不是每一个功能都固定的,它可以接收某些其他参数发送请求, 在我看到输出订单号可以返回铭感信息后,第一时间就是找其他输出其他用户信息的功能,评论区 投诉这些,和这个思路是相同的 ### 全站收货地址泄露 日常逛资产,挑选到功能点相对多的小程序,业务是购买商品,有很多的支付漏洞包括逻辑漏洞可以测试  测试到地址管理功能点下列是查看我自己的地址`list` 出现了地址的id号 `13313 13314` 不等,小程序功能点大多使用`JWT`鉴权,对`JWT`尝试了常见攻击手段均无法绕过, ```php /buyer/address/list/ ```  测试小程序购买商品功能 正常选择收货地址,然后正常下单记录数据包  buyer/product/retail/submitOrderPa接口记录的参数是商品的价格还有斤数,都是明文的信息 直接一手0元购测试没有效果都和后端做了校验  但是注意看这里的`addrId`不就是对应了收货地址的`id`嘛,都是可以遍历的收货`id` 将它修改为其他地址的`id` 那么再生成订单是不是可以成功看到别人的地址呢,修改为`12000`,然后生成订单回到小程序看订单收货地址  成功的拿到他人收货地址包括手机号   手机号是脱敏的手机号,提上去肯定是危害没那么大的, 不过一般都是前端脱敏的,可以强开F12看看源代码,因为在这个站测的比较久业务点也明白,利用一个查询订单号的接口就可以得到脱敏的信息,得到了别人的信息就可以利用其他的功能点扩展,这也是上文我也说的思路 通过这两个创建订单接口和查询订单接口拿下全站收货地址包括二要素信息   ### 简单的0元 经典日常补天找项目打猎(捡垃圾),公司名直接微小程序,名称对大多不会搜错(这里翻车),功能点文创商品可以购买  选择一个最贵的商品选择下单支付 停留在待支付页面打开我们的`BP`捕获后面的数据包  在支付界面打开`BP`拦截,拦截每一步请求找到决定价格的数据包  看到`totalFee` 费用 直接修改`totalFee`字段总费用为`10` 也就是1分钱,放掉所有包直到出现扫码二维码   扫码支付成功0元   难掩激活火速通知好基友 今晚摆两桌,这种改价格的洞被我捡到了  老实了 厂商限定了测试的域名当时没注意看,因为很多域名想着应该不会歪, 结果去资产列表`CTRL+F`完全对不上`host`,反应了前期信息收集的重要性,撤回摆两桌 只能恰两个馒头了  ### %模糊查询配合size 信息泄露 经典小程序开局注册并登录.打开BP记录所有功能点数据包  输入一个符号\*模糊查询 匹配到所有公司 BURP抓到了记录铭感信息的数据包  把这个包发送到发器 数据很少 只有十几条数据   修改这个请求的size字段=9999 让显示的公司字节数据变多,使其显示更多的铭感信息  拿下推荐岗位功能所有公司联系人的二要素信息   其他功能点均存在此问题,大部分都是页面只能看到企业联系人姓名,打电话联系也是虚拟号码,但是在响应体中确会显示所有的手机号码和姓名,小程序业务也是求职里面包含大量的公司企业,通过响应包缺陷+模糊查询\*+size字节+Hae神器匹配整站企业联系人二要素全部泄露,并未全部列出但目测2w+条 培训模块  大龄工作  社会招聘  见习岗位  .......... ### 论坛渗透 经授权对一个社区论坛测试,不得不说 除了SRC外 互联网站点大多比较脆弱,如果有技术并且又不老实的 犯罪成本太低了,网络安全任重而道远,基本全是简单的鉴权问题,有的是压根没鉴权,有的鉴权字段写了但是并没有生效,简单记录几个有代表性的问题  #### 帖子置顶0元购 BURP渗透抓包工具抓取小程序的数据包 在主页点击发帖功能 ,下面有一个功能是花钱对帖子置顶  随意输入帖子的文案 然后点击发布后置顶\[/api/client/topics/pay\_configs\] 接口显示出了对应的价格字段还有所持续的时间  正常走发布帖子的流程,记录所有接口 这个接口数据包回显了对应的价格字段 并且没有对应的sing或者加密一类的东西和后端做校验,等于是前端校验价格还有置顶的时间,然后后端就返回了生成订单,那么我们篡改价格并且拉成时间就造成了漏洞问题了 /api/client/topic\_top\_orders  修改对应的价格还有时间 会生成新的订单号,完全前端校验   发布帖子置顶付款的业务流程是这样的三个接口 ```php /api/client/topics 帖子内容文字和标签 /api/client/topic_top_orders 置顶的价格生成订单号 这里进行篡改 payment/wechat/preorder/topictop/tp2025021408581339 请求后端付款 ``` 第三步接口利用第二步生成的订单号去跟后端请求,后端反馈加密还有付款的信息,但是这里加密完全没有作用,哪怕是一个空订单后端都会返回支付参数,加密完全是摆设,订单号也没有做比对  知晓了业务流程后续就是BP抓取生成订单的数据包 api/client/topic\_top\_orders 进行拦截篡改操作 价格改小就可以完成0元购,点击付费 就会拦截数据包修改价格然后一直放行就行了出现付款的选择 选择二维码支付 扫描付款就行了  #### 文件上传泄露阿里云sts 在每一个上传图片的功能点 头像 帖子 图片 上传会后端会返回阿里云的sts临时凭证 ak sk 还有存储桶的信息  有了这些信息最大是危害是利用凭证登录这个阿里云桶从而接管整个小程序里面存储的图片信息,或者是利用脚本来进行覆盖小程序内所有的图片 ```php api/common/ali_oss/temp_sign?scenc=1 ```  #### 越权让任意跑腿者主动接单 小程序存在跑腿赚钱功能,用可以接单的骑手号去接一个没有被接单的订单, 记录接单的请求  操作这个接口,替换订单号为任意的,跑腿者身份为别人的,可以任意指定谁去接谁的单,经过测试替换别人身份是可行的,订单号以及跑腿者的身份利用其他功能点的输出就可以得到 ```php errand_order_no 当前订单是什么 errander_id 跑腿者的身份 ```  最终也是打包报告并且辅助开发修复,美美结束  ### 总结 很喜欢师傅们口口相传的一句话,"你越安静 你听到的就越多",学习网络安全以来漏洞挖掘从0到1,从无到有,从一点也不会到勉强能测试,一直忽略直到可以时不时挖掘有效漏洞....,其中的历程磕磕绊绊但也饶有趣味,见过许多天才选手,CTF国内外各种赛事前几,大学生SRC年入几十,多场HW最佳攻击手,安全研究各种最新CVE,审计0day漏洞的.......,这些人让我望而却步但又无比渴望,心中只有一个疑问始终是他们为什么可以这么强,很想认识这样的人,很想成为这样的人,时间会诠释所有,学习任何技术知识都是孤独的,唯一慰藉的是做的是自己喜欢的事情以及许许多多志同道合的师傅在共同探讨,每当遇到问题网络上的师傅现实中的朋友都会给予指导,实战中前辈开发的工具插件,分享的安全公开笔记、漏洞挖掘思路都让我受益良多,从始至终都认为安全圈的学习氛围是非常好的,前人会把所学记录下来,后人站在前辈肩膀上又创造新的思路,天下万般绝学唯有恒心 希望我能在有限的时间内好好的提升自己,在未来为安全圈也能做出一些微不足道的贡献。end
发表于 2025-03-27 09:00:00
阅读 ( 1208 )
分类:
渗透测试
12 推荐
收藏
4 条评论
IceCream
3天前
思路很好,期待持续分享
请先
登录
后评论
网安007
3天前
写的很好,学习了~~
请先
登录
后评论
tvventyOne
3天前
叼的, 师傅带带
请先
登录
后评论
c铃儿响叮当
3天前
涨知识了,坐船再也不用花高价
请先
登录
后评论
请先
登录
后评论
一天要喝八杯水
大厂螺丝工
2 篇文章
×
发送私信
请先
登录
后发送私信
×
举报此文章
垃圾广告信息:
广告、推广、测试等内容
违规内容:
色情、暴力、血腥、敏感信息等内容
不友善内容:
人身攻击、挑衅辱骂、恶意行为
其他原因:
请补充说明
举报原因:
×
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!