Skip to content

Commit f31073a

Browse files
committedNov 20, 2023
feat: release v1.3.0
1 parent 875c38b commit f31073a

File tree

5 files changed

+39
-34
lines changed

5 files changed

+39
-34
lines changed
 

‎CHANGELOG.md

+8
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,14 @@
1+
## v1.3.0 (2023.11.20)
2+
3+
### 新增
4+
5+
- 增加微步在线研究响应中心公众号数据源抓取 [#48](https://github.com/zema1/watchvuln/issues/48),
6+
感谢 [@hi-unc1e](https://github.com/hi-unc1e) 的贡献
7+
18
## v1.2.3 (2023.11.09)
29

310
### 变更
11+
412
- 更新 go 版本至 1.20
513
- 更新大量依赖库
614

‎README.md

+23-22
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,13 @@
66

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

9-
| 名称 | 地址 | 推送策略 |
10-
|---------------|---------------------------------------|--------------------------------------------------|
11-
| 阿里云漏洞库 | https://avd.aliyun.com/high-risk/list | 等级为高危或严重 |
12-
| OSCS开源安全情报预警 | https://www.oscs1024.com/cm | 等级为高危或严重**并且**包含 `预警` 标签 |
13-
| 奇安信威胁情报中心 | https://ti.qianxin.com/ | 等级为高危严重**并且**包含 `奇安信CERT验证` `POC公开` `技术细节公布`标签之一 |
14-
| 知道创宇Seebug漏洞库 | https://www.seebug.org/ | 存在 WAF,默认不启用,若通过 `SOURCES`/`-s` 手动启用,则推送等级为高危或严重 |
9+
| 名称 | 地址 | 推送策略 |
10+
|-----------------|---------------------------------------------|--------------------------------------------------|
11+
| 阿里云漏洞库 | https://avd.aliyun.com/high-risk/list | 等级为高危或严重 |
12+
| OSCS开源安全情报预警 | https://www.oscs1024.com/cm | 等级为高危或严重**并且**包含 `预警` 标签 |
13+
| 奇安信威胁情报中心 | https://ti.qianxin.com/ | 等级为高危严重**并且**包含 `奇安信CERT验证` `POC公开` `技术细节公布`标签之一 |
14+
| 微步在线研究响应中心(公众号) | https://x.threatbook.com/v5/vulIntelligence | 等级为高危或严重 |
15+
| 知道创宇Seebug漏洞库 | https://www.seebug.org/ | 存在 WAF,默认不启用,若通过 `SOURCES`/`-s` 手动启用,则推送等级为高危或严重 |
1516

1617
> 所有信息来自网站公开页面, 如果有侵权,请提交 issue, 我会删除相关源。
1718
>
@@ -39,22 +40,22 @@
3940

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

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

5960
比如使用钉钉机器人
6061

‎grab/threatbook.go

+5-8
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,6 @@ func (t *ThreatBookCrawler) getVulnInfoFromFeed(ctx context.Context, rss *gofeed
7474
vuln.Title = getTitleWithoutType(rss.Title)
7575
vuln.Description = strings.TrimSpace(description)
7676
vuln.UniqueKey = doc.Find(`td:contains('微步编号') + td`).Text()
77-
t.log.Debugf("UniqueKey:\t%v", vuln.UniqueKey)
7877
vuln.From = vulnLink
7978

8079
severity := Low
@@ -92,23 +91,21 @@ func (t *ThreatBookCrawler) getVulnInfoFromFeed(ctx context.Context, rss *gofeed
9291

9392
cveIDRegexpLoose := regexp.MustCompile(`CVE-\d+-\d+`)
9493
cve := cveIDRegexpLoose.FindString(description)
95-
t.log.Debugf("Desc:\t%v", vuln.Description)
96-
t.log.Debugf("CVE:\t%q", cve)
9794

9895
vuln.CVE = cve
99-
vuln.Solutions = doc.Find(`section:contains('修复方案') + section`).Text()
96+
// 获取的不太对,先不要了
97+
//vuln.Solutions = doc.Find(`section:contains('修复方案') + section`).Text()
10098
vuln.Disclosure = doc.Find(`td:contains('公开程度') + td`).Text()
10199

102100
vuln.Tags = []string{
101+
doc.Find(`td:contains('公开程度') + td`).Text(),
103102
doc.Find(`td:contains('漏洞类型') + td`).Text(),
104103
doc.Find(`td:contains('利用条件') + td`).Text(),
105104
doc.Find(`td:contains('交互要求') + td`).Text(),
106105
doc.Find(`td:contains('威胁类型') + td`).Text(),
107106
}
108-
t.log.Debugf("Solutions:\t%v", vuln.Solutions)
109-
t.log.Debugf("Disclosure:\t%v", vuln.Disclosure)
110-
t.log.Debugf("tags:\t%v", vuln.Tags)
111-
t.log.Debugf("vuln: %v\n", vuln)
107+
t.log.Debugf("%+v", vuln)
108+
vuln.Creator = t
112109
return &vuln, nil
113110
}
114111

‎grab/threatbook_test.go

+1-2
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,11 @@ func TestThreatBook(t *testing.T) {
1717

1818
count := 0
1919
for _, v := range vulns {
20-
t.Logf("get vuln info %s", v)
20+
t.Logf("get vuln info %+v", v)
2121
count++
2222
assert.NotEmpty(v.UniqueKey)
2323
assert.NotEmpty(v.Description)
2424
assert.NotEmpty(v.Title)
25-
assert.NotEmpty(v.Disclosure)
2625
assert.NotEmpty(v.From)
2726
}
2827
assert.Greater(count, 1)

‎main.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ import (
1616
)
1717

1818
var log = golog.Child("[main]")
19-
var Version = "v1.2.3"
19+
var Version = "v1.3.0"
2020

2121
func main() {
2222
golog.Default.SetLevel("info")
@@ -98,7 +98,7 @@ func main() {
9898
Name: "sources",
9999
Aliases: []string{"s"},
100100
Usage: "set vuln sources",
101-
Value: "avd,nox,oscs,seebug,threatbook",
101+
Value: "avd,nox,oscs,threatbook",
102102
Category: "[Launch Options]",
103103
},
104104
&cli.StringFlag{

0 commit comments

Comments
 (0)