【服务器组件】如何辨别服务器组件

news2024/11/19 19:49:51

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,通过查看服务器上是否存在这个文件以及其内容(例如包含大量的服务器配置指令如ServerRootDocumentRoot等)可以帮助判断是否是Apache服务器。

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路径的处理规则等。通过查看这些配置文件的存在和内容可以辅助判断。

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)来辅助判断。

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。

8. Log4j

  • 定义和用途:是一个流行的Java日志记录框架,用于在Java应用程序中记录日志信息,方便开发者进行调试和问题追踪。
  • 辨别方法
    • 代码层面:在Java应用的源代码或编译后的字节码中,查找是否有导入org.apache.log4j相关的包,如org.apache.log4j.Logger用于创建日志记录器。如果有这些导入语句,很可能使用了Log4j。
    • 配置文件:Log4j有配置文件(如log4j.propertieslog4j.xml),其中定义了日志记录的级别(如DEBUG、INFO、WARN等)、日志输出的目的地(如控制台、文件等)和日志格式等。通过查找这些配置文件可以帮助判断是否使用了Log4j。

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。

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。

11.补充

1. 通过HTTP响应头信息判断

  • IIS
    • IIS服务器在响应头中通常会包含Server: Microsoft - IIS相关字样。例如,Server: Microsoft - IIS/10.0,其中10.0是IIS的版本号。
  • Apache
    • 响应头中可能会出现Server: Apache字样。不同版本的Apache可能还会附带更详细的版本信息,如Server: Apache/2.4.57 (Unix),这里的2.4.57是Apache的版本,(Unix)表示服务器操作系统类型。
  • Nginx
    • 其响应头中常常有Server: nginx相关内容。比如Server: nginx/1.24.01.24.0为Nginx的版本号。

2. 查看特定的文件和目录结构(有一定概率)

  • Tomcat
    • 可以尝试访问/manager/html(默认情况下,如果没有修改路径),这是Tomcat的管理界面路径。如果能够访问(当然,在实际安全测试中,可能需要认证才能访问到完整功能),就很有可能是Tomcat服务器。并且在应用的目录结构中可能会看到WEB - INF这样典型的Java Web应用目录结构。
  • Jboss
    • Jboss通常会有自己特定的部署目录结构,例如standalone/deployments目录用于部署应用。如果发现这样的目录结构,可能是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字样的错误提示,并且页面布局和样式相对简洁。
  • Nginx
    • Nginx的错误页面可能会有nginx相关的提示信息,而且页面设计较为简单,通常会提供基本的错误码解释。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2243588.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

20.UE5UI预构造,开始菜单,事件分发器

2-22 开始菜单、事件分发器、UI预构造_哔哩哔哩_bilibili 目录 1.UI预构造 2.开始菜单和开始关卡 2.1开始菜单 2.2开始关卡 2.3将开始菜单展示到开始关卡 3.事件分发器 1.UI预构造 如果我们直接再画布上设计我们的按钮&#xff0c;我们需要为每一个按钮进行编辑&#x…

手搓神经网络(MLP)解决MNIST手写数字识别问题 | 数学推导+代码实现 | 仅用numpy,tensor和torch基本计算 | 含正反向传播数学推导

手写数字识别&#xff08;神经网络入门&#xff09; 文章目录 手写数字识别&#xff08;神经网络入门&#xff09;实验概述实验过程数据准备模型实现线性变换层前向传播反向传播更新参数整体实现 激活函数层&#xff08;ReLU&#xff09;前向传播反向传播整体实现 Softmax层&am…

极速入门数模电路

一. 认识数模元器件 1.1 面包板 1.2 导线 一般使用红色导线表示正极&#xff0c;黑色导线表示负极。 1.3 纽扣电池 1.4 电池座 1.4 LED灯 1.5 数码管 1.6 有源蜂鸣器 1.7 扬声器 1.8 电容 电容接电池之后可以充电&#xff0c;充完电后电容接LED灯可以放电。 1.9 电阻 1.1…

Windows docker下载minio出现“Using default tag: latestError response from daemon”

Windows docker下载minio出现 Using default tag: latest Error response from daemon: Get "https://registry-1.docker.io/v2/": context deadline exceeded 此类情况&#xff0c;一般为镜像地址问题。 {"registry-mirrors": ["https://docker.re…

使用MaxKB搭建知识库问答系统并接入个人网站(halo)

首发地址&#xff08;欢迎大家访问&#xff09;&#xff1a;使用MaxKB搭建知识库问答系统并接入个人网站 前言 从OpenAI推出ChatGPT到现在&#xff0c;大模型已经渗透到各行各业&#xff0c;大模型也逐渐趋于平民化&#xff1b;从最开始对其理解、生成、强大的知识积累的惊叹&…

数据库练习:查询操作

1. 查询出部门编号为D2019060011的所有员工 2. 所有财务总监的姓名、编号和部门编号。 3. 找出奖金高于工资的员工。 4. 找出奖金高于工资40%的员工。 5 找出部门编号为D2019090011中所有财务总监&#xff0c;和部门编号为D2019060011中所有财务专员的详细资料。 6. 找出部门编…

css数据不固定情况下,循环加不同背景颜色

