平平无奇的漏洞监控脚本

  • A+
所属分类:安全闲碎
企业安全建设中告警是必不可少的一环,做为安全运营人员,应当在爆出新漏洞时第一时间获取讯息并着手应急进行内部排查,防止漏洞被外部利用造成损失。网上有开源的基于GitHub的CVE及其POC监控,大多数厂商应急响应中心也都有自己的漏洞告警平台。此脚本基于阿里云的漏洞告警平台和钉钉机器人,实现功能: 最新漏洞告警机器人钉钉通知。

1、钉钉机器人

钉钉机器人api接口文档:

https://developers.dingtalk.com/document/app/document-upgrade-notice#/serverapi2/krgddi

添加机器人

平平无奇的漏洞监控脚本

平平无奇的漏洞监控脚本

def send_msg(self,message):
url = 'https://oapi.dingtalk.com/robot/send?access_token={your dingtalk access_token}'
headers = {'Content-Type': 'application/json;charset=utf-8'}
self.message = message
data = {
"msgtype": "text",
"text": {
"content": self.message
}
}
r = requests.post(url, data=json.dumps(data), headers=headers)
return r.text

参考钉钉api文文档配置好机器人,进行测试:

平平无奇的漏洞监控脚本

没有问题,下一步获取阿里云告警的漏洞链接。

2、获取漏洞链接

请求地址:

https://help.aliyun.com/noticelist/9213612.html

平平无奇的漏洞监控脚本

通过正则获取当前页漏洞告警的标题、时间以及漏洞具体链接:

# 获取漏洞标题、时间、链接
re_link = re.findall(r'<a href="(.*?)" >【漏洞通告】', req.text)
re_time = re.findall(r'<span class="y-right">(.*?)<span class="time">', req.text)
re_vlu = re.findall(r'html" >(.*?)</a>', req.text)

将得到的漏洞时间与当日时间做对比(之后可以把脚本当作定时脚本放在服务器上,每24h执行一次,实现功能)

3、获取漏洞详情

在第二步获取到最新的漏洞链接之后,对漏洞详情进行爬取。

for url in url_list:
    req = requests.get(url=url)
res = BeautifulSoup(req.text, "html.parser")
# 漏洞标题
vlu_name = res.h3.get_text()
# 漏洞描述
vlu_describe = res.find_all("div", id="se-knowledge")[0].p.get_text()
vlu_list.append(vlu_name + "n" + vlu_describe + "n" + "漏洞详情:" + str(url) + "n")

4、定时任务

脚本写好之后就可以放在服务器上跑定时任务啦。

git clone https://github.com/yliang54/SecAlert.git
cd SecAlert
# 注意,这在要在VulAlert.py中替换自己钉钉机器人的token

添加定时任务,用crontab -e进入当前用户的工作表添加以下行,时间和频率可以自己控制。

52 11  * * * python3 /root/taotao/test/SecAlert/VulAlert.py

测试结果:平平无奇的漏洞监控脚本

代码GitHub链接:

https://github.com/yliang54/SecAlert

加日志、添加其他脚本等等希望有机会再写。努力!

本文始发于微信公众号(安全鸭):平平无奇的漏洞监控脚本

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: