探讨一下某团购网的漏洞
发布时间 - 2021-02-20 00:00:00 点击率:次前言:
去年九月份同事在某团购网买了一份火锅套餐,后来几乎每天都去购买。元旦期间,该团购网推出了“VIP会员0元领红包”活动,领红包谁不喜欢?因此我也参与了该活动。
于是果断进去注册,点击购买,进入了购物车再点击确认订单,恩?怎么alert这么一句“本活动只限VIP会员参与”?我第一反应是去看页面源代码(由于该活动已经结束,进不去购买页面了,所以在这里我只好用伪代码来表示):
//确认订单按钮的点击事件function btn_click(){
ajax获取当前用户的类型
如果不是VIP,alert("本活动仅限VIP会员参与");
否则 form1.submit();
}然后我在地址栏敲入:javascript:form1.submit(); 回车! 进入付款页面了,再点击确定,恩?购买成功!我获得
了5元红包!
太给力了!!!我又新注册一个账号,重复上面的步骤,也成功获得了5元红包。
马上给客服留言说明此BUG,不过到今天还没回复我,呵呵。
这个漏洞的关键点是开发人员忘记了在form1.submit()的后台代码中判断当前用户是否VIP会员,只依赖于javascript的验证。
前台的验证顶啥用啊,完全可以绕过去,后台的验证才最重要!!
有了上午的收获,1号晚上我就继续找别的团购网的漏洞,果然被我找到一个更严重的。
该团购网也举行了一个元旦抽奖砸金蛋活动,也是免费参与,购买后发现得邀请好友参与活动才有砸金蛋的机会,邀请一个好友就多一个机会,如图:
我一点击金蛋就alert一句“没有抽奖机会了快去邀请好友吧!”,恩,又是javascript?看看代码先:
这便是金蛋的点击事件,其中有一个用AJAX去访问的页面lottery1.php,而要传过去的chance变量应该就是当前用户拥有的砸蛋机会。
(学习视频分享:编程入门)
我试着直接访问lottery1.php?chance=1,返回error字符串,lottery1.php?chance=0也返回error,lottery1.php?chance=-1,也
返回error,难道没效果么?我刷新了一下砸金蛋的页面,哇!!
我传了-1过去导致溢出了?我试着砸了几个,每次都成功获得代金卷!!太给力了。接着试着用代金卷去下单,也能成功减免掉几块钱,
不过一张订单只能用一个代金卷,呵呵(当然测试用的订单我最后取消掉了,本人还没那么邪恶,哇咔咔)
马上联系客服,居然下班了,QQ不在线,电话打不通,只好留了个言。
接下来干嘛呢?砸蛋呗!42亿的金蛋呢,写了段JS自动砸!截止现在一共有3588个金蛋被砸开,其中至少有2000多个是我砸的,哇咔咔
得到了一大堆的代金卷:
整整185页,呵呵,蛮壮观的!!!
到了2号,我重新查看该团购网的代码时,发现了一个更严重的问题:
JS中有这么个方法
乍一看是跟钱有关的吧,传入用户ID和钱的数目,试试有什么效果。
用户ID怎么获得呢?别急,页面上有:
这个96204就是我当前帐户的ID了,访问了一下,返回“线下充值成功”,哇,这么给力?充值页面都不加权限验证的?
查看了一下帐户余额,果然充值成功了:
哥有2万余额了,哇咔咔!!这个漏洞太致命了,立马给客服留言。刚留完言,他们的开发人员给我打电话了,和我讨论
砸金蛋的漏洞问题,正好将刚发现的漏洞一起告诉他。开发人员就是命苦啊,元旦期间,晚上10点多了,他还要改代码。
改完他说老板可能送点礼品给我,好期待啊,呵呵。
最后他把我的帐户余额清零了,我在心里呼喊:不~要~啊,我的2万元啊~~~~~~~~
总结一下:前台的验证都是不靠谱的,后台必要都要验证一遍;管理页面一定要加访问权限;传递到后台的数据一定要
进行合法性验证;不必要传递的参数就不传,比如那个砸蛋,我就想不明白为什么要把当前用户拥有的砸蛋机会传递到
后台,直接从数据库中读取不行么?用户ID不要以明文出现。另外还要防范XSS跨站脚本攻击(一般用判断主机头的方式)
我的网站:http://i.goto327.top:85/
相关推荐:网站安全
# php
# JavaScript
# ajax
# xss
# Error
# 字符串
# 堆
# JS
# 事件
# alert
# 数据库
# http
# bug
# 代金
# 客服
# 团购网
# 试着
# 充值
# 开发人员
# 给我
# 我在
# 还没
# 一句
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
EditPlus中的正则表达式 实战(2)
深圳网站制作平台,深圳市做网站好的公司有哪些?
html如何与html链接_实现多个HTML页面互相链接【互相】
详解Android——蓝牙技术 带你实现终端间数据传输
Laravel Asset编译怎么配置_Laravel Vite前端构建工具使用
Laravel怎么导出Excel文件_Laravel Excel插件使用教程
米侠浏览器网页背景异常怎么办 米侠显示修复
教你用AI将一段旋律扩展成一首完整的曲子
如何在万网ECS上快速搭建专属网站?
北京专业网站制作设计师招聘,北京白云观官方网站?
如何安全更换建站之星模板并保留数据?
js实现点击每个li节点,都弹出其文本值及修改
Laravel怎么上传文件_Laravel图片上传及存储配置
Python进程池调度策略_任务分发说明【指导】
Laravel Blade组件怎么用_Laravel可复用视图组件的创建与使用
如何快速上传建站程序避免常见错误?
Laravel如何部署到服务器_线上部署Laravel项目的完整流程与步骤
javascript基本数据类型及类型检测常用方法小结
canvas 画布在主流浏览器中的尺寸限制详细介绍
如何在腾讯云服务器快速搭建个人网站?
香港服务器部署网站为何提示未备案?
如何用y主机助手快速搭建网站?
Laravel如何实现文件上传和存储?(本地与S3配置)
详解Nginx + Tomcat 反向代理 负载均衡 集群 部署指南
如何将凡科建站内容保存为本地文件?
Laravel怎么定时执行任务_Laravel任务调度器Schedule配置与Cron设置【教程】
Laravel如何实现用户密码重置功能?(完整流程代码)
在centOS 7安装mysql 5.7的详细教程
如何选择可靠的免备案建站服务器?
Laravel如何优化应用性能?(缓存和优化命令)
如何快速搭建支持数据库操作的智能建站平台?
DeepSeek是免费使用的吗 DeepSeek收费模式与Pro版本功能详解
如何在IIS7上新建站点并设置安全权限?
Laravel如何配置和使用缓存?(Redis代码示例)
如何挑选高效建站主机与优质域名?
购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?
Laravel安装步骤详细教程_Laravel环境搭建指南
html5怎么画眼睛_HT5用Canvas或SVG画眼球瞳孔加JS控制动态【绘制】
Laravel队列由Redis驱动怎么配置_Laravel Redis队列使用教程
html5audio标签播放结束怎么触发事件_onended回调方法【教程】
如何在IIS中新建站点并配置端口与物理路径?
Edge浏览器怎么启用睡眠标签页_节省电脑内存占用优化技巧
Laravel事件监听器怎么写_Laravel Event和Listener使用教程
Laravel Pest测试框架怎么用_从PHPUnit转向Pest的Laravel测试教程
Laravel项目如何进行性能优化_Laravel应用性能分析与优化技巧大全
如何快速搭建虚拟主机网站?新手必看指南
JS去除重复并统计数量的实现方法
🚀拖拽式CMS建站能否实现高效与个性化并存?
edge浏览器无法安装扩展 edge浏览器插件安装失败【解决方法】
常州企业网站制作公司,全国继续教育网怎么登录?

