【服务器组件】如何辨别服务器组件
1. IIS(Internet Information Services)
- 定义和用途:是微软开发的一款Web服务器软件,主要用于在Windows服务器上托管网站和Web应用程序。它与Windows操作系统紧密集成,提供了图形化的管理界面,方便管理员进行配置。
- 辨别方法:
- 运行环境:通常运行在Windows服务器系统上,如Windows Server 2012、2016、2019等。
- 默认端口:默认使用的HTTP端口是80,HTTPS端口是443。可以通过在浏览器中访问
http://服务器IP地址
来查看是否出现IIS的默认页面或者相关的网站内容。 - 文件扩展名关联:常与
.asp
(ASP - Active Server Pages)和.aspx
(ASP.NET)等文件类型关联。如果网站的网页文件是这些扩展名,有可能是基于IIS服务器运行的。
2. Apache
- 定义和用途:是一款开源的、跨平台的Web服务器软件,在Linux系统中应用广泛,具有高度的可定制性和稳定性,能够支持多种编程语言和技术。
- 辨别方法:
- 运行环境:可以在多种操作系统上运行,包括Linux、Unix、Windows等,但在Linux系统上最为常见。在Linux中,可以通过查看系统进程来确认是否有
httpd
(Apache的守护进程名称)在运行,使用命令如ps -ef | grep httpd
。 - 默认端口:默认的HTTP端口也是80,和IIS类似。可以通过访问网站的IP地址或域名,如果返回的页面是由Apache服务器提供的,可能会在页面底部看到类似“Powered by Apache”的字样,不过这可以被修改或隐藏。
- 配置文件:其主要的配置文件是
httpd.conf
,通过查看服务器上是否存在这个文件以及其内容(例如包含大量的服务器配置指令如ServerRoot
、DocumentRoot
等)可以帮助判断是否是Apache服务器。
- 运行环境:可以在多种操作系统上运行,包括Linux、Unix、Windows等,但在Linux系统上最为常见。在Linux中,可以通过查看系统进程来确认是否有
3. Nginx
- 定义和用途:是一个高性能的HTTP和反向代理服务器,也可以作为邮件代理服务器,以其高并发处理能力和低资源消耗而著称。
- 辨别方法:
- 运行环境:可以运行在多种操作系统上,包括Linux、Unix、Windows等。在Linux系统中,可以通过查看进程来确认是否有
nginx
进程在运行,例如使用命令ps -ef | grep nginx
。 - 默认端口:默认的HTTP端口是80,HTTPS端口是443。Nginx的默认页面通常比较简洁,有“Welcome to nginx!”的字样。
- 配置文件:主要的配置文件是
nginx.conf
,其配置语法与Apache的httpd.conf
有所不同,有server
块用于定义服务器相关的配置,location
块用于定义URL路径的处理规则等。通过查看这些配置文件的存在和内容可以辅助判断。
- 运行环境:可以运行在多种操作系统上,包括Linux、Unix、Windows等。在Linux系统中,可以通过查看进程来确认是否有
4. WebLogic
- 定义和用途:是Oracle公司开发的一款用于企业级Java应用程序的应用服务器,支持Java EE(Enterprise Edition)规范,能够处理复杂的企业级业务逻辑。
- 辨别方法:
- 运行环境:主要运行在Java虚拟机(JVM)环境下,通常部署在企业级的服务器上,支持多种操作系统,如Linux、Windows、Solaris等。
- 应用类型关联:如果网站或应用是基于Java EE技术构建的大型企业应用,如EJB(Enterprise JavaBeans)应用,很可能使用WebLogic作为应用服务器。可以查看应用的部署描述文件(如
weblogic - deploy.xml
)来确认是否使用了WebLogic。 - 管理控制台:有一个功能强大的Web - based管理控制台,默认端口一般是7001(可以修改)。通过访问
http://服务器IP地址:7001/console
可以进入管理控制台登录页面,如果出现WebLogic的登录界面,就可以确定是WebLogic服务器。
5. Tomcat
- 定义和用途:是一个开源的、轻量级的Java应用服务器,主要用于运行Java Servlet和JavaServer Pages(JSP)技术构建的Web应用程序。
- 辨别方法:
- 运行环境:运行在Java虚拟机(JVM)之上,对Java环境有依赖。可以在多种操作系统上运行,如Linux、Windows等。
- 默认端口:默认的HTTP访问端口是8080(可以修改)。通过访问
http://服务器IP地址:8080
,如果看到Tomcat的默认欢迎页面或者部署在上面的Java Web应用的首页,就可以初步判断是Tomcat服务器。 - 应用文件类型关联:如果网站应用包含大量的
.jsp
(JavaServer Pages)和.java
(Servlet代码)文件,并且这些文件被编译成.class
文件部署在服务器上,很可能是基于Tomcat服务器运行的。
6. Jboss
- 定义和用途:是一个开源的、符合Java EE规范的应用服务器,用于开发和部署企业级Java应用程序,提供了丰富的服务和功能,如EJB容器、消息传递等。
- 辨别方法:
- 运行环境:基于Java虚拟机(JVM)运行,支持多种操作系统。可以通过查看服务器上是否有Jboss相关的进程来判断,在Linux系统下,使用命令
ps -ef | grep jboss
。 - 默认端口:默认端口有多个,例如管理控制台端口一般是9990,HTTP端口是8080(可以修改)。访问
http://服务器IP地址:9990/console
如果出现Jboss的管理控制台登录页面,就可以确定是Jboss服务器。 - 应用关联:和WebLogic、Tomcat类似,如果是大型的Java EE企业应用,特别是涉及EJB等技术,可能会使用Jboss作为应用服务器。可以查看应用的部署文件(如
jboss - deployment - structure.xml
)来辅助判断。
- 运行环境:基于Java虚拟机(JVM)运行,支持多种操作系统。可以通过查看服务器上是否有Jboss相关的进程来判断,在Linux系统下,使用命令
7. Shiro
- 定义和用途:是一个强大的Java安全框架,用于身份验证、授权、加密和会话管理等安全功能,通常集成在Java应用程序中,而不是像前面几种是服务器软件。
- 辨别方法:
- 代码层面:如果查看Java应用程序的源代码或编译后的代码,发现有导入
org.apache.shiro
相关的包,如org.apache.shiro.authc
(用于身份验证)、org.apache.shiro.authz
(用于授权)等,就可以判断该应用使用了Shiro框架。 - 配置文件:Shiro有自己的配置文件(通常是
shiro.ini
或者基于Java的配置类),在配置文件中会定义安全管理器(Security Manager)、 realms(用于获取用户信息等)、认证策略等安全相关的设置。通过查找这些配置文件可以辅助判断应用是否使用了Shiro。
- 代码层面:如果查看Java应用程序的源代码或编译后的代码,发现有导入
8. Log4j
- 定义和用途:是一个流行的Java日志记录框架,用于在Java应用程序中记录日志信息,方便开发者进行调试和问题追踪。
- 辨别方法:
- 代码层面:在Java应用的源代码或编译后的字节码中,查找是否有导入
org.apache.log4j
相关的包,如org.apache.log4j.Logger
用于创建日志记录器。如果有这些导入语句,很可能使用了Log4j。 - 配置文件:Log4j有配置文件(如
log4j.properties
或log4j.xml
),其中定义了日志记录的级别(如DEBUG、INFO、WARN等)、日志输出的目的地(如控制台、文件等)和日志格式等。通过查找这些配置文件可以帮助判断是否使用了Log4j。
- 代码层面:在Java应用的源代码或编译后的字节码中,查找是否有导入
9. Fastjson
- 定义和用途:是一个Java语言编写的高性能JSON处理库,用于在Java应用中实现JSON数据的序列化和反序列化。
- 辨别方法:
- 代码层面:在Java应用的源代码或字节码中,查找是否有导入
com.alibaba.fastjson
相关的包,如com.alibaba.fastjson.JSONObject
用于处理JSON对象,com.alibaba.fastjson.JSONArray
用于处理JSON数组。如果有这些导入,很可能使用了Fastjson。 - 功能特性关联:如果应用程序需要频繁地进行JSON数据的解析和生成,例如在Web服务接口中,将Java对象转换为JSON格式返回给客户端,或者从客户端接收JSON数据并转换为Java对象,可能会使用Fastjson。
- 代码层面:在Java应用的源代码或字节码中,查找是否有导入
10. Struts2
- 定义和用途:是一个基于MVC(Model - View - Controller)模式的Java Web应用框架,用于开发企业级的Web应用程序,简化了Web开发的流程。
- 辨别方法:
- 代码层面:在Java Web应用的源代码中,查找是否有导入
org.apache.struts2
相关的包,如org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
(这是Struts2的核心过滤器)。如果有这些导入,很可能使用了Struts2。 - 配置文件:Struts2有自己的配置文件(如
struts.xml
),其中定义了action(业务逻辑处理单元)、result(视图结果)等内容。通过查找这个配置文件可以辅助判断是否使用了Struts2。同时,Struts2的应用通常会有.action
扩展名的URL路径(可以自定义),用于访问对应的action。
- 代码层面:在Java Web应用的源代码中,查找是否有导入
11.补充
1. 通过HTTP响应头信息判断
- IIS:
- IIS服务器在响应头中通常会包含
Server: Microsoft - IIS
相关字样。例如,Server: Microsoft - IIS/10.0
,其中10.0
是IIS的版本号。
- IIS服务器在响应头中通常会包含
- Apache:
- 响应头中可能会出现
Server: Apache
字样。不同版本的Apache可能还会附带更详细的版本信息,如Server: Apache/2.4.57 (Unix)
,这里的2.4.57
是Apache的版本,(Unix)
表示服务器操作系统类型。
- 响应头中可能会出现
- Nginx:
- 其响应头中常常有
Server: nginx
相关内容。比如Server: nginx/1.24.0
,1.24.0
为Nginx的版本号。
- 其响应头中常常有
2. 查看特定的文件和目录结构(有一定概率)
- Tomcat:
- 可以尝试访问
/manager/html
(默认情况下,如果没有修改路径),这是Tomcat的管理界面路径。如果能够访问(当然,在实际安全测试中,可能需要认证才能访问到完整功能),就很有可能是Tomcat服务器。并且在应用的目录结构中可能会看到WEB - INF
这样典型的Java Web应用目录结构。
- 可以尝试访问
- Jboss:
- Jboss通常会有自己特定的部署目录结构,例如
standalone/deployments
目录用于部署应用。如果发现这样的目录结构,可能是Jboss服务器。
- Jboss通常会有自己特定的部署目录结构,例如
- Weblogic:
- 寻找
console
目录,如/console
(默认路径),这是Weblogic的管理控制台路径。如果可以访问这个路径或者发现与之相关的文件引用,很可能是Weblogic服务器。
- 寻找
3. 通过端口判断(有一定参考性)
- IIS:
- 通常使用80和443端口(HTTP和HTTPS),不过这两个端口也是其他服务器常用的,所以不能仅凭端口判断。但如果结合其他线索,比如在Windows环境下且开放了80或443端口,IIS的可能性会增加。
- Apache:
- 常见的是80和443端口,也可以配置在其他端口运行。如果发现服务器监听这些常见端口,并且有前面提到的Apache响应头特征等线索,有助于判断。
- Nginx:
- 同样多使用80和443端口。有些情况下,Nginx也会作为反向代理,监听其他后端服务器的端口,比如监听8080等端口来代理Tomcat(8080端口是Tomcat默认的HTTP服务端口)。
- Tomcat:
- 默认的HTTP服务端口是8080,AJP(Apache - Tomcat Connector)端口是8009。不过在实际生产环境中,这些端口可能会被修改。
- Jboss:
- 常用的端口包括8080、8443等,用于HTTP和HTTPS服务。
- Weblogic:
- 管理端口通常是7001,HTTP服务端口可能是7002等,具体端口配置也可以修改。
4. 利用漏洞扫描工具和指纹识别工具
- 像WhatWeb之类的工具可以通过分析网站的多种特征(包括响应头、HTML内容、脚本文件等)来识别服务器类型和所使用的组件。这些工具拥有庞大的指纹数据库,能够高效地识别出网站是否使用了Shiro、Log4j、Fastjson、Struct2等组件。
- 例如,对于Log4j,工具可以检查网站的类路径中是否包含
log4j
相关的库文件引用,或者在日志输出的地方查找Log4j特有的配置参数。对于Shiro,会查找Shiro相关的认证、授权相关的接口路径和配置文件引用。对于Fastjson和Struct2也是类似的,通过检查是否存在相关的库文件引用、特定的接口路径和参数来判断。
5. 查看HTML页面源代码和JavaScript文件引用
- 如果网站使用了某些特定的Java框架,如Struct2,可能会在HTML页面的
<script>
标签中或者通过其他资源引用方式,发现与Struct2相关的JavaScript文件路径或者命名空间。 - 对于使用了Shiro的网站,在HTML页面源代码中可能会有Shiro标签库的引用,或者在JavaScript中发现与Shiro认证相关的接口调用。
- 对于Fastjson,在JavaScript代码或者通过AJAX请求的返回数据处理部分,如果发现使用Fastjson进行JSON数据的解析和序列化操作,就可以判断网站使用了Fastjson组件。例如,可能会发现
com.alibaba.fastjson.JSONObject
等相关的Java类在JavaScript代码中的引用(如果是通过Java后端渲染页面并包含了相关引用的情况)。
6. 检查服务器返回的错误页面
- IIS:
- IIS的错误页面通常有其特定的样式和信息格式。例如,404错误页面可能会包含IIS的标志和相关的错误提示信息,并且页面风格比较符合Windows Server系统的风格。
- Apache:
- Apache的错误页面也有自己的特点,可能会包含
Apache
字样的错误提示,并且页面布局和样式相对简洁。
- Apache的错误页面也有自己的特点,可能会包含
- Nginx:
- Nginx的错误页面可能会有
nginx
相关的提示信息,而且页面设计较为简单,通常会提供基本的错误码解释。
- Nginx的错误页面可能会有
原文地址:https://blog.csdn.net/weixin_62512865/article/details/143868987
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!