Hvv终于要结束了,作为小外包,领钱的日子也即将到来,怀揣着澎湃的心情夜不能寐,想起面试中的点点滴滴,猛一回首,想到了Log4j 去年爆出的这个漏洞,为此,还在某Src上大刷了一波分,虽然会利用吧,但是在后来的面试中面试官也有提问过,但是具体的细节却无法一一道来,实在是难搞,借此在这特殊时间段中,对整个漏洞做一个详细分析
由于Log4j2组件在处理程序日志记录时存在JNDI注入缺陷,未经授权的攻击者利用该漏洞,可向目标服务器发送精心构造的恶意数据,触发Log4j2组件解析缺陷,实现目标服务器的任意代码执行,获得目标服务器权限
首先,这里logger.error模拟的是我们,写入日志的恶意内容
跟踪进行进入,查看调用栈,根据调用栈一个个找,根据调用的函数进行一番百度,发现这边lookup是涉及到jndi的一个解析方法,于是对其进一步研究
在调用栈中,发现org.apache.logging.log4j.core.lookup.StrSubstitutor.substitute 对输入的内容,进行了一个拆解,其中,getVariablePrefixMatcher()指的是$、{,getVariableSuffixMatcher指的是},将内容进行了一个过滤,过滤后就只剩ldap://127.0.0.1:1389/a
然后进入到的是resolveVariable,进入后,会去调用resolver.lookup
根据调用栈,发现是调用的JndiLookup这个类
然后就会到 org.apache.logging.log4j.core.lookup.Interpolator.lookup 执行函数,会进入到lookup.lookup中
进行跟踪后发现,会去调用jndiManager.lookup解析我们输入的内容,也就是jndiName
一步步跟踪后发现lookup可以调用的类还是比较多的,接下去应该是jndiManager怎么对内容进行解析的,翻阅资料后后面指的都是jndi注入的过程
公众号点击知识星球,加群后发送“知识星球”免费加入知识星球获取下载资料
![Log4j Rce(CVE-2021-44228)漏洞分析 Log4j Rce(CVE-2021-44228)漏洞分析]()
主要问题还是在于这里头存在了jndi注入。实则构造的payload,为${xx}样式应该主要还是为了进入logger.error这个函数中,进入函数后会对一些特殊符号$、{、}进行正则匹配,然后通过jndi的lookup接口进行解析,然后又因为jndi注入存在缺陷,就会去加载访问的内容。因此,检测只到了解析部分,要想rce还得说去让他去加载写的恶意类,然后通过jndi注入的缺陷,利用java反射机制,loadclass加载了恶意类的内容~,本文只对了log4j部分进行了分析,后续还会研究一下jndi注入。毕竟这个漏洞当时爆出来之后,许多师傅们都说利用条件苛刻,在分析过程中,确实感受到了,首先这个日志文件中会去调用到jndi,然后在特定jdk下的jndi才存在注入,还要能够加载设定的恶意类。确实鸡肋~ 文章有不足之处,还请各位大师傅们多多指教
原文始发于微信公众号(Undoubted Security):Log4j Rce(CVE-2021-44228)漏洞分析
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
点赞
https://cn-sec.com/archives/1834175.html
复制链接
复制链接
-
左青龙
- 微信扫一扫
-
-
右白虎
- 微信扫一扫
-
评论