本节将详细的解释一下文件解析相关内容,作为我的专栏《WEB安全原理和多种防御方法解读》中的一节。
本文所涉及的文件解析主要指的是WEB领域的文件解析。当访问一个网站或者某个网站特定的页面,实际上是在向网站后台请求对某个文件进行访问,如图1是对于百度首页的访问:

图1
可以看到虽然没有指定具体的文件名,但是在在网站开发中,首页往往不需要指定文件名,但是在后台通常会默认路由到对于index.html等文件的访问。可以看到网站的后台会对前台映射对应的文件进行解析,有的会接受前台穿过来的参数按需响应,这就是最基本的文件解析过程。
对于文件解析漏洞的定义往往指的就是,WEB后台在对于文件解析过程中存在的设计以及实现缺陷的统称。通俗点讲就是非脚本文件被意外按照脚本的语法进行解析。现代的web软件开发中,文件解析的工作是WEB服务器的功能,因此文件解析漏洞往往集中在一些WEB服务器中,包括apache,nginx,微软的IIS等。历史上这些流行的WEB服务器均出现了多次的文件解析漏洞,如下:
apache
对于apache服务器来说,曾经出现过将1.php.xxx的按照php语法进行解析,主要原因在apache解析策略从右至左,对于无法识别的后缀会忽略,寻找下一个后缀。
Nginx
对Nginx服务器来说1.jpg%00.php文件曾经被当做Php进行解析。初步看好像没有问题,但是在寻找该文件的时候,%00即A