购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.1.2 Goby

Goby是基于网络空间映射的下一代网络安全工具,能够快速对目标资产进行端口识别、应用服务指纹识别、漏洞探测,同时支持多种扩展插件。Goby工具富含10多万个规则识别引擎功能,可自动识别及分析各类硬件设备及软件业务系统。除此之外,还具备漏洞探测功能,可根据扫描结果自动匹配对应服务类型进行漏洞探测,支持POC的自定义扩展。

在竞赛过程中,可以使用Goby工具对目标资产进行端口识别、服务识别、漏洞探测等。首先,单击Goby控制面板右上方的加号,增加一条扫描任务,然后在各个字段中填入相关信息,单击start按钮即可开始执行扫描任务。图2-4为在Goby控制面板中新建了一条扫描任务,图中各字段的说明如下。

● IP/Domain:填写目标资产的IP地址或者域名,如192.168.5.0/24。

● Black IP:黑名单IP地址。此处填写不在扫描任务内的IP地址。

● Port:设置扫描目标资产的端口内容,可根据应用场景选择端口类型,也可以自定义端口。

● Vulnerability:漏洞探测,在Goby探测目标主机服务类型后,就会对相应资产进行漏洞的扫描探测。

● Order:设置扫描优先级,Assets first表示资产优先,Simultaneously表示同时进行扫描。

● Task name:扫描任务命名,可以通过扫描任务名称查看历史记录信息。

图2-4 Goby新建扫描任务

单击Start按钮后,Goby就开启了一条扫描任务。如果选择了Vulnerability功能,Goby在搜集目标资产信息结束后,会根据匹配到的对应服务类型进行漏洞探测。图2-5所示为Goby扫描结果示意图。

Goby除了拥有自带的POC库之外,还支持用户自定义POC的扩展编写,这里以Grafana任意文件读取漏洞(CVE-2021-43798)为例介绍Goby自定义POC的编写过程。Grafana是一个跨平台、开源的数据可视化网络应用程序平台。用户配置连接的数据源之后,Grafana可以在网络浏览器里显示数据图表和警告。Grafana的8.0.0~8.3.0版本存在未授权任意文件读取漏洞,攻击者在未经身份验证的情况下可通过该漏洞读取主机上的任意文件,例如读取Linux虚拟机中的passwd文件。图2-6所示为Grafana任意文件读取漏洞的利用过程。

启动Goby程序后,进入Vulnerability漏洞管理功能界面,单击加号添加一条自定义POC功能。如图2-7所示,在Exploit功能模块处添加关于该漏洞的相关信息,各字段的说明如下。

图2-5 Goby端口扫描结果

图2-6 Grafana未授权任意文件读取漏洞利用

● Title:标题,简要概述漏洞的名称及影响。

● Query Rule:匹配规则,用于识别目标的指纹信息,可以单击“?”图标查看相关示例。

● Level:危害等级,由低到高依次为Low、Mediun、High、Critical。

● Tags:标签,可以选择该漏洞的类型。

● Description:描述(选填),对该漏洞的利用方式和危害进行简短描述。

● Product:产品名称(选填),填写相应的产品名称和对应的版本号。

● Product URL:产品地址(选填),该产品的官方网站或者软件的下载地址等。

● Author:作者昵称(选填),编写该POC的作者昵称。

● Source:POC来源(选填),获取该POC的来源。

● Has EXP:是否开启EXP功能,开启后,可在页面根据需求更改变量值执行相关指令。

● EXP Params:EXP参数,设置好的参数可在Exploit Test模块中进行调用。

图2-7 Goby Exploit功能界面

勾选开启Has EXP功能后,相当于开启了EXP利用功能,使用者可以在验证页面的输入框中更改变量的值,更改请求数据包的内容,比如在页面输入框中修改需要执行的系统命令等。如图2-7所示,dir为变量名称,input表示需要执行的操作类型为输入,/etc/passwd为变量的值。设置好后,在Exploit Test功能模块处会调用该变量。

单击Scan Test进入如图2-8所示的POC验证界面。该部分的功能是根据用户改造的请求包,获得目标系统的应答数据包,然后通过正则匹配的方式验证该漏洞是否存在。需要填写的相关参数解释如下。

● Set Variables:设置变量,标签表示该请求的用途。

● HTTP Request Method:请求类型,包含GET、POST、HEAD、PUT、OPTION、DELETE、PUSH、CUSTOM八种,可根据漏洞利用方式选择合适的服务请求类型。

● URL:请求地址,即漏洞所在的URL地址。

● Header:头文件,Web服务请求的头文件。

图2-8 Goby POC验证界面

图2-9所示为Goby POC匹配的响应部分,如果能命中正则表达式,则表示成功匹配,目标系统存在该漏洞,否则表示目标系统不存在该漏洞,需要填写的相关参数解释如下。

● group:选择每条item的逻辑验证关系,分为AND和OR两种。

● item:用于匹配目标服务的相应内容。

单击Exploit Test进入EXP的设置页面,该界面的填写与Scan Test页面类似,为了能够在Verify漏洞验证页面修改变量的值,进而更改Request内容,可以在GET请求的URL部分、POST请求的Data部分或者请求的头部,通过“{{{}}}”的方式引入之前设定好的变量名。例如在Grafana任意文件读取漏洞的EXP编写过程中,可以将读取的文件路径作为变量,将“/public/plugins/alertlist/../../../../../../../../../../../../../etc/passwd”部分修改成“/public/plugins/alertlist/../../../../../../../../../../../../../{{{dir}}}”,如图2-10所示。由于需要回显的内容是Response的Body部分,故在Variable中选择lastbody。

图2-9 Goby POC响应部分

图2-10 Goby Exploit Test设置页面

单击Save按钮后,就可以将编写好的脚本更新到POC管理了,之后如果匹配到Grafana服务,会调用该POC进行漏洞探测,如果存在漏洞,可以单击Verify按钮进行漏洞确认,如图2-11所示,利用Grafana未授权任意文件读取漏洞获取flag。

图2-11 利用Grafana漏洞读取flag字符串 wJNIDiTfWWbkwJNCSspgPrEwF9pwbogXeockQR8bZd7+reSeFt1NNBnsj/T84vCi

点击中间区域
呼出菜单
上一章
目录
下一章
×