Discuz XPlus 投票模块刷票bug 刷票方法
本文作者最后更新于2012-3-22 01:59
通过查阅Xplus 1.1.2版本投票模块源码程序设计逻辑可以分析出存在以下刷票bug 缺陷:
说到这个问题,主要是由于之前网站CMS中用到的一个专题需要投票模板,说起来本来这个和我所负责的社区平台也没什么关系,但是由于现存CMS系统的不成熟及技术的缺陷,且时间的紧迫,我这边虽然不负责这块但也就临时提供了解决方法与支持。但是当在该专题活动投票结束后,虽然票数的综合比例来说还算正常,其他部门也没什么质疑,但是作为技术人员我们需要关注的就是其他人不关注的细节或数据及安全,我们就需要走在他人之前去分析、去考虑,毕竟网站的功能及发展都是向前的,对整个站点的架构在技术上有个思路和方向是很有必要的,也为避免技术的被动吧。刚好前段时间晚上没事就把之前的数据拿来做了查询与分析之后发现依然存在刷票现象,在管理服务器时我们一般认为服务器自身安全和程序代码逻辑不严谨等问题都是安全的重量级风险,后面慢慢翻查了该投票模块的代码程序发现在逻辑上存在以下列出的bug,于是近期就在考虑是安逸点修复当前发现的小问题,还是重新设计个具有更多功能且兼容更多平台的代码模块?因为这个程序刚刚使用过没两次别人不会记住,就像我们在使用Windows XP系统时我们总能找到很多的理由说这个系统很好很好,但是却永远发现不了不足,然而有一天当你用心去体验使用Win7时你会发现原来还有这个功能原来这里还可以这样原来这个操作不方便的地方在这里已经修复了。最终我选择了重新设计新的模块,也是对未来在线测试、问卷调查、活动报名、投票及图片投票、临时需求的其他表单项需求等的一种规划和整合,也是对现状的最好解决,何况目前这个时期,如果不是在这里做运维,我都很难想象还有这么落后的技术,一个专题一个留言板需要手工复制下文件和数据库/表重新再建,如此下去,时间久了对于管理和安全真是无法想象。废话不多说了,Bug列出如下:
/xplus/poll.php?id=[投票主题ID]&action=choose&handlekey=pollresult&formhash=[formhash值]&choose_value=[投票选项]&iframe=1&bgcolor=FFF
/xplus/poll.php?action=choose&inajax=1&handlekey=pollresult&id=[投票主题ID]&formhash=[formhash值]&iframe=1&bgcolor=FFF&choose_value=[投票选项]
/xplus/poll.php?action=choose&handlekey=pollresult&id=[投票主题ID]&formhash=[formhash值]&iframe=1&bgcolor=FFF&choose_value=[投票选项]
说明:
id 投票主题ID
formhash 见下文
choose_value 投票选项
Discuz Xplus的formhash()函数定义
formhash是一种类似验证码的东西,用来防止从我们网站外部提交数据,但不需要我们手动输入。 它在页面打开时就已经生成了,存在一些需要提交数据用到的地方的隐藏input里(比如登录、发布文章、投票等)。这里formhash值只要是为了防止灌水机从外部提交。
- function formhash($specialadd = '') {
- global $_G;
- $hashadd = defined('IN_ADMINCP') ? 'Only For Discuz! Admin Control Panel' : '';
- return substr(md5(substr($_G['timestamp'], 0, -7).$_G['username'].$_G['uid'].$_G['authkey'].$hashadd.$specialadd), 8, 8);
- }
Discuz XPlus 投票模块 admin_login.htm 源代码
undefined
由Discuz XPlus 投票模块 admin_login.htm 源代码可以看到该模板文件代码中直接使用input hidden 传送了id和formhash值,所以在投票页面右击查看源代码可以看到如下源码信息:
undefined
提取到URL地址后,可以通过流量精灵或流量宝等软件刷取票数。
本文作者:未来往事
本站使用「署名 4.0 国际」创作共享协议,可自由转载、引用,但需署名作者且注明文章出处
此处评论已关闭