目录
一、文件上传漏洞介绍
1.文件上传漏洞原理
2.文件上传漏洞识别
3. 攻击方式
4.文件上传漏洞的危害
5.文件上传漏洞的防御措施
6.文件上传漏洞的绕过
一、文件上传漏洞介绍
1.文件上传漏洞原理
文件上传漏洞是指由于程序员在对用户文件上传部分的控制不足或者处理缺陷,而导致的用户可以越过其本身权限向服务器上上传可执行的动态脚本文件。这里上传的文件可以是木马,病毒,恶意脚本或者 WebShell等。“文件上传”本身没有问题,有问题的是文件上传后,服务器怎么处理、解释文件。如果服 务器的处理逻辑做的不够安全,则会导致严重的后果。
2.文件上传漏洞识别
有上传文件的功能,例如传头像、附件等且对上传的文件没有过滤
3. 攻击方式
上传木马文件等恶意脚本文件
4.文件上传漏洞的危害
文件上传属于高危漏洞,相比于SQL注入,XSS,风险更大,其危害的是整个应用系统,如果目标网站存在文件上传漏洞:
1,如果攻击者上传的是Web脚本语言,服务器的Web容器解释并执行了用户上传的脚本,则会产生代码执行。
2,如果上传的是Flash的策略文件crossdomain.xml,攻击者则可以控制Flash在该域下的行为。
3,如果上传的是病毒,木马文件,攻击者则可以诱骗用户下载并执行恶意文件。
4,如果上传了一个Webshell到服务器上,那么整个应用服务器则可能被攻击者进行控制或致使系统完全崩溃。
5.文件上传漏洞的防御措施
文件上传漏洞防御:
系统运行时的防御:
- 文件上传的目录权限设置为不可执行。只要web容器无法解析该目录下面的文件,即使攻击者上传了脚本文件,服务器本身也不会受到影响。
- 文件扩展名使用白名单机制判断。在判断文件类型时,使用白名单方式,黑名单的方式已经无数次被证明是不可靠的。此外,对于图片的处理,可以使用压缩函数或者resize函数,在处理图片的同时破坏图片中可能包含的HTML代码。
- 使用随机数改写文件名和文件路径。文件上传如果要执行代码,则需要用户能够访问到这个文件。如果应用了随机数改写了文件名和路径,将极大地增加攻击的成本。再来就是像shell.php.rar.rar和crossdomain.xml这种文件,都将因为重命名而无法攻击。
- 单独设置文件服务器的域名。由于浏览器同源策略的关系,一系列客户端攻击将失效,比如上传crossdomain.xml、上传包含Javascript的XSS利用等问题将得到解决。
- 使用安全设备防御。文件上传攻击的本质就是将恶意文件或者脚本上传到服务器,专业的安全设备防御此类漏洞主要是通过对漏洞的上传利用行为和恶意文件的上传过程进行检测。恶意文件千变万化,隐藏手法也不断推陈出新,对普通的系统管理员来说可以通过部署安全设备来帮助防御。
6.文件上传漏洞的绕过
客户端层面绕过:
如果是JavaScript检测,那么禁止JS或者Burp代理工具抓包修改参数
服务端层面绕过:
1,Content-Type字段绕过(MIME类型检测)
绕过:使用Burp代理工具修改Content-Type绕过
2,服务端path参数检测
3,服务端文件扩展名检测
绕过:
文件名大小写绕过(PhP,Asp等)
后缀名字双写嵌套(phphpp,asaspp等)
利用系统对一些特殊文件名做默认修改的系统特性绕过(.htaccess文件)
可以利用asp程序中的漏洞,使用截断字符绕过
利用不在黑名单中但可以执行的扩展名绕过(php3,php4)
利用解析/包含漏洞配合上传一个代码注入 的白名单进行绕过4
服务端内容检测层面绕过
绕过原理:通过在文件中添加正常文件的标识或其他关键字符绕过