一、 环境搭建
环境介绍:
Windows PHP Pikachu靶场
我是在windows主机上搭建的环境,用的是pikachu靶场
phpstudy下载地址:http://phpstudy.php.cn pikachu靶场下载地址:https://github.com/zhuifengshaonianhanlu/pikachu
文件上传漏洞:
文件上传漏洞是指由于程序员在对用户文件上传部分的控制不足或者处理缺陷,而导致的用户可以越过其本身权限向服务器上上传可执行的动态脚本文件。这里上传的文件可以是木马,病毒,恶意脚本或者WebShell等。这种攻击方式是最为直接和有效的,“文件上传”本身没有问题,有问题的是文件上传后,服务器怎么处理、解释文件。如果服务器的处理逻辑做的不够安全,则会导致严重的后果。
二、 复现过程
我们先上传一个php的文件看能不能正常的上传
这里提示上传文件不符合要求,然后我们在试试普通的图片
图片是正常上传的,这种情况不要方
首先我们把phpinfo文件的php后缀改成jpg
然后打开burpsite抓个包吧,把文件名1.jpg后缀改成php,然后上传:
服务器回显是上传成功并且给了上传后文件的地址
我们访问一下1.php的文件
http://127.0.0.1/pikachu/vul/unsafeupload/uploads/1.php
成功上传了,我们来分析一下代码
在代码的75行,它只做了一个前端后缀的白名单验证,然后我们利用burpsite抓包改包可以轻松的绕过它的验证
三、 修复建议
对文件格式进行校验,前端跟服务器都要进行校验(前端校验扩展名,服务器校验扩展名、Content_Type等)。