GithubHelp home page GithubHelp logo

yuligesec / watchvuln Goto Github PK

View Code? Open in Web Editor NEW

This project forked from zema1/watchvuln

31.0 0.0 2.0 18.79 MB

一个高价值漏洞采集与推送服务 | A valueable vulnerability collection and push service

License: MIT License

Go 99.19% Dockerfile 0.81%

watchvuln's Introduction

WatchVuln 高价值漏洞采集与推送

众所周知,CVE 漏洞库中 99% 以上的漏洞只是无现实意义的编号。我想集中精力看下当下需要关注的高价值漏洞有哪些,而不是被各类 RSS 和公众号的 威胁情报 淹没。 于是写了这个小项目来抓取部分高质量的漏洞信息源然后做推送。 WatchVuln意为监测 漏洞更新,同时也表示这些漏洞需要注意

当前抓取了这几个站点的数据:

名称 地址 推送策略
阿里云漏洞库 https://avd.aliyun.com/high-risk/list 等级为高危或严重或中危
OSCS开源安全情报预警 https://www.oscs1024.com/cm 等级为高危或严重或中危
奇安信威胁情报中心 https://ti.qianxin.com/ 等级为高危严重或中危
知道创宇Seebug漏洞库 https://www.seebug.org/ 存在 WAF,默认不启用,若通过 SOURCES/-s 手动启用,则推送等级为高危或严重或中危

所有信息来自网站公开页面, 如果有侵权,请提交 issue, 我会删除相关源。

如果有更好的信息源也可以反馈给我,需要能够响应及时 & 有办法过滤出有价值的漏洞

具体来说,消息的推送有两种情况, 两种情况有内置去重,不会重复推送:

  • 新建的漏洞符合推送策略,直接推送,
  • 新建的漏洞不符合推送策略,但漏洞信息被更新后符合了推送策略,也会被推送

app

快速使用

支持下列推送方式:

使用 Docker

Docker 方式推荐使用环境变量来配置服务参数

环境变量名 说明 默认值
DB_CONN 数据库链接字符串,详情见 数据库连接 sqlite3://vuln_v3.sqlite3
DINGDING_ACCESS_TOKEN 钉钉机器人 url 的 access_token 部分
DINGDING_SECRET 钉钉机器人的加签值 (仅支持加签方式)
LARK_ACCESS_TOKEN 飞书机器人 url 的 /open-apis/bot/v2/hook/ 后的部分
LARK_SECRET 飞书机器人的加签值 (仅支持加签方式)
WECHATWORK_KEY 微信机器人 url 的 key 部分
SERVERCHAN_KEY Server酱的 SCKEY
WEBHOOK_URL 自定义 webhook 服务的完整 url
BARK_URL Bark 服务的完整 url, 路径需要包含 DeviceKey
SOURCES 启用哪些漏洞信息源,逗号分隔, 可选 avd, ti, oscs, seebug avd,ti,oscs
INTERVAL 检查周期,支持秒 60s, 分钟 10m, 小时 1h, 最低 1m 30m
ENABLE_CVE_FILTER 启用 CVE 过滤,开启后多个数据源的统一 CVE 将只推送一次 true
NO_FILTER 禁用上述推送过滤策略,所有新发现的漏洞都会被推送 false
NO_START_MESSAGE 禁用服务启动的提示信息 false

比如使用钉钉机器人

docker run --restart always -d \
  -e DINGDING_ACCESS_TOKEN=xxxx \
  -e DINGDING_SECRET=xxxx \
  -e INTERVAL=30m \
  -e ENABLE_CVE_FILTER=true \
  yulige/watchvuln:latest

当然,你可以仓靠使用本仓库的 docker-compose.yaml 文件,使用 docker-compose 来启动容器。

每次更新记得重新拉镜像:

docker pull yulige/watchvuln:latest
使用飞书机器人
docker run --restart always -d \
  -e LARK_ACCESS_TOKEN=xxxx \
  -e LARK_SECRET=xxxx \
  -e INTERVAL=30m \
  yulige/watchvuln:latest
使用企业微信机器人
docker run --restart always -d \
  -e WECHATWORK_KEY=xxxx \
  -e INTERVAL=30m \
  yulige/watchvuln:latest
使用自定义 Bark 服务
docker run --restart always -d \
  -e BARK_URL=http://xxxx \
  -e INTERVAL=30m \
  yulige/watchvuln:latest
使用自定义 Webhook 服务

通过自定义一个 webhook server,可以方便的接入其他服务, 实现方式可以参考: example

docker run --restart always -d \
  -e WEBHOOK_URL=http://xxx \
  -e INTERVAL=30m \
  yulige/watchvuln:latest
