文件解析漏洞总结-Introduction

前言

前几天研究FCKeditor的上传漏洞,深深感觉到上传漏洞是和解析漏洞联系在一起的。而我对文件解析漏洞又不甚了解,向来是用到再查,效率极低,故而现在想要认真地学习总结下文件解析漏洞。学习方法便是寻找相关文章,阅读后再自己搭建模拟环境,一一尝试,最后将自己试验结果,记录在博客中。参考到的所有文章在各博文末尾均给出了链接。整个学习过程,最耗时的便是安装各种虚拟机与软件,搭建好环境后,真正的测试,往往只需一瞬间。虽如此,然常言道,耳听为虚,眼见为实,不亲眼看看,我总不免有所疑惑。

什么是文件解析漏洞

计算机如何知道一个文件是什么类型的文件?是文本、图片、音乐还是视频?方法很多,这里只说最简单的一种:看后缀名。后缀名是.txt的文件便是文本文件,是.jpg的便是图片,是.mp3的便是音乐,是.mp4的便是视频。但是后缀名是.png的文件也是图片啊?对,正是这种复杂性,导致了文件解析漏洞的出现。文件后缀千千万,程序编写者难以考虑所有后缀;且新后缀不断出现,老软件难以追随潮流。若计算机老把图片文件当成音乐文件而去播放它,自然即无法看图,又无法听歌,这便是个bug了,若利用这个bug还可以干些事情,bug便不仅仅是bug了,还是漏洞了。

我们知道,今天丰富多彩的Web世界是由各种各样的动态语言支撑的,前端有JavaScript,后端有php、jsp、asp等。在一个Web服务器上,既有脚本语言程序文件,又有文本、图片、视频等等文件。Web服务器要能够准确区分哪些文件是程序、哪些文件不是程序。因为程序文件是要被执行的,所谓执行程序,便是操纵计算机干事情。计算机只知道按命令干事情,并不知道自己干的是好事情还是坏事情。如何区分文件是程序还是非程序?一般来说,还是看后缀名。如index.php便是程序,logo.png便不是程序。网站的设计者可能允许用户随意替换文件logo.png(这是很常见的,如修改用户头像),但绝对不能让用户修改文件index.php分毫。若logo.png真的仅仅是个图片,那么便难以对网站所在的计算机(习惯上称网站所在的计算机为服务器)造成危害,但一旦logo.png被当做程序执行,用户便可以构造上传恶意的logo.png文件,危害服务器。正常情况下这是不可能的事情,只有在有漏洞时这才可能发生,这种漏洞便被称为文件解析漏洞。

总结下,文件解析漏洞是服务器错误地将非程序文件当做程序文件并解释执行从而造成危害的漏洞。

这完全是我按照个人理解做的总结,仅供参考。由上述总结可知,文件解析漏洞的错在服务器,进一步讲是服务器软件,具体地讲,便是Apache、Nginx和IIS这样的Web服务器软件。由于是漏洞,当然和软件及版本都有密切关系,就算是同一软件、同一版本,不同配置,打没打补丁,也可能导致有或没有漏洞。故而文件解析漏洞,在一处存在,在另一处很可能就不存在了。这也正是漏洞引人入胜的地方,犹如神龙,藏头露尾。

系列文章

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

15 − 8 =