Discuz 3.4是目前discuz论坛的最新版本,也是继X3.二、X3.3来,最稳定的社区论坛系统。目前官方已经中止对老版本的补丁更新与升级,直接在X3.4上更新了,最近咱们SINE安全在对其安全检测的时候,发现网站漏洞,该漏洞是因为用户登陆论坛的时候调用的微信接口,致使能够进行任意登陆,甚至能够登陆到管理员的帐号里去。php
关于Discuz漏洞详情前端
漏洞的产生是在plugin文件夹下的wechat目录里的wechat.inc.php代码中的220-240行的代码里,代码以下:程序员
咱们能够看到代码里的逻辑功能设计师如何,首先会从会员的这个数据表里进行查询微信接口的ID,是否在会员表里有相对应,并绑定好的会员帐号,若是有数据库返回数据给前端。而后再进行下一步,从common这个表里进行获取会员uID值的用户ID,以及用户的全部信息。数据库
根据discuz的设计逻辑,咱们能够看出只要知道了用户使用微信接口openid就能登陆到其余用户的帐户里面去,咱们仔细的看下discuz关于微信API接口这个文档,openid这个值是不变的,只有用户将微信号绑定到论坛里,才能从公众号中获取到这个openid值,正常的请求下是获取不到这个值的。安全
那么咱们就能够伪造参数对其进行登陆尝试,安全测试看下是否会获取到其余人的openid值来,咱们用id为空的一个用户进行登陆,发现能够登陆可是并无绑定任何的论坛帐号,但注册了一个新的帐户到了论坛里。从整个的逻辑代码中,咱们发现了漏洞,能够解除任意ID绑定的微信,而后咱们再来登陆openid为空的帐号,咱们发现能够登陆任何会员的帐户了。截图以下:微信
若是管理员的帐户绑定了微信登陆,那咱们就能够解除他绑定的ID,咱们用空ID登陆就能够进到管理员帐号里了。关于discuz网站漏洞的修复,建议网站的管理者对代码进行删除,在plugin/wechat/wechat.inc.php里的230行到247行代码所有注释掉便可。网站漏洞的修复,能够对比程序系统的版本进行升级,也能够找程序员进行修复,若是是你本身写的网站熟悉还好,不是本身写的,建议找专业的网站安全公司来处理解决网站被篡改的问题,像Sinesafe,绿盟那些专门作网站安全防御的安全服务商来帮忙。ide