泛微Eoffice 某2个文件多处任意文件读取/多处任意文件上传可直接getshell

漏洞概要

缺陷编号:WooYun-2015-0125638

漏洞标题:泛微Eoffice 某2个文件多处任意文件读取/多处任意文件上传可直接getshell

相关厂商:泛微E-Office

漏洞作者:Bear baby

提交时间:2015-07-11 16:31

公开时间:2015-10-11 14:52

漏洞类型:文件上传导致任意代码执行

危害等级:高

自评Rank:18

漏洞状态:已交由第三方合作机构(cncert国家互联网应急中心)处理

Tags标签:

漏洞详情

披露状态:

2015-07-11: 细节已通知厂商并且等待厂商处理中
2015-07-13: 厂商已经确认,细节仅向厂商公开
2015-07-16: 细节向第三方安全合作伙伴开放(绿盟科技、唐朝安全巡航、无声信息)
2015-09-06: 细节向核心白帽子及相关领域专家公开
2015-09-16: 细节向普通白帽子公开
2015-09-26: 细节向实习白帽子公开
2015-10-11: 细节向公众公开

简要描述:

第二发来临。。老师在给我们放电影。。赶紧发完,嘻嘻。

详细说明:

某2个文件多处任意文件读取文件位置:

这两个文件是IwebOffice控件的一个操作文件,经对比代码完全一样。估计又是copy出来的。代码比较长,只贴相关代码1.第一处读取任意文件。相关代码如下

通过$OPTION进入LOADFILE流程。$mFileName = $_REQUEST['FILENAME'];文件名通过REQUEST提交,且控件$MsgObj->MsgFileLoad( $mFullPath )读取文件没有进行判断。所以造成可读取任意文件。默认读取目录为/attachment/所以我们构造访问地址如iweboffice/officeserver.php?OPTION=LOADFILE&FILENAME=../mysql_config.ini如下图

第二处任意文件读取,相关代码如下:

通过$OPTION进入的是LOADTEMPLATE流程。$mTemplate = $TEMPLATE;$mCommand = $COMMAND;TEMPLATE为要读取的文件名,当COMMAND为INSERTFILE时进入$MsgObj->MsgFileLoad( $mFilePath."/".$mTemplate );同上没有进行验证过滤等操作,造成任意文件读取。默认读取目录为/attachment/所以我们构造访问地址如iweboffice/officeserver.php?OPTION=LOADTEMPLATE&COMMAND=INSERTFILE&TEMPLATE=../mysql_config.ini如下图

第三处

同样的问题,不再详细分析。构造地址/iweboffice/officeserver.php?OPTION=GETFILE&REMOTEFILE=../mysql_config.ini如下图

二。某文件多处任意文件上传,可直接getshell第一处,相关代码如下

表单可以自行构造一下。OPTION为SAVEFILE,FILENAME是保存的文件名可以自己命名。Fiddler抓包如下

如下图。

第二处 相关代码如下

OPTION为SAVETEMPLATE,TEMPLATE是文件名可以自己命名。Fiddler抓包如下

那串STATUS是base64编码,内容为文件的物理路径如下图

以下还有4处,基本思路和上面的完全一样,构造参数不一样而已,不再详细叙述过程,只贴相关代码,可自行测试。第三处

第四处

第五处

第六处

文件位置:/webservice/upload/upload.php/webservice-json/upload/upload.php/webservice-xml/upload/upload.php这三处文件经过对比内容完全一样,估计程序猿童鞋直接copy一下就使用。相关代码如下:

依然没有任何过滤,保存路径如下

构造个上传表单如下:

对应Fiddler抓包

如下图:返回目录名和文件名,对应路径即/attachment/3704096226/1.php

漏洞证明:

**.**.**.**:8082//案例还是从别人那找的,嘻嘻

**.**.**.**:8082

修复方案:

漏洞回应

厂商回应:

危害等级:高

漏洞Rank:13

确认时间:2015-07-1314:50

厂商回复:

CNVD确认所述情况,已经由CNVD通过以往建立的处置渠道向软件生产厂商通报。

最新状态:

暂无

评价

  1. 2010-01-01 00:00 浮萍 白帽子 | Rank:326 漏洞数:33)

    总结一下,我也去来一发