####################
免责声明:工具本身并无好坏,希望大家以遵守《网络安全法》相关法律为前提来使用该工具,支持研究学习,切勿用于非法犯罪活动,对于恶意使用该工具造成的损失,和本人及开发者无关。
####################
描述
Seekret是一个可以从各种源里面查找敏感信息的Go库和命令行工具。可以用它来防止将敏感信息发布到容易暴露的位置上。
安装seekret
可以直接使用go get命令来安装seekret
go get github.com/apuigsech/seekret/cmd/seekret
用法
常规选项
NAME:
seekret - seek for secrets on various sources.
USAGE:
seekret [global options] command [command options] [arguments...]
VERSION:
0.0.1
:
Albert Puigsech Galicia <[email protected]>
COMMANDS:
seek:
git 从git仓库中搜索敏感信息。
dir 搜索文件夹下的敏感信息。
GLOBAL OPTIONS:
FILE, -x FILE 从FILE中加载exceptions。
PATH rules的路径。[$SEEKRET_RULES_PATH]
value, -f 指定输出格式.(默认:"human")
FILE, -k FILE 从FILE中加载known secrets。
value, -w value 检查时使用的线程个数(默认:4)
-h 显示帮助信息
-v 打印版本号
--exception
--rules
--format
--known
--workers
Git的选项
NAME:
seekret git - 搜索仓库里的敏感信息。
USAGE:
seekret git [command options] [arguments...]
CATEGORY:
seek
OPTIONS:
value, -c value (default: 0)
--count
Dir的选项
NAME:
seekret dir - 搜文件夹下的敏感信息。
USAGE:
seekret dir [command options] [arguments...]
CATEGORY:
seek
OPTIONS:
-r
--hidden
--recursive
--hidden
例子
扫描本地仓库所有commits中的全部文件
seekret git /path/to/repo
扫描远程仓库所有commits里的全部文件
seekret git http://github.com/apuigsech/seekret-exposed
扫描本地仓库里的最后一个commit里的全部文件
seekret git --count 1 /path/to/repo
扫描本地文件夹下的所有文件(包括隐藏文件)
seekret dir --recursive --hidden /path/to/dir
动手实践
seekret-secrets是准备用来测试seekret的,可以用来执行下面的例子:
1、检查远程git仓库:
seekret --rules $GOPATH/src/github.com/apuigsech/seekret/rules/ git https://github.com/apuigsech/seekret-secrets.git
2、检查本地git仓库:
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:
seekret --rules $GOPATH/src/github.com/apuigsech/seekret/rules/ git -c 2 /tmp/seekret-secrets
4、在检查中使用exceptions:
seekret --rules $GOPATH/src/github.com/apuigsech/seekret/rules/ -x /tmp/seekret-secrets/.exception_1 git /tmp/seekret-secrets
库的用法
导入seekret库
import seekret "github.com/apuigsech/seekret/lib"
初始化seekret上下文
s := seekret.NewSeekret()
加载Rules
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")
加载对象
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
s.LoadExceptionsFromFile("/path/to/exceptions/file")
检查
s.Inspect(5)
获取检查结果
secretsList := s.ListSecrets()
Rules规则
敏感信息的特征是通过rules文件中的规则来标识的。这些扩展名为“.rule”的文件按照下面的格式用YAML来定义:
rulename:
match: [regexp]
unmatch:
- [regexp]
- [regexp]
- ...
对于包含敏感信息的文件,必须满足”match”正则表达式,并且不符合“unmatch”里的任何正则表达式规则。
Exceptions例外
Exceptions里的条件决定了什么内容不是敏感信息。按照下面的格式使用YAML来定义:
...
-
rule: [rulename]
object: [regexp]
line: [linenumber]
content: [regexp]
-
...
这些条件是可选的,因此不是所有的条件都要指定,但是被认为是例外的内容必须满足所有指定的条件。
各种条件的含义解释:
rule 规则的名称。
object 匹配对象名称(通常是文件名)的正则表达式。
line 对象中的行数。
content 匹配内容的正则表达式。
下载地址
https://github.com/apuigsech/seekret
原文始发于微信公众号(菜鸟小新):Seekret:GitHub仓库和目录敏感信息搜索工具
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论