文件上传漏洞是指网络攻击者上传了一个可执行的文件到服务器并执行。这里上传的文件可以是木马,病毒,恶意脚本或者WebShell等。
网站上传文件并且存储的过程:
假如某网站有一个允许用户上传图片的功能,用户上传的图片最终会被存储到 /upload/ 目录下,并且以上传文件时的时间日期命名,上传文件的后缀为后缀。小明这时上传了一个1.jpg的文件,当服务器收到用户上传的数据时,会在 /upload/ 目录下新建一个以当前时间日期命名的文件,后缀为.jpg 。然后将接收到的用户上传的1.jpg图片里的数据写入到新建的文件里面。
漏洞成因:
由于程序员在对用户文件上传部分的控制不足或者处理缺陷,而导致用户可以越过其本身权限向服务器上传可执行的动态脚本文件。打个比方来说,如果你使用 php 作为服务器端的动态网站环境,那么在你的网站的上传功能处,就一定不能让用户上传 php 类型的文件,否则他上传一个一句话木马,你服务器上的文件就可以被他任意更改了。因此文件上传漏洞带来的危害常常是毁灭性的,Apache、Tomcat、Nginx等都曝出过文件上传漏洞。
一般我们会利用文件上传漏洞上传一句话木马,然后用菜刀连接获取 webshell。但是这里有两个问题:
-
第一你的文件能上传到web服务器
-
第二你的文件能被当成脚本文件执行,所以要想让上传文件被当成脚本执行,我们经常会和文件包含漏洞和文件解析漏洞一起利用
服务器上传文件命名规则:
-
第一种:上传文件名和服务器命名一致
-
第二种:上传文件名和服