CatfishCMS任意命令执行导致getshell

  • 目录
    • 一、 漏洞说明
    • 二、 漏洞测试
    • 三、漏洞修复

目录

测试环境:windows + php5.4.45 +apache (phpStudy 集成环境)
CMS 版本: v4.8.54(发布于2019年1月)
漏洞挖掘后提交了CNVD,在CNVD公示后,才发表本文。
漏洞已经修复。
CNVD-ID: CNVD-2019-06255

一、 漏洞说明

完整的payload为:
s=dir&_method=__construct&method=*&filter[]=system
结合源代码详细说明如下:

  1. _method=__construct
    CatfishCMS基于thinkPHP5开发。
    Request类(catfish/library/think/Request.php)用于处理请求。
    它的成员函数method用于获取请求的类型。
    application/config.php 中定义了“表单请求类型伪装变量”:

    POST请求参数 “ _method=__construct ”,将 __construct 传给了var_method ,在Request类的method函数中执行后,实现了对Request类的 __construct 构造函数的调用;并且将完整的POST参数传给了构造函数。

  2. 2、 method=*&filter[]=system
    catfish/library/think/Request.php模块中的Request类的构造函数:
    该函数中循环取出参数,如果是本类中存在的参数,就取用户传入的值为其赋值。
    _method=__construct 使得 method 函数调用了 __construct 构造函数, 并且将完整的POST参数传递过去。实现了对本类中的 $method 和 $filter 两个全局变量的覆盖。


    filter[]=system 的补充说明:
    filter[]=system 或者 filter=system都可以,[]符号可有可无;system意为执行系统命令。

    Method=* 的补充说明:
    method参数的取值限定为:catfish/library/think/Route.php 模块中定义的路由规则。如:GET、POST、PUT、* 等任何一个值都可以;如果值不在此表或为空,都会报错。

  3. s=dir
    application/config.php 中定义PATHINFO变量名为’ s ’。可用s传入需要执行的命令,如s=dir
    最终的的payload:
    s=dir&_method=__construct&method=&filter[]=system
    _method=__construct 使得 Request类的method函数调用 __construct 构造函数,并且将完整的payload传递给构造函数;构造函数中对 method 和filter 两个全局变量进行覆盖,method=
    &filter[]=system ;参数s=dir传入需要执行的系统命令 dir 。

二、 漏洞测试

发现漏洞后,在申请CNVD的同时,我在厂商的github项目中提交了issue,地址为: https://github.com/xwlrbh/Catfish/issues/4 厂商确认了该漏洞。并且立即对产品打了补丁,然后发布了新版本v4.8.57。也可联系厂商确认原版本v4.8.54(发布于2019年1月)的该漏洞。
补丁见附录。

  1. 拦截首页请求,并改变请求方法为POST

  2. 构造POST请求
    a、 method的值必须等于 “ * ”
    b、 method=* 后面不能有任何参数,包括\r\n回车换行。
    这两条任何一条不满足都不能执行。

  3. 执行一条windows命令,在网站根目录创建一个shell.php文件并写入一句话木马

  4. 测试执行phpinfo()
    这里 phpinfo() 后边一定要跟一个分号,否则不能执行。

  5. 也可以新建一个文件并写入一句话木马,从而执行任意命令
    6. 执行windows 的 dir 命令测试

三、漏洞修复

V4.8.54 的catfish/library/think/Request.php模块中Request类的method函数:

V4.8.57(漏洞修复后)的catfish/library/think/Request.php模块中Request类的method函数:

