Skip to content

Commit

Permalink
feat: support insecure tls
Browse files Browse the repository at this point in the history
close #108
  • Loading branch information
zema1 committed Nov 14, 2024
1 parent ddb19db commit fcb1d8b
Show file tree
Hide file tree
Showing 4 changed files with 58 additions and 26 deletions.
12 changes: 12 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,15 @@
## v2.2.0 (2024-11-14)

### 新增

- 提高多个推送服务时的稳定性
- 增加 `-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
54 changes: 29 additions & 25 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,32 +46,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 列表,使用 `,` 分割 | |
| 环境变量名 | 说明 | 默认值 |
|-------------------------|-----------------------------------------------------------------------------------|-----------------------------------------|
| `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` | 给所有请求配置代理, 详情见 [配置代理](#配置代理) | |
| `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 @@ -357,6 +358,9 @@ watchvuln 支持配置上游代理来绕过网络限制,支持两种方式:
支持 `socks5://xxxx` 或者 `http(s)://xxkx` 两种代理形式。
参数 `-k/--insecure` 或者环境变量 `GO_SKIP_TLS_CHECK=1` 可以禁用 tls 校验,即会设置 `InSecureSkipVerify` 为 `true`,在抓包调试时会
比较有用。
## 推送内容筛选
如果你只想推送某些产品的漏洞,可以通过配置白名单或者黑名单来实现。这两个参数传入的都是一个文件,文件格式为每行一个产品名,比如:
Expand Down
14 changes: 13 additions & 1 deletion 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.1.3"
var Version = "v2.2.0"

func main() {
golog.Default.SetLevel("info")
Expand Down Expand Up @@ -199,6 +199,12 @@ func main() {
Usage: "skip init vuln db, push new vulns then exit",
Category: "[Launch Options]",
},
&cli.BoolFlag{
Name: "insecure",
Aliases: []string{"k"},
Usage: "allow insecure server connections when using SSL/TLS",
Category: "[Other Options]",
},
&cli.BoolFlag{
Name: "debug",
Aliases: []string{"d"},
Expand Down Expand Up @@ -303,6 +309,7 @@ func initConfigFromCli(c *cli.Context) (*ctrl.WatchVulnAppConfig, error) {
diff := c.Bool("diff")
whitelistFile := c.String("whitelist-file")
blacklistFile := c.String("blacklist-file")
insecure := c.Bool("insecure")

if os.Getenv("INTERVAL") != "" {
iv = os.Getenv("INTERVAL")
Expand Down Expand Up @@ -333,6 +340,11 @@ func initConfigFromCli(c *cli.Context) (*ctrl.WatchVulnAppConfig, error) {
must(os.Setenv("HTTP_PROXY", os.Getenv("HTTPS_PROXY")))
}

if insecure {
// 这个环境变量仅内部使用,go 本身并不支持
must(os.Setenv("GO_SKIP_TLS_CHECK", "1"))
}

log.Infof("config: INTERVAL=%s, NO_FILTER=%v, NO_START_MESSAGE=%v, NO_GITHUB_SEARCH=%v, ENABLE_CVE_FILTER=%v",
iv, noFilter, noStartMessage, noGithubSearch, cveFilter)

Expand Down
4 changes: 4 additions & 0 deletions util/http.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import (
"errors"
"github.com/imroc/req/v3"
"github.com/kataras/golog"
"os"
"time"
)

Expand Down Expand Up @@ -33,6 +34,9 @@ func NewHttpClient() *req.Client {
}
return false
})
if os.Getenv("GO_SKIP_TLS_CHECK") != "" {
client.EnableInsecureSkipVerify()
}
return client
}

Expand Down

0 comments on commit fcb1d8b

Please sign in to comment.