免责声明 本教程仅为合法的教学目的而准备,严禁用于任何形式的违法犯罪活动及其他商业行为,在使用本教程前,您应确保该行为符合当地的法律法规,继续阅读即表示您需自行承担所有操作的后果,如有异议,请立即停止本文章读。
目录
[Tomcat Server处理一个HTTP请求的过程](#Tomcat Server处理一个HTTP请求的过程)
[1. 自定义错误页面](#1. 自定义错误页面)
[2. 删除默认示例文件夹](#2. 删除默认示例文件夹)
[3. 隐藏版本信息](#3. 隐藏版本信息)
[4. 配置安全的访问控制](#4. 配置安全的访问控制)
[5. 加密敏感数据传输](#5. 加密敏感数据传输)
[6. 做好配置文件的保护](#6. 做好配置文件的保护)
[7. 禁用不必要的组件和服务](#7. 禁用不必要的组件和服务)
[8. 定期审计日志文件](#8. 定期审计日志文件)
[9. 强化系统和应用程序的安全性](#9. 强化系统和应用程序的安全性)
[10. 定期进行安全漏洞扫描和渗透测试](#10. 定期进行安全漏洞扫描和渗透测试)
前情提要:#渗透测试#漏洞挖掘#红蓝攻防#漏洞挖掘#信息泄露漏洞-Apache Tomcat页面泄露漏洞-CSDN博客
一、Tomcat简介
Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应HTML(标准通用标记语言下的一个应用)页面的访问请求。实际上Tomcat是Apache 服务器的扩展,但运行时它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。
诀窍是,当配置正确时,Apache 为HTML页面服务,而Tomcat 实际上运行JSP 页面和Servlet。另外,Tomcat和IIS等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。不过,Tomcat处理静态HTML的能力不如Apache服务器。目前Tomcat最新版本为9.0。
Tomcat简单的说就是一个运行JAVA的网络服务器,底层是Socket的一个程序,它也是JSP和Serlvet的一个容器。
为什么我们需要用到Tomcat
如果你学过html,css,你会知道你写的页面只能自己访问,别人不能远程访问你写的页面,Tomcat就是提供能够让别人访问自己写的页面的一个程序。
Tomcat主要组件
服务器Server,服务Service,连接器Connector、容器Container。连接器Connector和容器Container是Tomcat的核心。
一个Container容器和一个或多个Connector组合在一起,加上其他一些支持的组件共同组成一个Service服务,有了Service服务便可以对外提供能力了,但是Service服务的生存需要一个环境,这个环境便是Server,Server组件为Service服务的正常使用提供了生存环境,Server组件可以同时管理一个或多个Service服务。
TomCat结构示意图
两大组件详细介绍
1、Connector
一个Connecter将在某个指定的端口上侦听客户请求,接收浏览器的发过来的 tcp 连接请求,创建一个 Request 和 Response 对象分别用于和请求端交换数据,然后会产生一个线程来处理这个请求并把产生的 Request 和 Response 对象传给处理Engine(Container中的一部分),从Engine处获得响应并返回客户。
2、Container
Container是容器的父接口,该容器的设计用的是典型的责任链的设计模式,它由四个自容器组件构成,分别是Engine、Host、Context、Wrapper。这四个组件是负责关系,存在包含关系。
Tomcat Server处理一个HTTP请求的过程
1、用户点击网页内容,请求被发送到本机端口8080,被在那里监听的Coyote HTTP/1.1 Connector获得。
2、Connector把该请求交给它所在的Service的Engine来处理,并等待Engine的回应。
3、Engine获得请求localhost/test/index.jsp,匹配所有的虚拟主机Host。
4、Engine匹配到名为localhost的Host(即使匹配不到也把请求交给该Host处理,因为该Host被定义为该Engine的默认主机),名为localhost的Host获得请求/test/index.jsp,匹配它所拥有的所有的Context。Host匹配到路径为/test的Context(如果匹配不到就把该请求交给路径名为" "的Context去处理)。
5、path="/test"的Context获得请求/index.jsp,在它的mapping table中寻找出对应的Servlet。Context匹配到URL PATTERN为*.jsp的Servlet,对应于JspServlet类。
6、构造HttpServletRequest对象和HttpServletResponse对象,作为参数调用JspServlet的doGet()或doPost().执行业务逻辑、数据存储等程序。
7、Context把执行完之后的HttpServletResponse对象返回给Host。
8、Host把HttpServletResponse对象返回给Engine。
9、Engine把HttpServletResponse对象返回Connector。
10、Connector把HttpServletResponse对象返回给客户Browser。
目录及结构作用
tomcat目录结构的截图(版本号:9.0.60)
|---bin:存放启动和关闭tomcat脚本
|---conf:存放不同的配置文件(server.xml和web.xml);
|---doc:存放Tomcat文档;
|---lib/japser/common:存放Tomcat运行需要的库文件(JARS);
|---logs:存放Tomcat执行时的LOG文件;
|---src:存放Tomcat的源代码;
|---webapps:Tomcat的主要Web发布目录(包括应用程序示例);
|---work:存放jsp编译后产生的class文件;
Tomcat配置文件:
我们打开con文件夹可以看到Tomcat的配置文件:
server.xml: Tomcat的主配置文件,包含Service, Connector, Engine, Realm, Valve, Hosts主组件的相关配置信息;
web.xml:遵循Servlet规范标准的配置文件,用于配置servlet,并为所有的Web应用程序提供包括MIME映射等默认配置信息;
tomcat-user.xml:Realm认证时用到的相关角色、用户和密码等信息;Tomcat自带的manager默认情况下会用到此文件;在Tomcat中添加/删除用户,为用户 指定角色等将通过编辑此文件实现;
catalina.policy:Java相关的安全策略配置文件,在系统资源级别上提供访问控制的能力;
logging.properties: Tomcat6通过自己内部实现的JAVA日志记录器来记录操作相关的日志,此文件即为日志记录器相关的配置信息,可以用来定义日志记录的组 件级别以及日志文件的存在位置等;
context.xml:所有host的默认配置信息;
tomcat服务器与servlet版本的关系
servlet:sun公司提供的用于开发动态web资源的技术。
jsp:(java server page),java提供的一门开发web网页的技术。
tomcat软件:java开发的。java软件运行的时候需要jdk。
向下兼容。tomcat7也支持servlet3.0/jsp2.2规范,可以支持javaee6.0当前企业常用的版本 6.* / 7./8.
漏洞复现可参考相关内容!!
二、Tomcat页面泄露的危害
敏感信息暴露
- 当Tomcat页面发生泄露时,可能会暴露应用程序的敏感配置信息,例如数据库连接字符串、服务器端的加密密钥等。这些信息一旦被攻击者获取,他们就可以利用这些信息尝试连接数据库,进行数据的窃取、篡改等恶意操作,严重威胁数据安全。
- 源代码也可能被泄露,攻击者通过分析源代码可以找到安全漏洞的所在,从而更容易地构造恶意攻击,例如找到未经验证的输入点,进行SQL注入、命令注入等攻击。
增加攻击面
- 泄露的页面信息为攻击者提供了更多关于系统架构、所使用技术栈等信息。这使得攻击者能够更好地了解目标系统,从而有针对性地制定攻击策略,增加了系统遭受攻击的风险。
损害企业声誉和用户信任
- 如果用户得知他们使用的服务存在信息泄露风险,可能会对企业的安全性产生质疑,从而影响企业的声誉。对于涉及用户隐私数据的应用,如金融、医疗类应用,这种信任的损害可能导致用户流失,给企业带来严重的商业损失。
三、如何防止Tomcat页面泄露
防止Tomcat页面泄露主要可以从以下几个方面入手:
1. 自定义错误页面
通过配置Tomcat以提供自定义的错误页面,可以有效地屏蔽敏感信息,从而保护应用程序的安全。具体步骤如下:
打开
Tomcat安装目录/conf/web.xml
在
web.xml
中定义自定义的404和500错误页面,如404.html
和500.html
,以提高用户体验并避免泄露敏感信息。2. 删除默认示例文件夹
Tomcat默认页面泄露,此页面主要是中间件Tomcat自带的示例文件夹,删除即可。具体操作如下:
- 删除掉
tomcat下webapps下的examples文件夹
。3. 隐藏版本信息
在Tomcat报错页面中,显示ApacheTomcat/8.5.51相关版本号等信息,是不安全的。这会被攻击者获取到,利用该版本的其他漏洞对服务器进行攻击。所以需要隐藏掉。具体操作如下:
进入
tomcat的配置目录下(%tomcatHome%\conf)在server.xml 文件中的Host节点添加如下配置
:<Valve className="org.apache.catalina.valves.ErrorReportValve" showReport="false" showServerInfo="false"/>
修改
server.info
、server.number
、server.built
,修改后可以避免版本信息的泄露。4. 配置安全的访问控制
通过配置Tomcat的访问控制,限制对敏感目录和文件的访问权限。确保只有授权的用户可以访问这些资源。你可以使用Tomcat的内置的用户认证和授权机制,或者结合其他安全认证方式。
5. 加密敏感数据传输
通过使用SSL/TLS协议,对与Tomcat服务器的通信进行加密,以保护敏感数据的传输过程中不被窃听或篡改。为了实现这一点,你需要配置并使用有效的数字证书。
6. 做好配置文件的保护
确保Tomcat的配置文件(如
server.xml
) 的访问权限受到限制,只有授权的用户可以修改或访问。这可以防止攻击者通过篡改配置文件来获取敏感信息或执行恶意操作。7. 禁用不必要的组件和服务
Tomcat提供了许多可选的组件和服务,但并不是所有都是必需的。禁用不必要的组件和服务可以减少攻击面,并提高服务器的安全性。审核Tomcat的配置文件,仅启用你需要的组件和服务。
8. 定期审计日志文件
Tomcat的日志文件记录了服务器的活动和事件。定期审计这些日志文件,检查是否有异常活动或潜在的攻击迹象。及时发现并应对异常行为,可以帮助你保护服务器免受潜在的安全威胁。
9. 强化系统和应用程序的安全性
除了Tomcat本身的安全配置,你还应该强化服务器操作系统和应用程序的安全性。更新操作系统和应用程序的补丁,使用防火墙和入侵检测系统等安全工具,加强服务器的整体安全防护。
10. 定期进行安全漏洞扫描和渗透测试
定期使用安全漏洞扫描工具和渗透测试工具对Tomcat服务器进行测试。这可以帮助你发现潜在的漏洞和弱点,并及时修复它们,提高服务器的安全性。