IDocView 前台RCE漏洞分析

目录

0X00 概述

0X01 验证

0X02 分析

0X03 总结


0X00 概述

IDocView是一款能够提供在线文档预览、压缩文件预览、图纸预览、图片预览、音视频播放、协作编辑、同步展示Web应用,其html/2word存在远程代码执行漏洞

0X01 验证

vps上新建..\..\..\docview\1.jsp文件,需要注意一下VPS仅支持linux且Linux在新建文件时需要转义\例如

或者利用单引号包裹创建

由于在文件开头为.默认为隐藏文件,所以我们如果要查看文件,就需要使用ls -al命令即可查看是否创建成功

之后在vps上新建任意html文件,引入我们创建好的jsp文件即可

之后开启web服务,在受害机上访问/html/2word?url=html地址即可

之后访问根目录1.jsp即可

0X02 分析

定位到html/2word控制器

这个方法的作用大致为

  1. 创建urlhtml目录
  2. 根据URL计算出一个唯一的标识作为文件名。
  3. 之后通过isFile()判断该文件名下面index.html是否存在,注意加了!所以不存在则为真,进入GrabWebPageUtil.downloadHtml(url, htmlDir);
  4. 使用外部命令将index.html文件转换为Word文档
  5. 设置响应的Content-Type为Word文档类型。
  6. 将生成的Word文档作为响应的内容发送给客户端。

跟进downloadHtml方法

  1. 69-74行判断了url和文件目录是否为空,以及url是否http开头
  2. 76行创建URL对象
  3. 77-83行判断文件目录是否存在以及文件目录是否是个文件
  4. 84行 进入getwebPage方法

138-156行无关紧要的东西
155-176行建立URL连接,并判断状态码

180—196行,如果跳转,建立新的连接
199-106行,判断文件存在否,不存在创建、203行判断是否能写入文件

209-222行,判断文件后缀是否为html,htm,asp... 如果是获取URL连接的输入流给in,按行读in给strResponse,转成string给 htmlContent

224行,这个就比较关键了,跟进_searchForNewFilesToGrab_

上述代码的意思呢,就是从htmlcontnet中获取link、href、src等链接,跟进其中的_addLinkToFrontier_(urlToGrab, fromHTMLPageUrl);,
获取到的链接会添加进filesToGrab中

思路回到上一层,获取完的htmlContent就会被写入文件

之后我们可以看一下最底层的else语句,为最开始的if语句的分支,这里就很简单明了的写入文件,等会在提这个分支,不然理不顺

至此,整个getWebPage就走完了

回到downloadHtml中的84行

后续语句就是通过遍历_filesToGrab,_并不断调用getWebPage来下载文件,这就是整个的执行过程,漏洞发生的原因也是在于第一次执行getWebPage时由于文件后缀是以html、htm、asp、aspx、php、net结尾的就会去解析其中存在的link、href、src,并保存到_filesToGrab_中,之后在遍历_filesToGrab _中的链接,并通过getWebPage下载,在回到先前的else分支,jsp后缀的类型文件正好不在IF语句所限制中,所以直接通过else语句保存在服务器中了

而filename又是从URL中最后的/开始取,并判断了是否包含/,包含则命名为default.html,而该系统又是windwos,所以就刚好可以很巧妙的构造......\1.txt 的文件名,造成命令执行了

0X03 总结

才疏学浅,如有什么问题,希望各位师傅多多指正,欢迎大家一起交流,学习经验

原文链接:https://xz.aliyun.com/t/13096#toc-0

免费领取安全学习资料包!

渗透工具

技术文档、书籍

 

面试题

帮助你在面试中脱颖而出

视频

基础到进阶

环境搭建、HTML,PHP,MySQL基础学习,信息收集,SQL注入,XSS,CSRF,暴力破解等等

 

应急响应笔记

学习路线

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值