pikachu的文件上传漏洞

一、客户端检测

说明:在前端通过js脚本对上传文件的后缀名进行验证,通过设置黑、白名单限制用户上传的文件类型。这种验证方式很不安全,很容易被绕过。可以通过拦截修改数据包轻松绕过,甚至直接在浏览器关闭js都可以绕过。

(1)这里设置了白名单,所以直接将一句话木马改成jpg后缀上传
在这里插入图片描述

(2)bp抓包,将后缀修改回php后,放包上传
在这里插入图片描述

(3)上传成功,得到文件保存路径为uploads/shell.php(很多实际情况并不会返回文件保存的路径,需要自己爆破或猜解获得)
在这里插入图片描述

(4)用蚁剑进行连接
成功连接:
在这里插入图片描述

二、服务端检测:MIME type

说明:服务端会对上传的数据中的content-type字段进行检测,判断其是否为指定的文件格式。

(1)绕过只需要抓包将字段修改为image/jpeg图片类型即可,绕过的步骤和上面一样:抓包,修改后缀以及content-type字段,放包,蚁剑连接就行。
在这里插入图片描述

三、getimagesize()检测

说明:getimagesize函数会去读取文件头部的几个字符串,判断是否为正常图片的开头(各种文件头都是有固定格式,jpg、png等图片都有自己的文件头)

这题我试了其他的绕过方式,但是没有成功,本以为这题很好绕过,结果我的想法都被这个函数给pass掉,后来想伪造文件头部然后再加上后门,进行绕过,但是只能上传图片格式,而图片格式又无法将后门解析出来,于是打算放弃。后来查了一下,原来是要利用“本地文件包含漏洞 ”。

文件包含漏洞
程序开发人员一般会把重复使用的函数写到单个文件中,需要使用某个函数时直接调用此文件,而无需再次编写,这中文件调用的过程一般被称为文件包含。服务器解析执行php文件时能通过包含函数加载另外一个文件中的php代码,当被包含的文件中存在木马时,木马就能被成功执行。

所以,这题可以采用制作图片马,利用文件包含漏洞,让图片中的木马解析成功。

(1)图片马的制作方法网上有很多,我这里就偷懒一下,就不做图片马了,只伪造文件头部(原理和图片马一样)
步骤:在一句话木马前面添加GIF89a(这是GIF图片文件头)
在这里插入图片描述

(2)将上面伪造好头部的文件的后缀改成jpg发送过去
在这里插入图片描述

(3)上传成功,获得文件路径uploads/2022/01/18/75647561e68debefbd6199457424.jpg
此时php木马是无法执行的
在这里插入图片描述

(4)利用本地文件包含
在这里插入图片描述

(5)猜解目录,尝试访问刚才上传的jpg图片
最后猜解两级目录成功访问
192.168.0.9/pikachu-master/vul/fileinclude/fi_local.php?filename=../../unsafeupload/uploads/2022/01/18/75647561e68debefbd6199457424.jpg&submit=提交查询
在这里插入图片描述

(6)蚁剑连接成功
在这里插入图片描述
在这里插入图片描述

小结:
文件上传漏洞危害很大,目录执行权限的设置很重要。事实证明,前端的安全措施并不靠谱。单个漏洞可能危害不大,但是配合其他漏洞后可能会变得很严重。

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值