劫
吾所成之事,不可逆也
主动模式
主动模式下可以通过指定
--copilot 来进入 Security Copilot 模式,扫描完不退出,方便查看 web 结果页面不指定 web 的用户名密码,或自动生成
INFO [cmd:webscan.go(glob):55] Security Copilot web report authorized:yhy/3TxSZw8t8w被动模式(Security Copilot)
被动代理 通过 https://github.com/lqqyt2423/go-mitmproxy/ 实现。
Security Copilot
为什么称之为
Security Copilot,按照我的构想,这不仅仅是一个漏洞扫描器,还是一个集大成的辅助工具。挂上扫描器后,过一遍网站,即使没有漏洞,也要告诉我这个网站的大致信息(指纹、cdn、端口信息、敏感信息、API 路径、子域名等等),这样帮助人工进行进一步的梳理,辅助挖洞,而不是扫描完毕没洞就是完事了,还要人工重新过一遍。



证书下载
HTTPS 证书相关逻辑与 mitmproxy 兼容,并保存在 ~/.mitmproxy 文件夹中。
安装信任根证书, 安装步骤可参考 Python mitmproxy 文档:About Certificates。
启动
这样会监听 9081 端口,web 界面(SecurityCopilot)开放会在 9088 端口
浏览器指定代理 9081,或者联动 burp
配置
一些配置可以通过
Jie_config.yaml修改,也可以通过http://127.0.0.1:9088/的配置界面修改与 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](https://socialify.git.ci/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 进行越权检测(感觉还是 burp 插件自己写测试比较好,这里应该没有必要写)
第三方库
漏洞利用(还在开发中,优先级低)
目前还在开发,帮助信息我自己都要看代码才能知道,等搞完了在写详细的。
因大部分漏洞的利用工具使用 java 编写,并且支持的java 版本不同,搞环境太费劲,恶心坏了,所以重新定义了Jie。
Jie: 一款全面而强大的漏洞
扫描和利用工具。目前版本(1.0.0)支持以下漏洞的利用
比如 Shiro key 漏洞利用
其中借鉴缝合了很多师傅的工具,对应的漏洞扫描和利用中有写,如有遗漏,可以联系我,添加上 后续会缝合支持更多的漏洞利用。
https://jie.fireline.fun/
参考
爬虫
被动扫描代理
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
Fastjson
https://github.com/a1phaboy/FastjsonScan
指纹
https://github.com/w-digital-scanner/w13scan
https://github.com/SleepingBag945/dddd
License
This code is distributed under the MIT license. See LICENSE in this directory.
鸣谢
感谢 各位师傅的开源作品和博客以及 JetBrains 提供的一系列好用的 IDE 和对本项目的支持。
Star History
- 作者:yhy
- 链接:https://fireline.fun/article/page-27
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。


.png?table=block&id=2ed97da5-45e9-8064-bc5e-ea3540aaeb5c&t=2ed97da5-45e9-8064-bc5e-ea3540aaeb5c)





.png?table=block&id=2f897da5-45e9-80f3-be17-c682d5baa107&t=2f897da5-45e9-80f3-be17-c682d5baa107)

