Jump to content
  • Entries

    16114
  • Comments

    7952
  • Views

    86375793

Contributors to this blog

  • HireHackking 16114

About this blog

Hacking techniques include penetration testing, network security, reverse cracking, malware analysis, vulnerability exploitation, encryption cracking, social engineering, etc., used to identify and fix security flaws in systems.

0x00 前言在上篇文章《渗透基础——Exchange版本探测和漏洞检测》 介紹了通過Python進行版本探測的兩種方法,在版本識別上,首先從官網獲得已知的版本信息,將版本信息存儲在列表中,然後通過字符串匹配的方式獲得Exchange版本的詳細信息。開源的代碼Exchange_GetVersion_MatchVul.py反饋很好。但是這個方法存在一個缺點:需要定期訪問官網,手動更新掃描腳本中的版本信息列表。

為了進一步提高效率,本文介紹另外一種實現方法,通過訪問官網,從返回數據中直接提取出詳細的版本信息,優點是不再需要定期更新腳本。

0x01 簡介本文將要介紹以下內容:

马云惹不起马云通過BeautifulSoup解析網頁數據

马云惹不起马云實現細節

马云惹不起马云 開源代碼

0x02 通過BeautifulSoup解析網頁數據BeautifulSoup是一個可以從HTML或XML文件中提取數據的Python庫,可以提高開發效率。

安裝:

image.png

1.基本使用在Python實現上,需要先通過requests庫獲取網頁內容,再調用BeautifulSoup進行解析。

測試代碼:

image.png

以上代碼將會訪問https://docs.microsoft.com/en-us/exchange/new-features/build-numbers-and-release-dates?view=exchserver-2019,將網頁數據交由BeautifulSoup進行優化並顯示。

執行代碼的部分輸出結果示例:

image.png

對於以上結果,每個'tr'節點對應一個版本信息,子節點'td'為具體的版本細節。

2.只篩選出'tr'節點的內容測試代碼:

image.png

執行代碼的部分輸出結果示例:

image.png

接下來,嘗試去除無效數據。

3.提取出版本信息測試代碼:

image.png

執行代碼的部分輸出結果示例:

image.png

接下來,可以嘗試對精確版本進行匹配。

4.精確匹配版本測試代碼:

image.png

執行代碼的輸出結果示例:

image.png

對於Exchange較老的版本,無法獲得準確的版本號,所以還需要實現粗略匹配版本的功能。

5.粗略匹配版本測試代碼:

image.png

執行代碼的輸出結果示例:

image.png

6.提取出網頁數據時間為了能夠準確獲得版本信息,這裡還需要提取出網頁數據的更新時間。

標記網頁數據時間的位置:

image.png

定位該時間的代碼:

image.png

執行代碼的輸出結果示例:

image.png

提取出時間的代碼:

image.png

執行代碼的輸出結果示例:

image.png

結合以上信息,我們可以寫出新的識別Exchange版本的代碼,通過從官網讀取數據信息來獲得準確的版本,考慮自動化判斷多個目標的情況下,為了避免多次訪問網站讀取數據信息,在代碼結構上做了適當優化,只需訪問一次https://docs.microsoft.com/en-us/exchange/new-features/build-numbers-and-release-dates?view=exchserver-2019,將網頁結果保存在變量中。代碼已上傳至github,地址如下:

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

考慮到內網無法訪問官網的情況,實現了一個從本地解析網頁文件來獲得準確的版本,代碼已上傳至github,地址如下:

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

可以先訪問官網並將網頁內容保存為exchange.data,再執行腳本Exchange_GetVersion_ParseFromFile.py即可

0x03 小結本文介紹了在Exchange版本識別上的優化方法,可以不必手動更新掃描腳本中的版本信息列表,開源代碼Exchange_GetVersion_ParseFromWebsite.py和Exchange_GetVersion_ParseFromFile.py