首发于:阿里先知安全社区:某CMS V5.7 SP2 后台Getshell
dede/sys_info.php中
在选择更改配置后,通过foreach($_POST as $k=>$v)接受参数,并且将参数内容写入了数据库,之后进入ReWriteConfig();。
|
|
这里的代码将前面插入数据库的数据直接取出,没有再做验证。在while($row = $dsql->GetArray()),有两个分支,当$row['type']=='number'时,会往文件中直接写入,其他情况下会进行一次str_replace("'",'',$row['value'])将单引号替换掉。所以我们考虑使用第一个分支。
比如使用参数cfg_ftp_port,它表示采用的ftp端口

我们填入值为21;phpinfo():

Getshell:

查看配置文件 data/config.cache.inc.php
