找回密码
 注册账号

QQ登录

只需一步,快速开始

手机号码,快捷登录

手机号码,快捷登录

初学者课程:T3自学|T6自学|U8自学软件下载课件下载工具下载资料:通资料|U8资料|NC|培训|年结积分规则 | 使用常见问题Q&A
知识库:U8 | | NC | U9 | OA | 政务U8|U9|NCC|NC65|NC65客开|NCC客开新手必读 | 任务 | 快速增金币用友QQ群[微信群]
查看: 62376|回复: 30

[资料] 覆盖用友nc全版本漏洞

[复制链接]
发表于 2020-6-6 19:54:32 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册账号

×
本帖最后由 stonys 于 2020-10-13 19:04 编辑

前言
NC6X版本安全补丁集(20201013)https://www.iufida.com/126-136727-0.html
NCC1909,1903,2005安全必打补丁合集(20201013)https://www.iufida.com/126-136729-0.html


用友NC产品是面向集团企业的世界级高端管理软件,市场占有率在同类产品中已经达到亚太第一,已在8000家集团企业中应用,国内用户涵盖大多数关键基础设施运营单位。用友NC综合利用最新的互联网技术、云计算技术、移动应用技术等,通过构建大企业私有云来全面满足集团企业管理、全产业链管控和电子商务运营,成为大型集团企业生产运营中必备的一环,其安全性至关重要,一旦攻击者成功攻破该系统,不仅可以获取企业集团财务人员相关信息和运行数据,极易造成公司重要信息泄露,给公司带来极其不良的社会影响和经济损失;而且还可以作为突破口,进一步向基础设施运营企业的生产运营网络渗透,严重危害基础设施网络的生产安全。
由全球能源互联网研究院有限公司运营的国家电网公司信息与网络安全重点实验室的安全团队在日常渗透测试中,发现用友NC最新的6.5版本中存在JAVA反序列化远程命令执行“0-Day”漏洞,利用该漏洞可完全获取主机控制权限,造成OA平台内的敏感数据泄露,并为进一步向关键基础设施运营企业的生产网络渗透提供重要跳板。以下为漏洞发现的具体详情:
用友NC基础架构分析
用友NC是为企业提供建模、开发、继承、运行、管理一体化的IT解决方案的信息化平台。用友NC为C/S架构,使用JAVA编程语言开发,客户端可直接使用UClient,服务端接口为HTTP。

                               
登录/注册后可看大图
通过UClient打开用友NC,如下图所示:

                               
登录/注册后可看大图

                               
登录/注册后可看大图
UClient本质为UBroswer,一个专用的用友NC浏览器嵌入了JAVA运行环境,以解决NC 6系列之前的版本中applet在不同设备上的应用问题。经过文件目录查看分析得知用友UClient安装后,会在用户目录下新建uclient文件夹,文件结构如下所示:



                               
登录/注册后可看大图
其中apps中存储应用,downloads包含一些静态资源文件(logo等),log中是Uclient的运行日志,share中是UClient应用的java运行环境,其他的文件不是很重要,根据文件名理即可。
打开apps中的其中一个应用,文件结构如下:

                               
登录/注册后可看大图
根据看到的NCLogin65.jar文件,结合java运行进程信息,分析得知是一些界面和登陆逻辑代码,nc_client_home则是NC应用依赖的其他一些代码和jar包,因此可以使用Luyten反编译工具查看NCLogin65.jar:

                               
登录/注册后可看大图
通过简单运行NC应用,尝试进行用户登陆,使用wireshark抓包,发现流量经过加密处理:

                               
登录/注册后可看大图
查看app.log运行日志,发现大量serialize和deserialize,说明系统中应用了序列化方式来传送数据。

                               
登录/注册后可看大图
调试分析发现漏洞



