漏洞分析 | iDocView在线文档预览系统远程代码执行漏洞

本文报道了iDocView系统的远程代码执行漏洞,攻击者可通过恶意文件下载获取服务器权限。漏洞源于页面缓存功能对用户输入的信任不足。网宿安全演武发现20032个资产受影响,已有升级补丁和WAF防护措施。
摘要由CSDN通过智能技术生成

漏洞概述

iDocView在线文档预览系统是由北京卓软在线信息技术有限公司开发的一套系统,可以上传本地文档预览,也可以直接预览网络文档、服务器磁盘路径文档、共享路径文档、FTP文档等。

近期,网宿安全演武实验室监测到iDocView存在远程代码执行漏洞:远程攻击者可以利用该漏洞让目标应用下载恶意文件,最终获取服务器权限。

受影响版本

iDocView < 13.10.1_20231115

漏洞分析

该漏洞的根本原因是页面缓存功能过于相信用户输入,未检测威胁后缀直接获取文件内容并写入本地

首先通过漏洞情报定位至HtmlController,接口为2word。

这里创建了一个urlhtml文件夹,又在它的基础上将url通过DigestUtils.md5Hex加密后创建了一个新目录,然后判断destHtmlFile.isFile(),结果一定是false,接着进入downloadHtml(),下载url提供的网页。

downloadHtml()这里一开始先判断了url和outputDir是否为空,如果url不以"http://"或"https://"开头,则添加"http://"前缀,接着又去检查outputDir是否存在,如果不存在,则创建该目录,然后就调用了getWebPage()爬取指定的网页内容。

而getWebPage()会拼接url+index.html发送http请求。

获取响应内容以后,交由searchForNewFilesToGrab()处理。

这个方法的意义就在于将静态资源一并保存至本地,避免出现样式问题。这里分别取了link[href]、script[src]、img[src]并传入addLinkToFrontier()。

而上述静态资源的路径则会依次保存至filesToGrab。

至此,获取index.html页面信息的getWebpage()已经分析完毕,到这里似乎没什么问题。

但我们接着看循环获取filesToGrab内页面内容的getWebpage()。显然,这里过于信任了用户输入,并没有传入指定的fileName。

这样流程就又来到了这里:

但我们传入的是jsp,并不在判断条件内,接着看下else分支,从注释上也能明白,这里直接保存至本地了,最终导致了远程命令执行。

漏洞复现

首先开启恶意服务器:

接着将地址传入漏洞接口的url参数中即可。

受影响资产

该漏洞关联的web服务资产总数为20032个,独立IP数为1428个。

修复方案

目前厂商已发布升级补丁以修复漏洞。

产品支持

网宿云WAF已第一时间支持对该漏洞利用攻击的防护,并持续挖掘分析其他变种攻击方式和各类组件漏洞,第一时间上线防护规则,缩短防护“空窗期”。

  • 10
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值