九维团队-绿队(改进)| I Doc View /html/2word 文件上传漏洞分析和缓解

admin 2023年12月4日23:51:10评论41 views字数 2151阅读7分10秒阅读模式

九维团队-绿队(改进)|  I Doc View /html/2word 文件上传漏洞分析和缓解

01

写在前边


I Doc View在线文档预览是一款在线文档预览系统,可以实现文档的预览及文档协作编辑功能。其存在代码执行漏洞,使得攻击者可以通过利用这个接口,触发服务器下载并解析恶意文件,从而导致远程命令执行漏洞。进而控制服务器上的进程和文件。


02

漏洞分析


漏洞位置在

com.idocv.docview.controller.HtmlController#toWord

*左右滑动查看更多


首先根据输入的URL地址,计算出其MD5值,然后创建相应的目录和文件。


目录命名是data/urlhtml/计算出的md5,创建的结构是:

- data    - urlhtml      - <md5(URL地址)>        - index.html      - <md5(URL地址)>.docx

如果经过MD5计算后的目标HTML文件不存在,则通过GrabWebPageUtil工具类的downloadHtml()方法。

九维团队-绿队(改进)|  I Doc View /html/2word 文件上传漏洞分析和缓解

跟进downloadHtml方法。


从指定的URL地址下载HTML页面,并将其保存到文件中, 如果该HTML文件包含其他链接,则递归下载这些链接对应的文件。

九维团队-绿队(改进)|  I Doc View /html/2word 文件上传漏洞分析和缓解

看下getWebPage里的实现。

九维团队-绿队(改进)|  I Doc View /html/2word 文件上传漏洞分析和缓解

首先从URL中获取文件名。通过调用obj.getPath()方法获取URL的路径,截取最后一个/后的字符串作为文件名。

九维团队-绿队(改进)|  I Doc View /html/2word 文件上传漏洞分析和缓解

如果从URL中获取到的文件名为空,则将文件名设为default.html。


接下来判断传入的文件名是否为空或空白字符串。如果传入的文件名不为空则将其设为实际文件名。

九维团队-绿队(改进)|  I Doc View /html/2word 文件上传漏洞分析和缓解

最后,根据输出目录和文件名创建新文件。

九维团队-绿队(改进)|  I Doc View /html/2word 文件上传漏洞分析和缓解

这里虽然有个黑名单,但是没有jsp,不影响。

if (!filename.endsWith("html") && !filename.endsWith("htm") && !filename.endsWith("asp") && !filename.endsWith("aspx") && !filename.endsWith("php") && !filename.endsWith("php") && !filename.endsWith("net")) {                try {                    fop = new FileOutputStream(outputFile);                    is = conn.getInputStream();                    byte[] buffer = new byte[16384];
int length; while((length = is.read(buffer)) > 0) { fop.write(buffer, 0, length); }
fop.flush(); } catch (IOException var29) { var29.printStackTrace(); }
return; }

*左右滑动查看更多


也就是需要传入的文件名为空,url为下载的链接就可以了。


回去看downloadHtml中调用getWebPage的地方,一共有两处。


在第二处,也就是for循环中调用getWebPage没有传入文件名,接下来就是看怎么走进for循环。

九维团队-绿队(改进)|  I Doc View /html/2word 文件上传漏洞分析和缓解

当linksToGrabSize不为0也就是说html中包含其他文件链接时,就会依次调用getWebPage下载文件。


看下GrabUtility类这个linksToGrabSize怎么来的。


在searchForNewFilesToGrab中解析HTML页面中包含的链接,提取出所有类型为link、script和img的元素,并获取其href或src属性(即对应的文件链接),然后调用addLinkToFrontier将其添加到文件链接列表GrabUtility.filesToGrab中。

九维团队-绿队(改进)|  I Doc View /html/2word 文件上传漏洞分析和缓解

而这个searchForNewFilesToGrab是在getWebPage中调用的。

九维团队-绿队(改进)|  I Doc View /html/2word 文件上传漏洞分析和缓解

所以在downloadHtml中第一次调用getWebPage时传入的url需为一个html页面切包含其他下载链接。

九维团队-绿队(改进)|  I Doc View /html/2word 文件上传漏洞分析和缓解

至此总结下来就是,需要构造一个含有需要下载的webshell链接的html页面,然后传入url就可以了,由于是windows安装的所以文件名设置为....夸目录就可以了。

九维团队-绿队(改进)|  I Doc View /html/2word 文件上传漏洞分析和缓解


03

漏洞复现


构造html页面,放好要下载的文件。

九维团队-绿队(改进)|  I Doc View /html/2word 文件上传漏洞分析和缓解

python起一个http服务。

九维团队-绿队(改进)|  I Doc View /html/2word 文件上传漏洞分析和缓解


九维团队-绿队(改进)|  I Doc View /html/2word 文件上传漏洞分析和缓解


九维团队-绿队(改进)|  I Doc View /html/2word 文件上传漏洞分析和缓解


九维团队-绿队(改进)|  I Doc View /html/2word 文件上传漏洞分析和缓解



记得穿一次之后换一个url链接再穿下一个。


04

修复建议


1、目前官方已发布安全修复版本,受影响用户可以自行更新或者联系相关技术支持获取最新版本或补丁修复漏洞。

https://api.idocv.com


2、在WAF(Web 应用防火墙)侧拦截受影响接口的请求,可以通过配置规则集或过滤规则,识别并拦截尝试利用该接口漏洞的恶意请求。


3、关闭该系统对外开放,配置防火墙规则,仅允许来自受信任网络的流量访问系统。通过限制源 IP 地址范围,降低系统面临的潜在攻击面。


4、定期对iDoc View的代码进行审计,以查找潜在的漏洞和安全问题。可以使用静态代码分析工具或进行代码审查来加强安全性。


往期回顾

九维团队-绿队(改进)|  I Doc View /html/2word 文件上传漏洞分析和缓解

九维团队-绿队(改进)|  I Doc View /html/2word 文件上传漏洞分析和缓解

九维团队-绿队(改进)|  I Doc View /html/2word 文件上传漏洞分析和缓解

九维团队-绿队(改进)|  I Doc View /html/2word 文件上传漏洞分析和缓解

九维团队-绿队(改进)|  I Doc View /html/2word 文件上传漏洞分析和缓解

九维团队-绿队(改进)|  I Doc View /html/2word 文件上传漏洞分析和缓解


关于安恒信息安全服务团队
安恒信息安全服务团队由九维安全能力专家构成,其职责分别为:红队持续突破、橙队擅于赋能、黄队致力建设、绿队跟踪改进、青队快速处置、蓝队实时防御,紫队不断优化、暗队专注情报和研究、白队运营管理,以体系化的安全人才及技术为客户赋能。

九维团队-绿队(改进)|  I Doc View /html/2word 文件上传漏洞分析和缓解

九维团队-绿队(改进)|  I Doc View /html/2word 文件上传漏洞分析和缓解

九维团队-绿队(改进)|  I Doc View /html/2word 文件上传漏洞分析和缓解

原文始发于微信公众号(安恒信息安全服务):九维团队-绿队(改进)| I Doc View /html/2word 文件上传漏洞分析和缓解

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年12月4日23:51:10
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   九维团队-绿队(改进)| I Doc View /html/2word 文件上传漏洞分析和缓解https://cn-sec.com/archives/2267303.html

发表评论

匿名网友 填写信息