pcfcms安装页面的一处意料之外的变量注入可导致网站瘫痪

  • A+
所属分类:代码审计
pcfcms安装页面的一处意料之外的变量注入可导致网站瘫痪

 

pcfcms安装页面的一处意料之外的变量注入可导致网站瘫痪

前言

在代码审计环节当中,本人偏向于先审计网站安装文件,因为在这里涉及了很多对数据库的操作,如果在网站安装完后没有删除安装文件,或者对网站安装页面访问的限制不够严谨,就会导致产生恶意访问的情况,轻则数据被篡改,重则被重装,注入

近期在php代码审计过程当中发现了pcfcms在install文件中有一处判断过滤不严谨的地方,可导致恶意入侵者篡改本不应该运行的安装过程中的数据,最后造成网站瘫痪


实验环境:
wampserver3.1.7 64bit
phpversion:7.2.14
MySQL:5.7.24
Apache:2.4.37
url::
http://127.0.0.4/pcfcms/
pcfcms:V2.1.1
pcfcms纯净版下载地址:
http://www.pcfcms.com/
这里需要注意,php版本需要高于7.1且php的上传限制要大于8M,否则安装页面会报错

(点击“阅读原文”查看链接


pcfcms安装页面的一处意料之外的变量注入可导致网站瘫痪

pcfcms介绍

PCFCMS是基于TP6.0框架为核心开发的免费+开源的企业内容管理系统,专注企业建站用户需求提供海量各行业模板,降低中小企业网站建设、网络营销成本,致力于打造用户舒适的建站体验。

 

pcfcms安装页面的一处意料之外的变量注入可导致网站瘫痪

代码分析

首先进入程序安装页面http://127.0.0.4/pcfcms/install/index.php

(点击“阅读原文”查看链接

pcfcms安装页面的一处意料之外的变量注入可导致网站瘫痪

然后按照步骤配置好后安装成功

pcfcms安装页面的一处意料之外的变量注入可导致网站瘫痪

当出现这个提示说明安装成功

安装成功后再次访问该文件会提示

pcfcms安装页面的一处意料之外的变量注入可导致网站瘫痪

总结这个安装过程中需要手动输入的有数据库信息,管理员账号密码,看一下/install目录下的情况

pcfcms安装页面的一处意料之外的变量注入可导致网站瘫痪

(请忽略exp.txt文件)可以看出增加了install.lock文件,但是安装页面并没有被删除,进入index.php文件内开始审计

pcfcms安装页面的一处意料之外的变量注入可导致网站瘫痪
pcfcms安装页面的一处意料之外的变量注入可导致网站瘫痪

这里注意代码的37行-43行
if($get!='step5-1'){....程序已安装...
};

在之前对$get变量有个定义
[email protected]$_GET['type']?$_GET['type']:$config['indexpage'];
也就是说,$get就是我们用户以get方式向服务器提交的参数,如果我们get的不是type=step5-1,那么程序会对install.lock文件做个判定,这里的step1到step5就是程序进行配置$config和$db_config的步骤
尝试get方式提交type=step5-1

pcfcms安装页面的一处意料之外的变量注入可导致网站瘫痪

(这里要注意当安装完成后要清除cookie,否则访问无效)
可以看到,当type=step5-1时,成功绕过了install.lock的文件检测,追踪两项关于账户密码的报错:

pcfcms安装页面的一处意料之外的变量注入可导致网站瘫痪

/step5-1.html文件第十五行,调用了php代码分别输出$_SESSION[‘adminaccount’]和$_SESSION[‘admin_password’];回头来看index.php中哪里定义了这两个数据:

pcfcms安装页面的一处意料之外的变量注入可导致网站瘫痪

可以看到,在148与149行,当满足if语句$_POST[‘type’]==’3’时,程序会接收来自post方式上传的账号密码,再来追踪$_POST[‘admin_account’]和$_POST[‘admin_password’]

pcfcms安装页面的一处意料之外的变量注入可导致网站瘫痪

在157和160行内,程序会直接接收用户post的账户密码,并在161行生成插入数据库的语句,并在接下来的语句中进行插入,但是,我们只上传了账户密码,数据库配置需要满足
if ($get == $config[‘importPage’]),

pcfcms安装页面的一处意料之外的变量注入可导致网站瘫痪
所以此时的数据库内容为空,但是进行强行插入的话就会导致数据库内容无法连接,如果访问者post了admin_account=”任意值”,并且符合条件type=step5-1,程序则会向错误的数据库插入数据,最后导致网站无法连接致正确的数据库,攻击产生

 

pcfcms安装页面的一处意料之外的变量注入可导致网站瘫痪

漏洞利用过程

访问页面:

http://127.0.0.4/pcfcms/public/install/index.php?type=step5-1
post数据:type=3&admin_account=123&admin_password=123

pcfcms安装页面的一处意料之外的变量注入可导致网站瘫痪


刷新页面:

pcfcms安装页面的一处意料之外的变量注入可导致网站瘫痪


访问主页:

pcfcms安装页面的一处意料之外的变量注入可导致网站瘫痪

修补建议:

安装完成后不建议保留安装文件

pcfcms安装页面的一处意料之外的变量注入可导致网站瘫痪


- End -
精彩推荐

新书推荐 | 《Python安全攻防:渗透测试实战指南》(含文末赠书福利)

House of orange

美国指控俄罗斯黑客组织参与多项网络攻击行动

漏洞赏金猎人盗用他人exp获利

pcfcms安装页面的一处意料之外的变量注入可导致网站瘫痪

戳“阅读原文”查看更多内容

本文始发于微信公众号(安全客):pcfcms安装页面的一处意料之外的变量注入可导致网站瘫痪

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: