Skip to content

Commit

Permalink
feat: release venustech
Browse files Browse the repository at this point in the history
  • Loading branch information
zema1 committed Nov 19, 2024
1 parent 272cc7b commit 60bc57e
Show file tree
Hide file tree
Showing 6 changed files with 52 additions and 34 deletions.
17 changes: 15 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,13 +1,26 @@
## v2.3.0 (2024-11-19)

### 新增

- 新增启明星辰漏洞通知支持 `https://www.venustech.com.cn/new_type/aqtg/`
- 配置文件用户需手动添加 `venustech``sources` 里才能生效
- 其他方式自动启用

### 修复

- **修复一个逻辑问题导致新增漏洞不推送的问题**

## v2.2.0 (2024-11-14)

### 新增

- 提高多个推送服务时的稳定性
- 增加 `-k/--insecure` 或者环境变量 `GO_SKIP_TLS_CHECK` 来跳过 tls 校验,方便抓包测试 [#108](https://github.com/zema1/watchvuln/issues/108)
- 增加 `-k/--insecure` 或者环境变量 `GO_SKIP_TLS_CHECK` 来跳过 tls
校验,方便抓包测试 [#108](https://github.com/zema1/watchvuln/issues/108)

## 修复

- 修复一个推送服务报错,其他正常的服务会重复推送的问题
- 修复一个推送服务报错,其他正常的服务会重复推送的问题
- 修复 sqlite 数据库指定绝对路径报错的问题 [#110](https://github.com/zema1/watchvuln/issues/110)

## v2.1.1 (2024-10-29)
Expand Down
58 changes: 30 additions & 28 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
| 奇安信威胁情报中心 | https://ti.qianxin.com/ | 等级为高危严重**并且**包含 `奇安信CERT验证` `POC公开` `技术细节公布`标签之一 |
| 微步在线研究响应中心(公众号) | https://x.threatbook.com/v5/vulIntelligence | 等级为高危或严重 |
| 知道创宇Seebug漏洞库 | https://www.seebug.org/ | 等级为高危或严重 |
| 启明星辰漏洞通告 | https://www.venustech.com.cn/new_type/aqtg/ | 等级为高危或严重 |
| CISA KEV | https://www.cisa.gov/known-exploited-vulnerabilities-catalog | 全部推送 |
| Struts2 Security Bulletins | [Struts2 Security Bulletins](https://cwiki.apache.org/confluence/display/WW/Security+Bulletins) | 等级为高危或严重 |

Expand Down Expand Up @@ -46,33 +47,33 @@

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

| 环境变量名 | 说明 | 默认值 |
|-------------------------|-----------------------------------------------------------------------------------|-----------------------------------------|
| `DB_CONN` | 数据库链接字符串,详情见 [数据库连接](#数据库连接) | `sqlite3://vuln_v3.sqlite3` |
| `DINGDING_ACCESS_TOKEN` | 钉钉机器人 url 的 `access_token` 部分 | |
| `DINGDING_SECRET` | 钉钉机器人的加签值 (仅支持加签方式) | |
| `LARK_ACCESS_TOKEN` | 飞书机器人 url 的 `/open-apis/bot/v2/hook/` 后的部分, 也支持直接指定完整的 url 来访问私有部署的飞书 | |
| `LARK_SECRET` | 飞书机器人的加签值 (仅支持加签方式) | |
| `WECHATWORK_KEY ` | 微信机器人 url 的 `key` 部分 | |
| `SERVERCHAN_KEY ` | Server酱的 `SCKEY` | |
| `WEBHOOK_URL` | 自定义 webhook 服务的完整 url | |
| `BARK_URL` | Bark 服务的完整 url, 路径需要包含 DeviceKey | |
| `PUSHPLUS_KEY` | PushPlus的token | |
| `LANXIN_DOMAIN` | 蓝信webhook机器人的域名 | |
| `LANXIN_TOKEN` | 蓝信webhook机器人的hook token | |
| `LANXIN_SECRET` | 蓝信webhook机器人的签名 | |
| `TELEGRAM_BOT_TOKEN` | Telegram Bot Token | |
| `TELEGRAM_CHAT_IDS` | Telegram Bot 需要发送给的 chat 列表,使用 `,` 分割 | |
| `SOURCES` | 启用哪些漏洞信息源,逗号分隔, 可选 `avd`, `ti`, `oscs`, `seebug`,`threatbook`,`struts2`,`chaitin` | `avd,ti,oscs,threatbook,seebug,struts2` |
| `INTERVAL` | 检查周期,支持秒 `60s`, 分钟 `10m`, 小时 `1h`, 最低 `1m` | `30m` |
| `ENABLE_CVE_FILTER` | 启用 CVE 过滤,开启后多个数据源的统一 CVE 将只推送一次 | `true` |
| `NO_FILTER` | 禁用上述推送过滤策略,所有新发现的漏洞都会被推送 | `false` |
| `NO_START_MESSAGE` | 禁用服务启动的提示信息 | `false` |
| `WHITELIST_FILE` | 指定推送漏洞的白名单列表文件, 详情见 [推送内容筛选](#推送内容筛选) | |
| `BLACKLIST_FILE` | 指定推送漏洞的黑名单列表文件, 详情见 [推送内容筛选](#推送内容筛选) | |
| `DIFF` | 跳过初始化阶段,转而直接检查漏洞更新并推送 | |
| `HTTPS_PROXY` | 给所有请求配置代理, 详情见 [配置代理](#配置代理) | |
| `GO_SKIP_TLS_CHECK` | 跳过 tls 校验,详情见 [配置代理](#配置代理) | `false` |
| 环境变量名 | 说明 | 默认值 |
|-------------------------|-----------------------------------------------------------------------------------|---------------------------------------------------|
| `DB_CONN` | 数据库链接字符串,详情见 [数据库连接](#数据库连接) | `sqlite3://vuln_v3.sqlite3` |
| `DINGDING_ACCESS_TOKEN` | 钉钉机器人 url 的 `access_token` 部分 | |
| `DINGDING_SECRET` | 钉钉机器人的加签值 (仅支持加签方式) | |
| `LARK_ACCESS_TOKEN` | 飞书机器人 url 的 `/open-apis/bot/v2/hook/` 后的部分, 也支持直接指定完整的 url 来访问私有部署的飞书 | |
| `LARK_SECRET` | 飞书机器人的加签值 (仅支持加签方式) | |
| `WECHATWORK_KEY ` | 微信机器人 url 的 `key` 部分 | |
| `SERVERCHAN_KEY ` | Server酱的 `SCKEY` | |
| `WEBHOOK_URL` | 自定义 webhook 服务的完整 url | |
| `BARK_URL` | Bark 服务的完整 url, 路径需要包含 DeviceKey | |
| `PUSHPLUS_KEY` | PushPlus的token | |
| `LANXIN_DOMAIN` | 蓝信webhook机器人的域名 | |
| `LANXIN_TOKEN` | 蓝信webhook机器人的hook token | |
| `LANXIN_SECRET` | 蓝信webhook机器人的签名 | |
| `TELEGRAM_BOT_TOKEN` | Telegram Bot Token | |
| `TELEGRAM_CHAT_IDS` | Telegram Bot 需要发送给的 chat 列表,使用 `,` 分割 | |
| `SOURCES` | 启用哪些漏洞信息源,逗号分隔, 可选 `avd`, `ti`, `oscs`, `seebug`,`threatbook`,`struts2`,`chaitin` | `avd,ti,oscs,threatbook,seebug,struts2,venustech` |
| `INTERVAL` | 检查周期,支持秒 `60s`, 分钟 `10m`, 小时 `1h`, 最低 `1m` | `30m` |
| `ENABLE_CVE_FILTER` | 启用 CVE 过滤,开启后多个数据源的统一 CVE 将只推送一次 | `true` |
| `NO_FILTER` | 禁用上述推送过滤策略,所有新发现的漏洞都会被推送 | `false` |
| `NO_START_MESSAGE` | 禁用服务启动的提示信息 | `false` |
| `WHITELIST_FILE` | 指定推送漏洞的白名单列表文件, 详情见 [推送内容筛选](#推送内容筛选) | |
| `BLACKLIST_FILE` | 指定推送漏洞的黑名单列表文件, 详情见 [推送内容筛选](#推送内容筛选) | |
| `DIFF` | 跳过初始化阶段,转而直接检查漏洞更新并推送 | |
| `HTTPS_PROXY` | 给所有请求配置代理, 详情见 [配置代理](#配置代理) | |
| `GO_SKIP_TLS_CHECK` | 跳过 tls 校验,详情见 [配置代理](#配置代理) | `false` |

比如使用钉钉机器人

Expand Down Expand Up @@ -358,7 +359,8 @@ watchvuln 支持配置上游代理来绕过网络限制,支持两种方式:
支持 `socks5://xxxx` 或者 `http(s)://xxkx` 两种代理形式。
参数 `-k/--insecure` 或者环境变量 `GO_SKIP_TLS_CHECK=1` 可以禁用 tls 校验,即会设置 `InSecureSkipVerify` 为 `true`,在抓包调试时会
参数 `-k/--insecure` 或者环境变量 `GO_SKIP_TLS_CHECK=1` 可以禁用 tls 校验,即会设置 `InSecureSkipVerify` 为 `true`
,在抓包调试时会
比较有用。
## 推送内容筛选
Expand Down
2 changes: 1 addition & 1 deletion ctrl/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ func (c *WatchVulnAppConfig) Init() {
c.Interval = "1h"
}
if len(c.Sources) == 0 {
c.Sources = []string{"avd", "chaitin", "nox", "oscs", "threatbook", "seebug", "struts2", "kev"}
c.Sources = []string{"avd", "chaitin", "nox", "oscs", "threatbook", "seebug", "struts2", "kev", "venustech"}
}
}

Expand Down
3 changes: 3 additions & 0 deletions ctrl/ctrl.go
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,8 @@ func NewApp(config *WatchVulnAppConfig) (*WatchVulnApp, error) {
grabs = append(grabs, grab.NewStruts2Crawler())
case "kev":
grabs = append(grabs, grab.NewKEVCrawler())
case "venustech":
grabs = append(grabs, grab.NewVenustechCrawler())
default:
return nil, fmt.Errorf("invalid grab source %s", part)
}
Expand Down Expand Up @@ -373,6 +375,7 @@ func (w *WatchVulnApp) collectUpdate(ctx context.Context) ([]*grab.VulnInfo, err
return errors.Wrap(err, gb.ProviderInfo().Name)
}
hasNewVuln := false
w.log.Infof("collected %d vulns from %s", len(dataChan), source.Name)

for _, data := range dataChan {
isNewVuln, err := w.createOrUpdate(ctx, source, data)
Expand Down
2 changes: 1 addition & 1 deletion grab/venustech_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ func TestVenustech(t *testing.T) {
defer cancel()

grab := NewVenustechCrawler()
vulns, err := grab.GetUpdate(ctx, 5)
vulns, err := grab.GetUpdate(ctx, 2)
assert.Nil(err)

count := 0
Expand Down
4 changes: 2 additions & 2 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ import (
)

var log = golog.Child("[main]")
var Version = "v2.2.0"
var Version = "v2.3.0"

func main() {
golog.Default.SetLevel("info")
Expand Down Expand Up @@ -154,7 +154,7 @@ func main() {
Name: "sources",
Aliases: []string{"s"},
Usage: "set vuln sources",
Value: "avd,nox,oscs,threatbook,seebug,struts2,kev",
Value: "avd,nox,oscs,threatbook,seebug,struts2,kev,venustech",
Category: "[Launch Options]",
},
&cli.StringFlag{
Expand Down

0 comments on commit 60bc57e

Please sign in to comment.