首页 > 其他 > 详细

Pluck CMS 4.7.10远程代码执行漏洞分析

时间:2019-10-11 10:46:44      阅读:83      评论:0      收藏:0      [点我收藏+]

本文首发于先知:

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远程代码执行漏洞分析

原文:https://www.cnblogs.com/wfzWebSecuity/p/11652221.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!