使用server酱机器人
docker run --restart always -d \
  -e SERVERCHAN_KEY=xxxx \
  -e INTERVAL=30m \
  yulige/watchvuln:latest
使用多种服务

如果配置了多种服务的密钥,那么每个服务都会生效, 比如使用钉钉和企业微信:

docker run --restart always -d \
  -e DINGDING_ACCESS_TOKEN=xxxx \
  -e DINGDING_SECRET=xxxx \
  -e WECHATWORK_KEY=xxxx \
  -e INTERVAL=30m \
  yulige/watchvuln:latest

初次运行会在本地建立全量数据库,大约需要 1 分钟,可以使用 docker logs -f [containerId] 来查看进度, 完成后会在群内收到一个提示消息,表示服务已经在正常运行了。

使用二进制

前往 Release 下载对应平台的二进制,然后在命令行执行。命令行参数请参考 Docker 环境变量部分的说明,可以一一对应。

USAGE:
   watchvuln [global options] command [command options] [arguments...]

GLOBAL OPTIONS:
   [Push Options]

   --bark-url value, --bark value             your bark server url, ex: http://127.0.0.1:1111/DeviceKey
   --dingding-access-token value, --dt value  webhook access token of dingding bot
   --dingding-sign-secret value, --ds value   sign secret of dingding bot
   --lark-access-token value, --lt value      webhook access token of lark
   --lark-sign-secret value, --ls value       sign secret of lark
   --serverchan-key value, --sk value         send key for server chan
   --webhook-url value, --webhook value       your webhook server url, ex: http://127.0.0.1:1111/webhook
   --wechatwork-key value, --wk value         webhook key of wechat work

   [Launch Options]

   --db-conn value, --db value  database connection string (default: "sqlite3://vuln_v3.sqlite3")
   --enable-cve-filter          enable a filter that vulns from multiple sources with same cve id will be sent only once (default: true)
   --interval value, -i value   checking every [interval], supported format like 30s, 30m, 1h (default: "30m")
   --no-filter, --nf            ignore the valuable filter and push all discovered vulns (default: false)
   --no-github-search, --ng     don't search github repos and pull requests for every cve vuln (default: false)
   --no-start-message, --nm     disable the hello message when server starts (default: false)
   --sources value, -s value    set vuln sources (default: "avd,nox,oscs")

   [Other Options]

   --debug, -d    set log level to debug, print more details (default: false)
   --help, -h     show help (default: false)
   --version, -v  print the version (default: false)

在参数中指定相关 Token 即可, 比如使用钉钉机器人

$ ./watchvuln --dt DINGDING_ACCESS_TOKEN --ds DINGDING_SECRET -i 30m
使用飞书机器人
$ ./watchvuln --lt LARK_ACCESS_TOKEN --ls LARK_SECRET -i 30m
使用企业微信机器人
$ ./watchvuln --wk WECHATWORK_KEY -i 30m
使用server酱机器人
$ ./watchvuln --sk xxxx -i 30m
使用自定义 Bark 服务
$ ./watchvuln --bark http://xxxx -i 30m
使用自定义 Webhook 服务

通过自定义一个 webhook server,可以方便的接入其他服务, 实现方式可以参考: example

$ ./watchvuln --webhook http://xxxx -i 30m
使用多种服务

如果配置了多种服务的密钥,那么每个服务都会生效, 比如使用钉钉和企业微信:

$ ./watchvuln --dt DINGDING_ACCESS_TOKEN --ds DINGDING_SECRET --wk WECHATWORK_KEY -i 30m

数据库连接

默认使用 sqlite3 作为数据库,数据库文件为 vuln_v3.sqlite3,如果需要使用其他数据库,可以通过 --db 参数或是环境变量 DB_CONN 指定连接字符串,当前支持的数据库有:

  • sqlite3://filename
  • mysql://user:pass@host:port/dbname
  • postgres://user:pass@host:port/dbname

注意:该项目不做数据向后兼容保证,版本升级可能存在数据不兼容的情况,如果报错需要删库重来。

常见问题

  1. 服务重启后支持增量更新吗

    支持,每次检查会按照一定的策略去增量抓取

  2. Docker 拉取镜像提示 not found

    你使用的 Docker 版本太老了,不支持新的镜像格式,需要升级一下 Docker 版本,参考 #16

其他

为了减少内卷,该工具在 00:00 到 07:00 间会去 sleep 不会运行, 请确保你的服务器是正确的时间!

扫码加我拉进讨论群,请备注申请理由为:问题反馈与讨论,否则不通过

wechat

watchvuln's People

Contributors

freeahao avatar lzskyline avatar rayepeng avatar testwill avatar yuligesec avatar zema1 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Forkers

threedr3am lpzsec

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.