首发于:阿里先知安全社区:某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