漏洞预警台(Aug.17)——Discuz插件漏洞: 禾今微信投票 权限和刷票漏洞

0
Want create site? Find Free WordPress Themes and plugins.

refer: http://www.freebuf.com/vuls/138846.html

前两天帮朋友网上拉票,感觉这东西放在程序员面前就是一种讽刺(冲着我是程序员才找我的,当了程序员总有人认为你就会盗QQ、攻击、修电脑。。。。)

直接进入主题,用到的工具:

1.插件源码

2.fiddler 4

3.python

0×1 开始研究

用fiddler进行抓包的数据,微信打开的,抓取到了投票POST表单的链接和数据还有cookie

参数 :

zid 是用户ID

formhash 是dz的验证之类的,大概看了下最后发现这个东西然并卵(对于本次刷票来说)

hejin_toupiao 通过这儿来判断是禾今程序的,一百度就搞定

Cookie:

根据最后源码分析 得出结论 除了  hjbox_openid= xxxxx ; 有用其他的也然并卵

通过python模拟请求提交相同的数据表单 还是只可以投票三次,至少说明同样的数据是可以提交有效的

0×2 分析源码

网上找了套插件源码来看看,其实开始没抱有多大希望的,模拟提交数据后就一直在研究模拟伪造数据提交,不过没希望。

开源码包,开箱验货。

开源码包.jpg

惊喜全部在“hejin_toupiao.inc.php”文件中,发现有几个重点的代码:

重点代码.jpg

上下大致看了下没有做权限设置,直接修改url测试了下

http://www.xxx.com/plugin.php?id=hejin_toupiao&model=daochu&vid=1  (vid是投票活动的id)

回车访问弹出csv文件下载,下载下来打开,前一百名选手的基本信息,包含了联系方式。

基本数据.jpg

基本数据都出来了,红色框的那个选手感觉明显刷票。。。。

然后又试着到处了单个用户的投票数据,开始想的是看看前几名是否有刷票的证据,结果前几名数据量太大倒不出来只好道后面的几个

投票数据.jpg

每一次有效数据都在,留着备用,开始看投票流程的代码,其实也很简单 PHP一看基本大体流程就熟悉了

0×3 刚入门的python拿来用用

一段代码有点长 有兴趣的自己慢慢看

测试了基本上原有的提交投票的表单数据不变,只变更openid就可以了

直接开始下载其他选手的投票数据然后把所有投过票的openid复制下来(投票过的openid是存在数据库的,陌生的openid需要通过微信来获取)

把openid全部装入redis队列里面,然后修改python模拟请求,每次获取一个openid进行提交三次投票。

测试.jpg

测试没问题,都返回108(投票成功)

开始设置的是1秒钟三票,因为投票过快后台会锁定,视为机器刷票(开始跟官方核实过)

估计没机票返回105;//此ip下今日已无法投票

又开始了模拟IP地址,我相信这种程序也不会花太多心思去抓取真实IP

直接修改header参数

ip呢当然是随机生成的,但是这个办法确实是有效的,

绕过了微信浏览器验证、绕过了投票用户身份识别、绕过了单IP投票限制

刷票是可以的,但是考虑到这样刷还是有被发现的风险 毕竟提交表单的好多参数都是没变的

所以也就没刷了 只是这个方法测试可以用的,回到前面说的,投票同一时间过多就会被系统锁定判定为软件刷票,所以猜猜一秒钟300票是什么感觉?

0×4 代码

第一次分享,还望各路大神不要见笑。几年没碰这些东西了,都在安安心心写程序,怀念以前的时光。

Did you find apk for android? You can find new Free Android Games and apps.

关于作者

居正

大道至简

发表评论