一款全面且强大可平替xray的扫描器,支持被动主动扫描-漏洞探测
使用前请详细阅读文档
主动模式
使用 crawlergo 爬虫实现 主动模式下可以通过指定 –copilot 来进入 Security Copilot 模式,扫描完不退出,方便查看 web 结果页面
./Jie web -t https://public-firing-range.appspot.com/ -p xss -o vulnerability_report.html –copilot
不指定 web 的用户名密码,会自动生成一个yhy/密码,可以在日志中查看,比如下面就是自动生成的
INFO [cmd:webscan.go(glob):55] Security Copilot web report authorized:yhy/3TxSZw8t8w
被动模式(Security Copilot)
被动代理 通过 go-mitmproxy 实现。
Security Copilot
为什么称之为 Security Copilot,按照我的构想,这不仅仅是一个漏洞扫描器,还是一个集大成的辅助工具。
挂上扫描器后,过一遍网站,即使没有漏洞,也要告诉我这个网站的大致信息(指纹、cdn、端口信息、敏感信息、API 路径、子域名等等),这样帮助人工进行进一步的梳理,辅助挖洞,而不是扫描完毕没洞就是完事了,还要人工重新过一遍。
证书下载
被动代理下HTTPS 网站需要安装证书,HTTPS 证书相关逻辑与 mitmproxy 兼容,并保存在 ~/.mitmproxy 文件夹中。
安装信任根证书, 安装步骤可参考 Python mitmproxy 文档:About Certificates。
启动
./Jie web –listen :9081 –web 9088 –user yhy –pwd 123 –debug
这样会监听 9081 端口,web 界
使用前请详细阅读文档
主动模式
使用 crawlergo 爬虫实现 主动模式下可以通过指定  --copilot  来进入 Security Copilot 模式,扫描完不退出,方便查看 web 结果页面
./Jie web -t https://public-firing-range.appspot.com/ -p xss -o vulnerability_report.html --copilot不指定 web 的用户名密码,会自动生成一个 yhy/密码 ,可以在日志中查看,比如下面就是自动生成的
INFO [cmd:webscan.go(glob):55] Security Copilot web report authorized:yhy/3TxSZw8t8w
被动模式(Security Copilot)
被动代理 通过 go-mitmproxy 实现。
Security Copilot
为什么称之为  Security Copilot ,按照我的构想,这不仅仅是一个漏洞扫描器,还是一个集大成的辅助工具。
挂上扫描器后,过一遍网站,即使没有漏洞,也要告诉我这个网站的大致信息(指纹、cdn、端口信息、敏感信息、API 路径、子域名等等),这样帮助人工进行进一步的梳理,辅助挖洞,而不是扫描完毕没洞就是完事了,还要人工重新过一遍。
证书下载
被动代理下HTTPS 网站需要安装证书,HTTPS 证书相关逻辑与 mitmproxy 兼容,并保存在 ~/.mitmproxy 文件夹中。
安装信任根证书, 安装步骤可参考 Python mitmproxy 文档:About Certificates。
启动
 ./Jie  web --listen :9081 --web 9088 --user yhy --pwd 123 --debug
