目录
1、文件上传漏洞介绍
2、pikachu-client check
3、pikachu-MIME type
4、pikachu-getimagesize
最近在学习文件上传漏洞,这里使用pikachu靶场来对文件上传漏洞进行一个复习+练习
废话不多说,开整
1、文件上传漏洞介绍
pikachu靶场是这样介绍文件上传漏洞的:
文件上传功能在web应用系统很常见,比如很多网站注册的时候需要上传头像、上传附件等等。当用户点击上传按钮后,后台会对上传的文件进行判断 比如是否是指定的类型、后缀名、大小等等,然后将其按照设计的格式进行重命名后存储在指定的目录。
如果说后台对上传的文件没有进行任何的安全判断或者判断条件不够严谨,则攻击着可能会上传一些恶意的文件,比如一句话木马,从而导致后台服务器被webshell。
所以,在设计文件上传功能时,一定要对传进来的文件进行严格的安全考虑。比如:
–验证文件类型、后缀名、大小;
–验证文件的上传方式;
–对文件进行一定复杂的重命名;
–不要暴露文件上传后的路径;
–等等…
总结一下文件上传漏洞成功需要有下列四大前提:
-
目标具有文件上传功能
-
上传后的文件能够被Web服务器解析执行
-
知道文件上传到服务器后的存放的物理路径和文件名称
-
目标文件可以被用户访问
这里借用大佬总结好的一个图片就可以很好的阐述文件上传的整个过程、防御手段和绕过方法:
下面就对pikachu靶场中的文件上传模块进行通关来练习一下文件上传漏洞
2、pikachu-client check
来到第一关client check关卡可以看到如下页面:
可以看到我们可以上传一个图片,并且页面也说明了“只允许上传图片”的字样,点击提示可以看到 这一关的检验应该是在前端检验的
尝试上传一个php文件:
可以看到不让上传php文件,那么我们想要上传php文件必须要绕过限制:
方法1:浏览器禁用JS
我这里使用的是火狐浏览器,其他浏览器可以去百度搜:
将true修改为false后再次尝试上传php文件:
可以看到现在就可以上传成功了,访问该文件
可以看到成功解析
方法2:抓包修改后缀
第二种方式就是新建一个php文件然后内容是phpinfo();
然后将后缀修改为jpg,上传文件时,抓包修改后缀就可以看到成功上传了
修改前:
修改后:
可以看到确实上传了
尝试访问:
成功解析
3、pikachu-MIME type
下面来到了第二关,MIME type ,可以看到如下页面:
还是一个上传页面,提示可以看到让我们MIME type了解一下,那么我们就来了解一下:
MIME(Multipurpose Internet Mail Extensions)类型是一种标准,用于标识在互联网上传输的文件的类型和格式。每个MIME类型都由一个唯一的标识符表示,通常以文件的扩展名结尾,例如"text/plain"表示纯文本文件,"image/jpeg"表示JPEG图像文件。
MIME类型在Web开发中非常重要,因为它们告诉浏览器如何处理特定类型的文件。例如,如果服务器将一个文件标识为"text/html"类型,浏览器将会以HTML格式显示它,而如果文件是"image/png"类型,浏览器将会以PNG格式显示它。
知道了MIME是啥了后我们来尝试上上传一下:
可以看到这里图片只能上传指定格式的,这说明后端检测使用了白名单格式,那么我们可不可以像上面一样先上传一个jpg文件抓包然后修改后缀绕过限制呢?实践一下:
可以看到也是上传成功了
尝试访问:
成功解析
这里也可以进行反向操作,即先上传一个php文件,抓包,将MIME修改为图片的格式也是可以绕过限制上传成功的
尝试访问:
成功解析
4、pikachu-getimagesize
来到这一关,可以看到还是熟悉的页面,点击提示会发现需要了解婴喜爱getimagesize
那么来学习一下getimagesize:getimagesize是一个PHP函数,用于获取图像文件的尺寸和类型。该函数可以接受一个图像文件的路径作为参数,并返回一个包含图像宽度、高度和MIME类型的数组。
下面来试着上传一个php文件:
上传一个php文件可以发现提示上传的后缀名不能为空,那么也就是说如果四非jpg/jpeg/png中的一个后端就会将后缀置为空,下面就要尝试绕过限制,抓包阐尝试:
尝试大小写绕过:
尝试双写绕过:
可以看到大小写和双写都无法绕过
这里我发现自己忘记了这一关是getimagessize,才想起来这个意思就是看你文件的文件头,不同的文件又不同的文件头,即便你改了后缀,文件头是不变的
因此这里需要保证上传的文件是图片,但是还是想要带上自己的php代码,这里就需要使用到“图片马”了
需要一张图片+一个php文件,使用下列命令生成图片马:
可以看到成功上传了,尝试访问:
可以看到成功的访问了,但是并没有解析,说明还是还是没有用的,这里就要配合后面我要复习的文件包含漏洞来使用才能正常访问
访问如下URL,利用文件包含来访问就可以成功的解析了:
http://localhost/pkav-labs/vul/fileinclude/fi_local.php?filename=../../unsafeupload/uploads/2024/05/13/1937146641fe79d292f581494212.jpg&submit=%E6%8F%90%E4%BA%A4
到此pikachu中的文件上传漏洞就通关了
零基础入门渗透测试/网络安全
【----帮助网安学习,以下所有学习资料免费领取!----】
> ① 网安学习成长路径思维导图
> ② 60+网安经典常用工具包
> ③ 100+SRC漏洞分析报告
> ④ 150+网安攻防实战技术电子书
> ⑤ 最权威CISSP 认证考试指南+题库
> ⑥ 超1800页CTF实战技巧手册
> ⑦ 最新网安大厂面试题合集(含答案)
> ⑧ APP客户端安全检测指南(安卓+IOS)
点击免费领取 👉优快云大礼包:《网络安全入门&进阶学习资源包》免费分享
大纲
首先要找一份详细的大纲。
学习教程
第一阶段:零基础入门系列教程
该阶段学完即可年薪15w+
第二阶段:技术入门
弱口令与口令爆破
XSS漏洞
CSRF漏洞
SSRF漏洞
XXE漏洞
SQL注入
任意文件操作漏洞
业务逻辑漏洞
该阶段学完年薪25w+
阶段三:高阶提升
反序列化漏洞
RCE
综合靶场实操项目
内网渗透
流量分析
日志分析
恶意代码分析
应急响应
实战训练
该阶段学完即可年薪30w+
面试刷题
最后,我其实要给部分人泼冷水,因为说实话,上面讲到的资料包获取没有任何的门槛。
但是,我觉得很多人拿到了却并不会去学习。
大部分人的问题看似是“如何行动”,其实是“无法开始”。
几乎任何一个领域都是这样,所谓“万事开头难”,绝大多数人都卡在第一步,还没开始就自己把自己淘汰出局了。
如果你真的确信自己喜欢网络安全/黑客技术,马上行动起来,比一切都重要。
资料领取
上述这份完整版的网络安全学习资料已经上传网盘,朋友们如果需要可以微信扫描下方二维码 ↓↓↓ 或者 点击以下链接都可以领取