【技术原创】渗透基础——Exchange版本探测的优化 - 嘶吼 RoarTalk – 网络安全行业综合服务平台,4hou.com

【技术原创】渗透基础——Exchange版本探测的优化

3gstudent 技术 2022-09-26 11:10:00
100447
收藏

导语:为了进一步提高效率,本文介绍另外一种实现方法,通过访问官网,从返回数据中直接提取出详细的版本信息,优点是不再需要定期更新脚本。

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


本文为 3gstudent 原创稿件,授权嘶吼独家发布,如若转载,请注明原文地址
  • 分享至
取消

感谢您的支持,我会继续努力的!

扫码支持

打开微信扫一扫后点击右上角即可分享哟

发表评论

 
本站4hou.com,所使用的字体和图片文字等素材部分来源于原作者或互联网共享平台。如使用任何字体和图片文字有侵犯其版权所有方的,嘶吼将配合联系原作者核实,并做出删除处理。
©2022 北京嘶吼文化传媒有限公司 京ICP备16063439号-1 本站由 提供云计算服务