根据万物皆可调定理,综合使用java agent和 jdwp的方式进行调试,java agent是为了准确定位打断点的位置。Java agent的Transformer代码如下,目的是将实时调用的类打印出来,方便打断点,jdwp调试不多说:
package org.javaweb;import org.apache.log4j.Logger;import java.lang.instrument.ClassFileTransformer;import java.lang.instrument.IllegalClassFormatException;import java.security.ProtectionDomain;publicclassDebugTransformerimplementsClassFileTransformer { Logger logger = Logger.getLogger(DebugTransformer.class);@Overridepublicbyte[] transform(ClassLoader loader, String className, Class<?> classBeingRedefined, ProtectionDomain protectionDomain,byte[] classfileBuffer)throws IllegalClassFormatException { className = className.replace("/",".");if(className.startsWith("nc.")){ logger.debug("Call -> "+className); }return classfileBuffer; }}
经过分析,我们在LoginUI类中的login方法打断点,启动Idea进行跟踪调试。

                               
登录/注册后可看大图
当跟踪到loginImple方法时,发现多处调用了NCLocator的lookup方法查找Service接口进行操作,结合日志中serialize和deserialize、客户端中多处的jar包和class类文件,分析得出这里肯定应用了RMI去远程中心加载类进行调用。

                               
登录/注册后可看大图
查看NCLocator发现是个抽象类,实现了Context接口,NCLocator有多个实现类,通过跟踪发现,实际使用了RmiNCLocator类,RmiNCLocator类的lookup方法如下:
package nc.bs.framework.rmi;import java.util.HashMap;import java.util.Properties;import nc.bs.framework.common.NCLocator;import nc.bs.framework.exception.ComponentException;import nc.bs.framework.exception.FrameworkRuntimeException;import nc.bs.framework.naming.Context;publicclassRmiNCLocatorextendsNCLocator {private Context remoteContext; private static HashMap<String, Context> remoteResolverMap = new HashMap();publicRmiNCLocator() { }public Objectlookup(String name)throws ComponentException { Object result = null;try { result =this.remoteContext.lookup(name);return result; }catch (Throwable var4) {if (var4instanceof FrameworkRuntimeException) {throw (FrameworkRuntimeException)var4; }else {thrownew ComponentException(name,"Component resolve exception ", var4); } } } ...... }
?看到这里的lookup,已初步判断出无需继续跟踪调试,可以直接通过jndi注入漏洞进行利用。
利用方式
构造远程命令执行POC部署公网服务器,利用JNDI注入触发漏洞,即可看到来自目标的服务器的请求,证明我们成功利用反序列化远程命令执行漏洞在目标服务器上执行了whoami命令:

                               
登录/注册后可看大图
继续深入利用漏洞,进行反弹shell操作,并完全获取服务器的控制权限,可执行id、whoami、ifconfig等操作系统命令。

                               
登录/注册后可看大图
声明:本文来自网络安全应急技术国家工程实验室,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com

发表于 2020-9-22 09:51:42 | 显示全部楼层
u8网页版,我用sql注入可以进去,希望尽快恢复把,什么布隆都可以用下,毕竟是财务系统
回复 点赞 拍砖

使用道具 举报

发表于 2020-7-3 18:00:34 | 显示全部楼层
d 股票都跌了啊  你们没看啊
回复 点赞 拍砖

使用道具 举报

发表于 2020-6-19 18:16:37 | 显示全部楼层
补充问一下是不是NC5系列不存在?
回复 点赞 拍砖

使用道具 举报

  • 打卡等级:无名新人
  • 打卡总天数:5
  • 打卡月天数:3
  • 打卡总奖励:20
  • 最近打卡:2024-11-13 21:14:02
发表于 2020-6-7 11:54:47 | 显示全部楼层
期望用友官方早点出解决方案
回复 点赞 拍砖

使用道具 举报

发表于 2023-11-18 11:26:09 | 显示全部楼层
感谢分享感谢分享感谢分享
回复 点赞 拍砖

使用道具 举报

  • 打卡等级:初来乍到
  • 打卡总天数:22
  • 打卡月天数:21
  • 打卡总奖励:62
  • 最近打卡:2024-11-26 11:12:14
发表于 2020-6-8 12:08:42 | 显示全部楼层
这也能分析的出来,NB!
回复 点赞 拍砖

使用道具 举报

发表于 2020-6-8 16:32:23 | 显示全部楼层
这个耗流量有点大
回复 点赞 拍砖

使用道具 举报

发表于 2020-6-19 18:15:31 | 显示全部楼层
回复 点赞 拍砖

使用道具 举报

发表于 2020-7-6 12:24:31 | 显示全部楼层
回复 点赞 拍砖

使用道具 举报

发表于 2020-7-6 16:01:16 | 显示全部楼层
感谢分享感谢分享感谢分享
回复 点赞 拍砖

使用道具 举报

发表于 2020-10-9 15:50:06 | 显示全部楼层
回复 点赞 拍砖

使用道具 举报

发表于 2020-10-12 20:02:20 | 显示全部楼层
回复 点赞 拍砖

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

QQ|站长微信|Archiver|手机版|小黑屋|用友之家 ( 蜀ICP备07505338号|51072502110008 )

GMT+8, 2024-11-27 11:24 , Processed in 0.066981 second(s), 10 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表