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/

  1. public function delSqlFiles()
  2. {
  3. $id = $_SESSION["id"];
  4. $m = manage\controller\d("Admin");
  5. $arr = $m->find($id);
  6. $arr = $arr["admin_type"];
  7. if ($arr == 1) {
  8. $this->error("你不是超级管理员,没有限权!");
  9. 10.     }
  10. 11.
  11. 12.     $id = manage\controller\i("id", 0, "intval");
  12. 13.     $batchFlag = manage\controller\i("get.batchFlag", 0, "intval");
  13. 14.
  14. 15.     if ($batchFlag) {
  15. 16.         $files = manage\controller\i("key", array());
  16. 17.     }
  17. 18.     else {
  18. 19.         $files[] = manage\controller\i("sqlfilename", "");
  19. 20.     }
  20. 21.
  21. 22.     if (empty($files)) {
  22. 23.         $this->error("请选择要删除的sql文件");
  23. 24.     }
  24. 25.
  25. 26.     foreach ($files as $file ) {
  26. 27.         manage\controller\unlink($this->getDbPath() . "/" . $file);
  27. 28.     }
  28. 29.
  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_任意文件删除漏洞分析的更多相关文章

  1. 【代码审计】YzmCMS_PHP_v3.6 任意文件删除漏洞分析

      0x00 环境准备 YzmCMS官网:http://www.yzmcms.com/ 程序源码下载:http://pan.baidu.com/s/1pKA4u99 测试网站首页: 0x01 代码分析 ...

  2. 【代码审计】XYHCMS V3.5任意文件删除漏洞分析

      0x00 环境准备 XYHCMS官网:http://www.xyhcms.com/ 网站源码版本:XYHCMS V3.5(2017-12-04 更新) 程序源码下载:http://www.xyhc ...

  3. 【代码审计】XIAOCMS_存在任意文件删除漏洞分析

      0x00 环境准备 XIAOCMS官网: http://www.xiaocms.com/ 网站源码版本:XiaoCms (发布时间:2014-12-29) 程序源码下载:http://www.xi ...

  4. 【代码审计】JTBC(CMS)_PHP_v3.0 任意文件删除漏洞分析

      0x00 环境准备 JTBC(CMS)官网:http://www.jtbc.cn 网站源码版本:JTBC_CMS_PHP(3.0) 企业版 程序源码下载:http://download.jtbc. ...

  5. 【代码审计】QYKCMS_v4.3.2 任意文件删除漏洞分析

      0x00 环境准备 QYKCMS官网:http://www.qykcms.com/ 网站源码版本:QYKCMS_v4.3.2(企业站主题) 程序源码下载:http://bbs.qingyunke. ...

  6. 【代码审计】iZhanCMS_v2.1 后台任意文件删除漏洞分析

      0x00 环境准备 iZhanCMS官网:http://www.izhancms.com 网站源码版本:爱站CMS(zend6.0) V2.1 程序源码下载:http://www.izhancms ...

  7. 【代码审计】CLTPHP_v5.5.3后台任意文件删除漏洞分析

      0x00 环境准备 CLTPHP官网:http://www.cltphp.com 网站源码版本:CLTPHP内容管理系统5.5.3版本 程序源码下载:https://gitee.com/chich ...

  8. dzzoffice 任意文件删除漏洞分析

    dzzofiice 任意文件删除漏洞 \upload\dzz\system\dzzcp.php第199行 elseif($do=='deleteIco'){    $arr=array();    $ ...

  9. Wordpress4.9.6 任意文件删除漏洞复现分析

    第一章 漏洞简介及危害分析 1.1漏洞介绍 WordPress可以说是当今最受欢迎的(我想说没有之一)基于PHP的开源CMS,其目前的全球用户高达数百万,并拥有超过4600万次的超高下载量.它是一个开 ...

随机推荐

  1. 微信小程序的json遍历

    入门教程之列表渲染多层嵌套循环,目前官方的文档里,主要是一维数组列表渲染的案例,还是比较简单单一,给刚入门的童鞋还是无从入手的感觉. <view wx:for="{{items}}&q ...

  2. Java ArrayList源码剖析

    转自: Java ArrayList源码剖析 总体介绍 ArrayList实现了List接口,是顺序容器,即元素存放的数据与放进去的顺序相同,允许放入null元素,底层通过数组实现.除该类未实现同步外 ...

  3. 关于Mac上的开发工具

    如果是JavaScript语言的话用  Intellij IDEA 如果是C/C++语言的话用  XCode

  4. SpagoBI 教程 Lesson 3: Highchart Dashboards

    SpagoBI Lesson 3: Highchart Dashboards Business Intelligence dashboards Every car comes with a dash ...

  5. (笔记)Ubuntu下安装arm-linux-gcc-4.4.3.tar.gz (交叉编译环境)

    参考了前人的成果,结合自己实践,arm-linux-gcc-4.4.3.tar.gz的下载地址为:http://ishare.iask.sina.com.cn/f/13836544.html?from ...

  6. SpringMVC小结

    一放下就生疏,所以要温故,所以要笔记. Tip,多数情况下,SpringMVC建议单例执行,Struts2建议多例执行. 原因就在于Struts2使用属性驱动或模型驱动,而SpringMVC则使用方法 ...

  7. 第三百二十六节,web爬虫,scrapy模块,解决重复ur——自动递归url

    第三百二十六节,web爬虫,scrapy模块,解决重复url——自动递归url 一般抓取过的url不重复抓取,那么就需要记录url,判断当前URL如果在记录里说明已经抓取过了,如果不存在说明没抓取过 ...

  8. php生成二维码的几种方式[转]

      二维码是二维条形码的一种,可以将网址.文字.照片等信息通过相应的编码算法编译成为一个方块形条码图案,手机用户可以通过摄像头和解码软件将相关信息重新解码并查看内容.PHP可以使用php QR Cod ...

  9. Hadoop(HA)分布式集群部署

    Hadoop(HA)分布式集群部署和单节点namenode部署其实一样,只是配置文件的不同罢了. 这篇就讲解hadoop双namenode的部署,实现高可用. 系统环境: OS: CentOS 6.8 ...

  10. sublime text3支持Vue语法高亮显示

    1.下载文件链接: 或https://github.com/vuejs/vue-syntax-highlight 解开压缩包vue-syntax-highlight-master,其内所有文件备用. ...