Skip to content

Commit

Permalink
更新 README 和 帮助信息; 新增 -p all 开启全部插件
Browse files Browse the repository at this point in the history
  • Loading branch information
yhy0 committed Jan 4, 2024
1 parent e39f39a commit 938a4c8
Show file tree
Hide file tree
Showing 5 changed files with 271 additions and 53 deletions.
155 changes: 155 additions & 0 deletions Jie_config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,155 @@
version: 1.0.0

parallel: 10 #同时运行几个插件

# 全局 http 发包配置
http:
proxy: "" # 漏洞扫描时使用的代理,如: http://127.0.0.1:8080
timeout: 10 # 建立 tcp 连接的超时时间
maxConnsPerHost: 100 # 每个 host 最大连接数
retryTimes: 0 # 请求失败的重试次数,0 则不重试
allowRedirect: 0 # 单个请求最大允许的跳转数,0 则不跳转
verifySSL: false # 是否验证 ssl 证书
maxQps: 50 # 每秒最大请求数
headers: # 全局 http 请求头
forceHTTP1: false # 强制指定使用 http/1.1, 不然会根据服务器选择,如果服务器支持 http2,默认会使用 http2

# 漏洞探测的插件配置
plugins:
bruteForce:
web: false # web 服务类的爆破,比如 tomcat 爆破
service: false # 服务类的爆破,比如 mysql 爆破
usernameDict: "" # 自定义用户名字典, 为空将使用内置字典, 配置后将与内置字典**合并**
passwordDict: "" # 自定义密码字典,为空将使用内置字典, 配置后将与内置字典**合并**
cmdInjection:
enabled: true
crlfInjection:
enabled: true
xss:
enabled: true
detectXssInCookie: true # 是否探测入口点在 cookie 中的 xss
sql:
enabled: true
booleanBasedDetection: true # 是否检测布尔盲注
errorBasedDetection: true # 是否检测报错注入
timeBasedDetection: true # 是否检测时间盲注
detectInCookie: true # 是否检查在 cookie 中的注入
sqlmapApi:
enabled: false
url: "" # sqlmap api 的地址
username: "" # 认证用户名
password: "" # 认证密码
xxe:
enabled: true
ssrf:
enabled: true
bbscan: # bbscan https://github.com/lijiejie/bbscan 这种规则类目录扫描
enabled: true
jsonp:
enabled: true
log4j:
enabled: true
bypass403:
enabled: true
fastjson:
enabled: true
archive: # 从 https://web.archive.org/ 获取历史 url,作为补充扫描
enabled: true
iis: # iis 短文件名 fuzz
enabled: false
nginxAliasTraversal: # nginx 别名遍历
enabled: true
poc:
enabled: false
nuclei:
enabled: false
portScan:
enabled: false

# 反连平台配置
# 注意: 默认配置为 dig.pm, 可以使用 https://github.com/yumusb/DNSLog-Platform-Golang 自行搭建,后续看需求要不要支持别的 dnslog 平台
reverse:
host: "https://dig.pm/" # 反连平台地址
Domain: "ipv6.bypass.eu.org." # 指定反连域名

# 基础爬虫配置 这里都没写呢,后边看看要不要写一下
basicCrawler:
maxDepth: 0 # 最大爬取深度, 0 为无限制
maxCountOfLinks: 0 # 本次爬取收集的最大链接数, 0 为无限制
allowVisitParentPath: false # 是否允许爬取父目录, 如果扫描目标为 t.com/a/且该项为 false, 那么就不会爬取 t.com/ 这级的内容
restriction: # 爬虫的允许爬取的资源限制, 为空表示不限制。爬虫会自动添加扫描目标到 Hostname_allowed。
hostname_allowed: [] # 允许访问的 Hostname,支持格式如 t.com、*.t.com、1.1.1.1、1.1.1.1/24、1.1-4.1.1-8
hostname_disallowed: # 不允许访问的 Hostname,支持格式如 t.com、*.t.com、1.1.1.1、1.1.1.1/24、1.1-4.1.1-8
- '*.edu.*'
- '*.gov.*'
port_allowed: [] # 允许访问的端口, 支持的格式如: 80、80-85
port_disallowed: [] # 不允许访问的端口, 支持的格式如: 80、80-85
path_allowed: [] # 允许访问的路径,支持的格式如: test、*test*
path_disallowed: [] # 不允许访问的路径, 支持的格式如: test、*test*
query_key_allowed: [] # 允许访问的 Query Key,支持的格式如: test、*test*
query_key_disallowed: [] # 不允许访问的 Query Key, 支持的格式如: test、*test*
fragment_allowed: [] # 允许访问的 Fragment, 支持的格式如: test、*test*
fragment_disallowed: [] # 不允许访问的 Fragment, 支持的格式如: test、*test*
post_key_allowed: [] # 允许访问的 Post Body 中的参数, 支持的格式如: test、*test*
post_key_disallowed: [] # 不允许访问的 Post Body 中的参数, 支持的格式如: test、*test*
basic_auth: # 基础认证信息
username: ""
password: ""

