技术博客 > 正文

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

2024-02-19

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

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

受影响版本
iDocView < 13.10.1_20231115

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

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

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

网宿科技前三季度净利润4.26亿元,同比增长142.85%

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

网宿科技前三季度净利润4.26亿元,同比增长142.85%

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

网宿科技前三季度净利润4.26亿元,同比增长142.85%

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

网宿科技前三季度净利润4.26亿元,同比增长142.85%

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

网宿科技前三季度净利润4.26亿元,同比增长142.85%

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

网宿科技前三季度净利润4.26亿元,同比增长142.85%
网宿科技前三季度净利润4.26亿元,同比增长142.85%

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

网宿科技前三季度净利润4.26亿元,同比增长142.85%

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

网宿科技前三季度净利润4.26亿元,同比增长142.85%

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

网宿科技前三季度净利润4.26亿元,同比增长142.85%

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

网宿科技前三季度净利润4.26亿元,同比增长142.85%

漏洞复现
首先开启恶意服务器:

网宿科技前三季度净利润4.26亿元,同比增长142.85%

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

网宿科技前三季度净利润4.26亿元,同比增长142.85%

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

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

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

本文内容的版权持有者为网宿科技股份有限公司(“网宿科技”),未经许可,不得转载。