首页 > tomcat安全配置之禁用Directory Listing

tomcat安全配置之禁用Directory Listing

        什么是Directory Listing?通俗点讲,就是在webapp的目录下如果没有放置index.html或者类似的文件,如果从IE或者其它浏览器文章这个路径时,会惊喜的发现这个目录下的文件列表被输出到了页面上。使用书面语言来讲解专有词汇总是很麻烦的,不如实际操作一把。

        从apache的tomcat项目主页上新下载一个6.0.29版本的tomcat二进制发布包,在本地解压之后,手工在webapps目录下新建一个test目录,同时修改%CATALINA_HOME%confweb.xml文件,启用directory list特性,样例配置如下。

 

    defaultorg.apache.catalina.servlets.DefaultServletdebug0listingstrue1

        启动tomcat,然后使用IE访问http://localhost:8080/test,会看到什么?理论上讲,会发现test目录里的内容出现在了IE页面上,这个是不是很神奇,不需要登录Web应用所在的服务器就可以查看路径下的文件信息。另外一个惊喜是Tomcat的版本号信息也被输出到了页面上,吼吼,这下是不是可以做很多事情咯。

 

        看过Directory Listing的现象之后,似乎没有什么特别的危害,test目录里没有多少文件,也没什么特别有意义的信息,那么为什么6.0.29版本的tomcat会默认关闭这个特性呢?根据官方文档和实践经验看,这个选项的危害体现在如下几点:

1、如果对用户的操作做特别的控制的话,开启Directory Listing会暴露一些用户不必要、不应当看到的信息,相当于是无意中为访问者开启了刺探信息的窗口;

2、输出目录内文件列表的操作本身对应用的影响可大可小,如果目录内恰巧没什么文件,可能对应用影响不大;但如果目录内有大量的文件,比如几千至几万,这时单纯执行ls都会很慢,可想而知由tomcat来输出类似信息的页面会占用多少资源了。如果web应用存在这样的目录,并被恶人都知,只要多找几台机器,写个脚本,脚本里多开几个线程,短时间内反复访问这个目录的URL,就会对web应用产生很大的压力,占用过多的资源,进而导致正常用户的访问受到影响;

3、开启Directory Listing之后,页面在输出目录内文件列表清单时,还会顺便输出Tomcat的版本号,这又给恶人提供了重要的信息。版本信息定义在catalina.jar的属性文件org/apache/catalina/util/ServerInfo.properties中,对于6.0.29版本来说,版本信息默认如下

 

server.info=Apache Tomcat/6.0.29
server.number=6.0.0.29
server.built=July 19 2010 1458

 

。。。。

        限于经历和经验,Directory Listing的危害目前只能列举这么多。下面列举出整改的方法。

1、修改配置文件%CATALINA_HOME%confweb.xml,修改默认servlet的参数,把listings的值调整为false,关闭这个特性,或者自定义DefaultServlet类的实现,不允许从配置文件中读取listing属性的值,从源头关闭开启这个特性的可能;

2、打开%CATALINA_HOME%libcatalina.jar文件,修改属性文件org/apache/catalina/util/ServerInfo.properties的内容,把server.info、server.number、server.built字段的取值全部调整为无意义的字符串。



 

