如何解决 Apache Tomcat 目录遍历漏洞

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何解决 Apache Tomcat 目录遍历漏洞相关的知识,希望对你有一定的参考价值。

APACHE 的
  Options Indexes MultiViews  ← 找到这一行,将“Indexes”删除
    ↓
  Options MultiViews   ← 变为此状态(不在浏览器上显示树状目录结构)
AllowOverride None
Order allow,deny
Allow from all
</Directory>

TOMCAT修改conf/web.xml文件
<servlet>
<servlet-name>default</servlet-name>
<servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>listings</param-name>
<param-value>false</param-value> // 这里改为false 重启就好了
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
参考技术A apache关闭目录遍历新的方法:
是不是很多人发现上网搜的方法不能关闭apache目录遍历,今天整了很久,才找到方法
网上老的方法,合适旧版本,具体哪个版本之前不清楚为了避免出现版本问题,建议下面的都设置
找到apache配置文件httped.conf

然后ctrl+f查找indexes 之后将其删除或者将前面改成“-”,(老方法了,我发现只改这个不行了)
往下看:
找到同目录下有一个vhosts.conf的文件,方法一样,找到indexes 之后将其删除或者将前面改成“-”,(这个在新版本里设置就行了,不用设置上面,还是那句话,都设置了吧)
重启apache服务
打开搭建的网站,测试,发现可以了

apache 目录遍历漏洞复现

测试环境:phpstudy2018+win10

漏洞出现原因:Apahce中httpd.conf配置错误导致

原理:当客户端访问到一个目录时,Apache服务器将会默认寻找一个index list中的文件,若文 件不存在,则会列出当前目录下所有文件或返回403状态码,而列出目录下所有文件的行为称为目录遍历。

复现过程:

1、修改httpd.conf

技术图片

 

 

 保证indexes这里是+号,在Indexes前,加 + 代表允许目录浏览;加 – 代表禁止目录浏览。

2、修改vhosts.conf

技术图片

 

 

 也保证indexes是+号,我的phpstudy2018默认在httpd.conf里就是+号,但是在vhosts.conf里是减号,所以两个都改成+。

3、查看自己的index list中的文件是哪几个,

 技术图片

 

4、访问127.0.0.1

技术图片

 

 

 可以看到,现在我的默认文件存在,默认访问我的l.php

5、把l.php更名或删除(其它存在于index list的文件也得相应修改或删除)

技术图片

6、再次访问127.0.0.1,可以看到目录了

技术图片

 

修复措施:把indexes前面的+改为-即可。

 技术图片

 

以上是关于如何解决 Apache Tomcat 目录遍历漏洞的主要内容,如果未能解决你的问题,请参考以下文章

如何修复 Tomcat 9 上的目录遍历漏洞

解决Apache Tomcat Default Files的Nessus中危漏洞

Apache Tomcat/Jboss远程代码执行漏洞 怎样解决

Apache Tomcat/Jboss远程代码执行漏洞 怎样解决

apache 目录遍历漏洞复现

漏洞及修复——Apache/IIS目录遍历