皇冠体育寻求亚洲战略合作伙伴,皇冠代理招募中,皇冠平台开放会员注册、充值、提现、电脑版下载、APP下载。

首页科技正文

usdt转账手续费(www.caibao.it):行使zimbra clientuploader实现文件上传

admin2021-03-2430技术

USDT自动充值接口

菜宝钱包(caibao.it)是使用TRC-20协议的Usdt第三方支付平台,Usdt收款平台、Usdt自动充提平台、usdt跑分平台。免费提供入金通道、Usdt钱包支付接口、Usdt自动充值接口、Usdt无需实名寄售回收。菜宝Usdt钱包一键生成Usdt钱包、一键调用API接口、一键无实名出售Usdt。

0x00 前言

Zimbra邮件服务器的治理面板支持文件上传的功效,通常情形下,我们通过治理员用户登录治理面板,使用名为Client Upload的功效即可将文件上传至Zimbra邮件服务器的downloads目录。

这内里我们需要进一步的思索,实现文件上传的方式有哪些?若何禁用文件上传的功效?能否通过第三方扩展或者插件实现文件上传?能否绕过?

本文仅在手艺研究的角度回覆以上问题

0x01 简介

本文将要先容以下内容:

· 原理剖析

· 通过zimbraAdmin治理面板实现文件上传

· 通过zimlet实现文件上传

· 通过Zimbra SOAP API实现文件上传

· 行使思绪

· 防御建议

0x02 原理剖析

Zimbra邮件服务器通过com_zimbra_clientuploader实现文件上传的功效。

我们可以在Zimbra邮件服务器的安装文件中找到文件上传功效对应的文件。

对应安装目录下的文件为/opt/zimbra/lib/ext/com_zimbra_clientuploader/com_zimbra_clientuploader.jar

为了查看详细的实现代码,这里需要对jar文件举行反编译。

反编译的功效可以使用JD-GUI,地址:http://java-decompiler.github.io/

使用JD-GUI打开com_zimbra_clientuploader.jar,文件结构如下图:

(1)文件上传功效的主函数

对应文件ClientUploaderHandler.class

(2)文件上传功效的写入位置

对应文件ClientUploaderLC.class,如下图:

写入位置为/opt/zimbra/jetty/webapps/zimbra/downloads

(3)响应代码对应的内容

对应文件ZClientUploaderResoCode.class,如下图:

内容如下:

  SUCCEEDED(1L, "Succeeded"),
  FAILED(20000000L, "Upload failed"),
  NOT_A_FILE(20000001L, "The request does not upload a file"),
  REPO_INVALID(20000002L, "Invalid directory for client repo or temporary files."),
  REPO_NO_WRITE(20000003L, "No write permission on directory for client repo or temporary files"),
  SAVE_ERROR(20000004L, "Failed to save the upload file"),
  PARSE_REQUEST_ERROR(20000005L, "Failed to parse the request"),
  FILE_EXCEED_LIMIT(20000006L, "File size exceeds allowed max size"),
  MISSING_LIB_PATH(30000001L, "Cannot find lib directory so cannot execute zmupdatedownload"),
  UPDATE_LINK_FAILED(30000002L, "Failed to update links in downloads/index.html"),
  NO_PERMISSION(40000001L, "Permission denied");

可以用来判断上传失败的缘故原由。

综合以上代码,我们可以得出以下推断:

1.com_zimbra_clientuploader作为Zimbra的一部门,保留在安装目录下,实现文件上传的功效,提供文件上传的接口。

2.通过Zimbra治理面板能够安装第三方插件,一种是扩展Zimbra治理面板的功效,对应名称为Admin Extensions,另一种是扩展客户端的功效,对应名称为Zimlets。

3.无论是Admin Extensions照样Zimlets,实现文件上传都要挪用com_zimbra_clientuploader提供的文件上传接口。反过来说,只要禁用了。com_zimbra_clientuploader提供的文件上传接口,那么使用Admin Extensions和Zimlets都无法实现文件上传。

下面划分先容三种实现文件上传的方式并验证我们的推断。

0x03 通过zimbraAdmin治理面板实现文件上传

通过治理员用户登录治理面板,选择Tools and Migration->Client Upload,如图:

