一、概述
二、实战
LOW等级
首先上传一张图片test.jpg,如图所示成功上传
】
访问网址成功看到刚才上传的图片:
正常操作到此结束,接下来尝试上传恶意文件:phpinfo.php(该函数显示PHP的配置相关信息)
如下图所示,成功上传:
尝试访问,成功执行证明了漏洞的存在:
接下来上传一句话webshell cmd.php(该webshell可以执行用户传入的cmd参数的值),成功上传,并且尝试执行,如下图所示成功执行
接下来用php中的System函数调用cmd中的命令,查看系统命令dir,如下图所示成功显示当前目录的物理路径
利用前面的得到的物理路径访问phpstudy目录下的php.ini,成功执行
Medium等级
直接上传写好的phpinfo.php,提示不允许上传,只允许上传JPEG和PNG格式的文件
这里首先想到抓包研究,将正常上传的包与上传失败的包进行对比,如下图所示
、
对比以上三处不同,对数据包不断地进行修改重发,通过不断地尝试,发现是文件类型这里被限制了。上传php文件,通过抓包修改文件类型为image/jpeg,便可成功上传,如下图所示
High等级:
直接上传同样无法上传,使用Medium等级抓包上传的方法同样无法上传,同样将成功和失败的数据包进行对比,通过不断尝试确定限制了文件后缀和文件内容:
这里用图片马进行绕过,成功上传
在这里文件上传漏洞需要与文件包含漏洞相结合进行利用,便可成功执行刚刚上传图片马
这里文件上传漏洞也可以与解析漏洞相结合,以Nginx为例:
漏洞修复
1、阻止非法文件上传:
文件后缀名白名单、文件类型校验、文件内容头部判断
2、阻止非法文件执行:
文件重命名(防止http服务器如IIS进行解析}
文件压缩重生成(防止了图片马的执行)
存储目录执行权限限制
存储目录与web分离