freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

金格iWebOffice控件分析
CSeroad 2023-08-31 10:28:24 179536

前言

众所周知,多个oa中都使用了金格iWebOffice控件。但在不同的oa中exp多少存在差异性,尝试从代码层一探究竟。

简介

金格iWebOffice控件是一种文档控件,能够在浏览器上进行编辑word文档、excel表格等文档最终保存在服务器上,手写签名、电子签章广泛应用于此。所以oa都喜欢使用。

漏洞分析

以某oa为例,本地搭建OfficeServer.jsp进行访问。

image.png

image.png

首先创建iWebOffice类的实例,officeServer对象调用ExecuteRun方法。并传入request、response。

image.png

在ExecuteRun方法里,会创建出数据库对象和创建信息包对象。

image.png

iMsgServer2000 方法里DBSTEP V3.0字符串赋值为this._$906this._$903创建出临时文件。
而后调用deleteOnExit方法删除临时文件。

回到ExecuteRun方法里,往下判断请求方法是否为Post请求。

image.png

即必须使用Post方法进行请求。

image.png

当使用Post方法请求时,首先进入MsgObj.Load方法。跟进该方法。

image.png

一个修改编码的操作,然后调用了_$1027方法。

image.png

在该方法里以输入流的方式一次性读取到mRead,而后从mRead中读取64位长度保存到HeadString字符串中。
接下来截取HeadString字符串的0-15位赋值为this._$906,16-31位赋值为BodySize(int类型),32-47位赋值为ErrorSize(int类型),48-63位赋值为this._$907(int类型)即FileSize。
代码走到这个地方,我们可以尝试初步构造一下这64位长度。

aaaaaaaaaaaaaaaa1               2               3

debug 跟踪一下

image.png

和我们计算的一样。

image.png

然后mRead会继续读取BodySize大小的数据并赋值为this._$904

可试读前30%内容
¥ 9.9 全文查看
9.9元开通FVIP会员
畅读付费文章
最低0.3元/天
# web安全 # 漏洞分析
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 CSeroad 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
CSeroad LV.2
这家伙太懒了,还未填写个人描述!
  • 13 文章数
  • 26 关注者
JNA 调用动态链接库
2023-05-04
Powershell免杀从入门到实践
2021-02-01
reGeorg简要分析
2020-09-03
文章目录