概述-文件上传漏洞(一)-网络安全

1、什么是文件上传漏洞

文件上传漏洞是web安全中经常用到的一种漏洞形式。是对数据与代码分离原则的一种攻击。

上传漏洞顾名思义,就是攻击者上传了一个可执行文件如木马,病毒,恶意脚本,WebShell等到服务器执行,并最终获得网站控制权限的高危漏洞。

2、文件上传漏洞危害

上传漏洞与SQL注入或 XSS相比 , 其风险更大 , 如果 Web应用程序存在上传漏洞 , 攻击者上传的文件是Web脚本语言,服务器的Web容器解释并执行了用户上传的脚本,导致代码执行。

  • Flash的策略文件crossdomain.xml:黑客用以控制Flash在该域下的行为;
  • 病毒、木马文件:黑客用以诱骗用户或者管理员下载执行;
  • 钓鱼图片或为包含了脚本的图片:在某些版本的浏览器中会被作为脚本执行,被用于钓鱼和欺诈;
  • webshell到服务器上: 完全控制系统或致使系统瘫痪。

3、如何查找和利用

工欲善其事,必先利其器。

在讨论利用思路之前我们先了解下文件上传漏洞的类型,如下图:概述-文件上传漏洞(一)-网络安全_第1张图片

关于常见的验证和绕过方式,如下图:概述-文件上传漏洞(一)-网络安全_第2张图片

了解的常见的文件上传漏洞类型之后,下面我们来说下利用思路。

查找上传点

  • 扫描上传路径
  • 会员中心(比如头像编辑)
  • 后台管理中心
  • 编辑器
  • 第三方组件/应用
  • 等等

若符合一下条件可直接通过搜索引擎或者代码审计完成

  • 获取源码
  • 网站为某CMS构建
  • 已知编辑器类型
  • 已知第三方组件/应用

若无法通过上述方式解决,在找到上传点之后,尝试各种绕过。具体案例,后面详解,内容如下:

  • 本地靶场实例:upload-labs靶场
  • 在线靶场实例:各个在线平台

4、文件上传漏洞防御

  • 系统运行时的防御:
    • 文件上传的目录设置为不可执行。只要web容器无法解析该目录下面的文件,即使攻击者上传了脚本文件,服务器本身也不会受到影响,因此这一点至关重要。
    • 判断文件类型。在判断文件类型时,可以结合使用MIME Type、后缀检查等方式。在文
      件类型检查中,强烈推荐白名单方式,黑名单的方式已经无数次被证明是不可靠的。此外,对于图片的处理,可以使用压缩函数或者resize函数,在处理图片的同时破坏图片中可能包含的HTML代码。
    • 使用随机数改写文件名和文件路径。文件上传如果要执行代码,则需要用户能够访问到这个文件。在某些环境中,用户能上传,但不能访问。如果应用了随机数改写了文件名和路径,将极大地增加攻击的成本。再来就是像shell.php.rar.rar和crossdomain.xml这种文件,都将因为重命名而无法攻击。
    • 单独设置文件服务器的域名。由于浏览器同源策略的关系,一系列客户端攻击将失效,比如上传crossdomain.xml、上传包含Javascript的XSS利用等问题将得到解决。
    • 使用安全设备防御。文件上传攻击的本质就是将恶意文件或者脚本上传到服务器,专业的安全设备防御此类漏洞主要是通过对漏洞的上传利用行为和恶意文件的上传过程进行检测。恶意文件千变万化,隐藏手法也不断推陈出新,对普通的系统管理员来说可以通过部署安全设备来帮助防御。
  • 系统开发阶段的防御
    • 系统开发人员应有较强的安全意识,尤其是采用PHP语言开发系统。在系统开发阶段应充分考虑系统的安全性。
    • 对文件上传漏洞来说,最好能在客户端和服务器端对用户上传的文件名和文件路径等项目分别进行严格的检查。客户端的检查虽然对技术较好的攻击者来说可以借助工具绕过,但是这也可以阻挡一些基本的试探。服务器端的检查最好使用白名单过滤的方法,这样能防止大小写等方式的绕过,同时还需对%00截断符进行检测,对HTTP包头的content-type也和上传文件的大小也需要进行检查。
  • 系统维护阶段的防御
    • 系统上线后运维人员应有较强的安全意思,积极使用多个安全检测工具对系统进行安全扫描,及时发现潜在漏洞并修复。
    • 定时查看系统日志,web服务器日志以发现入侵痕迹。定时关注系统所使用到的第三方插件的更新情况,如有新版本发布建议及时更新,如果第三方插件被爆有安全漏洞更应立即进行修补。
    • 对于整个网站都是使用的开源代码或者使用网上的框架搭建的网站来说,尤其要注意漏洞的自查和软件版本及补丁的更新,上传功能非必选可以直接删除。除对系统自生的维护外,服务器应进行合理配置,非必选一般的目录都应去掉执行权限,上传目录可配置为只读。

参考文章:

  • 文件上传漏洞攻击与防范方法

参考视频:

  • 【小迪安全】web安全|渗透测试|网络安全 p19~p23

QQ群:433529853

你可能感兴趣的:(网络安全,网络安全)