知识星球
安全情报
- 信息安全情报
- 深网暗网情报
- 前沿安全技术
- 业务安全风控
- 漏洞威胁感知
- 数据泄露事件
微信扫描二维码加入知识星球:
微信扫描二维码加入知识星球:
Dell Foglight for Virtualization是戴尔的一款企业级基础架构和虚拟化运营管理,简单来说就是基础架构性能监控工具。
Dell Foglight for Virtualization的默认用户名/密码为:foglight
,在配置不当的情况下我们可以通过默认凭证登录Foglight的控制台
<IP_ADDRESS>:8080
成功登录之后就可以利用Foglight集成的脚本控制台在主机上执行代码
打开如下选项卡
Homes -> Administration -> Investigate -> Data -> Script Console
在Scripts
选项卡下单击[+] Add
按钮
示例:
"cmd.exe /c ".execute
或者使用PowerShell:
"powershell.exe -NoP -NonI -W Hidden -Enc".execute
可以直接交互Empire或者是Metasploit Web Delivery的Payload进行反弹等操作
跟Jenkins一样Foglight执行脚本命令也是使用Groovy Script,且Foglight也可以像Jenkins管理其他节点一样在其管理的设备上执行代码:
打开Homes -> Automation -> Workflow Management
选项卡点击[+] New
按钮
然后在Workflow Management
中选择All ActionPacks -> Common -> Scripting
会出现如下几个选项
可以执行PowerShell命令,甚至可以创建恶意工作流程推送到所有管理的设备。
Foglight存储凭据管理在Dashboards-> Administration -> Credentials
选项卡中,点击Manage Credentials
按钮就可以查看存储的凭证。其中包含了加密凭证和加解密的密钥,但是似乎无法通过Web端提取,需获取主机权限之后进行操作。
Spring Framework通过spring-messageing模块和STOMP代理对象通讯。根据漏洞描述可以知漏洞出现在spring-message模块 或者是 stomp-websockets模板块,下面逐一分析:
存在的敏感方法
@Nullable
public String[] decode(String content) throws IOException {
return (String[])this.objectMapper.readValue(content, String[].class);
}
反序列化使用的jackson组件,但是没有开启autotype
功能,并且代码指定了反序列化类型为String[].class
,利用jndi注入方式会导致异常,没有成功。
DefaultSubscriptionRegistry
类中方法addSubscriptionInternal
存在expression = this.expressionParser.parseExpression(selector)
(危险的SPEL表达式语句)。
根据上下文可以初步判定selector参数可以控制,但是了解SPEL注入的同学应该知道,要想达到代码执行,需要调用expression.getValue()
或者expression.setValue()
方法。继续寻找会发现该文件的154-164行调用了expression
对象的getValue
方法。
复现下漏洞的触发流程:
点击Connet按钮抓包
修改请求报文,插入如下字段
\nselector:new java.lang.ProcessBuilder("/Applications/Calculator.app/Contents/MacOS/Calculator").start()
回到聊天窗口,发送任意消息即可触发恶意代码
Patch:https://github.com/spring-guides/gs-messaging-stomp-websocket/commit/6d68143e04ea1482b724c3f620688ec428089bc0