文件上传漏洞定义
文件上传漏洞是web系统中常见的一种功能,通过文件上传能实现上传图片、视频,以及其他类型的文件,但是随着web中包含的功能越来越多,潜在的网络安全风险也就越大。
如果恶意用户上传了可执行的文件或者脚本,就会导致网站被其控制甚至会使其服务器沦陷,以至于引发恶意的网络安全事件。
上传漏洞原理
大部分的网站和应用系统都有上传功能,一些文件上传功能实现代码没有严格限制用户上传的文件后缀以及文件类型,导致允许攻击者向某个可通过 Web 访问的目录上传任意 PHP 文件,并能够将这些文件传递给 PHP 解释器,就可以在远程服务器上执行任意PHP脚本。
当系统存在文件上传漏洞时攻击者可以将病毒,木马,WebShell,其他恶意脚本或者是包含了脚本的图片上传到服务器,这些文件将对攻击者后续攻击提供便利。根据具体漏洞的差异,此处上传的脚本可以是正常后缀的 PHP,ASP以及JSP 脚本,也可以是篡改后缀后的这几类脚本
- 上传文件是病毒或者木马时,主要用于诱骗用户或者管理员下载执行或者直接自动运行;
- 上传文件是WebShell时,攻击者可通过这些网页后门执行命令并控制服务器;
- 上传文件是其他恶意脚本时,攻击者可直接执行脚本进行攻击;
- 上传文件是恶意图片时,图片中可能包含了脚本,加载或者点击这些图片时脚本会悄无声息的执行
上传文件是伪装成正常后缀的恶意脚本时,攻击者可借助本地文件包含漏洞 (Local File Include) 执行该文件。如将 bad.php 文件改名为 bad.doc 上传到服务器,再通过 PHP 的 include,include_once,require,require_once 等函数包含执行。
基本解题思路
利用漏洞上传含有木马的php文件,常见有<?php eval($_POST[a]); ?>等简单的一句话木马,获得管理员权限,利用蚁剑连接,进入后台查看文件,找到flag。
绕过方式
1.无验证
直接上传一句话木马即可
2.前端验证
只允许上传.jpg,.png类型文件,将文件后缀名改为.jpg,即可成功上传,再用蚁剑连接。
3.MIME绕过
利用Burp抓包,将报文中的Content-Type改成允许的类型
Content-Type: image/gif(gif图像)
Content-Type: image/jpg(jpg图像)
Content-Type: image/png(png图像)