0x00 前言
本文将要介绍Zimbra版本探测的多种方法,通过Python实现自动化,记录开发细节,开源代码。
0x01 简介
本文将要介绍以下内容:
实现思路
实现细节
开源代码
0x02 实现思路
查看Zimbra版本的方法有很多,各有优缺点,具体方法如下:
1.通过Web管理页面
通过浏览器访问7071管理页面,在主页面会显示当前Zimbra版本
例如我的测试环境显示为:
Zimbra Version: 9.0.0_GA_4273.NETWORK
通过该方法获得的版本为准确版本
2.通过执行命令
注:
Zimbra补丁更新可参考:
https://wiki.zimbra.com/wiki/Zimbra_Releases/9.0.0/patch_installation
3.通过Zimbra SOAP API
默认配置下,zimbraSoapExposeVersion属性为FLASE,查询命令:
返回结果:
需要将zimbraSoapExposeVersion属性设置为TRUE后,可以通过Zimbra SOAP API获得版本,修改属性的命令为:
发送的SOAP格式示例:
默认配置下的返回结果:
4.通过imap协议
5.通过imap over ssl协议
6.通过特定url
0x03 实现细节
综合以上探测方法,为了适应多种环境,在程序实现上选取了通过imap协议、通过imap over ssl协议和通过特定url三种方法实现
1.通过imap协议
完整示例代码:
2.通过imap over ssl协议
需要将ip转为hostname作为参数,示例代码:
完整示例代码:
存在部分环境无法将ip转为hostname,导致报错:[Errno 11004] host not found,所以在程序判断逻辑上优先使用imap协议
3.通过特定url
完整示例代码:
0x04 开源代码
完整的实现代码已上传至github,地址如下:
https://github.com/3gstudent/Homework-of-Python/blob/master/Zimbra_GetVersion.py
代码首先尝试通过特定url获得版本信息,再通过imap协议读取版本信息,如果失败,最后通过imap over ssl协议读取版本信息
0x05 小结
本文介绍了Zimbra版本探测的多种方法,比较优缺点,选取有效的方法并通过Python实现自动化,记录开发细节,开源代码,作为一个很好的学习示例。