【代码审计】XYHCMS V3.5代码执行漏洞分析
0x00 环境准备
XYHCMS官网:http://www.xyhcms.com/
网站源码版本:XYHCMS V3.5(2017-12-04 更新)
程序源码下载:http://www.xyhcms.com/Show/download/id/2/at/0.html
测试网站首页:

0x01 代码分析
1、文件位置: /App/Manage/Controller/SystemController.class.php 第194行开始:
- public function site() {
- if (IS_POST) {
- $data = I('config', array(), 'trim');
- foreach ($data as $key => $val) {
- if (stripos($val, '<?php') !== false) {
- $data[$key] = preg_replace('/<\?php(.+?)\?>/i', '', $val);
- }
- }
- $data['CFG_IMGTHUMB_SIZE'] = strtoupper($data['CFG_IMGTHUMB_SIZE']);
- 10. $data['CFG_IMGTHUMB_SIZE'] = str_replace(array(',', 'X'), array(',', 'X'), $data['CFG_IMGTHUMB_SIZE']);
- 11. if (empty($data['CFG_IMGTHUMB_SIZE'])) {
- 12. $this->error('缩略图组尺寸不能为空');
- 13. }
- 14. if (!empty($data['CFG_IMAGE_WATER_FILE'])) {
- 15. $img_ext = pathinfo($data['CFG_IMAGE_WATER_FILE'], PATHINFO_EXTENSION);
- 16. $img_ext = strtolower($img_ext);
- 17. if (!in_array($img_ext, array('jpg', 'gif', 'png', 'jpeg'))) {
- 18. $this->error('水印图片文件不是图片格式!请重新上传!');
- 19. return;
- 20. }
- 21. }
- 22. foreach ($data as $k => $v) {
- 23. $ret = M('config')->where(array('name' => $k))->save(array('s_value' => $v));
- 24. }
- 25. if ($ret !== false) {
- 26. F('config/site', null);
- 27. $this->success('修改成功', U('System/site'));
- 28. } else {
- 29. $this->error('修改失败!');
- 30. }
- 31. exit();
- 32. }
这段函数中对提交的参数进行处理,然后写入配置文件。注意看红色部分代码,接收到的参数进行正则匹配,如果检测’<?php’,就通过正则将这部分脚本代码替换为空,但显然这样过滤是不严谨的,存在被绕过的情况。PHP有多个代码风格,标准的”<?php ?>”被过滤,那么我们可以通过变换代码风格,达到绕过代码过滤,写入配置文件,导致任意代码执行,最后控制网站服务器权限。
- PHP代码风格:
- 标准风格:<?php ?>
- ASP风格 :<% %>
- 长风格:<script language='php'></script>
0x02 漏洞利用
1、 登录网站后台,在系统设置—网站设置—会员配置:
提交构造的PHP长风格的一句话木马,绕过代码过滤,写入配置文件,达到任意代码执行的目的。

2、 通过访问http://127.0.0.1/App/Runtime/Data/config/site.php,成功触发代码执行漏洞。
3、 利用菜刀连接,控制网站服务器权限:

0x03 修复建议
1、写入配置文件前,对特殊字符(如<、>等)进行htmlencode处理;
2、全局配置可考虑写入数据库进行调用。
最后
欢迎关注个人微信公众号:Bypass--,每周原创一篇技术干货。

【代码审计】XYHCMS V3.5代码执行漏洞分析的更多相关文章
- 【代码审计】OTCMS_PHP_V2.83_代码执行漏洞分析
0x00 环境准备 OTCMS官网:http://otcms.com 网站源码版本:网钛CMS PHP版 V2.83 [更新于2017.12.31] 程序源码下载:http://d.otcms.c ...
- 【代码审计】YzmCMS_PHP_v3.6 代码执行漏洞分析
0x00 环境准备 YzmCMS官网:http://www.yzmcms.com/ 程序源码下载:http://pan.baidu.com/s/1pKA4u99 测试网站首页: 0x01 代码分析 ...
- 【代码审计】DouPHP_v1.3代码执行漏洞分析
0x00 环境准备 DouPHP官网:http://www.douco.com/ 程序源码下载:http://down.douco.com/DouPHP_1.3_Release_20171002. ...
- 【代码审计】iZhanCMS_v2.1 代码执行漏洞分析
0x00 环境准备 iZhanCMS官网:http://www.izhancms.com 网站源码版本:爱站CMS(zend6.0) V2.1 程序源码下载:http://www.izhancms ...
- 【代码审计】CmsEasy_v5.7 代码执行漏洞分析
0x00 环境准备 CmsEasy官网:http://www.cmseasy.cn/ 网站源码版本:CmsEasy_v5.7_UTF8-0208 程序源码下载: http://ftp.cmseas ...
- [转帖]Windows DHCPServer远程代码执行漏洞分析(CVE-2019-0626)
Windows DHCPServer远程代码执行漏洞分析(CVE-2019-0626) ADLab2019-03-15共23605人围观 ,发现 4 个不明物体安全报告漏洞 https://www.f ...
- 【代码审计】YUNUCMS_v1.0.6 后台代码执行漏洞分析
0x00 环境准备 QYKCMS官网:http://www.yunucms.com 网站源码版本:YUNUCMSv1.0.6 程序源码下载:http://www.yunucms.com/Downl ...
- 【代码审计】大米CMS_V5.5.3 任意文件删除及代码执行漏洞分析
0x00 环境准备 大米CMS官网:http://www.damicms.com 网站源码版本:大米CMS_V5.5.3试用版(更新时间:2017-04-15) 程序源码下载:http://www ...
- 【代码审计】大米CMS_V5.5.3 代码执行漏洞分析
0x00 环境准备 大米CMS官网:http://www.damicms.com 网站源码版本:大米CMS_V5.5.3试用版(更新时间:2017-04-15) 程序源码下载:http://www ...
随机推荐
- ext2文件系统学习(二)—— 目录磁盘结构
创建镜像.mount等操作和上一篇一样,测试目录结构如下: 一些文件系统信息如下: Block size: 1024 Inodes per group: 128 Inode ...
- JDBC(3)—ResultSet结果集
简介:ResultSet:结果集.封装了使用JDBC进行查询的结果.Statement只能进行更新操作,所以使用ResultSet进行查询操作. 1.调用Statement对象的executeQuer ...
- Android:使用shape制作素材
最近看到朋友制作的Android APP使用了极少的图片,但是图形却极其丰富,问了之后得知是使用shape绘制的,有很多优点. 下面是我整理的一些素材: 预览 下面是图片预览: 代码 布局文件 < ...
- (转)Fur Shader
转自:http://qiankanglai.me/misc/2014/11/15/fur-shader/ 花时间看了下毛发效果,苦于囊中羞涩没能买QuickFur.furFX等插件,最后找到了Fur ...
- Java 下一代: 函数式编码风格——Groovy、Scala 和 Clojure 共享的函数结构及其优势
原文地址 本文内容 命令式处理 函数式处理 函数式编程的优势 所有 Java 下一代语言都包括函数式编程结构,让您可以从一个更高的抽象层面来思考问题.然而,语言间术语的不同使得难以看到类似的结构.本期 ...
- 谷歌Chrome浏览器无法安装插件的解决方法
Chrome浏览器已替代了个人多年使用的遨游浏览器,但众所周知,国内的环境无法正常登录谷歌账户.无法访问应用商店,而Chrome主版本号大于66的只能从Chrome应用商店下载并安装插件,这不是死结吗 ...
- ES6入门基础
let和const 一.块级作用域 ES5 只有全局作用域和函数作用域,没有块级作用域,这样的缺点是:1.用来计数的循环变量泄露为全局变量.2.内层变量可能会覆盖外层变量 var tmp = new ...
- Nginx-rtmp 直播媒体实时流实现
0. 前言 这段时间在搭建一个IPCamera项目服务器.视频点对点通话,客户端会查看设备端的音视频实时流.为了省流量,是通过P2P进行穿透.但是由于NAT设备的原因和IPV4的枯竭.有些设备是无法进 ...
- docker内程序如何读取dockerfile和compose.yml中设置的环境变量
docker内程序如何读取dockerfile和compose.yml中设置的环境变量 背景 compose文件中配置了服务A和服务B,其中B服务调用了A服务的接口,那么B的实现代码中该如何调用A的服 ...
- nginx配置http为1.0到1.1
转载自:https://blog.csdn.net/u014558668/article/details/79237020 需求:接口通过nginx转发服务器,接收不到数据,但是测试环境是好的: 环境 ...