基于Scrapy的漏洞监控平台

主要目的用于安全研究,获取最新安全咨询。基于scrapy框架,使用scrapy-redis插件提升爬虫性能,实现增量爬取。redis同时作为数据库保存数据。

主要目的用于安全研究,获取最新安全咨询,无任何漏洞利用细节,严禁用于非法活动。为了保证信息的易读性,CVE漏洞详细信息主要参照CNNVD官网信息,可能导致部分CVE无法被收录。更多信息可以通过关注CVE官方的Twitter获取。

快速开始

下载项目

1
git clone https://github.com/ttonys/Scrapy-CVE-CNVD

安装依赖(python3环境)

1
pip install -r requirements.txt

redis安装—-docker

1
2
docker pull redis
docker run -itd --name redis-test -p 6379:6379 redis

redis安装—-本机

1
参照网上教程

修改配置,pipelines.py文件36-38行,使用自己注册163邮箱,以及所获取的授权码(非个人密码)

1
2
3
fromaddr = '[email protected]'
password = 'xxxxxxxxxxxxxx'
toaddrs = '[email protected]'

修改配置,run.sh中,将路径修改为自己本机的路径,参照如下:

1
2
3
#!/bin/bash
cd /root/OnePiece
/usr/local/bin/scrapy crawl all-redis

测试,将run.sh改为755权限,运行./run.sh,查看是否收到邮件通知

添加定时任务,注意使用绝对路径,按照本机实际路径填写,参考如下(每天下午2点半执行):

1
30 14 * * * /root/OnePiece/run.sh

框架流程

image-20200322173852414

具体功能

image-20200322175258081

相关配置

以下配置均在setting.py文件中设置

日志等级,主要为了简化输出,便于查看爬取结果

1
LOG_LEVEL = "WARNING"

爬取间隔,防止访问过快被ban

1
DOWNLOAD_DELAY = 3

请求头设置

1
2
3
4
5
USER_AGENT = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.1.6)'
DEFAULT_REQUEST_HEADERS = {
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language': 'en',
}

中文编码

1
FEED_EXPORT_ENCODING = 'utf-8'

使用scrapy-redis插件

1
2
3
4
5
6
7
8
9
10
11
#确保所有的爬虫通过Redis去重
DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter"

# 启动从reids缓存读取队列,调度爬虫
SCHEDULER = "scrapy_redis.scheduler.Scheduler"

# 调度状态持久化,不清理redis缓存,允许暂停/启动爬虫
SCHEDULER_PERSIST = True

# 请求调度使用优先队列(默认)
SCHEDULER_QUEUE_CLASS = 'scrapy_redis.queue.SpiderPriorityQueue'

爬取目标

国家信息安全漏洞共享平台

1
https://www.cnvd.org.cn/

国家信息安全漏洞库

1
http://www.cnnvd.org.cn/

today-cve

1
https://cassandra.cerias.purdue.edu/CVE_changes/today.html

cve官网

1
https://cve.mitre.org/

运行示例

数据保存

image-20200324221552567

邮件内容

image-20200324222446514

Author: Sys71m
Link: https://www.sys71m.top/2020/03/29/基于Scrapy的漏洞监控平台/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.