# 被动代理配置
mitmproxy:
caCert: ./ca.crt # CA 根证书路径
caKey: ./ca.key # CA 私钥路径
basicAuth: # 基础认证的用户名密码
header: "Go-Mitmproxy-Authorization" # 认证头
username: ""
password: ""
exclude: # 不允许访问的 Hostname,支持格式如 t.com、*.t.com、 todo 1.1.1.1、1.1.1.1/24、1.1-4.1.1-8
- .google.
- .googleapis.
- .gstatic.
- .googleusercontent.
- .googlevideo.
- .firefox.
- .firefoxchina.cn
- .firefoxusercontent.com
- .mozilla.
- .doubleclick.
- spocs.getpocket.com
- .portswigger.net
- .gov.(com|cn)
- cdn.jsdelivr.net
- cdn-go.cn
include: # 允许访问的 Hostname,支持格式如 t.com、*.t.com、1.1.1.1、1.1.1.1/24、1.1-4.1.1-8
-
# 排除的后缀, 不会被扫描器扫描 按格式增加
filterSuffix: .3g2, .3gp, .7z, .apk, .arj, .avi, .axd, .bmp, .csv, .deb, .dll, .doc, .drv, .eot, .exe, .flv, .gif, .gifv, .gz, .h264, .ico, .iso, .jar, .jpeg, .jpg, .lock, .m4a, .m4v, .map, .mkv, .mov, .mp3, .mp4, .mpeg, .mpg, .msi, .ogg, .ogm, .ogv, .otf, .pdf, .pkg, .png, .ppt, .psd, .rar, .rm, .rpm, .svg, .swf, .sys, .tar.gz, .tar, .tif, .tiff, .ttf, .txt, .vob, .wav, .webm, .webp, .wmv, .woff, .woff2, .xcf, .xls, .xlsx, .zip
maxLength: 3000 # 这个还没有实现,我没有使用队列. 队列长度限制, 也可以理解为最大允许多少等待扫描的请求, 请根据内存大小自行调整

