1.文件上传漏洞
文件上传漏洞是指用户上传了一个可执行的脚本文件,并通过此脚本文件获得了执行服务器端的命令。
2.Apache文件解析问题
在Apache 1.x 2.x 中,对文件名的解析就存在一下特征。
Apache对于文件名的解析是从后往前解析的,直到遇见一个Apache认识的文件类型为止。
例:phpshell.php.rar.rar.rar
因为Apache不认识.rar这个文件类型,所以会一直遍历后缀到.php,然后认为这是一个PHP类型的文件。从而被利用上传木马,getshell.
3.IIS文件解析问题
畸形文件名解析:
1.当文件名为yijuhua.asp;1.jpg时,IIS会将文件解析为yijuhua.asp,文件名截断并解析。
2.处理文件夹扩展名出错导致/*.asp/ 目录下的所有文件都作为ASP文件进行解析。
4.绕过文件上传检查功能
1.前端检查文件扩展名绕过
当用户在客户端选择文件点击上传的时候,客户端还没有向服务器发送任何消息,就对本地文件进行检测来判断是否是可以上传的类型,这种方式称为前台脚本检测扩展名。
绕过前台脚本检测扩展名,就是将所要上传文件的扩展名更改为符合脚本检测规则的扩展名,通过BurpSuite工具,截取数据包,并将数据包中文件扩展名更改回原来的,达到绕过的目的。
2.服务端扩展名检测绕过
当浏览器将文件提交到服务器端的时候,服务器端会根据设定的黑白名单对浏览器提交上来的文件扩展名进行检测,如果上传的文件扩展名不符合黑白名单的限制,则不予上传,否则上传成功。
将一句话木马的文件名【yijuhua.php】,改成【yijuhua.php.jpg】(奇怪的不被解析的后缀名都行)。首先,服务器验证文件扩展名的时候,验证的是【.jpg】,只要该扩展名符合服务器端黑白名单规则,即可上传。另外,当在浏览器端访问该文件时,Apache如果解析不了【.jpg】扩展名,会向前寻找可解析的扩展名,即【.php】
3.Content-Type检测文件类型绕过
当浏览器在上传文件到服务器的时候,服务器对说上传文件的Content-Type类型进行检测,如果是白名单允许的,则可以正常上传,否则上传失败。
绕过Content--Type文件类型检测,就是用BurpSuite截取并修改数据包中文件的Content-Type类型(如改为:image/gif),使其符合白名单的规则,达到上传的目的。
5.如何避免文件上传安全问题
1.文件上传的目录设置为不可执行
只要web容器无法解析该该目录下的文件,即使攻击者上传了脚本文件,服务器本身也不会收到影响。
2.判断文件类型
判断文件类型,判断文件扩展名,文件内容等方式。
3.使用随机数改写文件名和文件路径
成功上传了木马文件,需要攻击者能够访问到这个文件,这时,可以使用随机数改写文件名和文件路径来避免此类攻击。