<template><div><p v-for"(item, index) in items" :key"index" :class"getBackgroundClass(index)">{{ item }}</p></div> </template><script> export default {data() {return {items: [学不会1, …

【Python绘图】两种绘制混淆矩阵的方式 (ConfusionMatrixDisplay(), imshow()) 以及两种好看的colorbar

在机器学习领域&#xff0c;混淆矩阵是一个评估分类模型性能的重要工具。它不仅展示了模型预测的准确性&#xff0c;还揭示了模型在不同类别上的表现。本文介绍两种在Python中绘制混淆矩阵的方法&#xff1a;ConfusionMatrixDisplay() 和 imshow()&#xff0c;以及两种好看的co…

el-table 数据去重后合并表尾合计行,金额千分位分割并保留两位小数,表尾合计行表格合并

问题背景 最近在做后台管理项目el-table 时候需要进行表尾合计&#xff0c;修改合计后文字的样式&#xff0c;合并单元格。 想实现的效果 合并表尾单元格前三列为1格&#xff1b;对某些指定的单元格进行表尾合计&#xff1b;合计后的文本样式加粗&#xff1b;涉及到金额需要千…

Shell脚本2 -- 永久环境变量与字符串操作

声明&#xff1a; 本文的学习内容来源于B站up主“泷羽sec”视频【shell编程&#xff08;2&#xff09;永久环境变量和字符串显位】的公开分享&#xff0c;所有内容仅限于网络安全技术的交流学习&#xff0c;不涉及任何侵犯版权或其他侵权意图。如有任何侵权问题&#xff0c;请联…

红日靶场-1详细解析(适合小白版)

红日靶场涉及内网知识&#xff0c;和前期靶场不太一样&#xff0c;前期靶场大部分都是单个靶机获得root权限&#xff0c;而这一次更综合&#xff0c;后期也会继续学习内网知识&#xff0c;继续打红日靶场&#xff0c;提高自己的综合技能。 环境搭建 首先本题的网络拓扑结构如…

从零到一:利用 AI 开发 iOS App 《震感》的编程之旅

在网上看到一篇关于使用AI开发的编程经历&#xff0c;分享给大家 作者是如何在没有 iOS 开发经验的情况下&#xff0c;借助 AI&#xff08;如 Claude 3 模型&#xff09;成功开发并发布《震感》iOS 应用。 正文开始 2022 年 11 月&#xff0c;ChatGPT 诞生并迅速引发全球关注。…

【环境配置】macOS配置jdk与maven

配置jdk与maven 配置jdk与切换java版本命令 maven安装与配置国内镜像源 用到的命令 # 进入 JDK 安装目录 cd /Library/Java/JavaVirtualMachines# 查看文件 ls ➜ jdk-1.8.jdk jdk-11.jdk# 查看路径 pwd ➜ /Library/Java/JavaVirtualMachines# 打开环境变量配置文件 vi &…

新手教学系列——善用 VSCode 工作区,让开发更高效

引言 作为一名开发者,你是否曾经在项目中频繁地切换不同文件夹,打开无数个 VSCode 窗口?特别是当你同时参与多个项目或者处理多个模块时,这种情况更是家常便饭。很快,你的任务栏上挤满了 VSCode 的小图标,切换起来手忙脚乱,工作效率直线下降。这时候,你可能会问:“有…

<项目代码>YOLOv8 草莓成熟识别<目标检测>

YOLOv8是一种单阶段&#xff08;one-stage&#xff09;检测算法&#xff0c;它将目标检测问题转化为一个回归问题&#xff0c;能够在一次前向传播过程中同时完成目标的分类和定位任务。相较于两阶段检测算法&#xff08;如Faster R-CNN&#xff09;&#xff0c;YOLOv8具有更高的…

【SpringBoot】发送简单邮件

在Spring Boot中发送邮件是一个常见的需求&#xff0c;通常使用JavaMail API结合Spring的邮件抽象来实现。Spring Boot提供了一个简单的配置和使用邮件发送的方法。 简单使用 添加依赖 首先&#xff0c;你需要在你的pom.xml文件中添加Spring Boot Starter Mail依赖。 <d…

Python模块、迭代器与正则表达式day10

1、Python模块 1.1模块的简介 在编写代码的时候&#xff0c;创建的.py文件就被称为一个模块 1.2模块的使用 想要在a文件里使用b文件的时候&#xff0c;只要在a文件中使用关键字import导入即可 1.2.2 from ...import...语句 导入模块可以使用import&#xff0c;如果只导入模…

ABAP开发学习——SNRO

SAP凭证号码的指定分为外部给号和内部给号。 Internal number range即内部给号,指系统根据预先维护好的号码范围&#xff08;只能是阿拉伯数字&#xff09;依序给号,给出已有数字的下一个编号。 External number range即外部给号,后台配置时指指定一个号码范围&#xff08;可以…

数据科学与SQL:如何计算排列熵?| 基于SQL实现

目录 0 引言 1 排列熵的计算原理 2 数据准备 3 问题分析 4 小结 0 引言 把“熵”应用在系统论中的信息管理方法称为熵方法。熵越大&#xff0c;说明系统越混乱&#xff0c;携带的信息越少&#xff1b;熵越小&#xff0c;说明系统越有序&#xff0c;携带的信息越多。在传感…

CSS(8):盒子阴影与文字阴影

一&#xff1a;盒子阴影text-shadow属性 1.box-shadow&#xff1a;h-shadow v-shadow blur spread color inset; 默认的是外部阴影outset&#xff0c;不能写在代码上 2.鼠标经过盒子后的阴影 rgba透明度 3.文字阴影 text-shadow:水平偏移 垂直偏移 模糊度 阴影颜色; 注意点…