日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
滲透基礎(chǔ)—Exchange版本探測和漏洞檢測

0x00 前言

Exchange的版本眾多,歷史漏洞數(shù)量也很多,因此需要通過程序?qū)崿F(xiàn)版本探測和漏洞檢測。本文將要介紹通過Python進(jìn)行版本探測的兩種方法,介紹漏洞檢測的實(shí)現(xiàn)細(xì)節(jié),開源代碼。

創(chuàng)新互聯(lián)公司網(wǎng)站建設(shè)公司是一家服務(wù)多年做網(wǎng)站建設(shè)策劃設(shè)計(jì)制作的公司,為廣大用戶提供了網(wǎng)站制作、成都網(wǎng)站制作,成都網(wǎng)站設(shè)計(jì),1元廣告,成都做網(wǎng)站選創(chuàng)新互聯(lián)公司,貼合企業(yè)需求,高性價(jià)比,滿足客戶不同層次的需求一站式服務(wù)歡迎致電。

0x01 簡介

本文將要介紹以下內(nèi)容:

  • 實(shí)現(xiàn)思路
  • 實(shí)現(xiàn)細(xì)節(jié)
  • 開源代碼

0x02 實(shí)現(xiàn)思路

1.版本識別

(1)獲得精確版本(Build number)

訪問EWS接口,在Response Headers中的X-OWA-Version可以獲得精確版本,如下圖:

優(yōu)點(diǎn):精確版本(Build number)能夠?qū)?yīng)到具體的發(fā)布日期。

缺點(diǎn):方法不通用,部分舊的Exchange版本不支持。

(2)獲得粗略版本

訪問OWA接口,在回顯內(nèi)容可以獲得粗略版本,如下圖:

優(yōu)點(diǎn):方法通用。

缺點(diǎn):粗略版本無法對應(yīng)到準(zhǔn)確的發(fā)布日期,只能對應(yīng)到一個(gè)區(qū)間。

綜上,在版本識別上,首先嘗試獲得精確版本,如果無法獲得,再嘗試獲得粗略版本。

獲得版本號后,可以去官網(wǎng)查詢對應(yīng)的Exchange版本和發(fā)布日期,查詢地址: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對應(yīng)的URL:https://msrc.microsoft.com/update-guide/vulnerability/CVE-2020-0688。

在漏洞檢測上,可以將補(bǔ)丁時(shí)間作為判定依據(jù),如果識別到的Exchange版本發(fā)布日期低于某個(gè)補(bǔ)丁日期,那么判定該Exchange存在該補(bǔ)丁中描述的漏洞。

0x03 實(shí)現(xiàn)細(xì)節(jié)

1.版本識別

訪問EWS接口獲得版本的實(shí)現(xiàn)代碼:

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接口獲得版本的實(shí)現(xiàn)代碼:

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)

獲得版本號后,需要同已知的版本信息作匹配。為了提高效率,可以選擇將已知的版本信息存儲(chǔ)在列表中,元素包括Exchange版本,發(fā)布時(shí)間和版本號(Build number)。

首先從官網(wǎng)復(fù)制已知的版本信息,再通過字符串替換的方式將版本信息存儲(chǔ)在列表中。

在版本匹配時(shí),需要區(qū)別精確版本和粗略版本,精確版本可以對應(yīng)唯一的結(jié)果,而粗略版本需要篩選出所有可能的結(jié)果。

Build number格式示例:15.1.2375.24

粗略版本格式示例:15.1.2375

粗略版本的篩選方法:

對Build number字符串進(jìn)行截取,去除最后一個(gè)字符”.”后面的數(shù)據(jù),同粗略版本進(jìn)行數(shù)據(jù)對比,輸出所有結(jié)果:

代碼示例:

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.漏洞檢測

將補(bǔ)丁時(shí)間作為判定依據(jù),同樣為了提高效率,將已知的漏洞信息存儲(chǔ)的列表中,元素包括發(fā)布時(shí)間和漏洞編號。

為了便于比較時(shí)間,需要改變時(shí)間格式,例如將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 開源代碼

由于代碼內(nèi)容較長,完整的實(shí)現(xiàn)代碼已上傳至github,地址如下:

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

版本數(shù)據(jù)庫的日期為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

代碼能夠自動(dòng)識別出精確版本,如果無法識別,改為識別粗略版本,標(biāo)記出所有匹配的漏洞。

0x05 小結(jié)

本文介紹了通過Python進(jìn)行Exchange版本探測的兩種方法,介紹實(shí)現(xiàn)細(xì)節(jié),開源代碼,作為一個(gè)很好的學(xué)習(xí)示例。


網(wǎng)站題目:滲透基礎(chǔ)—Exchange版本探測和漏洞檢測
文章源于:http://www.dlmjj.cn/article/cccooci.html