围炉网

一行代码,一篇日志,一个梦想,一个世界

使用的rocketmq-console-ng docker image被检测出应急漏洞

  • 在分布式系统开发过程中使用到了rocketmq的docket镜像,使用命令如下

docker run --name=rocketmq-console -e "JAVA_OPTS=-Drocketmq.namesrv.addr=121.40.140.138:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false" -p 8080:8080 -d styletang/rocketmq-console-ng
  • 在部署到阿里云后被检测出有漏洞

Spring Boot Actuator 未授权访问远程代码执行漏洞【远程扫描】
漏洞地址:http://xxx.xxx.xxx.xx:8080/beans
返回特征:nfiguration.class]","dependencies":[]},{"bean":"actuatorMetricReader","aliases":[],"scope":"singleton","
  • 打开http://xxx.xxx.xxx.xx:8080/beans 的确可以访问

  • 原因

    • 当Spring Boot应用程序运行时,它会自动将多个端点(例如’/ health’,’/ trace’,’/ beans’,’/ env’等)注册到路由进程中。对于Spring Boot 1 – 1.4,它们无需身份验证即可访问,从而导致严重的安全问题。从Spring 1.5版开始,默认情况下,除“/ health”和“/ info”之外的所有端点都被视为敏感和安全,但应用程序开发人员通常会禁用此安全性。

  • 网上对应的安全建议

    • 禁用所有接口,将配置改成:endpoints.enabled = false

    • 或者引入spring-boot-starter-security依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
</dependency>
    • 开启security功能,配置访问权限验证,类似配置如下:

management.port=8099
management.security.enabled=true
security.user.name=xxxxx
security.user.password=xxxxxx
mvn clean package -Dmaven.test.skip=true docker:build
docker run --name=rocketmq-console -e "JAVA_OPTS=-Drocketmq.namesrv.addr=127.0.0.1:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false" -p 8080:8080 -d apacherocketmq/rocketmq-console-ng:2.0.0

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

沪ICP备15009335号-2