前几天跟同事聊到漏洞预警,一致觉得阿里云的安全公告挺及时的,于是便一拍即合,造了个轮子。。
0x00 前期准备
- 开发语言:python3.8
- 在线开发工具Replit,地址:https://replit.com/
- bash在线测试工具:https://www.dooccn.com/shell/
- 阿里云公告:https://m.aliyun.com/doc/notice_list/9213612.html
0x01 具体思路
- 爬取阿里云安全公告,并对数据进行处理
- 数据存储
- 同步到邮箱和飞书
0x02 实现过程
为了增强代码的可读性,我们将使用部分伪代码的方式来说明整个实现过程,请耐心食用 ~
具体代码实现如下:
初始化
这里我们实例化了一个session对象,并关闭https校验
from requests_html import HTMLSession session = HTMLSession() session.headers = {"User-Agent": "Mozilla/5.0 ... Safari/537.36"} session.verify = False
同时实例化一个数据库用于存储和校验数据。
import pickledb db = pickledb.load("vuls.db", True)
获取数据
然后我们开始请求公告的地址啦,这里为更好的显示进度,我们引入了tqdm模块。并以css路径选择器的方式获得每一项通告的a标签,再从中提取出链接、时间及标题。
from tqdm import tqdm from urllib.parse import urljoin url = 'https://m.aliyun.com/doc/notice_list/9213612.html' resp = session.get(url) for a in tqdm(list(resp.html.pq("div.xs-content > a").items())): links = urljoin(resp.url, a.attr("href")) date, title = a("div")
获取详情
在上一个循环,当获取到链接时我们将进入这个链接以获取更详细的信息,
其中key为漏洞证明、漏洞评级、影响版本这些相应的二级标题。而text则为相对应的所有文字内容。
resp = session.get(links) for p in resp.html.pq("div#se-knowledge > p").items(): key = p("strong").text() text = p.text().strip()
然后我们将每条公共的详情及基础数据打包成一个data字典
data = {
“date”: date.text,
“title”: title.text,
“url”: links,
“content”: { key1: text1 , … },
}
数据存储
传统功夫,点到为止。存储数据之前,我们需要先判断数据是否存在,如果不存在的话那我们需要将其保存,并下发告警任务。
key = md5(data['url']) if db.get(key): db[key] = data send_msg(data)
整理成数据消息
我们将data中的数据整理成相应的标题及消息体并准备发送。
title = data["title"] + '\n' level = data['content'].get('漏洞评级','未知').strip().split()[-1] links = data['url'] bodys = f"漏洞等级: {level}\n参考链接: <a href='{links}' target='_blank'></a> {links}"
发起预警
然后我们将通过celery的方式将告警发送到飞书及邮件。
feishu.delay(f"{title}\n\n{bodys}") mails.delay(body, title)
当然我们需要提前将飞书及邮件的配置写入相应文件。
class Config: name = "CVEMonitor" feishu_API = "..." mail_usr = "..." mail_pwd = "..." mail_host = "..." mail_port = 25 mail_targets = [ ... ]
多的我就不说了,多了我也说不出来。。不善言辞,见detector,不要吝啬你的star唷。
git clone https://github.com/oxff644/detector.git cd detector/ bash run.sh
0x03 实际效果
项目地址:https://github.com/oxff644/detector
来源:freebuf.com 2021-03-18 11:59:34 by: 0xff644
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
喜欢就支持一下吧
请登录后发表评论
注册