这样会监听 9081 端口,web 界面(SecurityCopilot)开放会在 9088 端口
浏览器指定代理 9081,或者联动 burp
面(SecurityCopilot)开放会在 9088 端口
浏览器指定代理 9081,或者联动 burp
基本使用
配置
一些配置可以通过 Jie_config.yaml修改,也可以通过 http://127.0.0.1:9088/ 的配置界面修改(web 界面修改后会实时更新到配置文件中)
./Jie web -h
Flags:
      --copilot          Blocking program, go to the default port 9088 to view detailed scan information.
                         主动模式下,可以通过指定该参数阻塞程序,扫描完不退出程序,可以到 web 端口查看信息。
  -h, --help             help for web
      --listen string    use proxy resource collector, value is proxy addr, (example: 127.0.0.1:9080).
                         被动模式监听的代理地址,默认 127.0.0.1:9080
      --np               not run plugin.
                         禁用所有的插件
  -p, --plugin strings   Vulnerable Plugin, (example: --plugin xss,csrf,sql,dir ...)
                         指定开启的插件,当指定 all 时开启全部插件
      --poc strings      specify the nuclei poc to run, separated by ','(example: test.yml,./test/*).
                         自定义的nuclei 漏洞模板地址
      --pwd string       Security Copilot web report authorized pwd.
                         web页面登录密码,不指定会随机生成一个密码
      --show             specifies whether the show the browser in headless mode.
                         主动扫描下是否显示浏览器
      --user string      Security Copilot web report authorized user, (example: yhy).]
                         web页面登录用户名,默认为yhy (default "yhy")
      --web string       Security Copilot web report port, (example: 9088)].
                         web页面端口,默认9088 (default "9088")
Global Flags:
      --debug           debug
  -f, --file string     target file
                        主动扫描目标列表,每行一个
  -o, --out string      output report file(eg:vulnerability_report.html)
                        漏洞结果报告保存地址
      --proxy string    proxy, (example: --proxy http://127.0.0.1:8080)
                        指定 http/https 代理
  -t, --target string   target
                        主动扫描目标,被动下不需要指定下载编译
https://github.com/yhy0/Jie/releases/latest 中下载对应系统的程序,全程都是由 Github Action 自动化构建,请放心使用
Linux/Mac
执行 make 即可编译
Windows
安装  MinGW
设置  CGO_ENABLED=1  ,然后  go build main.go 或者在安装 MinGM 后将 make.exe 加入环境变量,之后执行 make
与 Burp 联动
passive-scan-client 插件(强烈建议)
https://github.com/yhy0/passive-scan-client
通过三个监控开关来自由选择哪些过扫描器。注:js、css 也应该走扫描器来收集信息
Burp 设置上游代理(不推荐)
这里的上游代理 Intruder 和 Repeater 模块的流量也会走扫描器
这样会造成自己手动测试的数据流量也会全部走扫描器,这样就不好了,这一块应该是按需的。
功能
通过主动或者被动收集过来的流量插件内部会判断是否扫描过 (TODO 扫描插件是否要按某个顺序执行?)
信息收集
- 
网站指纹信息 
- 
每个网站请求的 url 收集聚合展示 
- 
网站域名信息: cdn/waf/cloud、解析记录 
- 
Jwt 自动爆破 (todo 根据域名自动生成字典) 
- 
敏感信息 
- 
主动的路径扫描(bbscan 规则 ,新增了一个指纹字段,存在指纹时只会扫描对应的规则,比如 对 php 网站就不会扫描 springboot 的规则) 
- 
端口信息 
- 
收集域名、ip、api 
插件
有的扫描会对比收集的指纹信息进行语言环境识别,防止对 php 的网站调用 java 的扫描插件
扫描目录结构
scan 目录为扫描插件库,每个目录的插件会处理不同情形
- 
PerFile 针对每个url,包括参数啥的 
- 
PerFolder 针对url的目录,会分隔目录分别访问 
- 
PerServer 对每个domain 的,也就是说一个目标只扫描一次 
| 插件 | 介绍 | 默认是否开启 | 作用域 | 
|---|---|---|---|
| xss | 语义分析、原型链污染、dom 污染点传播分析 | true | PerFile | 
| sql | 目前只实现一些简单的SQL注入检测 | true | PerFile | 
| sqlmap | 通过指定 sqlmap API 将流量转发到 sqlmap 进行注入检测 | false | PerFile | 
| ssrf | true | PerFile | |
| jsonp | true | PerFile | |
| cmd | 命令执行 | true | PerFile | 
| xxe | true | PerFile | |
| fastjson | 当检测到请求为 json 时,缝合了@a1phaboy师傅的FastjsonScan扫描器,探测 fastjson; jackson 暂未实现 | true | PerFile | 
| bypass403 | dontgo403 403 绕过检测 | true | PerFile | 
| crlf | crlf注入 | true | PerFolder | 
| iis | iis高版本短文件名猜解[iis7.5-10.x-ShortNameFuzz]( | false | PerFolder | 
| nginx-alias-traversal | Nginx 配置错误导致的目录遍历nginx | true | PerFolder | 
| log4j | log4j 漏洞检测,目前只会测试请求头 | true | PerFolder | 
| bbscan | bbscan 规则 目录扫描 | true | PerFolder | 
| PerServer(这个针对规则中指定了根目录的) | |||
| portScan | 使用 naabu 扫描 Top 1000 端口,然后使用 fingerprintx 识别服务 | false | PerServer | 
| brute | 如果开启服务爆破,会在扫描到端口服务后进行服务爆破 | PerServer | |
| nuclei | 集成nuclei | false | PerServer | 
| archive | 利用 https://web.archive.org/ 进行获取历史 url 链接(参数),然后进行扫描 | true | PerServer | 
| poc | go 写的 poc 模块检测, poc 模块依托于指纹识别,只有识别到对应的指纹才会扫描,没有插件化了 | false | PerServer | 
逻辑漏洞 TODO
添加多个用户 cookie 进行越权检测(感觉还是 burp 插件自己写测试比较好,这里应该没有必要写)
第三方库
package main
import (
    "github.com/logrusorgru/aurora"
    "github.com/yhy0/Jie/SCopilot"
    "github.com/yhy0/Jie/conf"
    "github.com/yhy0/Jie/crawler"
    "github.com/yhy0/Jie/pkg/output"
    "github.com/yhy0/logging"
    "net/url"
)
/**
  @author: yhy
  @since: 2023/12/28
  @desc: //TODO
**/
func lib() {
    logging.Logger = logging.New(conf.GlobalConfig.Debug, "", "Jie", true)
    conf.Init()
    conf.GlobalConfig.Http.Proxy = ""
    conf.GlobalConfig.WebScan.Poc = nil
    conf.GlobalConfig.Reverse.Host = "https://dig.pm/"
    conf.GlobalConfig.Passive.WebPort = "9088"
    conf.GlobalConfig.Passive.WebUser = "yhy"
    conf.GlobalConfig.Passive.WebPass = "123456" // 注意修改为强口令
    // 全部插件开启
    for k := range conf.Plugin {
        // if k == "nuclei" || k == "poc" {
        //     continue
        // }
        conf.Plugin[k] = true
    }
    if conf.GlobalConfig.Passive.WebPort != "" {
        go SCopilot.Init()
    }
    // 初始化爬虫
    crawler.NewCrawlergo(false)
    go func() {
        for v := range output.OutChannel {
            // SCopilot 显示
            if conf.GlobalConfig.Passive.WebPort != "" {
                parse, err := url.Parse(v.VulnData.Target)
                if err != nil {
                    logging.Logger.Errorln(err)
                    continue
                }
                msg := output.SCopilotData{
                    Target: v.VulnData.Target,
                }
                if v.Level == "Low" {
                    msg.InfoMsg = []output.PluginMsg{
                        {
                            Url:      v.VulnData.Target,
                            Plugin:   v.Plugin,
                            Result:   []string{v.VulnData.Payload},
                            Request:  v.VulnData.Request,
                            Response: v.VulnData.Response,
                        },
                    }
                } else {
                    msg.VulMessage = append(msg.VulMessage, v)
                }
                output.SCopilot(parse.Host, msg)
                logging.Logger.Infoln(aurora.Red(v.PrintScreen()).String())
            }
            logging.Logger.Infoln(aurora.Red(v.PrintScreen()).String())
        }
    }()
}漏洞利用(还在开发中,优先级低)
目前还在开发,帮助信息我自己都要看代码才能知道,等搞完了在写详细的。
因大部分漏洞的利用工具使用 java 编写,并且支持的java 版本不同,搞环境太费劲,恶心坏了,所以重新定义了Jie。
Jie: 一款全面而强大的漏洞 扫描 和 利用 工具。
目前版本(1.0.0)支持以下漏洞的利用
A Powerful security assessment and utilization tools
Usage:
  Jie [command]
Available Commands:
  apollo      apollo scan && exp
  fastjson    fastjson scan && exp
  help        Help about any command
  log4j       log4j scan && exp
  other       other scan && exp bb:BasicBrute、swagger:Swagger、nat:NginxAliasTraversal、dir:dir)
  s2          Struts2 scan && exp
  shiro       Shiro scan && exp
  web         Run a web scan task
  weblogic    WebLogic scan && exp
Flags:
      --debug           debug
  -f, --file string     target file
  -h, --help            help for Jie
  -o, --out string      output report file(eg:vulnerability_report.html)
      --proxy string    proxy, (example: --proxy http://127.0.0.1:8080)
  -t, --target string   target
Use "Jie [command] --help" for more information about a command.比如 Shiro key 漏洞利用
# 不指定-m 默认为爆破秘钥和利用链
Jie shiro -t http://127.0.0.1
# 利用
Jie Shiro -t http://127.0.0.1 -m exp -k 213123 -g CCK2 -e spring -km CBC --cmd whoami其中借鉴缝合了很多师傅的工具,对应的漏洞扫描和利用中有写,如有遗漏,可以联系我,添加上 后续会缝合支持更多的漏洞利用。






 
        
没有回复内容