上传乐成后,Zimbra邮件服务器的保留路径:/opt/zimbra/jetty/webapps/zimbra/downloads

0x04 通过zimlet实现文件上传

Zimlets用来扩展客户端的功效,也就是说,当安装了Zimlets,使用通俗用户登录邮箱时,就能够接见已安装的Zimlets。

如下图:

Zimlets的开发可以参考https://wiki.zimbr *** /wiki/Zimlet_Developers_Guide:Example_Zimlets。

注:

Zimlets支持运行jsp文件,然则默认关闭该功效。

,

usdt支付接口

菜宝钱包(www.caibao.it)是使用TRC-20协议的Usdt第三方支付平台,Usdt收款平台、Usdt自动充提平台、usdt跑分平台。免费提供入金通道、Usdt钱包支付接口、Usdt自动充值接口、Usdt无需实名寄售回收。菜宝Usdt钱包一键生成Usdt钱包、一键调用API接口、一键无实名出售Usdt。

,

查看是否开启的下令:

zmprov gs < mail domain name > | grep zimbraZimletJspEnabled

启用Zimbra执行jsp的下令:

zmprov ms < mail domain name > zimbraZimletJspEnabled TRUE
zmcontrol restart

这里举例举行说明,使用示例Zimlets Simple_ *** P_via_Action,下载地址:

https://wiki.zimbr *** /wiki/ZCS_6.0:Zimlet_Developers_Guide:Examples:Simple_ *** P_via_Action

通过Zimbra治理面板举行安装,如下图:

选择安装文件com_zimbra_example_simplejspaction.zip。

使用通俗用户登录邮箱,在Zimlets下能够接见已安装的Zimlets,如下图:

点击后,发现jsp文件能够接见,然则无法运行,如下图:


这里我找到了一种有趣的文件上传方式:虽然无法运行jsp文件,然则可以运行html文件,那么我们何不通过html实现文件上传呢?

新建文件upload.html,内容如下:

其中,

将upload.html压缩到com_zimbra_example_simplejspaction.zip中,重新通过Zimbra治理面板举行安装。

使用通俗用户登录邮箱,接见https://

如下图:


直接上传会失败,这是由于通俗用户没有上传文件的权限。

这里可以通过修改Cookie的方式,实现文件上传。

添加Cookie的名称为ZM_ADMIN_AUTH_TOKEN,Cookie的数值可在登录Zimbra治理面板后的Cookie中获得。

同时要删除通俗用户的Cookie,对应名称为ZM_AUTH_TOKEN。

完整的Cookie名堂如下图:

上传乐成后,在Zimbra邮件服务器的/opt/zimbra/jetty/webapps/zimbra/downloads下可以看到对应的文件。

为了进一步行使,我们可以实验添加一个隐藏的zimlet,这里以名称com_zimbra_test为例。

com_zimbra_test.xml的文件内容如下:

安装后,在用户邮箱内的Zimlets中显示为空行,如下图:

0x05 通过Zimbra SOAP API实现文件上传

代码可参考:

https://github.com/3gstudent/Homework-of-Python/blob/master/Zimbra_SOAP_API_Manage.py

细节可参考之前的文章《Zimbra-SOAP-API开发指南2》。

0x06 验证推断

修改Zimbra邮件服务器/opt/zimbra/jetty/webapps/zimbra/downloads目录的用户接见权限,将Create and delete files修改为List files only

再次使用以上三种方式上传文件,均失败,返回效果如下:

20000003对应的内容为"No write permission on directory for client repo or temporary files",示意权限不够。

由此验证了之前的推论:

只要禁用了com_zimbra_clientuploader提供的文件上传接口,那么使用Admin Extensions和Zimlets都无法实现文件上传。

0x07 防御建议

禁用Zimbra邮件服务器/opt/zimbra/jetty/webapps/zimbra/downloads目录的用户写入权限。

0x08 小结

本文先容了Zimbra邮件服务器三种实现文件上传的方式,得出结论:只要禁用了com_zimbra_clientuploader提供的文件上传接口,去除用户的写权限,使用Admin Extensions和Zimlets都无法实现文件上传。

本文为 3gstudent 原创稿件,授权嘶吼独家公布,

网友评论