为什么称之为 Security Copilot,按照我的构想,这不仅仅是一个漏洞扫描器,还是一个集大成的赞助工具。
挂上扫描器后,过一遍网站,纵然没有漏洞,也要见告我这个网站的大致信息(指纹、cdn、端口信息、敏感信息、API 路径、子域名等等),这样帮助人工进行进一步的梳理,赞助挖洞,而不是扫描完毕没洞便是完事了,还要人工重新过一遍。

0x02 功能简介

主动模式

命令实行

php扫描器一款周全且壮大可平替xray的扫描器支撑被动自动扫描破绽探测 Bootstrap

利用 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。

通过主动或者被动网络过来的流量插件内部会判断是否扫描过 (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

PerFolderPerServer(这个针对规则中指定了根目录的)

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 进行越权检测

0x03更新先容

修复 sqlapi 配置文件指定不生效的问题掌握进度信息显示修复 web 页面修正插件不生效的问题更新 README 和 帮助信息; 新增 -p all 开启全部插件update README

0x04 利用先容

利用./Jie web -h获取详细先容,一些配置可以通过Jie_config.yaml修正,也可以通过http://127.0.0.1:9088/的配置界面修正(web 界面修正后会实时更新到配置文件中)

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 主动扫描目标,被动下不须要指定
与 Burp 联动Burp 设置上游代理

这里的上游代理 Intruder 和 Repeater 模块的流量也会走扫描器

Tips:

工具先容:https://jie.fireline.fun/

地址:https://github.com/yhy0/Jie

本文来源于yhy0 WIN哥学安全