PbootCMS是网站常用的一款CMS系统,是由国内著名程序开发商翔云科技研发的一套网站CMS系统,免费开源,扩展性较高,使用的企业很多但是避免不了网站存在漏洞,SINE安全对其代码进行安全审计的同时发现该pbootcms 存在严重的漏洞,包含SQL注入获取管理员密码漏洞,以及远程代码注入执行漏洞。该pbootcms系统采用的是PHP语言开发,数据库是MYSQL,并支持pgsql数据库大并发处理,系统默认支持的服务器环境,PHP5.3版本以上,以及mysql版本5.6,apache,nginx,都可以运行该CMS系统。关于这次检测出来的CMS漏洞,我们进行详细的介绍。
之前的pbootcms老版本出现的漏洞也比较多,我们这次审计的是pbootcms V1.3.3新版本,新版本较于老版本更新了许多,SQL注入非法参数的过滤,以及上传漏洞的修复,过滤系统的加强,但还是始终没有严格的杜绝非法参数的传入。我们来看下这个远程代码注入执行漏洞,该漏洞产生的原因是在ParserController.php代码里的LABEL方式调用shat函数,我们来看下代码:
我们找到label调用的方式,一步步跟踪代码查到是使用了after的方式调用,看到注释的内容大体的意思是网站的前端模板在进行解析标签的操作是,会对网站前端的默认数据库标签进行解析,然后通过标签的内容再进行传递数值,在传递的过程中,用户输入的一些数据造成了这次远程代码注入执行漏洞。
pbootcms v1.3.3版本的过滤了一些非法注入参数,但是还是可以进行代码绕过,可以使用宽字节绕过注入,使用字符转义也可以对过滤系统进行绕过,混迹代码加强运算符也可以对pbootcms的安全过滤系统进行绕过。我们来测试一下:
构造我们的注入代码:我们在服务器里搭建了一个测试环境,本地/index.php/index/index?safe={pboot:if(1)$a=$_GET[b];$a();;//)})}}{/pboot:if}&b=phpinfo
我们来执行看下,竟然执行了phpinfo查询,我们也可以执行一些查询数据库的账号密码等管理员的操作。
pbootcms获取管理员密码漏洞分析
关于这个网站漏洞的产生是存在于ParserController.php代码里的parserSearchLabel()方式进行的调用代码,可以插入一些非法的参数,单引号,转义符,斜杠等等非法参数,我们使用OR注入代码,进行获取管理员账号密码就可以了。
关于pbootcms漏洞修复,建议网站的运营者尽快升级pbootcms到最新版本,也可以在服务器端进行sql注入***防护,拦截get、post、cookies提交的非法参数。对网站上的漏洞进行修复,或者是对网站安全防护参数进行重新设置,使他符合当时的网站环境。如果不懂如何修复网站漏洞,也可以找专业的网站安全公司来处理,国内也就Sinesafe和绿盟、启明星辰等安全公司比较专业.针对于pbootcms默认的管理员登录地址进行修改,默认是admin.php改为anquan123admin.php即可,尽量长一些,字母加数字组合,避免***者进行暴力猜解,利用获取到的管理员账号密码登录后台。
原文地址:http://blog.51cto.com/13753419/2326834