织梦内容管理系统(DedeCms) 以简单、实用、开源而闻名,是国内最知名的PHP开源网站管理系统,也是使用用户最多的PHP类CMS系统,在经历多年的发展,目前的版本无论在功能,还是在易用性方面,都有了长足的发展和进步,DedeCms免费版的主要目标用户锁定在个人站长,功能更专注于个人网站或中小型门户的构建,当然也不乏有企业用户和学校等在使用本系统。
最近在看DEDE的代码的时候偶然发现DEDE有一个投票系统,然后深入的研究了一下投票系统发现这个投票系统存在一个无限投票的逻辑漏洞。使用谷歌谷歌一下这个系统发现有好多网站在使用,首先看一下这个投票系统。
在代码中找到这个系统所在的文件dedecms/plus/vote.php,看一下它的代码
这里可以看到这里分为了两种投票方式,一种是会员登陆之后投票,一种是游客状态下投票。后续发现系统默认是开启游客状态下投票的,我在网上找了一些网站,确实也是开启了游客投票。
这里我们可以看到投票的状态是在这个函数之中的,我们跟进这个函数看一下
这里我们可以看到检测投票是否成功,只是检测了一下cookie中的IP,也就是说这里我们只要更改一下ip应该就可以继续投票。我们测试一下。
这里是初始的状态 3 2 2 2 2
我们投票给第二项,这里投票成功!
这里我们再次投票
这里显示已经投过票了不允许再次投票,我们看一下此时我们浏览器中的cookie
这里我们看到有一个这样的字段,和我们在代码中的看到的检测变量一样,我们更改一下它的值。
这里我们把127.0.0.1更改为127.0.1.1,再次发起投票
可以发现只需要更改一个参数就可以无限制投票。
*本文原创作者:sjy93812,本文属于FreeBuf原创奖励计划,禁止转载