欢迎访问Sunbet官网(www.sunbet.us),Allbet欧博官网(www.ALLbetgame.us)!

首页Sunbet_安全防护正文

国外某cms审计之文件删除漏洞

b9e08c31ae1faa592019-12-2970安全技术漏洞分析

Info

为什么不是任意文件删除,文中有对install.lock的特殊照顾~

代码审计过程:

该漏洞存在在\admin\modules\forum\attachements.php页面的242行的unlink函数:

国外某cms审计之文件删除漏洞  安全技术 漏洞分析 第1张

可以看下这条语句if(!@unlink(MYBB_ROOT.$mybb->settings['uploadspath']."/".$file))
通过对mybb根目录和mybb的settings表中的数据uploadpath的值进行拼接,最后拼接file变量的值,其中MYBB_ROOT为网站根目录,setting变量为全局调用的数据库表名。
我们首先看一下该页面中的file变量来源,同时在该页面中的228行,由控制器接收input变量orphaned_files,其类型必须为数组,该请求变量由post请求提供,230行然后赋值给file变量,往上分析,221行该变量通过delete_orphan控制器进入,同时请求方式必须为post请求,有次数据来源分析完毕,往下分析,232行str_replace函数对接收的file变量进行过滤..字符转,避免目录穿越,通过234行的realpath函数对目录进行验证其有效性,继续往下分析:

国外某cms审计之文件删除漏洞  安全技术 漏洞分析 第2张

通过236行的str_pos函数检测拼接的目录是否包含网站根目录,防止对网站以外的文件进行操作,最后面还有对 install.lock的专门照顾~~~

国外某cms审计之文件删除漏洞  安全技术 漏洞分析 第3张

国外某cms审计之文件删除漏洞  安全技术 漏洞分析 第4张

现在我们可以控制file变量,查看页面来源,发现在16行,数据由index.php页面下的forum模块下的attachments进行传入:链接为以下形式:
http://localhost/mybb/admin/index.php?module=forum-attachments&action=delete_orphan
由于该页面为删除孤立异常附件,需要构建,本次漏洞按照正常附件进行删除,然后通过改包进行操作可以成功实现,则正常附件删除链接,具体操作看漏洞浮现步骤
http://localhost/mybb/admin/index.php?module=forum-attachments&action=delete

国外某cms审计之文件删除漏洞  安全技术 漏洞分析 第5张

剩下对$mybb->settings['uploadspath']变量的控制就需要对文件进行修改进行查询,针对关键函数进行搜索:$db->update_query("settings"发现在\mybb\inc\settings.php文件下1101行:

国外某cms审计之文件删除漏洞  安全技术 漏洞分析 第6张

通过value和name变量进行更新,其中value变量是从post请求中的upsetting数组中进行获取其name变量的值:

国外某cms审计之文件删除漏洞  安全技术 漏洞分析 第7张

我们跟踪uploadspath变量,进行搜索,有1042行定义数组,而uploadspath为数组中的参数,同时也有post请求的upsetting数组进行输入:

国外某cms审计之文件删除漏洞  安全技术 漏洞分析 第8张

现在寻找数据传入方式,发现action方法为change,请求方式为post:

sdcms v1.9 后台getshell

[TOC] 1.前言 上集说到sdcms v1.9最新版前台sql注入,通过注入运气好能进后台的话,然后就是getshell了。然后看了看后台controller目录里的文件,找到了一处可以getshell的地方,其实这个漏洞非常简单,就是一处写文件的功能 这个不是0day了,找到后发现网上已经有师傅申请了cve,提交了cnvd。 cve编号:CVE-2019-9651 cnvd链接:https://www.cnvd.org.cn/flaw/show/CNVD-2019-07927 这个是针对v1.7 版本的 cve编号:CVE-2018-19520 cnvd链接:https://www.cnvd.org.cn/flaw/show/CNVD-2019-05942 这个是针对v1.6版本的 仔细搜一下这两个cve编号,漏洞其实就是一个漏洞,官方的修复就是一直增加关键字过滤,其实

国外某cms审计之文件删除漏洞  安全技术 漏洞分析 第9张

通过该页面17行,发现页面在index页面下调用的模板为config下的setting模板:

国外某cms审计之文件删除漏洞  安全技术 漏洞分析 第10张

因此我们构建的页面就可以为这样,从该页面进行传入数据
http://localhost/mybb/admin/index.php?module=config-settings&action=change

漏洞复现准备工作:

发表帖子,同时上传附件
通过修改setting中的uploadspath值为删除的文件的目录

漏洞复现:

首先通过发布论坛帖子进行写帖子,并上传一个附件(txt后缀即可):

国外某cms审计之文件删除漏洞  安全技术 漏洞分析 第11张

上传附件为1111.txt:

国外某cms审计之文件删除漏洞  安全技术 漏洞分析 第12张

然后修改uploadspath选项,即上传文件的路径,通过http://localhost/mybb/admin/index.php?module=config-settings页面修改现在改为配置文件inc文件:

国外某cms审计之文件删除漏洞  安全技术 漏洞分析 第13张

国外某cms审计之文件删除漏洞  安全技术 漏洞分析 第14张

现在通过删除附件模块进行操作,先到forums模块,进行附件查询操作:
发现附件,进行删除抓包:

国外某cms审计之文件删除漏洞  安全技术 漏洞分析 第15张

现在修改数据包,主要有action和添加post参数&orphaned_files[]=///config.php
国外某cms审计之文件删除漏洞  安全技术 漏洞分析 第16张
修改后,action=delete_orphans,&orphaned_files[]=///config1.php,然后发包,发送前目录文件如下:

国外某cms审计之文件删除漏洞  安全技术 漏洞分析 第17张

发送后:

国外某cms审计之文件删除漏洞  安全技术 漏洞分析 第18张
审计完毕,唯一的瑕疵就是不能对install.lock进行删除,通过分析完这套程序,发现删除的接口最终都会经历这道坎,可算是硬性白名单了。


网友评论