ThinkPHP5.1文件上传漏洞攻击与漏洞修复攻防实验

0收藏

0点赞

浏览量:1065

2021-09-24

举报

hinkPHP5.1文件上传漏洞攻防实验,基于最新版的ThinkPHP V5.1.41 LTS做的攻防实验。

实验目的:市面上基于ThinkPHP5.1开发的程序存在getshell高危后门很多没有维护或者得不到维护,对于没有一定技术含量用户也不知道怎么维护。同时waf防火墙防御getshell也有限,毕竟存在绕过可能。所以推出本教程,可以让一些用户做简单维护安全参考和临时后门修复。文章写的很菜请见谅,过阵子我会把环境开源出来。环境可以做攻防实验又可以满足运营,是一个轻量级安全的网址导航cms。

文章目录

0x1 存在上传漏洞的方法 示例
0x2 攻击效果
0x3 跟具官方文档修复漏洞方案
0x4 防御效果
0x5 附加nginx目录安全配置
0x6 参考文献


0x1 存在上传漏洞的代码 示例

class Upload extends Base
{
public function image()
{
$sys = db('sysconfig')->where('varname', 'imagesurl')->find();
$file = request()->file('file');
if (empty($file)) {
$this->error('请选择上传文件');
}
$info = $file->move($_SERVER['DOCUMENT_ROOT'] . '/upload');
$filename = $info->getSaveName();
$filename = str_replace('\\', '/', $filename);
$imgurl = $sys['value'] . $filename;
if ($filename) {
$arr = array(
'state' => '1',
'imgurl' => $imgurl,
);
return json($arr);
} else {
$this->error($file->getError());
}
}
}
0x2攻击效果:后缀.php后门文件上传成功!



0x3 根具官方文档修复漏洞方案 示例

class Upload extends Base
{
public function image()
{
$sys = db('sysconfig')->where('varname', 'imagesurl')->find();
$file = request()->file('file');
if (empty($file)) {
$this->error('请选择上传文件');
}
$info = $file->validate(['ext' => 'jpg,png,gif'])->move($_SERVER['DOCUMENT_ROOT'] . '/upload');
if ($info) {
$filename = $info->getSaveName();
$filename = str_replace('\\', '/', $filename);
$imgurl = $sys['value'] . $filename;
if ($filename) {
$arr = array(
'state' => '1',
'imgurl' => $imgurl,
);
return json($arr);
} else {
$this->error($file->getError());
}
} else {
$this->error('error不支持该文件格式上传');
}
}
}
0x4防御效果:没有进入文件上传流程,返回错误提示。

防御逻辑:使用手册中validate()方法,通过ext配置项,定义允许上传文件的白名单过滤。validate(['ext' => 'jpg,png,gif']);然后通过对象赋值的$info进行判断真假,抛出相对于的error。





0x5附加nginx目录安全配置

例子1:nginx,利用deny all;或者return 404;禁止访问,防止了上传目录的脚本执行权限。

#nginx
location ~ ^/upload/.*.(php|php5)$
{
deny all;
}
#nginx
location ~ ^/upload/.*.(php|php5)$
{
return 404;
}

0x6参考文献:

[ThinkPHP5.1手册-文件上传]https://www.kancloud.cn/manual/thinkphp5_1/354121


(来源:安全龙)

(原文链接:https://mp.weixin.qq.com/s/4uux8P8STkhUtPK2XRQMEA

发表评论

点击排行

钓鱼邮件-如何快速成为钓鱼达人

一、前言在大型企业边界安全做的越来越好的情况下,不管是 APT 攻击还是红蓝对抗演练,钓鱼邮件攻击使用的...

【渗透实战系列】| 1 -一次对跨境赌博类APP的渗透实战(getshell并获得全部数据)

本次渗透实战主要知识点:1.app抓包,寻找后台地址2.上传绕过,上传shell3.回shell地址的分析4.中国蚁剑工...

HTTPS - 如何抓包并破解 HTTPS 加密数据?

HTTPS 在握手过程中,密钥规格变更协议发送之后所有的数据都已经加密了,有些细节也就看不到了,如果常规的...

无线电安全攻防之GPS定位劫持

一、需要硬件设备HackRFHackRF 连接数据线外部时钟模块(TCXO 时钟模块)天线(淘宝套餐中的 700MHz-2700MH...

记一次Fastadmin后台getshell的渗透记录

1.信息搜集先来看看目标站点的各种信息后端PHP,前端使用layui,路由URL规则看起来像ThinkPHP,那自然想到...

华为防火墙实战配置教程,太全了

防火墙是位于内部网和外部网之间的屏障,它按照系统管理员预先定义好的规则来控制数据包的进出。防火墙是系...

ADCS系列之ESC1、ESC8复现

对原理感兴趣的可以去https://www.specterops.io/assets/resources/Certified_Pre-Owned.pdf看原文,这里只...

【干货分享】利用MSF上线断网主机的思路分享

潇湘信安 Author 3had0w潇湘信安一个不会编程、挖SRC、代码审计的安全爱好者,主要分享一些安全经验、...

扫描二维码下载APP