# 信息收集类的正则
collection:
domain:
- "['\"](([a-zA-Z0-9]{1,9}:)?//)?(.{1,36}:.{1,36}@)?[a-zA-Z0-9\\-\\.]*?\\.(xin|com|cn|net|com\\.cn|vip|top|cc|shop|club|wang|xyz|luxe|site|news|pub|fun|online|win|red|loan|ren|mom|net\\.cn|org|link|biz|bid|help|tech|date|mobi|so|me|tv|co|vc|pw|video|party|pics|website|store|ltd|ink|trade|live|wiki|space|gift|lol|work|band|info|click|photo|market|tel|social|press|game|kim|org\\.cn|games|pro|men|love|studio|rocks|asia|group|science|design|software|engineer|lawyer|fit|beer|我爱你|中国|公司|网络|在线|网址|网店|集团|中文网)(:\\d{1,5})?"
ip:
- "['\"](([a-zA-Z0-9]{1,9}:)?//)?(.{1,36}:.{1,36}@)?\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}(:\\d{1,5})?"
phone:
- "['\"](1(3([0-35-9]\\d|4[1-8])|4[14-9]\\d|5([\\d]\\d|7[1-79])|66\\d|7[2-35-8]\\d|8\\d{2}|9[89]\\d)\\d{7})['\"]"
email:
- "['\"]([\\w!#$%&'*+=?^_`{|}~-]+(?:\\.[\\w!#$%&'*+=?^_`{|}~-]+)*@(?:[\\w](?:[\\w-]*[\\w])?\\.)+[\\w](?:[\\w-]*[\\w])?)['\"]"
api: # 自己来写正则吧,网上找的都不太靠谱, 见到了慢慢补吧
- "(?i)\\.(get|post|put|delete|options|connect|trace|patch)\\([\"'](/?.*?)[\"']"
- "(?:\"|')(/[^/\"']+){2,}(?:\"|')"
url:
- "[\"'‘“`]\\s{0,6}(https{0,1}:[-a-zA-Z0-9()@:%_\\+.~#?&//={}]{2,250}?)\\s{0,6}[\"'‘“`]"
- "=\\s{0,6}(https{0,1}:[-a-zA-Z0-9()@:%_\\+.~#?&//={}]{2,250})"
- "[\"'‘“`]\\s{0,6}([#,.]{0,2}/[-a-zA-Z0-9()@:%_\\+.~#?&//={}]{2,250}?)\\s{0,6}[\"'‘“`]"
- "\"([-a-zA-Z0-9()@:%_\\+.~#?&//={}]+?[/]{1}[-a-zA-Z0-9()@:%_\\+.~#?&//={}]+?)\""
- "href\\s{0,6}=\\s{0,6}[\"'‘“`]{0,1}\\s{0,6}([-a-zA-Z0-9()@:%_\\+.~#?&//={}]{2,250})|action\\s{0,6}=\\s{0,6}[\"'‘“`]{0,1}\\s{0,6}([-a-zA-Z0-9()@:%_\\+.~#?&//={}]{2,250})"
urlFilter:
- "\\.js\\?|\\.css\\?|\\.jpeg\\?|\\.jpg\\?|\\.png\\?|.gif\\?|www\\.w3\\.org|example\\.com|\\<|\\>|\\{|\\}|\\[|\\]|\\||\\^|;|/js/|\\.src|\\.replace|\\.url|\\.att|\\.href|location\\.href|javascript:|location:|text/.*?|application/.*?|\\.createObject|:location|\\.path|\\*#__PURE__\\*|\\*\\$0\\*|\\n"
- ".*\\.js$|.*\\.css$|.*\\.scss$|.*,$|.*\\.jpeg$|.*\\.jpg$|.*\\.png$|.*\\.gif$|.*\\.ico$|.*\\.svg$|.*\\.vue$|.*\\.ts$"
idCard:
- "['\"]((\\d{8}(0\\d|10|11|12)([0-2]\\d|30|31)\\d{3}$)|(\\d{6}(18|19|20)\\d{2}(0[1-9]|10|11|12)([0-2]\\d|30|31)\\d{3}(\\d|X|x)))['\"]"
other:
- "(access.{0,1}key|access.{0,1}Key|access.{0,1}Id|access.{0,1}id|.{0,8}密码|.{0,8}账号|默认.{0,8}|加密|解密|(password|pwd|pass|username|user|name|account):\\s+[\"'].{1,36}['\"])"
- "['\"](ey[A-Za-z0-9_-]{10,}\\.[A-Za-z0-9._-]{10,}|ey[A-Za-z0-9_\\/+-]{10,}\\.[A-Za-z0-9._\\/+-]{10,})['\"]"
79 changes: 67 additions & 12 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
<img alt="Release" src="https://img.shields.io/github/license/yhy0/Jie"/>
</a>
<a href="https://github.com/yhy0/Jie">
<img alt="Release" src="https://img.shields.io/badge/release-v1.0.0-brightgreen"/>
<img alt="Release" src="https://img.shields.io/badge/release-v1.0.1-brightgreen"/>
</a>
<a href="https://github.com/yhy0/Jie">
<img alt="GitHub Repo stars" src="https://img.shields.io/github/stars/yhy0/Jie?color=9cf"/>
Expand All @@ -24,7 +24,10 @@



