CVS
万象漏洞扫描器
特色 • 使用 • 为安全工程师 • 感谢 • 联系 • 授权
与Nessus和Nuclei等许多产品一样,CVS用于扫描各种网络漏洞,但它更现代,具有免等待的OOB测试策略、高级漏洞PoC IDE和强大的VDSL(漏洞域特定语言)引擎,使您能够轻松快速地扫描几乎所有漏洞。它还具有轻量级、单一二进制文件、跨平台和无附加依赖性等特性。
特色
- 强大的PoC脚本语言 - VDSL (Domain Specific Language)
- 先进易用的PoC开发和调试环境 - CVS PoC IDE
- 更现代化,无需等待OOB服务器
- 高速、高性能的漏洞扫描引擎
- 与几乎所有Nuclei的帮助函数功能兼容,因此您可以轻松地将Nuclei模板转换为CVS PoC
- 轻松提取森罗空间测绘引擎扫描的网络服务和指纹信息
- 轻量级、单一二进制文件、跨平台且无其他依赖关系
- 输出格式支持 - JSON
使用
CVS由三部分组成:CVS扫描器、PoC IDE和OOB服务器。CVS扫描器用于读取森罗空间测绘引擎生成的扫描目标信息,并加载PoC进行漏洞扫描。PoC IDE用于编写和调试漏洞脚本以及生成PoC文件。OOB服务器用于反向连接平台,如一些没有回显的漏洞,以确认漏洞的存在。VDSL语法可以参考链接VDSL语法 。
编写PoC
命令行运行IDE
ide.exe
浏览器打开http://127.0.0.1:777/ 即可看到PoC开发环境,该IDE提供了PoC的编写、调试和保存等功能,并支持代码补全和智能提示,如下图所示:
上图右上角分别为运行、保存、刷新按钮,运行按钮用于调试PoC脚本,该脚本语法类似golang,图中 cvs结构体 在CVS扫描器中会自动根据target.json生成,无需实现,仅在调试时方便测试,自行声明。
此图展示的是CVE-2022-46169无回显漏洞测试脚本的编写过程,图中提供了 debug函数 用于打印调试信息,该函数兼容go语言中fmt.Printf的用法,结果显示于下方方框。对于有回显的漏洞可以直接通过 return true 返回来确认漏洞存在,对于需要返回一些信息的场景,如密码破解等,可以return一个字符串来保存结果,结果位于CVS扫描器生成的result.json中的info字段中。
PoC脚本中的函数兼容Nuclei的帮助函数,详见链接 ,另外CVS也提供了网络请求相关lib库,详见链接 。所以你可以很方便的将Nuclei的漏洞模板转换成CVS的PoC。更多PoC样例可参考CVS扫描器poc目录下的yaml文件。
架设OOB服务器
OOB全称Out-of-Band,有很多漏洞测试时并不直接回显任何信息,需要在公网架设一台OOB服务器来接收漏洞是否测试成功的结果。通常OOB服务器会接收漏洞测试所触发的dns、http、ldap、rmi、ftp等连接请求,并将结果返回给CVS扫描器。
1.首先将oob-server上传到公网可访问的服务器上
2.运行oob-server会自动生成一个名为cfg.yml的配置文件
3.修改配置文件:domain为dns服务器要解析的根域名,token为CVS扫描器连接OOB服务器的认证token,external_ip为该服务器的公网ip,ssl为CVS扫描器连接OOB服务器是否启用ssl连接,若为true则需要上传pem格式的tls证书server.crt和私钥server.key
domain: example.com
token: clt5j6r4uu422g7i8rrg
external_ip: 3.1.1.1
ssl: false
log_level: info
4.放开服务器的80、53、33333端口访问,并将OOB服务器设置为NS解析服务器,如阿里云上的域名可以参考链接进行配置
开启CVS扫描器
CVS扫描器下面有poc、lib、db三个目录和一个配置文件cfg.yml。poc目录为PoC存放目录,子目录以服务协议命名。lib目录为用户自定义的VDSL库文件存放目录。db目录用于存放无回显漏洞详细信息的数据库文件。配置文件cfg.yml如下:
oob_url: http://3.1.1.1
oob_dns: example.com
oob_server: "http://3.1.1.1:33333/events/"
oob_token: "clt5j6r4uu422g7i8rrg"
threads: 36
log_level: error
上面oob_url为OOB服务器的外网地址,用于http协议的反连。oob_dns为dns的根域名,用于dns协议的反连。oob_server为接收反连信息的长连接通信url。oob_token对应OOB服务器上的认证token。threads为CVS扫描器的并发线程数。
配置好上面配置后,将森罗网络空间测绘引擎生成的target.json拷过来,执行cvs即可开始扫描漏洞。
CVS命令行选项
Usage of cvs:
-i string
扫描的目标输入文件路径(默认为森罗输出的“target.json”)
-o string
扫描结果输出文件路径(默认为“result.json”)
为安全工程师
CVS提供了大量功能,有助于安全工程师在其组织中自定义工作流程。通过强大的PoC IDE和VDSL脚本语言,安全工程师可以轻松地使用CVS创建他们的自定义漏洞检测平台。
感谢
感谢所有了不起的社区贡献者发送PR并不断更新此项目。请支持我们的朋友点个:heart:赞。
如果你有想法或某种改进,欢迎你贡献并参与该项目,随时发送你的PR。
联系
moc.cesuu@troppus
授权
CVS 仅用于个人免费使用,如要进行商业用途请联系我们获取商业授权。