Jie(劫) 挖洞辅助工具-漏洞扫描|信息收集

Jie(劫) 挖洞辅助工具-漏洞扫描|信息收集

jie简介

Jie是一款针对web应用程序精心设计的综合安全评估和开发工具。其丰富的功能套件包括漏洞扫描、信息收集和利用,为安全专业人员和渗透测试人员不可或缺的工具包。挖洞辅助工具(漏洞扫描、信息收集)。

通过主动爬虫模式被动代理获取流量,对流量进行分析、扫描。

使用前请详细阅读文档

前提条件

  • nmap
  • masscan
  • chromium

检查机器上是否存在以上程序

如果不想安装 nmap 和 masscan,可以使用 –nps 指定不进行端口扫描,关闭检查

主动模式

内置三种爬虫模式

模式对应的参数
crawlergo 爬虫(浏览器无头模式爬虫)--craw c
默认katana 爬虫 (标准爬行模式使用标准 go http 库处理 HTTP 请求/响应。)--craw k
katana 爬虫 (浏览器无头模式爬虫)--craw kh

当使用无头模式时,可以指定 --show 来显示浏览器的爬行过程

主动模式下可以通过指定 --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/mitmproxy-ca-cert.pem。

安装信任根证书, 安装步骤可参考 Python mitmproxy 文档:About Certificates

启动

 ./Jie  web --listen :9081 --web 9088 --user yhy --pwd 123 --debug

这样会监听 9081 端口,web 界面(SecurityCopilot)开放会在 9088 端口

浏览器指定代理 9081,或者联动 burp

Jie(劫) 挖洞辅助工具-漏洞扫描|信息收集
Jie(劫) 挖洞辅助工具-漏洞扫描|信息收集
Jie(劫) 挖洞辅助工具-漏洞扫描|信息收集

基本使用

配置

一些配置可以通过 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

安装 TDM-GCC

export CGO_ENABLED=1;go build -ldflags "-s -w" -o Jie.exe main.go

与 Burp 联动

passive-scan-client 插件(强烈建议)

https://github.com/yhy0/passive-scan-client

Jie(劫) 挖洞辅助工具-漏洞扫描|信息收集

通过三个监控开关来自由选择哪些过扫描器。注:js、css 也应该走扫描器来收集信息

Burp 设置上游代理(不推荐)

Jie(劫) 挖洞辅助工具-漏洞扫描|信息收集

这里的上游代理 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 污染点传播分析truePerFile
sql目前只实现一些简单的SQL注入检测truePerFile
sqlmap通过指定 sqlmap API 将流量转发到 sqlmap 进行注入检测falsePerFile
ssrftruePerFile
jsonptruePerFile
cmd命令执行truePerFile
xxetruePerFile
fastjson当检测到请求为 json 时,缝合了@a1phaboy师傅的FastjsonScan扫描器,探测 fastjson; jackson 暂未实现truePerFile
bypass403dontgo403 403 绕过检测truePerFile
crlfcrlf注入truePerFolder
iisiis高版本短文件名猜解[iis7.5-10.x-ShortNameFuzz](falsePerFolder
nginx-alias-traversalNginx 配置错误导致的目录遍历nginxtruePerFolder
log4jlog4j 漏洞检测,目前只会测试请求头truePerFolder
bbscanbbscan 规则 目录扫描truePerFolder
PerServer(这个针对规则中指定了根目录的)
portScan使用 naabu 扫描 Top 1000 端口,然后使用 fingerprintx 识别服务falsePerServer
brute如果开启服务爆破,会在扫描到端口服务后进行服务爆破PerServer
nuclei集成nucleifalsePerServer
archive利用 https://web.archive.org/ 进行获取历史 url 链接(参数),然后进行扫描truePerServer
pocgo 写的 poc 模块检测, poc 模块依托于指纹识别,只有识别到对应的指纹才会扫描,没有插件化了falsePerServer

逻辑漏洞 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/mode"
    "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.Craw = "k"
    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())
        }
    }()
    
    mode.Active("http://testphp.vulnweb.com/", nil)
}

漏洞利用(还在开发中,优先级低)

目前还在开发,帮助信息我自己都要看代码才能知道,等搞完了在写详细的

因大部分漏洞的利用工具使用 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

其中借鉴缝合了很多师傅的工具,对应的漏洞扫描和利用中有写,如有遗漏,可以联系我,添加上 后续会缝合支持更多的漏洞利用。

https://jie.fireline.fun

参考

爬虫

crawlergo

katana

被动扫描代理

https://github.com/lqqyt2423/go-mitmproxy

Xss

语义分析、原型链污染、dom 污染点传播分析

https://github.com/w-digital-scanner/w13scan

https://github.com/ac0d3r/xssfinder

https://github.com/kleiton0x00/ppmap

SQL 注入

提取 sqlmap 中关于检测的代码,提取一部分思想就行了

poc

通过指纹识别进行对应的漏洞检测

todo 不内置 nuclei 的 yml 文件,改为官方在线下载、更新

https://github.com/projectdiscovery/nuclei

xray poc 中有些写的不规范,导致解析有问题,需要修改 比如: response.status == 200 && response.headers[“content-type”] == “text/css” && response.body.bcontains(b”$_GET[‘css’]”)

content-type 应为 Content-Type

但又好像是解析有问题

不使用 xray 的 poc,只使用 nuclei 的 yml 文件 一起使用还要整理,防止重复扫描,nuclei-template 的 poc 已经够了

漏扫

https://github.com/wrenchonline/glint

https://github.com/veo/vscan

一些其他漏洞

敏感信息

https://github.com/mazen160/secrets-patterns-db https://github.com/pingc0y/URLFinder https://github.com/1c3z/arl_files/tree/master/wih

Fastjson

https://github.com/a1phaboy/FastjsonScan

指纹

https://github.com/w-digital-scanner/w13scan

https://github.com/SleepingBag945/dddd

项目地址

GitHub:
https://github.com/yhy0/Jie

下载地址

转载请注明出处及链接

Leave a Reply

您的邮箱地址不会被公开。 必填项已用 * 标注