通过[主动爬虫模式](https://github.com/Qianlitp/crawlergo)[被动代理](https://github.com/lqqyt2423/go-mitmproxy)获取流量,对流量进行分析、扫描

通过[主动爬虫模式](https://github.com/Qianlitp/crawlergo)[被动代理](https://github.com/lqqyt2423/go-mitmproxy)获取流量,对流量进行分析、扫描。

**使用前请详细阅读文档**

## 主动模式

Expand All @@ -35,7 +38,7 @@
./Jie web -t https://public-firing-range.appspot.com/ -p xss -o vulnerability_report.html --copilot
```

不指定 web 的用户名密码,或自动生成
不指定 web 的用户名密码,会自动生成一个`yhy/密码`,可以在日志中查看,比如下面就是自动生成的

`INFO [cmd:webscan.go(glob):55] Security Copilot web report authorized:yhy/3TxSZw8t8w`

Expand All @@ -49,31 +52,83 @@

挂上扫描器后,过一遍网站,即使没有漏洞,也要告诉我这个网站的大致信息(指纹、cdn、端口信息、敏感信息、API 路径、子域名等等),这样帮助人工进行进一步的梳理,辅助挖洞,而不是扫描完毕没洞就是完事了,还要人工重新过一遍。

### 证书下载

被动代理下HTTPS 网站需要安装证书,HTTPS 证书相关逻辑与 [mitmproxy](https://mitmproxy.org/) 兼容,并保存在 ~/.mitmproxy 文件夹中。

安装信任根证书, 安装步骤可参考 Python mitmproxy 文档:[About Certificates](https://docs.mitmproxy.org/stable/concepts-certificates/)

### 启动

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

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

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

![image-20240101121809597](images/image-20240101121809597.png)

![image-20240101121931631](images/image-20240101121931631.png)

![image-20240101121957058](images/image-20240101121957058.png)

### 证书下载
## 基本使用

HTTPS 证书相关逻辑与 [mitmproxy](https://mitmproxy.org/) 兼容,并保存在 ~/.mitmproxy 文件夹中。
### 配置

安装信任根证书, 安装步骤可参考 Python mitmproxy 文档:[About Certificates](https://docs.mitmproxy.org/stable/concepts-certificates/)
一些配置可以通过 [Jie_config.yaml](./Jie_config.yaml)修改,也可以通过`http://127.0.0.1:9088/`的配置界面修改(web 界面修改后会实时更新到配置文件中)

### 启动
`./Jie web -h`

```bash
./Jie web --listen :9081 --web 9088 --user yhy --pwd 123 --debug
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
主动扫描目标,被动下不需要指定
```

这样会监听 9081 端口,web 界面(SecurityCopilot)开放会在 9088 端口
### 下载编译

浏览器指定代理 9081,或者联动 burp
https://github.com/yhy0/Jie/releases/latest 中下载对应系统的程序,全程都是由 **Github Action** 自动化构建,请放心使用

### 配置
#### Linux/Mac

执行`make`即可编译

#### Windows

安装 `MinGW`

一些配置可以通过 `Jie_config.yaml`修改,也可以通过`http://127.0.0.1:9088/`的配置界面修改
设置 `CGO_ENABLED=1` ,然后 `go build main.go`或者在安装`MinGM`后将`make.exe`加入环境变量,之后执行`make`

### 与 Burp 联动

Expand Down
16 changes: 8 additions & 8 deletions cmd/root.go
Original file line number Diff line number Diff line change
Expand Up @@ -48,18 +48,18 @@ func init() {
fmt.Println("\t" + aurora.Green(conf.Banner).String())
fmt.Println("\t\t" + aurora.Red("v"+conf.Version).String())
fmt.Println("\t" + aurora.Blue(conf.Website).String() + "\n")

fmt.Println(aurora.Red("Use with caution. You are responsible for your actions.").String())
fmt.Println(aurora.Red("Developers assume no liability and are not responsible for any misuse or damage.").String() + "\n")

rootCmd.CompletionOptions.DisableDefaultCmd = true
rootCmd.PersistentFlags().StringVarP(&conf.GlobalConfig.Options.Target, "target", "t", "", "target")
rootCmd.PersistentFlags().StringVarP(&conf.GlobalConfig.Options.TargetFile, "file", "f", "", "target file")
rootCmd.PersistentFlags().StringVarP(&conf.GlobalConfig.Options.Output, "out", "o", "", "output report file(eg:vulnerability_report.html)")
rootCmd.PersistentFlags().StringVar(&proxy, "proxy", "", "proxy, (example: --proxy http://127.0.0.1:8080)")
rootCmd.PersistentFlags().StringVarP(&conf.GlobalConfig.Options.Target, "target", "t", "", "target\r\n主动扫描目标,被动下不需要指定")
rootCmd.PersistentFlags().StringVarP(&conf.GlobalConfig.Options.TargetFile, "file", "f", "", "target file\r\n主动扫描目标列表,每行一个")
rootCmd.PersistentFlags().StringVarP(&conf.GlobalConfig.Options.Output, "out", "o", "", "output report file(eg:vulnerability_report.html)\r\n漏洞结果报告保存地址")
rootCmd.PersistentFlags().StringVar(&proxy, "proxy", "", "proxy, (example: --proxy http://127.0.0.1:8080)\r\n指定 http/https 代理")
rootCmd.PersistentFlags().BoolVar(&conf.GlobalConfig.Debug, "debug", false, "debug")
// rootCmd.MarkPersistentFlagRequired("target")

webScanCmdInit()
shiroCmdinit()
struts2CmdInit()
Expand Down Expand Up @@ -88,7 +88,7 @@ func initTargetList() {
return
}
buffer := bufio.NewReader(file)

for {
line, err := buffer.ReadString('\n')
line = strings.TrimSpace(line)
Expand Down
Loading

0 comments on commit 938a4c8

Please sign in to comment.