前言

本文主要介绍了笔者利用一个简单的Python脚本实现漏洞情报的监控以及自动通报的相关经验。


一、背景

笔者所在公司某一个业务系统用到了漏洞频发的Struts2框架,S2-045爆发的时候刚好是刚进公司不久,还没有落实好漏洞通报排查工作,因此该业务系统的服务器就因为这个漏洞沦陷了,后续又接连出了好几个RCE漏洞,好在及时发布了预警和响应排查,没有受到影响。鉴于S2的漏洞频繁爆发,且动不动就是RCE,搞得运维和开发大佬们慌得一批,因此笔者希望能够在漏洞信息发布后第一时间获取到相关信息以便于排查整改。

二、需求

如上面所讲的,笔者需要第一时间知道新的S2漏洞信息以便于排查整改,最笨的方法就是每天刷各大安全社区,高级一点的可以搭建漏洞信息监控平台,业界有许多威胁情报、态势感知方面的安全产品能够实现这个需求,但由于笔者想要节(gong)约(si)成(mei)本(qian),因此通过自己写python脚本来实现。

三、实现方法

首先要确定的是漏洞信息的来源,笔者选择了S2官方安全通告发布网页: https://0×http://9.me/ePYq8 ,页面内容如图所示:




python网络监控 开源 python监控网页_自定义


然后是监控漏洞信息的方法,笔者是通过python脚本自动监控上图网页中的漏洞公告,当出现新发布的公告时,马上发送短信通知。下面是详细的流程图:


python网络监控 开源 python监控网页_日志输出_02


相信很多大佬已经看出来了其实原理很简单,就是读取网页内容后查找监控对象(S2-xxx)。虽然大佬们已经一眼识破了,但笔者出于敬业精神还是简单介绍一下脚本运行的基本流程:

1.定义监控地址(url)为官方安全通告网址,定义监控对象(key)为漏洞编号(S2-xxx); 2.请求并读取url的html内容 3.利用find函数在html中查找key 4.若不存在则sleep后返回第2步骤 5.若存在则调用阿里云send_mail发送短信通知(也可改为邮件通知) 6.sleep后key值递增后返回第2步骤

收到的短信是这样的,短信内容可自定义:


python网络监控 开源 python监控网页_自定义_03


对阿里云短信接口有兴趣的大佬可自行传送: https://0×http://9.me/tGu80

为了知道脚本是否正常运行,笔者还加入了日志输出功能:

2019-07-25 08:49:15 INFO S2-058 does not exist yet. 2019-07-25 10:49:19 INFO S2-058 does not exist yet. 2019-07-25 11:17:59 INFO S2-057 existed! 2019-07-25 11:18:35 INFO S2-058 does not exist yet.

第三条记录就是笔者手动测试并发送上图短信的日志输出。

四、总结

本文介绍了笔者如何利用一个听起来有点厉害但实际原理很傻瓜的python脚本实现了S2漏洞信息的监控和信息通知。通过自定义目标网页和对象,本文介绍的方法也可以用于其他漏洞的监控,希望本文内容能帮助到其他有漏洞情报监控这方面需求的企业。