0

0

探讨一下某团购网的漏洞

王林

王林

发布时间:2021-02-20 10:58:22

|

2832人浏览过

|

来源于博客园

转载

探讨一下某团购网的漏洞

前言:

去年九月份同事在某团购网买了一份火锅套餐,后来几乎每天都去购买。元旦期间,该团购网推出了“VIP会员0元领红包”活动,领红包谁不喜欢?因此我也参与了该活动。

于是果断进去注册,点击购买,进入了购物车再点击确认订单,恩?怎么alert这么一句“本活动只限VIP会员参与”?我第一反应是去看页面源代码(由于该活动已经结束,进不去购买页面了,所以在这里我只好用伪代码来表示):

//确认订单按钮的点击事件function btn_click(){     
    ajax获取当前用户的类型    
        如果不是VIP,alert("本活动仅限VIP会员参与");     
            否则 form1.submit();
            }

然后我在地址栏敲入:javascript:form1.submit(); 回车! 进入付款页面了,再点击确定,恩?购买成功!我获得了5元红包!

fafbf22e0cd227024e8ad17fde01d72.png

太给力了!!!我又新注册一个账号,重复上面的步骤,也成功获得了5元红包。

马上给客服留言说明此BUG,不过到今天还没回复我,呵呵。

这个漏洞的关键点是开发人员忘记了在form1.submit()的后台代码中判断当前用户是否VIP会员,只依赖于javascript的验证。

前台的验证顶啥用啊,完全可以绕过去,后台的验证才最重要!!

有了上午的收获,1号晚上我就继续找别的团购网的漏洞,果然被我找到一个更严重的。

该团购网也举行了一个元旦抽奖砸金蛋活动,也是免费参与,购买后发现得邀请好友参与活动才有砸金蛋的机会,邀请一个好友就多一个机会,如图:

2f011a45c46d40876bcf4bd71a777ac.png

我一点击金蛋就alert一句“没有抽奖机会了快去邀请好友吧!”,恩,又是javascript?看看代码先:

becfe8639f0422c3654375856b16a61.png

这便是金蛋的点击事件,其中有一个用AJAX去访问的页面lottery1.php,而要传过去的chance变量应该就是当前用户拥有的砸蛋机会。

