网站渗透测试之某cms代码的漏洞分析

时间:2020-03-18浏览数:874

客户网站前端时间被攻击,网站被劫持到了赌博网站上去,通过朋友介绍找到我们SINESAFE做网站的安全防护,我们随即对客户网站进行了全面的渗透测试,包括了网站的漏洞检测与代码安全测试,针对于发现的漏洞进行了修复,包括网站安全部署等等方面,下面我们将这一次的安全应急处理过程分享给有需要的客户。

首先客户网站采用的架构是PHP语言开发,mysql数据库,使用的是linux centos系统作为网站的运行环境,代码使用的是开源的某CMS系统,我们首先打包压缩了一份网站源代码到我们本地的电脑,人工对其代码进行全面的渗透测试与检测,首先我们会从网站的安装文件入手,我们查看到使用的是install.php作为网站安装的文件,一般这里会存在网站漏洞,例如:没有对其做安全验证,导致可以任意的安装网站,覆盖配置文件,甚至可能会出现表单里不做安全过滤,导致写入webshell一句话木马代码到config.php文件里。

经过我们SINE安全技术的人工代码安全审计,发现客户网站存在任意重装网站漏洞,漏洞文件:install.php,查看到使用的变量值为DEL_INSTALLER=1的时候才会删除安装文件,我们看到默认值=0.也就是说不会删除安装文件,我们可以访问该代码,直接执行重装操作。

继续检查代码是否还存在其他的漏洞,在检查到配置文件config.php代码中,有调用到cookies方面的赋值,继续追踪分析发现存在越权漏洞,管理员登录网站后,会保存cookies,但是这个cookies的构建很简单,是使用了emhash的方式,对传入的key值进行了MD5加密操作,较终cookies的构成是由账号名以及HASH值拼接构成的,那我们就可以伪造cookies,直接越权操作其他管理员账号,甚至可以以普通用户的权限,去操作网站管理员的权限。

我们SINE安全工程师对后台代码进行安全审计的时候发现,存在上传漏洞,可以上传php文件,后台有个设置上传后缀名的功能,但是默认网站对添加PHP的后缀名做了过滤,会将PHP稀释掉,以及不允许,那么我们在实际的渗透测试中如何绕过呢?看到后台有数据库备份恢复的功能,那么我就可以将数据库里的后缀名改为php,再直接恢复到网站中去,直接上传PHP脚本后门也叫webshell到网站里去。

至此客户网站的所有渗透测试以及漏洞检测已完毕,共发现3处漏洞,1个是install.php安装重置漏洞,1个是越权漏洞,1个是文件上传漏洞,针对以上3个漏洞,我们SINE安全对其做了漏洞修复,对install的变量值进行了判断,当网站安装后,自动删除install.php文件,对越权做了用户的所属权限判断,如果不是当前用户的cookies直接返回错误状态,对后台的数据库备份功能做限制,只能备份,不能恢复,恢复操作使用phpmyadmin来进行网站的数据恢复,如果您对网站的安全不是太懂的话,建议找专业的网站安全公司来处理解决,做好网站安全,才能**用户的每一次访问。


http://www.qdshtddzkj.com

产品推荐