freeBuf
主站

分类

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

特色

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

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

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

FreeBuf+小程序

FreeBuf+小程序

某HR系统组合漏洞挖掘过程
2024-04-21 14:24:47

前言

某天在项目中遇到一个奇怪的人才管理系统,fofa跑了一下发现用的还挺多,所以就有了后面的审计过程。在互联网翻到一份过期的源码,本地搭建起来开始审计。

审计过程

先看一下常见的RCE漏洞,发现这套系统大量的代码调用了beetl这个库,这个库是国内一个大佬开发的模板引擎,类似freemarker。

找到这套模板引擎漏洞触发点在GroupTemplate#getTemplate,全局搜了一下调用点发现在ComputationRuleUtil#getValue这个方法中有一处调用并且没有写死模版内容,其他多处都写死了模板内容。

image.png

可以看到该方法中拼接了s2,s2最终是来自于String src这个参数,期间被rule方法做了处理,观察rule方法可以发现,当我们传入的第一个字符串参数不包含@sum和@avg就会直接返回我们传入的参数

image.png

下面全局搜索哪里调用了ComputationRuleUtil#getValue这个方法。

image.png

找到PerformanceIndicatorServiceImpl#checkRule方法中有调用,参数也是从外部接收的

image.png

继续查找checkRule的调用位置,定位到入口点/checkRule,到此请求参数rule并未发现任何过滤。

image.png

后面看了一下shiro的鉴权配置,发现该接口并不是前台的。

image.png

后面看了一下项目用的spring是低版本的存在一个登录绕过漏洞,可以通过/druid/../xxxx形式直接访问我们找到的后台路由。构造回显效果如下

image.png

由于beetl高版本有黑名单过滤常见命令执行的payload,这里可以利用反射加载js去构造。

声明:该漏洞已通报给相关单位修复,本文章仅供代码审计学习

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