实战|记录对某网站漏洞挖掘
2024-2-13 22:33:58 Author: mp.weixin.qq.com(查看原文) 阅读量:9 收藏

前言

记录一次对某网站漏洞挖掘,漏洞点为功能性漏洞,漏洞发生原因为逻辑判断问题,因涉及企业和个人信息,敏感信息将进行打码,后续漏洞将进行提交

漏洞过程

网站的主营业务为售卖服务,虚拟商品等,不同的种类,可以选择按数量购买或按时间购买,经过测试,此网站的某商品中,在选择数量时未进行上限判断,可进行科学计数法进行绕过,网站默认购买数量为1000

在输入正常值的时候,会正常显示账单价格

因输入结果后js会自动获取账单价格,此时我们在数量中输入科学计数法:1E,账单此时价格为0元

可以得知以下结论:开发者未对网站此功能点处做数据过滤,未设置数量上限

漏洞测试及分析

看到有两个支付接口,一个是ZFB支付,一个是余额支付,我们先进行ZFB支付看回显结果

经过以上图片可以看到,输入的数据确实按照1e即1亿去执行的,在将数据传递给zfb接口的时候,因数额太大则导致失败,此时抓包看一下数据

首先第一个包中GET数据中有三个参数,这个数据包主要是判断传递参数是否有问题,第一个参数为0,是判断的购买数量,购买为1000的时候值为1,2000的时候值为2,依次类推,至于为0则是因为传递的数值过大,无法进行处理,则为0,第二个参数是购买的商品类型,第三个参数是所购买的商品类型中的子类

此时将第一个数据包放出后通过检验,后台生成一个订单号,传递给ZFB的api

看ZFB付款页面中,参数中会携带对应的订单号,和官方的参数数据,如果支付成功,api响应success,失败或其他则返回fail或false

再看第二个支付通道,分析此数据包,还是一如既往的生成一个校验参数传递给后端

此时后端接收到校验数据后,根据自身条件判断没问题后,将生成一个订单号传递给余额,后续扣费

此时看到回显成功,并且前往个人中心查看订单已经生成成功,可用时间为5年,费用为0,默认数量也是为1000(因为判定条件中不存在0这个数量)

意外发现:通过回显的数据中,backendIP为内网IP,没做后渗透操作,就没在管

整改建议

对输入的数据类型做严格过滤,为购买的商品数量做上限限制,对核验时的参数值做严格核对,对回显中的内网IP做参数删除或更改为域名或外网IP响应

总结

此次漏洞挖掘,漏洞为支付时出现逻辑判断出错,在进行首次判断传递参数的时候,因为传递数值过大,无法进行处理,数量则为0,两个类型则是判断商品及子类是否存在,当三个条件满足时,将生成订单号交给后端,逻辑上的错误:系统无法处理造成数量为0则扣费余额也是0,造成和账户余额校验时为恒真,支付成功后可正常使用商品服务,影响较大,危害较大,此外在所有操作后,返回数据包中程序暴露出内网IP地址

此次测试漏洞将打包上传给官方,并给出修复建议

如果你是一个长期主义者,欢迎加入我的知识星球,我们一起往前走,每日都会更新,精细化运营,微信识别二维码付费即可加入,如不满意,72 小时内可在 App 内无条件自助退款
前面有同学问我有没优惠券,这里发放100张100元的优惠券,用完今年不再发放

往期回顾

xss研究笔记

SSRF研究笔记

dom-xss精选文章

年度精选文章

Nuclei权威指南-如何躺赚

漏洞赏金猎人系列-如何测试设置功能IV

漏洞赏金猎人系列-如何测试注册功能以及相关Tips


文章来源: https://mp.weixin.qq.com/s?__biz=MzIzMTIzNTM0MA==&mid=2247493540&idx=1&sn=32900757e933887812b204940f8f3950&chksm=e8a5edc7dfd264d167524fcc2bac58183f2e58ca1528836311dbbc9940c5e759fe0ecc38f18c&scene=58&subscene=0#rd
如有侵权请联系:admin#unsafe.sh