[代码审计]云优cms V 1.1.2前台多处sql注入,任意文件删除修复绕过至getshell

 0X00 总体简介

云优CMS于2017年9月上线全新版本,二级域名分站,内容分站独立,七牛云存储,自定义字段,自定义表单,自定义栏目权限,自定义管理权限等众多功能深受用户青睐,上线短短3个月,下载次数已超过5万次。云优CMS坚信没有排名的网站不是“好网站”,我们将致力于为用户打造全自动SEO解决方案

此次审的版本为云优CMS v1.1.2,更新于2018.08.02。

发现了前台api模块Master.php,V1.php存在多个注入漏洞,与及staticsueditorvendorLocal.class.php 文件remove方法存在任意文件删除可导致getshell。

0x01 漏洞环境

工具: phpstudy , vscode,seay源代码审计工具,burpsuite

CMS版本: v1.1.2

官网下载:http://www.yunucms.com/

0x02 漏洞介绍

一、前台api模块下的Master.phpV1.php控制器多处sql注入

 多处sql注入皆是orderby变量未过滤,直接带入了查询。pdo是没有办法过滤orderby的。

1Master.phpapi_list 方法

 

直接带入查询,没有任何过滤

 

2,Master.phpapi_link 方法

不一一举例,Master.php文件的多处$orderby变量都是存在注入的,同理V1.php文件也是一样。

注入证明:取master.php文件中的api_list方法的注入点为例(为了更好的显示漏洞,手动开启了程序的debug模式,不开启报错方式也是可通过盲注的方式获取数据。程序默认不开启debug模式)

修复建议:

1) :不让用户可控$orderby参数

二、任意文件删除漏洞修复绕过

 文件staticsueditorvendorLocal.class.php remove方法

这个漏洞在1.0.6版本中引入,在1.0.8版本修复。

但是修复不完全,可以直接绕过。

看代码的意思是获取文件路径,通过’/’来划分为数组,判断数组[0]和数组[1]是否等于uploads,不等于则非法。但是我们可以这样绕过,payloads/uploads/../test.txt

且该处文件不经过后台认证,比如删除一个正常的图片,不带cookie,也是可以正常删除的。

跨目录删除文件,删除根目录下的test.txt

请求包:

可删除install.lock,重装系统写入配置文件直接获取网站webshell,参考(http://www.freebuf.com/column/162343.html)

修复建议:

1) :不允许路径中出现.. 字符

2) :比如将安全验证的代码修改为$file=str_replace(‘..’,’’,$file);

0X03 总结

漏洞原理比较简单,通过这个系统顺便总结了一下orderby注入相关的东西。

与及也发现了一些组件相关的问题,后面写篇文章总结一下。

声明:本文章只用于学习研究之用,禁止用于违法犯罪。

0x04 参考链接

1,http://www.cnblogs.com/iyiyang/articles/6740580.html

原文地址:https://www.cnblogs.com/r00tuser/p/9448196.html