以下测试环境为例
https://www.example.com
http://192.168.1.1
在/home/zpscan-1.8.39目录下
执行命令控制台会有日志输出,扫描结果默认为当前目录下result.txt文件,若指定位置生成结果文件,需要使用参数 -o
注:
相关补充
/home/zpscan-1.8.39/config.yaml:
config.yaml文件为配置各参数扫描漏洞匹配时使用的路径。包含各命令所需基础文件。
分隔符:
执行时命令时,ip可直接输入,而域名地址需要用引号包含,在使用分隔符'|'时,要使用单引号将整体地址包含。
PocName:
漏洞模板ID,如CVE-2023-12345
pocTag:
漏洞模板分组,如mysql、postgres、elasticsearch...
扫漏原理:
CVE在加载漏洞模板分组时,若各扫漏类型工具(goby、xray、nuclei)下没有匹配对应pocTag或PocName相关模板,则加载不到类型相关的漏洞,结果输出为[ERR] load 0 【对应类型】。
-exp文件:
需要根据 poc 自定义写 exp 文件。固定为 CVEID-exp variables: exp: "{
{exp}}" 功能补充:
使用 pocscan 确认漏洞是否存在;使用 expscan 需要自己写一个 poc 对应的 xxx-exp.yaml 才行,原理是 poc 变量替换 + 结果提取,将对应的 xxx-exp.yaml 文件放到与 xxx.yaml同级目录,CVEID需唯一。
alive - WEB存活扫描
情景1:
./zpscan alive -i 'www.example.com' -o '/home/zpscan-1.8.39/result/alive_result.txt'
结果:
[INF] 开始HTTP探活: 65535 [INF] HTTP探活结束 [INF] HTTP存活: 3 [INF] 开始WEB扫描 http://www.example.com:6443 [400] [48] [] [] [] [] https://www.example.com:443 [200] [23581] [] [请升级您的浏览器] [(Nginx)] [] https://www.example.com:8443 [200] [4215] [] [Login] [] [] [INF] 扫描结束 [INF] 运行时间: 5.206907757s
结果说明:
这段日志记录描述了一次针对多个端口的 HTTP 探测和 Web 扫描过程。
-
开始 HTTP 探活
[INF] 开始HTTP探活: 65535
-
这是一个信息日志,表明 HTTP 探测活动已经开始,目标端口总数为 65535。
-
-
HTTP 探活结束
[INF] HTTP探活结束
-
HTTP 探测活动结束。
-
-
HTTP 存活
[INF] HTTP存活: 3
-
在所有探测的端口中,发现有 3 个端口上运行着 HTTP 服务。
-
-
开始 WEB 扫描
[INF] 开始WEB扫描
-
开始对存活的 HTTP 服务进行 Web 扫描。
-
-
扫描 URL 结果
http://www.example.com:6443 [400] [48] [] [] [] []
-
URL:
http://www.example.com:6443
-
状态码:
400
(Bad Request) -
响应大小:
48
字节 -
其他字段为空,表示没有检测到额外的信息(例如标题、服务器类型等)。
https://www.example.com:443 [200] [23581] [] [请升级您的浏览器] [(Nginx)] []
-
URL:
https://www.example.com:443
-
状态码:
200
(OK) -
响应大小:
23581
字节 -
标题为空
-
响应内容包含提示:"请升级您的浏览器"
-
服务器类型:
Nginx
-
其他字段为空
https://www.example.com:8443 [200] [4215] [] [Login] [] []
-
URL:
https://www.example.com:8443
-
状态码:
200
(OK) -
响应大小:
4215
字节 -
标题为空
-
响应内容包含提示:"Login"
-
其他字段为空
-
-
扫描结束
[INF] 扫描结束
-
Web 扫描过程结束。
-
-
运行时间
[INF] 运行时间: 5.206907757s
-
整个 HTTP 探测和 Web 扫描过程总共耗时
5.206907757
秒。
-
总结
-
HTTP 探测: 扫描了 65535 个端口,发现有 3 个端口上运行 HTTP 服务。
-
Web 扫描
: 针对这 3 个存活的 HTTP 服务进行了详细的 Web 扫描,发现:
-
http://www.example.com:6443
返回状态码 400(Bad Request)。 -
https://www.example.com:443
返回状态码 200,响应内容提示升级浏览器,服务器类型为 Nginx。 -
https://www.example.com:8443
返回状态码 200,响应内容包含登录提示。
-
crack - 常见服务弱口令爆破
情景1:
./zpscan crack -m postgres -i '192.168.1.1:5432' --user-file '/home/zpscan-1.8.39/resource/crack/common.txt' --pass-file '/home/zpscan-1.8.39/resource/crack/template.txt' --threads 15 --timeout 15 -o '/home/zpscan-1.8.39/result/pgsql_crack_results.txt' --debug
参数说明:
-
--module postgres
指定了我们要爆破的服务是 postgres。 -
--user-file common.txt
指定了一个包含用户名的文件。 -
--pass-file template.txt
指定了一个包含密码的文件。 -
--threads 15
设置了并发线程数为 15,这可以加快爆破过程,但也可能增加目标服务器的负载。 -
--timeout 15
设置了每个请求的超时时间为 15 秒。 -
--output mysql_crack_results.txt
指定了输出文件,用于保存爆破结果。
结果:
[DBG] commonOptions: {"Input":"192.168.1.1:5432","InputFile":"","OutputFile":"/home/zpscan-1.8.39/result/mysql_crack_results.txt","ResultFile":"","NoColor":false,"Debug":true} [DBG] Worker: {"Domainscan":{"SubdomainF ... [DBG] [trying] a11111:a11111!@#456 [DBG] [trying] a11111:a11111 postgres -> 192.168.1.1:5432 sonarqube:sonarqube 1400 / 1400 [--------------------------------------------------------------------] 100.00% 1272 p/s [INF] 爆破结束 [INF] 爆破成功: 1 postgres -> 192.168.1.1:5432 sonarqube:sonarqube [INF] 运行时间: 1.30444585s
结果说明:
这段日志输出描述了一个对 PostgreSQL 数据库进行密码爆破攻击的过程。
-
配置选项
[DBG] commonOptions: {"Input":"192.168.1.1:5432","InputFile":"","OutputFile":"/home/zpscan-1.8.39/result/mysql_crack_results.txt","ResultFile":"","NoColor":false,"Debug":true}
-
Input: 目标 IP 和端口
192.168.1.1:5432
。 -
OutputFile: 保存结果的文件路径
/home/zpscan-1.8.39/result/mysql_crack_results.txt
。 -
Debug: 调试模式开启。
-
-
Worker 配置
[DBG] Worker: {"Domainscan":{"SubdomainF ...
-
省略部分表示更多的配置选项。
-
-
尝试不同的用户名和密码组合
[DBG] [trying] a11111:a11111
-
工具正在尝试用户名
a11111
和密码a11111!&
-