更多相关:

  • 本文来自 运维人生 ,作者:fly是个稻草人链接:http://www.ywadmin.com/?id=76误删除linux系统文件了?不用急,本文将给你一个恢复linux文件的方法,让你轻松应对运维中的各风险问题。方法总比问题多~说在前面的话针对日常维护操作,难免会出现文件误删除的操作。大家熟知linux文件系统不同win有回收...

  • 原文来自SecIN社区—作者:WiHat0x00 什么是WebShell渗透测试工作的一个阶段性目标就是获取目标服务器的操作控制权限,于是WebShell便应运而生。Webshell中的WEB就是web服务,shell就是管理攻击者与操作系统之间的交互。Webshell被称为攻击者通过Web服务器端口对Web服务器有一定的操作权限,而...

  • 断电时文件系统发生了什么?硬盘又发生了什么?下一次开机时写到一半的文件在系统层面还在吗?在底层还在吗?更进一步的, 文件系统如何保证事务性, 会不会存在某种极端情况导致例如最后几个bit还没写完, 文件系统却认为它成功了的情况?回答不限任何文件系统,谢谢!下面是「北极」的回复分享断电的一瞬间,很多事情是无法确定的:1. 你无法确定...

  • 接到项目需求。需要搭建一个页面进行交互,慢慢来b (2).jpg使用python django框架进行页面的搭建在项目文件下打开窗口,输入命令;django-admin startproject helloword#在文件helloword/helloword/创建view.py在view.py文件中输入以代码from django....

  • 常见的错误集合解决方案(一)No.1提示错误'Microsoft.VC90.CRT,version="9.0.21022.8"把Microsoft.NET Framework 3.5.1下面的全部勾选上。No.2解决Qt Designer设计的图标但是VS生成不显示问题描述:在Qt designer中为菜单栏和工具栏设计的图标,但是...

  • 原来我们可以从官网 http://trafficserver.apache.org/tools/via 获取via头的解码信息来得到指定url的缓存状态信息,现在我们可以直接利用本地工具就可以达到目的。 traffic_via工具能够解码Via头信息,输入的参数要求是[]包含的字符串。 使用方法: 参考...

  • 简介 channel_stats插件能对每个channel收集运行时统计信息(速率,请求数,更多选项将在未来添加),这些统计信息通过http json方式输出,这些 接口代码取自stats_over_http插件。通常,该插件只用于具有*固定*个数的remap规则的反向代理服务器,它并非为那些不限制channel的代理服务器,比如op...

  • logger是一个shell命令接口,可以通过该接口使用Syslog的系统日志模块,还可以从命令行直接向系统日志文件写入一行信息 logger语法: 可以使用的相关命令 -d, --udp 使用数据报(UDP)而不是使用默认的流连接(TCP) -i, --id 逐行记录每一次logger的进程ID -f, --fil...

  • 今天在测试中遇到了一个问题 使用JMeter时请求相关地址参数及方法都填写正确,但是相应数据返回始终不对,例如 查看取样器结果显示 200 正常,但响应数据不符合正常的结果。 经反复检查发现问题如下: 1)没有添加HTTP信息头管理器 (获取根据就近原则) 2)HTTP信息头管理器中填写错误,将Content-Type 填写成了Co...

  • 第一,你要有log4j的对应的包,由于我用的maven,所以直接在pom.xml文件依赖下载则可,如你尚为有此包,请自行百度下载导入,或上http://www.mvnrepository.com/搜索。上如则是我的log4j的包的版本。好了,用了jar包之后,用来学习的项目结构如下:在对应的路径下创建log4Test.java和log...

  • 这里用散装版本的AutoScssStruct4Vue为例 先去https://github.com/accforgit/AutoScssStruct4Vue下载 然后把解压后的包放入C:UsersAdministrator.vscodeextensions(地址根据你自己的安装目录而定)    点开目录在资源管理器...

  • 网上搜到的结果大都不令人满意,这里综合了网上的结构,做了小许改动.希望对大家有帮助. 在Linux下的目录结构操作基本上使用opendir,readdir,closedir就够了. #include #include #include #include

  • 文章目录git 最小配置作用域git 创建本地仓库git log 查看版本演进.git 目录refs目录objectsgit 三种对象类型详解 (commit ,tree,blob)...

  • 一 . 进入目录权限 如果我在普通用户下创建了一个目录f1,然后使用chomd u-rwx,g-rwx,o-rwx之后,我在普通用户下想进入f1目录,权限不允许。 然后我切换到超级用户下,再次尝试进入到f1目录,这个时候允许进入。 然后回到普通用户下,只给f1的所有者读的权限,然后在普通用户下尝试进入,此时权限还是...

  • windows下rpc框架thrift的环境配置 引用链接: https://www.cnblogs.com/49er/p/7193829.html 最近在弄windows下 的Facebook的rpc 框架 thrift , 网上东西看了很多, 但是大都不能一篇到位, 这里总结了一下, 也记一下自己遇到的问题和解决的方法 这里...