[渗透]Apache Tomcat示例目录漏洞

探讨了Apache Tomcat默认安装中的/examples目录存在的安全风险,特别是SessionExample示例可能带来的会话操纵威胁,建议在生产环境中删除此目录。

漏洞等级:中

Apache Tomcat默认安装包含"/examples"目录,该目录包含许多示例servlet和JSP。其中一些示例存在安全风险,不应部署在生产服务器上。
http://localhost:8080/examples/servlets/servlet/SessionExample 示例允许会话操作。因为会话是全局的,所以这个示例会带来很大的安全风险,因为攻击者可用通过操纵其会话来有效的成为管理员。

测试流程:
创建测试文件http://localhost:8080/examples/session.jsp,主要功能是获得session的skey值,并打印出来,代码如下:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="gbk"%>
<%@ page language="java" import="com.servlet.*"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<%
    String skey = (String)session.getAttribute("skey");
%>
<h2>
Welcome to "<%= skey%>" Login System!
</h2>
This is the first javaWeb Project!
</body>
</html>

页面访问结果如下:
在这里插入图片描述
访问http://localhost:8080/examples/servlets/servlet/SessionExample,填写session name = skey,session value = session test,提交结果如下:
在这里插入图片描述
再次访问http://localhost:8080/examples/servlets/session.jsp页面,查看结果:
在这里插入图片描述
注意:
同一个tomcat下面,两个项目之间ession不能共享。所以"Apache Tomcat示例目录漏洞"对其他项目的威胁不大,但仍建议在部署环境中删除tomcat示例。

在调试 Tomcat 9.0.22 的 examples 时,登录成功后出现 HTTP Status 403 - Forbidden 错误,可尝试以下解决办法: #### 缺少默认文档 若站点目录没有有效的默认文档(例如 index.html、index.htm、index.asp 或 default.asp 等),当直接输入站点的域名 + 目录名进行浏览时会出现该错误。可以在 IIS 中的站点相应的文件目录的功能视图中,配置默认文档,将主页文档加入其中。 #### Tomcat 配置问题 在 tomcat 文件的 `conf -> web.xml` 中添加如下配置: ```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>readonly</param-name> <param-value>false</param-value> </init-param> <init-param> <param-name>listings</param-name> <param-value>false</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> ``` 上述配置添加了 `readonly` 参数并设为 `false`,可能有助于解决该问题。 #### 角色配置问题 如果使用了 spring - security 等安全框架,可能存在角色大小写不匹配的问题。要确保代码中角色的大小写与配置文件中的一致。例如,在 `spring - security.xml` 中配置: ```xml <security:http auto-config="true" use-expressions="false"> <security:intercept-url pattern="/**" access="ROLE_USER,ROLE_ADMIN"/> </security:http> ``` 要保证代码中角色的大小写与这里的 `ROLE_USER`、`ROLE_ADMIN` 一致。 #### 开发阶段目录浏览设置 在开发阶段,可以让服务器能够找到目录浏览,但上线部署时必须去掉该设置(出于安全考虑)。在配置文件中添加 `<modules runAllManagedModulesForAllRequests="true"/>`。
评论 8
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值