复盘某CMS存在的逻辑漏洞

nicky   ·   发表于 2020-04-25 21:10:13   ·   代码审计

源码我会发到附件里面,这里先给大家列几点安装极致CMS的建议

  1. PHP版本必须在5.6版本以上最好是7.0以上的版本可以进行多个漏洞复现
  2. 如果你原先WWW目录里面存在一些文件,如果不想混淆的话可以把原先的WWW目录下的东西改名,新建一个WWW这样可以区分开来

逻辑漏洞
1.建完站以后先注册两个用户,我注册了一个是xxxxxxx0和xxxxxxxxxx1。来到商品页面随便选择一个商品

然后加入购物车,可以返回到个人中心查询

好的,此时网址为http://localhost/user/orderdetails/orderno/No20200425094529.html

假如没有限定用户id或者是用户名可以导致越权,相同的用户权限可能导致平行越权,然后开始追踪orderdetails函数发现该函数没有对用户进行校验(这里方便大家看直接从Seay中摘取出来)

实践发现在第二个新建用户个人中心后面复制/orderdetails/orderno/No20200425094529.html内容 可以直接导致越权行为

修补方案:
$order = M(‘orders’)->find([‘orderno’=>$orderno]);变为
$order = M(‘orders’)->find([‘orderno’=>$orderno,’userid’=>$this=>member[‘id’]);
这里的意思就是可以限定userid

同理在function payment这里也没有存在限制userid也存在水平越权行为

首先在xxxxx0买点东西然后在填写完收获地址后可以跳转到另外一个页面其中有删除功能

点删除的时候进行抓包

这里可以看到NOxxxx那我们把之前第一个网址里面的订单号复制到里面

变成这样然后放包,登录到另外一个账号里面去看个人购物车发现删除成功

此外还有个漏洞这里的订单号是有规律的No20200425094529 这里是根据年月日来编写订单号的所以可以通过订单遍历来查看别人的漏洞

后续:这篇代码审计漏洞是基于B站大佬moonsec的方向复盘出来的,这个CMS也存在SQL注入漏洞,但是需要PHP版本为7以上才能实现myPay页面的注入

用户名金币积分时间理由
奖励系统 100.00 0 2020-07-25 22:10:48 投稿满 10 赞奖励
奖励系统 50.00 0 2020-05-07 08:08:11 投稿满 5 赞奖励
admin 50.00 0 2020-04-26 13:01:22

打赏我,让我更有动力~

附件列表

jizhicms.zip   文件大小:9.814M (下载次数:18)

2 条回复   |  直到 2020-7-25 | 1624 次浏览

kidll
发表于 2020-7-25

雪梨师傅TQL`~

评论列表

  • 加载数据中...

编写评论内容

小林呐
发表于 2020-7-25

tql

评论列表

  • 加载数据中...

编写评论内容
登录后才可发表内容
返回顶部 投诉反馈

© 2016 - 2024 掌控者 All Rights Reserved.