中间件漏洞可以说是最容易被web管理员忽视的漏洞,原因很简单,因为这并不是应用程序代码上存在的漏洞,而是属于一种应用部署环境的配置不当或者使用不当造成的。那么从实际情况来看,预防这种漏洞最大的难点,在于中间件安全该由谁负责? 我们在处理应急响应事件时经常遇到这么一种情况,客户网站代码是外包的,也就是第三方公司负责开发,而部署可能是由客户内部运维人员负责。暂不说他们对于中间件安全的重视程度与了解程度,只谈发现漏洞后如何处理,便是一团乱。开发商推卸说这并不是代码上的问题,他们完全是按照安全开发流程(SDL)走的,所以跟他无关;运维人员就一脸蒙蔽了,反驳道:你们当初没跟我说要配置什么啊,只是让我安装个程序就ok了,我怎么知道? 那么除此之外,开发人员以及运维人员对中间件安全意识的缺失也是一个重要因素,有些开发商可能会对自身代码进行安全检测,但只对代码部分进行审查是远远不够的。本篇用来记录总结一些常见的web中间件漏洞以及防护问题(记录的只是一部分,不代表全部),内容一部分摘自道哥的《白帽子讲web安全》一书,算做读书笔记亦或者读后感。
中间件、容器、服务器傻傻分不清?
在谈中间件安全问题时,我觉得有必要先梳理下以上几种关系以及概念。当初我在接触这些概念时,脑子里就是一团浆糊,中间件、容器、服务器、webserver等等概念感觉彼此很相似,但又有所区别。因此在书写本篇时,我特意翻查了一些资料,试图梳理清这几者之间的关系,参考了文章:http://www.voidcn.com/blog/saoraozhe3hao/article/p-2428756.html
基础概念与作用
这里只介绍web中间件、web服务器、web容器,因为除了web以外,其概念还可以扩展为数据库等。
web服务器
web服务器用于提供http服务,即向客户端返回信息,其可以处理HTTP协议,响应针对静态页面或图片的请求,控制页面跳转,或者把动态请求委托其它程序(中间件程序)等。
web中间件
web中间件用于提供系统软件和应用软件之间的连接,以便于软件各部件之间的沟通,其可以为一种或多种应用程序提供容器。
web容器
web容器用于给处于其中的应用程序组件(JSP,SERVLET)提供一个环境,是中间件的一个组成部分,它实现了对动态语言的解析。比如tomcat可以解析jsp,是因为其内部有一个jsp容器。
所属的类别
web服务器:IIS、Apache、nginx、tomcat、weblogic、websphere等。
web中间件:apache tomcat、BEA WebLogic、IBM WebSphere等。
web容器:JSP容器、SERVLET容器、ASP容器等。
注意:web中间件与web服务器是有重叠的,原因在于tomcat等web中间件也具备web服务器的功能。
重点分析
web服务器只是提供静态网页解析(如apache),或者提供跳转的这么一种服务。而web中间件(其包含web容器)可以解析动态语言,比如tomcat可以解析jsp(因为tomcat含有jsp容器),当然它也可以解析静态资源,因此它既是web中间件也是web服务器。不过tomcat解析静态资源的速度不如apache,因此常常两者结合使用。
Tomcat漏洞与防护
tomcat是apache的一个中间件软件,其可以提供jsp或者php的解析服务,为了方便远程管理与部署,安装完tomcat以后默认会有一个管理页面,管理员只需要远程上传一个WAR格式的文件,便可以将内容发布到网站,这一功能方便了管理员的同时也给黑客打开了方便之门,除此之外,tomcat还有一些样本页面,如果处理不当也会导致安全问题。
tomcat远程部署漏洞详情
tomcat管理地址通常是:
1
|