本文首发于先知:

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

0x01漏洞描述

Pluck是用php编写的一款的小型CMS
影响版本:Pluck CMS Pluck CMS 4.7.10(更新于2019年8月)
官网地址:http://www.pluck-cms.org/?file=home

0x02漏洞分析

目前最新版本为4.7.10,但是这个问题在4.7.1版本时就存在了,虽然经过作者更新版本,文章编辑处参数过滤更加严格了,但是最终同样可以getshell,并且发现4.7.10版本经过多次更新,对关键参数处理仍遗留有相同问题。以下先介绍一下4.7.1版本的问题,便于后面对4.7.10版本快速理解。

v4.7.1分析

入口点在admin.php
admin.php:

进入后台后action=editpage,此时包含进data/inc/editpage.php可以进行文章编辑,继续跟进

editpage.php的35行可以看到此时对post传递的title和content等参数直接调用save_page函数,漏洞正存在于此,跟进save_page函数

functions.admin.php的588行,也就是位于save_page函数中,传入的title和content等可控参数直接传入与php代码进行了拼接,这里sanitize函数对单引号进行过滤,防止二次转义绕过,但是后面仍然可以bypass

functions.admin.php的612行,此时对title和content内容通过调用save_file函数进行直接写入,这里我们不用关心写入的文件名,因为写入以后将自动包含

functions.all.php的178行,此时若content不为数组则直接写到目标文件中

在前面的分析中我们可以看到title,content,hidden三个参数都写到了文件中,但是目前title和content都进行过滤了,但是hidden参数没有进行过滤,所以此时可以直接闭合$data变量拼接时的单引号,从而写入shell

此时将自动跳转到index.php加载我们写入的shell,结果如下

但是如果想通过title和content参数进行shell的写入也是可以的,只需要构造title或content为1\';phpinfo();/*即可

也可以进一步写入shell即可

v4.7.10分析

这个版本也是在文章编辑处出现了问题,在data\inc\functions.admin.php的539行处,将可控的POST参数与php代码进行拼接

此时单纯注入或注入反斜杠+单引号都将无法写入shell

但是正如最开始所说,这个最新的版本和4.7.1版本的关键参数hidden参数均未进行过滤,即同样通过hidden参数来写入shell文件

此时写入的文件如下所示,同样可以进一步进行rce,方法与v4.7.1方式相同

Pluck CMS 4.7.10远程代码执行漏洞分析的更多相关文章

  1. [转帖]Windows DHCPServer远程代码执行漏洞分析(CVE-2019-0626)

    Windows DHCPServer远程代码执行漏洞分析(CVE-2019-0626) ADLab2019-03-15共23605人围观 ,发现 4 个不明物体安全报告漏洞 https://www.f ...

  2. thinkphp5.0.22远程代码执行漏洞分析及复现

    虽然网上已经有几篇公开的漏洞分析文章,但都是针对5.1版本的,而且看起来都比较抽象:我没有深入分析5.1版本,但看了下网上分析5.1版本漏洞的文章,发现虽然POC都是一样的,但它们的漏洞触发原因是不同 ...

  3. Spring框架的反序列化远程代码执行漏洞分析(转)

    欢迎和大家交流技术相关问题: 邮箱: jiangxinnju@163.com 博客园地址: http://www.cnblogs.com/jiangxinnju GitHub地址: https://g ...

  4. CVE-2012-1876Microsoft Internet Explorer Col元素远程代码执行漏洞分析

    Microsoft Internet Explorer是微软Windows操作系统中默认捆绑的WEB浏览器.         Microsoft Internet Explorer 6至9版本中存在漏 ...

  5. CVE-2012-0003 Microsoft Windows Media Player ‘winmm.dll’ MIDI文件解析远程代码执行漏洞 分析

    [CNNVD]Microsoft Windows Media Player ‘winmm.dll’ MIDI文件解析远程代码执行漏洞(CNNVD-201201-110)    Microsoft Wi ...

  6. CVE-2018-7600 Drupal核心远程代码执行漏洞分析

    0x01 漏洞介绍 Drupal是一个开源内容管理系统(CMS),全球超过100万个网站(包括政府,电子零售,企业组织,金融机构等)使用.两周前,Drupal安全团队披露了一个非常关键的漏洞,编号CV ...

  7. Nexus Repository Manager 3(CVE-2019-7238) 远程代码执行漏洞分析和复现

    0x00 漏洞背景 Nexus Repository Manager 3是一款软件仓库,可以用来存储和分发Maven,NuGET等软件源仓库.其3.14.0及之前版本中,存在一处基于OrientDB自 ...

  8. CVE-2017-7269—IIS 6.0 WebDAV远程代码执行漏洞分析

    漏洞描述: 3月27日,在Windows 2003 R2上使用IIS 6.0 爆出了0Day漏洞(CVE-2017-7269),漏洞利用PoC开始流传,但糟糕的是这产品已经停止更新了.网上流传的poc ...

  9. phpMoadmin CVE-2015-2208 远程代码执行漏洞分析

    原文:http://www.thinkings.org/2015/03/05/cve-2015-2208-phpmoadmin-exec-vul.html phpMoAdmin 是一个用PHP 开发的 ...

随机推荐

  1. vscode 基本知识以及如何配置 C++ 环境

    参考: 在用VSCode? 看完这篇文章, 开发效率翻倍!最后一条厉害了~ Visual Studio Code(VS code)你们都在用吗?或许你们需要看一下这篇博文 按下 ctrl+K,再按下 ...

  2. Javascript--HTML DOM基础知识

    1.HTML DOM是什么,以及它的作用: w3c对DOM有一系列的解释和定义,用自己理解的话来说就是:HTML DOM是html的标准对象模型,可以使JavaScript去操作(获取,修改,删除,添 ...

  3. Node中的net模块提供的前端通信

    Node中的net模块提供的前端通信 客户端 业务: 客户端现在要在终端输入内容,然后回车发送内容给服务器 解决: Node中提供了一个叫做 readline 的 模块用于读取命令行内容 [ 单行读取 ...

  4. stm32 printf重定向

    printf函数调用fputc int fputc(int ch, FILE *p) { USART_SendData(USART1, ch); //重定向到串口 while(USART_GetFla ...

  5. 9.jsonp的实现原理

    1. 由于浏览器的安全性限制,不允许AJAX访问 协议不同.域名不同.端口号不同的数据接口,浏览器认为这种访问不安全:2. 以通过动态创建script标签的形式,把script标签的src属性,指向数 ...

  6. FreeRTOS任务基础概念

    RTOS系统的核心就是任务管理: 任务的特性 在RTOS中每个任务都有自己的运行环境,不依赖于系统中其他的任务或者调度器,任何一个时间点只能有一个任务运行,具体运行哪个任务是由任务调度器来决定的,而任 ...

  7. python cmd 窗口 中文乱码 解决方法 (附:打印不同颜色)

    python cmd 窗口 中文乱码 解决方法 (附:打印不同颜色) 前言 在 python 开发中,有时候想通过cmd窗口来和用户交互,比如显示信息之类的,会比自己创建 GUI 来的方便,但是随之而 ...

  8. 1113 form表单与css选择器

    目录 1.form表单 form元素 特点 参数 form元素内的控件 1.input的使用 2.select标签 3.textarea元素 4.autofocus属性 2.CSS 1.基础语法 cs ...

  9. node.js通过回调函数获取异步函数的返回结果

    html文件代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...

  10. python的logging日志模块(二)

    晚上比较懒,直接搬砖了. 1.简单的将日志打印到屏幕   import logging logging.debug('This is debug message') logging.info('Thi ...