某CMS后台防护逻辑漏洞导致GETSHELL

源码下载:
https://cdn.jsdelivr.net/gh/seacms-net/CMS@master/SeaCMS.zip
漏洞分析:

打开我们下载的源码
漏洞源头为“图片水印设置”功能,对应的源码文件为admin_config_mark.php

20211118185311-b92873a8-485d-1


当我们后台使用图片设置功能时

20211118185355-d370722e-485d-1

点击提交之后,这里首先调用了admin_config_mark.php文件,而这个文件的开头加载了全局文件

20211118185413-de02b1c0-485d-1


继续跟进config.php,这个文件中又引入了common.php

20211118185430-e8263e9c-485d-1


继续跟进common.php文件

20211118185445-f12ce00e-485d-1

此时我们找到了最终加载的文件,而这个文件的功能是对全局的变量进行过滤防护。

20211118185539-10fd9d06-485e-1


这里最终调用的函数为_FilterAll

20211118185555-1abd16fa-485e-1


将参数传入之后,框架会对每个参数使用addslashes函数进行转义,原本我们传入1’变为了1’,接着来到admin/admin_config_mark.php文件

20211118185617-28285d0e-485e-1

这里就出现了处理参数的逻辑错误。对全局转义过的参数又进行了一次替换操作,使用了str_replace函数将全部的单引号替换成了空,所以1’就变成了1,此时字符串进行了拼接。
然后紧着这把字符串写入了配置文件中

20211118185642-37065ef2-485e-1


此时配置文件中写入的数据如下,这就导致了将原本的单引号转义掉了。此处我们就可以写入任意代码了。

20211118185659-40e954c4-485e-1

转载自

https://xz.aliyun.com/t/10545

本文转载自https://xz.aliyun.com/t/10545,只做本站测试使用,本文观点不代表安强科技社区立场。

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022年3月16日 上午11:36
下一篇 2022年3月16日 上午11:52

相关推荐

发表回复

您的电子邮箱地址不会被公开。