某CMS后台防护逻辑漏洞导致GETSHELL
源码下载:
https://cdn.jsdelivr.net/gh/seacms-net/CMS@master/SeaCMS.zip
漏洞分析:
打开我们下载的源码
漏洞源头为“图片水印设置”功能,对应的源码文件为admin_config_mark.php
当我们后台使用图片设置功能时
点击提交之后,这里首先调用了admin_config_mark.php文件,而这个文件的开头加载了全局文件
继续跟进config.php,这个文件中又引入了common.php
继续跟进common.php文件
此时我们找到了最终加载的文件,而这个文件的功能是对全局的变量进行过滤防护。
这里最终调用的函数为_FilterAll
将参数传入之后,框架会对每个参数使用addslashes函数进行转义,原本我们传入1'变为了1\',接着来到admin/admin_config_mark.php文件
这里就出现了处理参数的逻辑错误。对全局转义过的参数又进行了一次替换操作,使用了str_replace函数将全部的单引号替换成了空,所以1\'就变成了1\,此时字符串进行了拼接。
然后紧着这把字符串写入了配置文件中
此时配置文件中写入的数据如下,这就导致了将原本的单引号转义掉了。此处我们就可以写入任意代码了。
1 条评论
可输入 255 字