轻松有效地扫描敏感信息。
GShark 是一个敏感信息检测和管理平台。后端基于 Go 和 Gin 构建,当前前端基于 Vue 3、Vite、Vue Router 4、Vuex 4 和 Element Plus 构建。完整介绍请参考文章和视频。目前,所有扫描仅针对公共环境,不针对本地环境。
关于 GShark 的使用,请参考 wiki。
- 🌐 多平台支持:GitHub、GitLab、Searchcode、Postman 等
- 🔍 灵活的规则管理:自定义扫描规则和过滤,支持白名单/黑名单
- 🔑 细粒度访问控制:可配置的菜单和 API 权限
- 🔄 子域名发现:集成 gobuster 进行子域名枚举
- 🚀 Docker 部署:容器化部署,易于设置
- 📊 Vue 3 管理界面:基于 Vite 的 Web 界面,用于任务和结果管理
初始化后的默认登录账号:
gshark / gshark
# 克隆仓库
git clone https://github.com/madneal/gshark
cd gshark
# 构建并启动容器
docker-compose build && docker-compose up
Important
在 MySQL 数据库初始化之前,扫描器容器会退出。需要在 MySQL 数据库初始化后重启扫描器。
# 克隆仓库
git clone https://github.com/madneal/gshark.git
cd gshark
# 添加执行权限(只需要执行一次)
chmod +x deployment.sh
# 执行脚本构建并启动服务
./deployment.sh- Nginx
- MySQL 8.0+
- Go 1.25+,用于构建后端
- Node.js 20+ 和 npm,用于构建前端
建议使用 Nginx 部署前端。构建 Vite 项目后,将生成的 web/dist 文件放置在 /var/www/html 中,并配置 Nginx 将 /api/ 反向代理到后端服务。详细的部署教程可以观看 bilibili 或 youtube 上的视频。Windows 部署请参考此链接。
可以使用 nginx -t 定位 nginx.conf 文件,然后修改 nginx.conf:
// 根据您的需要配置用户
user www www;
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 8080;
server_name localhost;
location / {
autoindex on;
root html;
index index.html index.htm;
}
location /api/ {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
rewrite ^/api/(.*)$ /$1 break;
proxy_pass http://127.0.0.1:8888;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
include servers/*;
}
部署工作很简单。从 releases 找到对应版本的 zip 文件。
解压并将 dist 内的文件复制到 Nginx 的 /var/www/html 文件夹。
unzip gshark*.zip
cd gshark*
mv dist/* /var/www/html/
# Mac 系统
mv dist/* /usr/local/www/html/
启动 Nginx,前端部署成功。
Tip
如果您通过 Homebrew 安装了 Nginx,需要停止 Nginx:
brew services stop nginxUbuntu 启动 Nginx:
systemctl start nginx./gshark serve初始时,将 config-temp.yaml 复制为 config.yaml,并根据环境修改配置。之后,您可以直接运行 gshark 二进制文件。然后,访问 localhost:8080 进行本地部署。
如果您之前没有初始化数据库,您将首先被重定向到数据库初始化页面。
./gshark scan对于扫描服务,需要配置相应的规则。例如,GitHub 或 Gitlab 规则。
对于增量部署,应该执行 sql.md 进行相应的数据库操作。
git clone https://github.com/madneal/gshark.git
cd gshark/server
go mod tidy
cp config-temp.yaml config.yaml
go build运行 Web 服务器:
go build
./gshark serve 或者
go run main.go serve运行扫描任务:
go build
./gshark scan 或者
go run main.go scanNote
在 macOS ARM 上,服务器状态页面的 CPU 百分比采集依赖 cgo。如果需要显示 CPU 使用率,请在运行或构建后端时启用 CGO_ENABLED=1:
CGO_ENABLED=1 go run main.go servecd ../web
npm install
npm run serve
要执行 GitHub 的扫描任务,您需要添加 GitHub token 来爬取 GitHub 中的信息。您可以在 tokens 中生成 token。大多数访问范围就足够了。对于 GitLab 搜索,记得也要添加 token。
对于 Github 或 Gitlab 规则,规则将按照相应平台的语法进行匹配。您可以直接配置在 GitHub 中搜索的内容。您可以下载规则导入模板 CSV 文件,然后批量导入规则。
过滤器目前仅针对 GitHub 搜索。有三类过滤器,包括 extension、keyword、sec_keyword。对于 extension 和 keyword,它们可以用于黑名单或白名单。
更多信息,您可以参考这个视频。
您应该将 config-temp.yaml 复制为 config.yaml,并根据您的环境配置数据库信息和其他信息。
- 默认登录用户名和密码
gshark/gshark
- 数据库初始化失败
确保 MySQL 版本为 8.0 或更高。并在第二次初始化前删除数据库。
go get ./... connection error
建议启用 GOPROXY(参考这篇文章进行 golang 升级):
go env -w GOPROXY=https://goproxy.cn,direct
go env -w GO111MODULE=on
- 将 Web 部署到
nginx时,页面为空
尝试清除 LocalStorage,并确认 Nginx 的 /api/ 反向代理指向后端服务。
- macOS ARM 上服务器状态页面的 CPU 使用率显示为 0
运行或构建后端时启用 cgo:
CGO_ENABLED=1 go run main.go serve- GShark v1.5.0 版本及 Docker 使用指南
- GShark v1.3.0 版本支持 Docker
- GShark 支持多种规则类型以及规则配置建议
- 批量导入规则
- GShark部署
- windows 部署
- GShark v1.0.2 版本发布
- GShark v1.1.0 更新内容介绍
GShark 是 404Team 星链计划2.0中的一环,如果对 GShark 有任何疑问又或是想要找小伙伴交流,可以参考星链计划的加群方式。




