渗透基础—Exchange版本探测和漏洞检测

0x00 前言

Exchange的版本众多,历史漏洞数量也很多,因此需要通过程序实现版本探测和漏洞检测。本文将要介绍通过Python进行版本探测的两种方法,介绍漏洞检测的实现细节,开源代码。

0x01 简介

本文将要介绍以下内容:

  • 实现思路
  • 实现细节
  • 开源代码

0x02 实现思路

1.版本识别

(1)获得精确版本(Build number)

访问EWS接口,在Response Headers中的X-OWA-Version可以获得精确版本,如下图:

优点:精确版本(Build number)能够对应到具体的发布日期。

缺点:方法不通用,部分旧的Exchange版本不支持。

(2)获得粗略版本

访问OWA接口,在回显内容可以获得粗略版本,如下图:

优点:方法通用。

缺点:粗略版本无法对应到准确的发布日期,只能对应到一个区间。

综上,在版本识别上,首先尝试获得精确版本,如果无法获得,再尝试获得粗略版本。

获得版本号后,可以去官网查询对应的Exchange版本和发布日期,查询地址:https://docs.microsoft.com/en-us/exchange/new-features/build-numbers-and-release-dates?view=exchserver-2019。

2.漏洞检测

Exchange的漏洞详情可通过访问https://msrc.microsoft.com/update-guide/vulnerability/< CVE >查看,例如:

CVE-2020-0688对应的URL:https://msrc.microsoft.com/update-guide/vulnerability/CVE-2020-0688。

在漏洞检测上,可以将补丁时间作为判定依据,如果识别到的Exchange版本发布日期低于某个补丁日期,那么判定该Exchange存在该补丁中描述的漏洞。

0x03 实现细节

1.版本识别

访问EWS接口获得版本的实现代码:

url1 ="https://"+ host +"/ews"
req = requests.get(url1, headers = headers, verify=False)
if "X-OWA-Version"in req.headers:
version = req.headers["X-OWA-Version"]
print(version)

访问OWA接口获得版本的实现代码:

url2 ="https://"+ host +"/owa"
req = requests.get(url2, headers = headers, verify=False)
pattern_version = re.compile(r"/owa/auth/(.*?)/themes/resources/favicon.ico")
version = pattern_version.findall(req.text)[0]
print(version)

获得版本号后,需要同已知的版本信息作匹配。为了提高效率,可以选择将已知的版本信息存储在列表中,元素包括Exchange版本,发布时间和版本号(Build number)。

首先从官网复制已知的版本信息,再通过字符串替换的方式将版本信息存储在列表中。

在版本匹配时,需要区别精确版本和粗略版本,精确版本可以对应唯一的结果,而粗略版本需要筛选出所有可能的结果。

Build number格式示例:15.1.2375.24

粗略版本格式示例:15.1.2375

粗略版本的筛选方法:

对Build number字符串进行截取,去除最后一个字符”.”后面的数据,同粗略版本进行数据对比,输出所有结果:

代码示例:

versionarray =[
["Exchange Server 2019 CU11 Mar22SU","March 8, 2022","15.2.986.22"],
["Exchange Server 2019 CU11 Jan22SU","January 11, 2022","15.2.986.15"],
["Exchange Server 2019 CU11 Nov21SU","November 9, 2021","15.2.986.14"],
["Exchange Server 2019 CU11 Oct21SU","October 12, 2021","15.2.986.9"],
["Exchange Server 2019 CU11","September 28, 2021","15.2.986.5"],
["Exchange Server 2019 CU10 Mar22SU",""March 8,2022", "15.2.922.27"]
]
version="15.2.986"
for value in versionarray:
if version in value[2][:value[2].rfind(".")]:
print("[+] Version:" + value[2])
print(" Product:" + value[0])
print("Date:" + value[1])

2.漏洞检测

将补丁时间作为判定依据,同样为了提高效率,将已知的漏洞信息存储的列表中,元素包括发布时间和漏洞编号。

为了便于比较时间,需要改变时间格式,例如将September 28, 2021修改成09/28/2021。

代码示例:

vularray =[
["CVE-2020-0688","02/11/2020"],
["CVE-2021-26855+CVE-2021-27065","03/02/2021"],
["CVE-2021-28482","04/13/2021"]
]
date="03/01/2021"
for value in vularray:
if (date.split('/')[2]<= value[1].split('/')[2])&(date.split('/')[1]<= value[1].split('/')[1])&(date.split('/')[0]< value[1].split('/')[0]):
print("[+] "+ value[0]+", "+ value[1])

0x04 开源代码

由于代码内容较长,完整的实现代码已上传至github,地址如下:

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

版本数据库的日期为03/21/2022。

漏洞信息包括以下编号:

  • CVE-2020-0688
  • CVE-2021-26855+CVE-2021-27065
  • CVE-2021-28482
  • CVE-2021-34473+CVE-2021-34523+CVE-2021-31207
  • CVE-2021-31195+CVE-2021-31196
  • CVE-2021-31206
  • CVE-2021-42321

代码能够自动识别出精确版本,如果无法识别,改为识别粗略版本,标记出所有匹配的漏洞。

0x05 小结

本文介绍了通过Python进行Exchange版本探测的两种方法,介绍实现细节,开源代码,作为一个很好的学习示例。

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/151350.html<

(0)
运维的头像运维
上一篇2025-03-13 12:20
下一篇 2025-03-13 12:22

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注