NC65系统发送消息通知,并且附带附件

这段代码演示了如何使用Java上传文件到服务器并将其作为附件发送邮件。它创建了一个File对象,实例化了FileAttachment和AttachmentSetting,然后将附件上传到服务器。接着,创建MessageVO对象设置邮件相关信息如标题、内容、接收人,并将附件设置添加到消息中。最后,通过IMsgSender发送邮件。
摘要由CSDN通过智能技术生成

       代码如下

        File file = new File("C:\\Users\\m\\Desktop\\采购需求20220315日上线.txt");//附件文件地址
        FileAttachment fileAttachment = new FileAttachment(file);
        AttachmentSetting attachmentSetting = null;
        try {
            AttachmentVO vo = fileAttachment.uploadToFileServer();//上传附件到服务器。
            List<AttachmentVO> vos = new ArrayList<AttachmentVO>();//将vo放到集合里,多个附件同样放在集合里
            vos.add(vo);
            attachmentSetting = new AttachmentSetting(vos);
        } catch (Exception e1) {
            // TODO 自动生成的 catch 块
            e1.printStackTrace();
        }
        //tsw20220221发送邮件
        NCMessage[] ncMessages=new NCMessage[1]; 
        ncMessages[0]=new NCMessage();
        MessageVO messageVO=new  MessageVO();//消息VO
        messageVO.setDestination("outbox");//方向
        messageVO.setMsgtype("nc");//nc,email,sms
        messageVO.setMsgsourcetype("notice");//消息类型:  notice 通知  prealert 预警 worklist 工作任务
        messageVO.setSubject("测试");//标题
        messageVO.setContent("测试");
        messageVO.setContenttype("BIZ"); //内容格式,如果要能打开单据,这里不能设置为 Z,MAKEBILL,MSG_NEEDCHECK 否则不会变为已读状态
        messageVO.setReceiver("1001A1100000000001CA");//接收人
        messageVO.setPk_group(AppContext.getInstance().getPkGroup());
        messageVO.setSendtime(AppContext.getInstance().getServerTime());
        messageVO.setSender("1001A1100000000002C3");
        ncMessages[0].setMessage(messageVO);//消息发送实体
        ncMessages[0].setAttachmentSetting(attachmentSetting);//消息附件
    
        IMsgSender msgSender=MessageSenderLoader.getInstance().getMessageSender();
        try {
            msgSender.sendMessage(ncMessages);
        } catch (Exception e) {
           throw new BusinessException("发送消息失败->"+e.getMessage(),e);
        }

用友 NC 是一款企业级管理软件,在近万家大中型企业使用。实现建模、开发、继承、运行、管理一体化的 IT 解决方案信息化平台,其代码实现逻辑上存在多处反序列化漏洞。   2020 年 6 月 4 日,有国内安全组织披露用友 NC 存在反序列化远程命令执行“0-Day”漏洞。经分析,漏洞真实存在,攻击者通过构造特定的 HTTP 请求,可以成功利用漏洞在目标服务器上执行任意命令,该漏洞风险极大,可能造成严重的信息泄露事件。鉴于漏洞利用的源代码已经公开,建议用户尽快修复此漏洞。   2、攻击原理   通过UClient打开用友NC,UClient本质为UBroswer,一个专用的用友NC浏览器嵌入了JAVA运行环境,以解决NC 6系列之前的版本中applet在不同设备上的应用问题。经过文件目录查看分析得知用友UClient安装后,会在用户目录下新建uclient文件夹,根据看到的NCLogin65.jar文件,结合java运行进程信息,分析得知是一些界面和登陆逻辑代码,nc_client_home则是NC应用依赖的其他一些代码和jar包,因此可以使用Luyten反编译工具查看NCLogin65.jar,通过简单运行NC应用,尝试进行用户登陆,使用wireshark抓包,查看app.log运行日志,发现大量serialize和deserialize,说明系统中应用了序列化方式来传送数据。在LoginUI类中的login方法打断点,启动Idea进行跟踪调试,当跟踪到loginImple方法时,发现多处调用了NCLocator的lookup方法查找Service接口进行操作,通过跟踪发现,实际使用了RmiNCLocator类,RmiNCLocator类的lookup方法,这里的lookup,已初步判断出无需继续跟踪调试,可以直接通过jndi注入漏洞进行利用。   黑客就是通过构造特定的 HTTP 请求,成功利用漏洞可在目标服务器上执行任意命令,漏洞暂无安全补丁发布,属 0Day 等级,风险极大。黑客利用漏洞可完全控制服务器,获取服务器的敏感信息。   3、影响范围   用友NC全版本
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值