Skip to content

黑名单

🚫 目标过滤,防 SSRF 与危险探测。

URLBlacklistpkg/runner/blacklist.go)在采集前检查目标,命中则拒绝。

默认规则

DefaultBlacklist 屏蔽:

  • 🏠 本地与内网:localhost127.0.0.0/810.0.0.0/8172.16.0.0/12192.168.0.0/16169.254.0.0/16fc00::/7
  • ☁️ 云元数据:169.254.169.254metadata.google.internalmetadata.internalmetadata.service
  • 🔐 敏感内部服务:consul.service.consulvault.service.consul
  • 🗄️ 数据库端口:*:1433*:3306*:5432*:6379

规则语法

语法示例说明
CIDR10.0.0.0/8网段匹配
正则.*:6379任意 host 的 6379 端口
字面量localhost精确匹配

CLI

bash
# 默认(启用默认规则)
snir scan file -f urls.txt

# 追加自定义
snir scan file -f urls.txt --blacklist-pattern "internal.local"

# 规则文件
snir scan file -f urls.txt --blacklist-file blocklist.txt

# 禁用(仅受控内网)
snir scan file -f hosts.txt --enable-blacklist=false

SDK

go
opts := sdk.NewScreenshotOptions(
    sdk.WithDefaultBlacklist(),
    sdk.WithBlacklist("internal.local", "10.0.0.0/8"),
    sdk.WithBlacklistFile("blocklist.txt"),
)

规则文件

每行一条规则,支持 # 注释。

安全

黑名单对域名与 IP 双重拦截的实际时序(以 internal.local 为例):

SSRF 防护底线

  • ✅ 生产环境保留默认黑名单
  • ✅ 对用户输入的目标先过黑名单再采集
  • ❌ 仅在授权内网扫描时才 --enable-blacklist=false

云元数据是 SSRF 重灾区

169.254.169.254 等云元数据端点能泄露临时凭证/实例身份。默认黑名单已屏蔽,切勿为图方便而禁用

下一步

基于 MIT 许可发布