(学习视频分享:编程入门

我试着直接访问lottery1.php?chance=1,返回error字符串,lottery1.php?chance=0也返回error,lottery1.php?chance=-1,也

返回error,难道没效果么?我刷新了一下砸金蛋的页面,哇!!

508fb0a5e51f09eeeb1be7b1a9d080b.png

我传了-1过去导致溢出了?我试着砸了几个,每次都成功获得代金卷!!太给力了。接着试着用代金卷去下单,也能成功减免掉几块钱,

不过一张订单只能用一个代金卷,呵呵(当然测试用的订单我最后取消掉了,本人还没那么邪恶,哇咔咔)

马上联系客服,居然下班了,QQ不在线,电话打不通,只好留了个言。

接下来干嘛呢?砸蛋呗!42亿的金蛋呢,写了段JS自动砸!截止现在一共有3588个金蛋被砸开,其中至少有2000多个是我砸的,哇咔咔

佳可商务购物程序 2004
佳可商务购物程序 2004

在原版的基础上做了一下修正评论没有提交正文的问题特价商品的调用连接问题去掉了一个后门补了SQL注入补了一个过滤漏洞浮动价不能删除的问题不能够搜索问题收藏时放入购物车时出错点放入购物车弹出2个窗口修正主题添加问题商家注册页导航连接问题销售排行不能显示更多问题热点商品不能显示更多问题增加了服务器探测 增加了空间使用查看 增加了在线文件编辑增加了后台管理里两处全选功能更新说明:后台的部分功能已经改过前台

下载

得到了一大堆的代金卷:

789b72a805941b560f02717a9b5f4e0.png

整整185页,呵呵,蛮壮观的!!!

到了2号,我重新查看该团购网的代码时,发现了一个更严重的问题:

JS中有这么个方法

ca721df67029d8eeb98f8c3e50117e2.png

乍一看是跟钱有关的吧,传入用户ID和钱的数目,试试有什么效果。

用户ID怎么获得呢?别急,页面上有:

b522c2ed29b052b816fb8564c2c2035.png

这个96204就是我当前帐户的ID了,访问了一下,返回“线下充值成功”,哇,这么给力?充值页面都不加权限验证的?

查看了一下帐户余额,果然充值成功了:

6ca095c6c79ed1b1f68cf43cb6d9090.png

哥有2万余额了,哇咔咔!!这个漏洞太致命了,立马给客服留言。刚留完言,他们的开发人员给我打电话了,和我讨论

砸金蛋的漏洞问题,正好将刚发现的漏洞一起告诉他。开发人员就是命苦啊,元旦期间,晚上10点多了,他还要改代码。

改完他说老板可能送点礼品给我,好期待啊,呵呵。

最后他把我的帐户余额清零了,我在心里呼喊:不~要~啊,我的2万元啊~~~~~~~~

总结一下:前台的验证都是不靠谱的,后台必要都要验证一遍;管理页面一定要加访问权限;传递到后台的数据一定要

进行合法性验证;不必要传递的参数就不传,比如那个砸蛋,我就想不明白为什么要把当前用户拥有的砸蛋机会传递到

后台,直接从数据库中读取不行么?用户ID不要以明文出现。另外还要防范XSS跨站脚本攻击(一般用判断主机头的方式)

我的网站:http://i.goto327.top:85/

相关推荐:网站安全

相关专题

更多
php文件怎么打开
php文件怎么打开

打开php文件步骤:1、选择文本编辑器;2、在选择的文本编辑器中,创建一个新的文件,并将其保存为.php文件;3、在创建的PHP文件中,编写PHP代码;4、要在本地计算机上运行PHP文件,需要设置一个服务器环境;5、安装服务器环境后,需要将PHP文件放入服务器目录中;6、一旦将PHP文件放入服务器目录中,就可以通过浏览器来运行它。

2882

2023.09.01

php怎么取出数组的前几个元素
php怎么取出数组的前几个元素

取出php数组的前几个元素的方法有使用array_slice()函数、使用array_splice()函数、使用循环遍历、使用array_slice()函数和array_values()函数等。本专题为大家提供php数组相关的文章、下载、课程内容,供大家免费下载体验。

1708

2023.10.11

php反序列化失败怎么办
php反序列化失败怎么办

php反序列化失败的解决办法检查序列化数据。检查类定义、检查错误日志、更新PHP版本和应用安全措施等。本专题为大家提供php反序列化相关的文章、下载、课程内容,供大家免费下载体验。

1561

2023.10.11

php怎么连接mssql数据库
php怎么连接mssql数据库

连接方法:1、通过mssql_系列函数;2、通过sqlsrv_系列函数;3、通过odbc方式连接;4、通过PDO方式;5、通过COM方式连接。想了解php怎么连接mssql数据库的详细内容,可以访问下面的文章。

1078

2023.10.23

php连接mssql数据库的方法
php连接mssql数据库的方法

php连接mssql数据库的方法有使用PHP的MSSQL扩展、使用PDO等。想了解更多php连接mssql数据库相关内容,可以阅读本专题下面的文章。

1525

2023.10.23

html怎么上传
html怎么上传

html通过使用HTML表单、JavaScript和PHP上传。更多关于html的问题详细请看本专题下面的文章。php中文网欢迎大家前来学习。

1277

2023.11.03

PHP出现乱码怎么解决
PHP出现乱码怎么解决

PHP出现乱码可以通过修改PHP文件头部的字符编码设置、检查PHP文件的编码格式、检查数据库连接设置和检查HTML页面的字符编码设置来解决。更多关于php乱码的问题详情请看本专题下面的文章。php中文网欢迎大家前来学习。

1649

2023.11.09

php文件怎么在手机上打开
php文件怎么在手机上打开

php文件在手机上打开需要在手机上搭建一个能够运行php的服务器环境,并将php文件上传到服务器上。再在手机上的浏览器中输入服务器的IP地址或域名,加上php文件的路径,即可打开php文件并查看其内容。更多关于php相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

1309

2023.11.13

c++ 根号
c++ 根号

本专题整合了c++根号相关教程,阅读专题下面的文章了解更多详细内容。

51

2026.01.23

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
第二十四期_前端开发
第二十四期_前端开发

共161课时 | 4.4万人学习

第二十三期_前端开发
第二十三期_前端开发

共98课时 | 7.5万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号