FastAdmin前台文件上传

漏洞通告

FastAdmin是一款基于ThinkPHP和Bootstrap的极速后台开发框架。

2021年3月28日,360漏洞云漏洞研究员发现,FastAdmin框架存在有条件RCE漏洞,当攻击者具有一定用户权限的前提下,可以实现任意文件上传,导致RCE。--360漏洞云

漏洞危害范围:< V1.2.0.20210401_beta

漏洞分析

由于FastAdmin的前台文件上传功能中提供了分片传输功能, 但在合并分片文件时因对文件路径的拼接处理不当导致可上传任意文件。

限制条件:

  • 具有上传权限的账户
  • 开启分片传输功能(默认关闭)

漏洞文件位于:application/api/controller/Common.php

在上传文件时如果POST传递 chunkid参数即可进行分片文件传输, 其会调用 Upload#chunk方法, 参数均可控。

一起梳理一下chunk方法, 代码不多, 一行一行作解释。首先判断 Content-Type不为 application/obtet-stream则抛出 UploadException异常。接着会拼接分片文件存储路径为 runtime/chunks。文件名为 $chunkid + - + $chunkindex + .part。即当我们传递 $chunkidhhh.php, $chunkindex为0, 则拼接出的分片文件名为 hhh.php-0.part

上传测试:

分片文件路径:

回到 upload方法, 当 $actionmerge时会调用 Upload#merge方法合并分片文件, 首先其将分片文件路径和 $chunkid拼接, 然后合并所有分片文件。

调用 merge方法合并分片文件:

漏洞利用脚本:FastAdmin_Upload

修复方法

  1. 关闭分片传输功能
  2. 对 chunkid 做正则判断

参考

FastAdmin最新RCE漏洞复现

本文来源于: https://xz.aliyun.com/t/9395

相关推荐

PHP的无参数RCE

PHP无参数RCE 因为先前只是参照大佬的payload解题,从未自己本地复现过,索性借复习的机会,在本地搭建并尝试。 题目: GXYCTF2019—禁止套娃 [极客大挑战 2020]Roamphp4-Rceme 限制条件: /[^\W]+

记某CMS漏洞getshell

记极致CMS漏洞getshell 今天下午比较空闲,就去搜索一些cms,突然对极致CMS感兴趣,而网上已经有一些文章对它进行分析利用,sql注入,xss,后台修改上传后缀名前台getshell等等。 于是就引起了我的兴趣想去测试一下。 信息

CVE-2016-0165 Win32k漏洞分析笔记

CVE-2016-0165 是一个典型的整数上溢漏洞,由于在 win32k!RGNMEMOBJ::vCreate 函数中分配内核池内存块前没有对计算的内存块大小参数进行溢出校验,导致函数有分配到远小于所期望大小的内存块的可能性。而函数本身并

记一次无意的渗透测试

由于最近再写一个web漏洞扫描器,准备在fofa上找网站测试的时候,无意间看到了个标题,xx系统, 点进去一看,好家伙,这不就是我很收悉的,那个xxcms嘛(具体的忘记了) 正好通过这个网站的cms漏洞,测试下我的扫描器,结果,好家伙,

ThinkPHP5.x RCE 复现

ThinkPHP5.x RCE 复现 其实去年开始是复现过这个漏洞的,但是总觉得并没有吃透,分析写得漏洞百出,于是再来审计一遍。 漏洞影响范围 5.x < 5.1.31 5.x < 5.0.23 复现环境 php7.3 thinkphp5.

draytek漏洞分析

分析复现一下几个draytek的漏洞 1.CVE-2020-8515 漏洞描述如下: DrayTek Vigor2960 1.3.1_Beta, Vigor3900 1.4.4_Beta, and Vigor300B 1.3.3_Beta,

ELK在渗透测试中的利用与安全配置解析

通过此文章,我将提供有关ELK在攻击利用与安全防护。关于利用ELK 的信息在网上非常罕见。因此,这篇文章只是本人在日常工作和学习中的个人笔记,虽不完善,但可作为学习参考。通过这篇文章希望能为你提供一些在渗透测试期间可能有用的方法。 背景 E

记一次简单的审计

前言 上次在逛先知的时候,无意间看到了L4zily师傅的这篇文章:https://xz.aliyun.com/t/9114 ,所以有了这篇,该版本为金微手机商城 V0.3.8版本 正题 我们直接去官方搭建的演示站,直接访问/admin.ph

TP5 漏洞分析

RCE1 影响版本 TP 5.0.7 - 5.0.24 TP 5.1.0 - 5.1.30 payload 5.0 ?s=index/think\config/get&name=database.username // 获取配置信息 ?s=

记一次SSRF->getshell

这个是2个月前的项目,思路也是挺简单的,还是给兄弟们分享分享,首先还是常规的站点,我们进去看看 可以看见这个网站为thinkphp,当然,当时就很开心,因为自己打tp的站打的太多了,然后再进一步细看。 我们可以得知这个web站点的版本为

vulnstack红队一学习

环境搭建 配置网卡 编辑->虚拟网络编辑器 自定义为仅主机模式 配置win7网络 添加两块网卡,一块为VMnet1(仅主机模式),一块为VMnet8(net模式连通外网) 配置VMnet1网卡 (win7) DNS服务器是windows s