wordpress系统本身代码,很少出现sql注入漏洞,反倒是第三方的插件出现太多太多的漏洞,我们SINE安全发现,仅仅2019年9月份就出现8个插件漏洞,因为第三方开发的插件,技术都参差不齐,对安全方面也不是太懂导致写代码过程中没有对sql注入,以及xss跨站进行前端安全过滤,才导致发生sql注入漏洞。
目前发现的wordpress漏洞插件,AdRotate广告插件,NextGEN Gallery图片管理插件,Give赞赏插件,这些插件使用的网站数量较多,因为开源,免费,功能强大,使用简单,深受众多站长们的喜欢,关于该网站漏洞的详情我们SINE安全来详细的给大家分析一下:看下图的代码
在前端进行输入的时候,可以插入恶意的sql注入代码,如果后端没有对前端输入进来的参数值进行安全过滤拦截,那么就会导致sql注入漏洞的发生,我们来看上面的一段代码。该代码在写的时候,会将get中的ID,传入后数据库中进行查询,没有做任何的安全过滤导致sql注入,在wordpress最新版中以及将get、post、cookies、提交的方式进行了安全拦截,对一些非法的字符与sql注入攻击语句加强过滤,但是还是被绕过,导致sql注入的发生,就拿adrotate插件来说,在dashboard目录下的publisher文件夹下的adverts-edit.php代码中第46行:
对前端来的get_ad变量只是做了简单的html字符转换操作,并没有实质性的对sql语句进行拦截,导致可以执行SQL注入代码,获取管理员账户密码。截图如下:
give插件,也存在漏洞,漏洞产生的原因是includes目录下的donors文件夹里的class-give-donors-query.php代码,在获取订单的函数中,没有对其order by字符进行拦截,导致sql代码可以到后端进行查询数据库,导致sql盲注。代码如下:
关于wordpress漏洞修复办法,建议插件的开发公司在对代码编写过程中,对用户的输入,以及提交,get,post等请求进行全面的安全过滤与安全效验,及时的更新wordpress的版本以及插件版本升级,定期对网站代码进行安全检测,检查是否存在网站木马后门,以及webshell文件,对插件目录可以设置安全权限部署,防止恶意篡改,对wordpress的后台登录做安全验证,仅仅使用账户密码还不行,还要使用另外一种方式进行验证,短信验证以及google身份验证器。