环境配置
l 系统:Winserver2008
l 数据库:Oracle11G
l JDK:java 1.7.0_51
l 复现版本:用友NC6.5
源码分析
接口对应的路径为:
/yonyou/hotwebs/aim/equipmap/accept.jsp,
接口页面方法代码如下图所示:
先是创建了SmartUpload对象,设置上传的限制,然后调用su.upload()方法来上传文件,该方法详细代码如下图所示:
通过输入流将请求体中的数据字节读入this.m_binArray数组。
调用this.getDataHeader()方法把请求体的字节数组转换为字符串,然后获取一些参数,方便后面对该文件进行基础设置。
对文件初始化设置后,第170行代码处,把该文件添加到hash表this.m_files。upload文件上传方法到这里结束。接着继续accept.jsp接口往下看。
上传完文件后,创建SmartFiles对象接收上传的文件列表。从上传请求包中获取“fname”参数值,随后遍历文件列表。如果文件没有丢失,则调用file.saveAs()方法将文件保存到系统,该方法详细代码如下图所示:
根据方法形参获取物理路径,如果不为空,则创建File文件对象,并通过文件流的方式将文件内容写入该文件。
分析过程中,并没有看到对文件上传的内容以及文件名做任何限制,因此通过这个漏洞实现在任意目录下写入任意内容的文件。
漏洞验证
构造的数据包如下图所示:
发送数据包,即可在相应路径下看到该文件如下图所示:
蚁剑连接成功如下图所示:
公众号:
刑天攻防实验室
扫码关注 了解更多内容
原文始发于微信公众号(刑天攻防实验室):用友NC6.5 accept.jsp 任意文件上传漏洞分析及复现
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论