FoxCMS最新版本漏洞挖掘分析
FoxCMS
FoxCMS是一套可免费商用开源的内容管理系统,采用PHP+MySQL架构。内置企业常用的内容模型,如单页、文章、产品、图集、视频、反馈、下载等,并配备丰富的模板标签及强大的SEO和伪静态优化机制。无需复杂编程技能,仅需掌握HTML即可快速构建出多元化的应用场景,实现内容的高效管理。
源码地址:https://gitee.com/qianfox/foxcms#
代码注入漏洞
FoxCMS最新版本v1.2.5网站设置功能存在代码拼接导致的命令执行漏洞攻击者可以利用该漏洞代码拼接反弹shell拿到服务器权限。
调试分析
漏洞在控制器文件appadmincontrollerConfig.php
我们重点关注漏洞save()函数
最后调用函数set_php_arr将变量值拼接写入php文件
调试找到写入的php文件路径以及变量saveData的值,并且数组param中的值都是传参可控的,我们可以通过拼接进php文件来RCE
因为首页index.php包含了configcfgase.php,所以代码会被执行
漏洞攻击
进入站点基本设置直接点击保存抓包
修改参数copyright_remove_mark为poc:
之后访问首页index.php发现页面很多地方已经被渲染为命令执行的结果,除了回显之外,攻击者还能利用此漏洞直接反弹shell拿到服务器权限
SSRF漏洞
FoxCMS最新版本v1.2.5远程图片下载功能存在SSRF漏洞,可以使用file伪协议读取内网和服务器任意文件内容。并且攻击者可以利用该漏洞扫描本地和内网端口,攻击本地和内网服务。
调试分析
漏洞在控制器文件appadmincontrollerPicManager.php
主要漏洞在于调用了getImg方法
getImg中调用了download方法 之后调用upload方法
download中 url是传参完全可控的,会调用get_url_content方法
download中的filename是通过url请求的文件获取的没有任何过滤,所以可以下载php文件,并且直接调用了file_put_contents导致php文件写入,并且默认写入路径为uploads/date("Ymd")/
get_url_content方法中直接调用了curl请求url会造成ssrf漏洞
但是之后upload的时候会有waf检查文件后缀是否在白名单,不在的话就会返回code=0 绕过了unlink的删除
漏洞攻击过程
我们在本地开启一个模拟内网的web服务
并放置一个2.php文件调用calc
然后在公司简介添加图片->选择网络图提取
构造poc:
查看内网web服务成功收到请求,并且2.php被运行弹出了计算器:成功SSRF攻击
此漏洞还会将SSRF获取到的文件内容写入uploads/date("Ymd")/目录下,可以用伪协议读取内网以及系统任意文件
在公司简介添加图片->选择网络图提取 我们抓包,构造伪协议poc SSRF读取文件
之后我们查看上传路径成功拿到文件内容
FOXCMS 文件上传漏洞说明
最新版本的 FoxCMS v1.2.5 存在文件上传漏洞,在网站上传图片功能,这些漏洞是由于输入验证和清理不足而发生的,攻击者可以利用此漏洞注入任意JS 代码,然后在其他用户浏览时执行。
FoxCMS是一套可免费商用开源的内容管理系统,采用PHP+MySQL架构。内置企业常用的内容模型,如单页、文章、产品、图集、视频、反馈、下载等,并配备丰富的模板标签及强大的SEO和伪静态优化机制。无需复杂编程技能,仅需掌握HTML即可快速构建出多元化的应用场景,实现内容的高效管理。系统支持多语言、表单设计、访客统计、消息通知、云存储服务等
白盒审计
漏洞主要代码在文件:
调用了upload跟踪进入
并且会对后缀检查,跟踪进入validationSuffix函数
发现为白名单后缀检测,允许上传svg文件之后也没检查文件内容即可上传成功
漏洞攻击
制作svg文件如下,插入XSS代码
或者
登录后台
选择添加图片上传svg文件即可
抓包得到完整http包:
访问文件时候会成功触发XSS
没有评论