CatfishCMS任意命令执行导致getshell相关推荐

  1. FastJson1.2.24反序列化导致任意命令执行漏洞复现(CVE-2017-18349)

    #FastJson1.2.24反序列化导致任意命令执行漏洞(CVE-2017-18349)# 一.漏洞简介 Pippo是一款基于Java的Web框架.FastjsonEngine是其中的一个JSON处 ...

  2. python直接执行代码漏洞_修复Python任意命令执行漏洞

    Author:JoyChou@美丽联合安全 Date:20180605 1. 前言 今天遇到一个不好做白名单的Python命令执行漏洞修复的问题.由于是shell=True导致的任意命令执行,一开始大 ...

  3. 漏洞payload 靶机_学生会私房菜【20200707期】Wordpress 4.6 任意命令执行漏洞

    学生会私房菜 学生会私房菜是通过学生会信箱收集同学们的来稿,挑选其中的优质文档,不定期进行文档推送的主题. 本期文档内容为:<Wordpress 4.6 任意命令执行漏洞> 作者介绍:AT ...

  4. 锐捷NBR路由器 EWEB网管系统 远程命令执行漏洞 + GetShell

    锐捷NBR路由器 EWEB网管系统 远程命令执行漏洞 + GetShell 漏洞编号: CNVD-2021-09650 漏洞描述:锐捷NBR路由器 EWEB网关系统部分接口存在命令注入,导致远程命令执 ...

  5. couchdb 任意命令执行漏洞(cve-2017-12636)

    Apache CouchDB是一个开源数据库,专注于易用性和成为"完全拥抱web的数据库".它是一个使用JSON作为存储格式,JavaScript作为查询语言,MapReduce和 ...

  6. [网络安全自学篇] 九十五.利用XAMPP任意命令执行提升权限(CVE-2020-11107)及防御措施

    这是作者网络安全自学教程系列,主要是关于安全工具和实践操作的在线笔记,特分享出来与博友们学习,希望您喜欢,一起进步.前文分享了木马病毒提权技术,包括进程访问令牌权限提升和Bypass UAC.这篇文章 ...

  7. php打开网页执行即执行bat程序_CVE202011107:XAMPP任意命令执行漏洞复现

    0x00简介 XAMPP是一个把Apache网页服务器与PHP.Perl及MariaDB集合在一起的安裝包,允许用戶可以在自己的电脑上轻易的建立网页服务器.该软件与phpstudy类似. 2020年4 ...

  8. H3C任意命令执行漏洞

    H3C漏洞 目录 简述 过程 修复建议 参考链接 简述 H3C iMC智能管理中心 云计算(cloud computing):"云计算是一种计算模式,利用互联网技术把大量可扩展和弹性的IT相 ...

  9. eyoucms 1.5.5任意命令执行漏洞(0day)

    eyoucms 1.5.5任意命令执行漏洞 文章目录 eyoucms 1.5.5任意命令执行漏洞 一.漏洞简介 二.漏洞影响 三.复现过程 漏洞位置 漏洞分析 漏洞利用 一.漏洞简介 eyoucms1 ...

最新文章

  1. 静态资源(StaticResource)和动态资源(DynamicResource)
  2. Java面试题库,mysql远程访问权限设置
  3. 跳转控制语句之break
  4. vc++ 关于 指针操作
  5. Java ServletContext 详解
  6. 如何用JS实现音乐播放、暂停
  7. 什么是H标签?H1,H2,H3标签?以及和strong标签使用的方法及重要性
  8. anaconda3 2.3.9 下载_多体系如何融合?先做好体系意识的培训!(附4合1体系培训下载)...
  9. Service实现文件下载
  10. python中线程同步_Python线程同步在实际应用中功能体现
  11. mysql source超时_mysql数据库连接超时
  12. java 继承 ppt_Java的继承机制详解.ppt
  13. 深入理解计算机系统 练习题3.8 理解计算机二元操作
  14. 生物统计分析之ROC曲线分析
  15. HTMLa标签常用的四种链接
  16. YOLOv5导出onnx、TrensorRT部署(LINUX)
  17. java.sql.SQLException: Subquery returns more than 1 row
  18. 数据结构系列二---[一周leetcode刷题记录]
  19. Python PYQT5 MP3播放器(三) 这次解决了修改TAG后,部分歌曲没有声音的BUG,显示爬取到的歌曲列表
  20. 绝对布局AbsoluteLayout学习笔记

热门文章

  1. 笔记本配置连接打印机
  2. Android开发学习之基于ZBar实现微信扫一扫
  3. 如果王自如支持友推,而罗永浩不支持的话......
  4. CANoe.DiVa操作指南-运行环境搭建
  5. 《Gliding vertex on the horizontal bounding box for multi-oriented object detection》算法详解
  6. 英语写作翻译-动词(一)
  7. 网络请求——跨域 的概念
  8. html的text-decoration,CSS属性参考 | text-decoration
  9. html a text decoration,你未必知道的CSS小知识:text-decoration属性变成了属性简写
  10. 给图像增加一种噪声,构造并利用至少两种低通或高通滤波器实现频率域的滤波,并且显示滤波后的图像