文件上传漏洞
一、漏洞概念
文件上传漏洞是指用户上传了一个可执行的脚本文件,并通过此脚本文件获得了执行服务器端命令的能力。常见场景是web服务器允许用户上传图片或者普通文本文件保存,而用户绕过上传机制上传恶意代码并执行从而控制服务器。
二、漏洞原理
网站Web应用都有一些文件上传功能,比如文档、图片、头像、视频上传,当上传功能的实现代码没有严格校验上传文件的后缀和文件类型,此时攻击者就可以上传一个webshell到一个Web可访问的目录上,并将恶意文件传递给如PHP解释器去执行,之后就可以在服务器上执行恶意代码,进行数据库执行、服务器文件管理,服务器命令执行等恶意操作。还有一部分是攻击者通过Web服务器的解析漏洞来突破Web应用程序的防护。
三、漏洞危害
- 如果 Web应用程序存在上传漏洞,攻击者上传的文件是Web脚本语言,服务器的Web容器解释并执行了用户上传的脚本,导致代码执行。
- 如果上传的文件是Flash的策略文件crossdomain.xml,黑客用以控制Flash在该域下的行为。
- 如果上传的文件是病毒、木马文件,黑客用以诱骗用户或者管理员下载执行。如果上传的文件是钓鱼图片或为包含了脚本的图片,在某些版本的浏览器中会被作为脚本执行,被用于钓鱼和欺诈。甚至攻击者可以直接上传一个webshell到服务器上 完全控制系统或致使系统瘫痪。
四、修复思路
1.上传文件的存储目录禁用执行权限
2.文件的后缀白名单,注意0x00截断攻击
3.不能有本地文件包含漏洞
4.及时修复web上的代码
5.升级web server
五、学习练习
(一)编写PHP一句话木马
<?php eval($_GET['cmd']); ?> ;<?php eval($_POST[