freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

Goby自定义编写EXP入门篇:编写模板基础使用讲解
2024-12-20 16:06:24
所属地 湖南省

众所周知,Goby可以利用便捷的Json图形化编写PoC/EXP,但由于Goby的PoC/EXP基于Go代码,所以很多新手同学可能不太理解其中的变量和代码逻辑,为此,我们将开展从入门到精通的系列教程,为大家详细讲解如何使用Goby的JSON图形化界面进行漏洞编写。

入门篇:Goby Poc模板架构讲解

当我们打开Goby的自定义编写页面,可以看到三个模块:漏洞信息、扫面描测试、利用测试模块(勾选has EXP后可编辑)、编辑器(Go源码)

漏洞信息模块

Goby的漏洞信息中包含:漏洞名称、查询规则(即为漏洞关联的资产FOFA语法规则)、漏洞等级、披露时间、描述、漏洞编号、解决方案等信息。

需要注意的是,Goby的漏洞信息需要同时兼容中英文。有部分师傅反馈漏洞信息模块填写起来相对耗时繁琐,其实这部分信息可以结合Goby AI 2.0进行自动化补充。一般漏洞情报中会包含漏洞名称、漏洞描述、payload等信息。把包含漏洞详情的文本或在线网址发送给AI Bot,爬取漏洞信息自动生成英文信息填入。(联系Gobyteam就可以免费申请开通Goby AI体验哦~)


扫描测试模块

在漏洞扫描测试模块中,大体上就是两个步骤:

1.请求:发送数据包

2.响应测试:判断返回包中是否存在某特征以确定是否存在漏洞。

请求模块:

选择Http请求方法:GET、POST、PUT、HEAD、PUSH、DELETE、OPTION、CUSTOM。较为常用的是GET和POST

测试Url、Header:、Post Data:即为数据包对应的信息。

响应测试模块:

item则为组内的单个匹配条件

Group:即为判断条件的组,可以选择AND(且)、OR(或)判断方式。

以上图为例讲解,结合响应包参数,表示响应包中code=200 且 Body中需要包含(contains)"root:x",及判断漏洞为存在。

到这一步,已经完成了Poc的检测模块编写,可以在扫描框输入目标,对目标进行发包检测进行验证。


利用测试模块

可以把整个利用测试模块理解为两个部分:输入、输出

输入:

先在漏洞信息页面,勾选 "has EXP",在模块编写利用测试环节的输入逻辑。

我们定义一个名称为attacKtype(攻击类型)的参数,给它的值为default(默认)和custom(自定义),模式为select,最后一个框默认为show,转化到实际的EXP验证环节,验证页面显示一个名称叫attacKtype的下拉列表,有default和custom为它的两个选项。

以上图为例讲解用法(图例为任意文件读取漏洞类型):

default(默认值方式):设置的默认值为../../../etc/passwd,方式为slecet,选择框可选择"../../../etc/passwd"和“xxxxxxxx"。

custom(自定义):设置的默认值为../../../etc/passwd,支持input自定义输入。

到这一步,已经完成了验证输入的方式编写,接下来需要跳转到利用测试页面。

在利用测试环节,输入值需要作为全局变量,将我们想要利用的EXP语句传入到请求包中发送到服务器,返回得到想要的信息。那我们我们需要先定义一个全局变量filePath:

这里四个输入项分别代表:# 变量、值、源值、操作/类型

# 大致的逻辑是从【源值】switch中提取源数据,使用【操作/类型】attackType的逻辑,对【值】{{{default}}}进行处理,最终把结果赋值到指定的【变量】filePath中。

swich的作用是把我们在EXP Params中定义的attackType可以切换exp验证方式,下面有我们定义好的default和custom两个选项,在这里定义的{{{default}}}为默认的内置变量,在exp时可以自由选择default和custom两个选项,将我们定义的default和custom两个选项的值分别赋值传递给filePath,达到自由选择exp测试的作用。(需要注意的是:在使用json图形化编辑中变量值需要用{{{}}}包裹)


自定义输出变量:

在自定义变量模块,填写输出模块变量参数,上述图例表示:从最后一个响应数据包lastbody中提取符合正则表达式要求的值,并将其传输给output。

(部分输出信息需要进行特殊处理,例如转码、编码等,我们后续在进阶篇中详细讲解~)

到这一步,已经完成了一个完整的EXP模块编写,接下来进行实战验证,在扫描框中输入验证测试目标,可以看到,检测存在漏洞的目标显示了【验证】按钮,点击进入验证页面,点击【输出】


# 网络安全 # 漏洞扫描 # poc编写
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者