Seekret,GitHub仓库和目录敏感信息搜索工具
- 发表于
- 安全工具
Seekret是一个可以从各种源里面查找敏感信息的Go库和命令行工具。
命令行用法
描述
seekret从不同源(目录中的文件或者git仓库)中搜索敏感信息。可以用它来防止将敏感信息发布到容易暴露的位置上。
安装seekret
可以直接使用go get命令来安装seekret
1 |
go get github.com/apuigsech/seekret/cmd/seekret |
用法
常规选项
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
NAME: seekret - seek for secrets on various sources. USAGE: seekret [global options] command [command options] [arguments...] VERSION: 0.0.1 AUTHOR(S): Albert Puigsech Galicia <albert@puigsech.com> COMMANDS: seek: git 从git仓库中搜索敏感信息。 dir 搜索文件夹下的敏感信息。 GLOBAL OPTIONS: --exception FILE, -x FILE 从FILE中加载exceptions。 --rules PATH rules的路径。[$SEEKRET_RULES_PATH] --format value, -f 指定输出格式.(默认:"human") --known FILE, -k FILE 从FILE中加载known secrets。 --workers value, -w value 检查时使用的线程个数(默认:4) --help, -h 显示帮助信息 --version, -v 打印版本号 -x, --exception --rules -f, --format -k, --known -w, --workers |
Git的选项
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
NAME: seekret git - 搜索仓库里的敏感信息。 USAGE: seekret git [command options] [arguments...] CATEGORY: seek OPTIONS: --count value, -c value (default: 0) -c, --count |
Dir的选项
1 2 3 4 5 6 7 8 9 10 11 12 |
NAME: seekret dir - 搜文件夹下的敏感信息。 USAGE: seekret dir [command options] [arguments...] CATEGORY: seek OPTIONS: --recursive, -r --hidden -r, --recursive -h, --hidden |
例子
扫描本地仓库所有commits中的全部文件
1 |
seekret git /path/to/repo |
扫描远程仓库所有commits里的全部文件
1 |
seekret git http://github.com/apuigsech/seekret-exposed |
扫描本地仓库里的最后一个commit里的全部文件
1 |
seekret git --count 1 /path/to/repo |
扫描本地文件夹下的所有文件(包括隐藏文件)
1 |
seekret dir --recursive --hidden /path/to/dir |
动手实践
seekret-secrets是准备用来测试seekret的,可以用来执行下面的例子:
1、检查远程git仓库:
1 |
seekret --rules $GOPATH/src/github.com/apuigsech/seekret/rules/ git https://github.com/apuigsech/seekret-secrets.git |
2、检查本地git仓库:
1 2 3 |
git clone https://github.com/apuigsech/seekret-secrets.git /tmp/seekret-secrets seekret --rules $GOPATH/src/github.com/apuigsech/seekret/rules/ git /tmp/seekret-secrets |
3、检查最近2个commits:
1 |
seekret --rules $GOPATH/src/github.com/apuigsech/seekret/rules/ git -c 2 /tmp/seekret-secrets |
4、在检查中使用exceptions:
1 |
seekret --rules $GOPATH/src/github.com/apuigsech/seekret/rules/ -x /tmp/seekret-secrets/.exception_1 git /tmp/seekret-secrets |
库的用法
导入seekret库
1 |
import seekret "github.com/apuigsech/seekret/lib" |
初始化seekret上下文
1 |
s := seekret.NewSeekret() |
加载Rules
1 2 3 4 5 |
s.LoadRulesFromPath("/path/to/main/rues:/path/to/other/rules:/path/to/more/rules") s.LoadRulesFromDir("/path/to/rules") s.LoadRulesFromFile("/path/to/file.rule") |
加载对象
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
opts := map[string]interface{} { "hidden": true, "recursive": false, } s.LoadObjects("dir", "/path/to/inspect", opts) opts := map[string]interface{} { "count": 10, } s.LoadObjects("dir", "/repo/to/inspect", opts) |
加载exceptions
1 |
s.LoadExceptionsFromFile("/path/to/exceptions/file") |
检查
1 |
s.Inspect(5) |
获取检查结果
1 |
secretsList := s.ListSecrets() |
Rules规则
敏感信息的特征是通过rules文件中的规则来标识的。这些扩展名为“.rule”的文件按照下面的格式用YAML来定义:
1 2 3 4 5 6 7 8 9 10 11 |
rulename: match: [regexp] unmatch: - [regexp] - [regexp] - ... |
对于包含敏感信息的文件,必须满足”match”正则表达式,并且不符合“unmatch”里的任何正则表达式规则。
Exceptions例外
Exceptions里的条件决定了什么内容不是敏感信息。按照下面的格式使用YAML来定义:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
... - rule: [rulename] object: [regexp] line: [linenumber] content: [regexp] - ... |
这些条件是可选的,因此不是所有的条件都要指定,但是被认为是例外的内容必须满足所有指定的条件。
各种条件的含义解释:
rule 规则的名称。
object 匹配对象名称(通常是文件名)的正则表达式。
line 对象中的行数。
content 匹配内容的正则表达式。
下载地址
https://github.com/apuigsech/seekret
译者:felix
原文连接:Seekret,GitHub仓库和目录敏感信息搜索工具
所有媒体,可在保留署名、
原文连接
的情况下转载,若非则不得使用我方内容。