Releases: chainreactors/gogo
Releases · chainreactors/gogo
Release list
v2.15.0
Bug Fixes
-F 解析 .dat 文件无输出 (#127)
RunnerOption在 proxy 重构中新增了ProxyDialTimeout/ProxyDialContext两个func类型字段,Go 的json.Marshal对含有func字段的结构体在类型检查阶段直接报错(即使值为 nil),导致Config.ToJson()将错误字符串写入.dat文件的 config header,使所有.dat文件损坏- 为
RunnerOpt添加json:"-"tag,与Config中其他所有运行时字段保持一致 ToJson错误处理改为返回"{}"而非错误字符串,防止写入损坏的.dat文件parseSegment增加 fallback:config header 解析失败时用默认 config 兜底,兼容已损坏的旧版 .dat 文件,可恢复其中的扫描数据parseScanResultData/parseSmartResultData遇到单行 JSON 解析错误时 skip 而非中止整段解析
其他修复
- 修复
-F格式化输出中结果重复的问题 - 修复
-o自定义分隔符未生效的问题 - 修复 jsonlines 格式解析 smart/alive 结果失败的问题
- 模板加载时跳过编译错误的模板而非中止整个加载过程
New Features
SDK 集成机制
gogo 从 CLI 工具扩展为可嵌入的扫描引擎,新增以下 SDK 集成点:
context.Context支持:扫描任务可通过 context 取消,优雅退出ResultCallback:实时回调接收每条扫描结果,无需等待扫描结束ResourceProvider:外部注入指纹/模板/端口配置等资源,替代内嵌数据BeforeInit/AfterInit钩子:扫描初始化前后的自定义扩展点RunWithArgs入口:暴露可复用的 runner,支持编程式调用- 实例级 proxy dialer(
RunnerOption.ProxyDialContext):并发多任务可使用不同代理,不再共享全局DefaultTransport
FingerPrintHub 主动指纹
- 集成 FingerPrintHub 主动指纹匹配引擎,通过
-vv参数触发 - 基于 Aho-Corasick 多模式匹配加速的指纹预筛选
大格式化输出加速
-F处理大.dat文件时性能优化,显著减少格式化输出耗时
Underlying Changes
以下变更来自底层依赖库的升级,对 gogo 的扫描能力和准确率有直接影响:
fingers(指纹引擎)
- 引擎级
CaseInsensitive开关,统一大小写匹配策略 FingersEngine自持PortPreset,消除全局变量依赖passive_onlybuild tag,允许不依赖net/http的被动模式编译- Hub/Xray 引擎改用完整模板执行,修复多请求模板
body_N塌陷为body_1的漏匹配 - 主动探测新增跨 finger 的请求缓存,相同
send_data路径只发一次 HTTP 请求 - CPE vendor:product 辅助函数,为自动化漏洞关联提供基础
neutron(模板引擎)
- 新增
ChainExecutor,通用模板链遍历执行器,替代原有的手动遍历逻辑 - 对齐 nuclei 的 redirect 策略(DontFollow / FollowAll / FollowSameHost)
- per-context CookieJar:每次模板执行自动创建独立 CookieJar,redirect 链内 Set-Cookie 正确传递
- 独立
HTTPMatch/HTTPExtract函数,可在非模板上下文中直接使用 - 全面对齐 nuclei 行为:下线 RootURL/favicon 自造机制,收敛到标准模板语义
utils(基础工具库)
httputils:HTTP 响应自动 charset 解码(GBK/Shift_JIS/EUC-KR/Big5 → UTF-8),基于 Content-Type header 和 HTML meta 标签自动检测ahocorasick:Aho-Corasick 多模式匹配引擎,支持正则文字提取和双关键字索引,用于指纹预筛选加速parsers:统一的Result基础类型、NeutronResult/ProtonFinding类型,标准化扫描结果表示httpx:通用 HTTP client 构建器,支持 proxy/timeout/redirect 预设
proxyclient(代理客户端)
- 新增 WireGuard 协议支持
- 新增 Trojan/VMess/VLess/AnyTLS/Hysteria2 协议(via extra/ 模块)
- Clash 订阅解析支持
- extra/ 重构为独立 Go 模块,按需引入
logs(日志库)
- 并发写入 mutex 保护,修复高并发场景下的竞态问题
Build
go.mod锁定go 1.17,保持 Go 1.11 / WindowsXP 交叉编译兼容- Release 构建切换至 Go 1.17,二进制体积 ~4 MB(upx 后),相比 Go 1.24 构建减少 ~30%
- 移除未使用的
nmap_service_probes(661 kB)和nmap_services(226 kB)内嵌数据 - goreleaser 新增
goregexptag,排除 go-re2 wasm 引擎(~5 MB)
v2.14.1 (re-release)
v2.14.1
- [refactor] 移除全局变量,重构内部结构 (如果你使用 gogo 作为 library,可能需要调整代码)
Changelog
- [feat] 实现 gogo SDK 和示例代码, 支持将 gogo 作为库使用
- [feat] 重构 gogo SDK 接口
- [feat] 添加扫描计时功能, #120
- [fix] 修复 TCP 指纹加载失败问题
- [fix] 修复 -v/-e 参数不生效问题
- [fix] 修复 -m s/ss 模式下的cidr解析panic , #122
Full Changelog: v2.14.0...v2.14.1
v2.14.0
破坏性更新, 支持了多次任务输出到一个文件, 重构了输出文件结构
Changelog
- [feat] 如果没有指定-o/-O自动基于-f的后缀解析输出格式
- [feat] 支持通过
!标记排除端口, #113 - [feat] 支持自动合并扫描结果, #115
- [fix] 修复ubuntu20glibc not work, #116
- [fix] 程序退出过快导致没有完全print, #105
Full Changelog: v2.13.8...v2.14.0
v2.13.8
Changelog
- [feat] 新增
--ff参数用来动态追加指纹, 支持文件和urlgogo -i baidu.com --ff finger1.yaml --ff finger2.yaml --ff http://host/finger3.yaml - [improve]
port-config支持从url加载 - [improve]
-p -会自动追加icmp,oxid, #114
Full Changelog: v2.13.7...v2.13.8
v2.13.7
v2.13.6
Changelog
- [feat] 支持代理链,
gogo --proxy socks5://1.1.1.1 --proxy http://2.2.2.2 ... - [feat] 支持http/https, socks5/socks4, ssh 代理
(基于rem的附属基础设施: https://github.com/chainreactors/proxyclient) - [enhance] --exclude/exclude-file 全局生效
- [fix] 修复fingers库多个bug
- [fix] 统一指纹匹配时的转小写逻辑
- [fix] 多个header时指纹匹配不完全的bug,例如多个Set-Cookie
- [fix] 修复UTF8ConvertString的错误使用, 内存频繁分配,CPU大量占用的bug
- [fix] 修复HTTP Chunk格式的body解析
- [fix] 修复proxyclient, fingers, utils 库对v1.11兼容性
v2.13.5
Changelog
- [fix] -n/--no 不生效的bug
- [fix] 限制http读取的数据上限为32K
- [enhance] 去掉了internal包限制, 允许gogo被其他golang程序当作lib调用 #101
Full Changelog: v2.13.4...v2.13.5
v2.13.4
Changelog
- [enhance] 将各种配置从json迁移到yaml 代价可以接受, 不影响兼容性, gogo的体积会大几十KB 修复 #96
- [enhance] 去掉了原来的json加载, 现在支持yaml加载, #93
- [enhance] gogo 在被IoM 的execute_exe加载时挂死的bug
Tempaltes
- [fix] 去除nmap特征 , chainreactors/templates#51 Thanks @lovelyjuice
Full Changelog: v2.13.3...v2.13.4
v2.13.3
Changed Log
- [fix] 修复windows xp 版本无法运行的bug #89
neutron 更新
- [enhance] neutron现在支持 req-codition 字段
templates
- shiro现在修改为常见20key爆破, Thanks: @XiaoliChan chainreactors/templates#50
- 修复portainer-login.yml chainreactors/templates#49
- 优化workflow配置
Full Changelog: v2.13.2...v2.13.3
v2.13.2
Changelog
- [feature] 支持加载端口配置文件,
-P/--port-config, 需要注意只支持json格式, 如果是yaml请转json #78 - [enhance] 在主动指纹识别时会使用random user-agent
- [enhance] 更新chainreactor相关依赖, 大量代码被重写
- [enhance] 优化-o/-O参数的help
- [enhance] 优化潜在的conn泄露问题 @XiaoliChan
fingers update
- [fix] 修复fingers引擎解析default port失效的bug
- [fix] 修复socket body字段匹配时大小写转换导致的bug chainreactors/zombie#21
- [fix] 修复socket 指纹识别中, md5/mmh3/body失效的bug
neutron update
目前绝大部分nuclei的poc都不需要修改就能在neutron上运行
- [fix] 修复一个重大bug, 该bug导致每个template只能被使用一次。chainreactors/neutron#4 #82
- [feature] 实现解析annotation, 使得存在annotation的yaml也不会报错, 实现了timeout annotation
- [enhance] 更优雅的实现randstr与randnum
- [feature] 支持DN相关变量 @XiaoliChan
- [feature] 实现yaml反序列化保留map顺序, 可以通过编译tag json兼容go1.11
- [feature] dsl新增
generate_shiro_gadget@XiaoliChan - [ehance] 解决潜在的conn泄露问题 @XiaoliChan
templates update
- 修复springboot可能导致的误报bug
Full Changelog: v2.13.1...v2.13.2