跳转到帖子

游客您好,欢迎来到黑客世界论坛!您可以在这里进行注册。

赤队小组-代号1949(原CHT攻防小组)在这个瞬息万变的网络时代,我们保持初心,创造最好的社区来共同交流网络技术。您可以在论坛获取黑客攻防技巧与知识,您也可以加入我们的Telegram交流群 共同实时探讨交流。论坛禁止各种广告,请注册用户查看我们的使用与隐私策略,谢谢您的配合。小组成员可以获取论坛隐藏内容!

TheHackerWorld官方

JAVA常用组件未授权漏洞解析

精选回复

发布于
## 前言 在Java项目中,经常会使用一些监控组件来监控系统的状态。如果这些组件控制不当,公共网络可以任意访问它们,敏感信息就会被泄露,造成更严重的危害。今天我们就来看看都有哪些组件。 该系列共有10 篇关于Java 安全性的文章。如果您有兴趣,可以阅读。后续我们会继续发布关于Java安全的内容,比如Java内存马、Weblogic系列、spring框架系统漏洞等。 [java安全基础知识-java反射](articles/web/355185.html) [java安全基础知识-类加载机制](articles/web/356283.html) [java安全基础知识-spring框架](articles/web/357828.html) [java exec命令执行issues](articles/web/356831.html) [JNDI注入详情](articles/web/358196.html) [JNDI注入高版本绕过方法](articles/web/358310.html) [SPEL注入详解](articles/web/365408.html) [java反序列化漏洞详解](articles/web/367585.html) [java安全fastjson反序列化详解】(articles/web/378895.html)【java安全\\| Thymeleaf 模板注入漏洞](articles/web/381634.html) **由于本人水平有限,文章中可能存在一些错误。欢迎您指正。我很感激。如果您有什么好的想法,欢迎分享哦~~** java 项目中可能会创建未经授权的组件。1704437735_6597a7e7ea5f66a8bda10.png!small?1704437736926 ## Druid 未授权漏洞 Druid是阿里巴巴数据库出品的数据库连接池,专为监控而设计。 Druid提供监控SQL执行时间、监控Web URI请求、会话监控等监控功能。首先,Druid没有任何漏洞。然而,如果开发人员配置不当,可能会出现未经授权的访问。 检测与利用: 直接添加到网站的URL: /druid/index.html 如果无需登录即可登录Druid监控界面,则说明该网站存在Druid未授权访问漏洞!1704437752_6597a7f89e42d91113494.png!small?1704437753355 1704437766_6597a806201c479db8eb1.png!small?1704437766779 从这里可以看到,Druid数据监控界面包含了数据源、sql监控、sql防火墙、web应用、url监控、session监控、spring监控等信息。您可以详细监控网站情况并获取敏感信息。在Web监控中,您可以获取整个网站的目录。在会话监控中,可以获取网站用户的会话,从而伪造用户会话进行登录! ###修复建议 方法一:将StatViewServlet(监控页面)设置为false 方法二:为druid网页设置账号密码,增加druid的访问权限。 ```` 弹簧: 数据源: 德鲁伊: 最大活动: 10 最小空闲: 1 统计视图servlet: # 是否启用StatViewServlet(监控页面),默认true-启动,false-不启动 已启用: 真 # 禁用HTML 页面上的“全部重置”功能 重置启用: false #设置账户名(增加登录权限) 登录用户名: xxxx # 设置账户密码 登录密码:xxxxx

xxx

# IP白名单(如果未配置或为空,则允许所有访问)

允许: 127.0.0.1

# IP黑名单(常用时,deny优先于allow)

拒绝: 10.0.0.1

# 自定义德鲁伊连接

url-pattern: '/druid/*'

````

## SwaggerUI 未授权漏洞

Swagger 是一个标准化且完整的框架,用于生成、描述、调用和可视化RESTful 风格的Web 服务。总体目标是让客户端和文件系统以与服务器相同的速度更新。相关方法、参数和模型紧密集成到服务器端代码中,使API 始终保持同步。 Swagger-UI会根据开发者在代码中的设置自动生成API描述文档。如果存在相关配置缺陷,攻击者可以在未经授权的情况下查看Swagger接口文档,获取系统功能API接口的详细参数,然后构造参数包,通过echo获取系统大量敏感信息。

Swagger未授权访问地址默认路径如下:

````

/api

/api-文档

/api-docs/swagger.json

/api.html

/api/api-文档

/api/api文档

/api/文档

/api/招摇

/api/swagger-ui

/api/swagger-ui.html

/api/swagger-ui.html/

/api/swagger-ui.json

/api/swagger.json

/api/招摇/

/api/swagger/ui

/api/swagger/ui/

/api/swaggerui

/api/swaggerui/

/api/v1/

/api/v1/api-docs

/api/v1/apidocs

/api/v1/招摇

/api/v1/swagger-ui

/api/v1/swagger-ui.html

/api/v1/swagger-ui.json

/api/v1/swagger.json

/api/v1/招摇/

/api/v2

/api/v2/api-文档

/api/v2/apidocs

/api/v2/招摇

/api/v2/swagger-ui

/api/v2/swagger-ui.html

/api/v2/swagger-ui.json

/api/v2/swagger.json

/api/v2/招摇/

/api/v3

/api文档

/apidocs/swagger.json

/doc.html

/文档/

/druid/index.html

/graphql

/libs/swaggerui

/libs/swaggerui/

/spring-security-oauth-resource/swagger-ui.html

/spring-security-rest/api/swagger-ui.html

/sw/swagger-ui.html

/昂首阔步

/swagger-资源

/swagger-资源/配置/安全

/swagger-资源/配置/安全/

/swagger-资源/配置/ui

/swagger-资源/配置/ui/

/swagger-ui

/swagger-ui.html

/swagger-ui.html#/api-内存控制器

/swagger-ui.html/

/swagger-ui.json

/swagger-ui/swagger.json

/swagger.json

/swagger.yml

/大摇大摆/

/swagger/index.html

/swagger/static/index.html

/swagger/swagger-ui.html

/招摇/用户界面/

/Swagger/ui/索引

/swagger/ui/索引

/swagger/v1/swagger.json

/swagger/v2/swagger.json

/template/swagger-ui.html

/用户/swagger-ui.html

/用户/swagger-ui.html/

/v1.x/swagger-ui.html

/v1/api-文档

/v1/swagger.json

/v2/api-文档

/v3/api-文档

````

您可以将上述默认路径添加到dirsearch等目录扫描工具的字典中,然后对目标网站进行扫描和测试。

下图所示页面为1704437833_6597a84974a5b06ba363c.png!small?1704437834202

错误修复

1. 配置Swagger启用页面访问限制。

2. 检查接口是否存在敏感信息泄露(例如:账户密码、SecretKey、OSS配置等),如有,请进行相应整改。

## Spring boot Actuator未授权漏洞

Actuator是Spring Boot提供的服务监控和管理中间件。当Spring Boot 应用程序运行时,它会自动将多个端点注册到路由进程中。由于这些端点的配置错误,可能会导致系统信息泄露、XXE、甚至RCE等安全问题。

端点描述

路径

描述

/自动配置

提供自动配置报告,记录哪些自动配置条件通过,哪些失败

/豆类

描述应用程序上下文中的所有bean 及其关系

/环境

获取所有环境属性

/配置属性

描述如何将配置属性(包括默认值)注入到bean中

/转储

获取线程活动的快照

/健康

报告应用程序的健康指标,这些值由HealthIndicator 的实现类提供

/信息

获取应用的自定义信息,由info开头的属性提供

/映射

描述所有URI 路径及其到控制器(包括执行器端点)的映射

/指标

报告各种应用程序指标,例如内存使用情况和HTTP 请求计数

/关机

关闭应用程序,要求将endpoints.shutdown.enabled设置为true

/跟踪

提供基本的HTTP 请求跟踪信息(时间戳、HTTP 标头等)

### 漏洞发现

一般分为两步

1\.识别当前Web应用使用的框架为springboot框架;

2\.枚举执行器端点路径;

1\.识别当前Web应用使用的框架为springboot框架。判断方法主要有两种:

① 通过Web应用程序网页标签的图标(favicon.ico);如果Web应用开发者没有修改SpringBoot Web应用的默认图标,那么进入应用首页后可以看到如下默认的绿色小图标:

这个绿色小图标是spring框架下的默认图标。虽然这个图标不能100%确认当前的Web应用程序使用的是SpringBoot框架,但基本上可以80%确认Web应用程序是使用SpringBoot框架开发的(毕竟SpringBoot框架确实太流行了)。

②通过springboot框架默认的错误页面;如果Web应用开发者不修改springboot Web应用默认的4xx和5xx错误页面,那么当Web应用出现4xx或5xx错误时,会报如下错误(这里仅以404错误页面为例):1704437862_6597a866e14a171183265.png!small?1704437863536

当出现上述错误页面时,可以确定当前Web应用使用的是springboot框架。

然后结合以上两种方式来判断当前web应用是否是springboot框架,就是访问不同的目录看是否有小绿叶图标,然后想办法在不同的目录下触发应用的4xx或5xx错误,看是否有Whitelabel Error Page错误。

2\.枚举执行器端点路径。这其实很简单。确认当前网站是springboot框架后,枚举当前网站的所有一级、二级甚至三级目录,然后编写脚本检测每个目录,看看目录中是否存在执行器执行端点路径。您也可以将这些路径放入目录扫描工具中进行扫描。

尽管这些监控信息的泄露程度足够高,但仍有一些利用该漏洞的方法增加了危害。

① 获取认证字段,证明可以影响其他用户;这里主要通过访问/trace路径来获取用户认证字段信息。例如,以下站点存在执行器配置不当的漏洞。在它的trace路径下,除了记录基本的HTTP请求信息(时间戳、HTTP头等)之外,还有用户token和cookie字段:

用户认证字段在trace路径下泄露:1704437885_6597a87daf4f291944448.png!small?1704437886340

② 数据库账户密码泄露;由于执行器对现场的mysql、mangodb等数据库服务进行监控,有时可以通过监控信息获取mysql、mangodb数据库;这里主要是通过/env路径获取这些服务的配置信息。例如,以下站点存在执行器配置不当的漏洞。通过其/env路径可以获取mysql和mangodb的用户名和密码:1704437890_6597a88261ba4bfd1bf4a.png!small?1704437891199

③git项目地址泄露;这通常位于/health 路径中。访问其健康路径可以检测站点git项目地址。

④后台用户账号密码泄露;这通常位于/heapdump 路径下。访问/heapdump 路径并返回GZip 压缩的hprof 堆转储文件。在Android studio中打开时,站点内存信息会被泄露。很多情况下,都会包含后端用户的账号和密码。通过泄露的账户密码,可以进入后台进行一波测试。

## Spring Eureka 未授权访问漏洞

Spring Eureka是一个用于服务注册和发现的组件。它提供一个网页来显示注册的服务信息。未能正确控制权限可能会导致未经授权的访问漏洞。

### 如何利用该漏洞

直接访问路径/eureka/看看是否可以访问

或者添加邮件头X-Forwarded-For:127.0.0.1,看看是否可以绕过1704437910_6597a896793782a692892.png!small?1704437911056

### 漏洞危害

1、敏感信息泄露:如果公共网络可以访问,注册信息就会被泄露

2、其他漏洞利用:例如spring boot Actuator+eureka+xstream可导致RCE漏洞。该漏洞可以通过以下链接找到:[https://blog.csdn.net/qq\\_18980147/article/details/128041932](https://blog.csdn.net/qq_18980147/article/details/128041932)

如何访问网页

````

服务器:

port: 8801 # 服务端口号

弹簧:

应用程序:

name: loveneurkaclient # 服务名称

尤里卡:

客户端:

服务网址:

defaultZone: http://localhost:8881/eureka/# 注册的eureka服务地址

````

如上配置,网页的访问链接为http://localhost:8881/eureka/1704437945_6597a8b94f442f6f2994d.png!small?1704437946151

###修复方法

1\.要启用Spring Security 进行身份验证,请将以下配置添加到Eureka Server 配置文件中。要启用Spring Security进行身份验证,需要在Eureka Server中配置用户名和密码。

````

````

安全:

基本:

已启用: 真

用户:

名称: 管理员

密码: 密码

````

````

2\.配置Eureka Server的防火墙。您可以配置防火墙只允许指定的IP地址或网段访问管理界面。在Eureka Server配置文件中添加以下配置:

````

````

尤里卡:

服务器:

# 允许访问Eureka Server的IP地址或网段

允许注册表覆盖: true

启用自我保护: false

# 禁止修改Eureka Server的注册信息

禁用自注册: true

# 配置Eureka Server防火墙规则

防火墙:

# 允许的IP地址或网段

允许:

- 192.168.1.0/24

- 127.0.0.1

````

````

3\.对于生产环境中的Eureka Server,建议使用VPN等安全通道进行访问,避免直接暴露在公网。

## 总结

以上介绍了Java项目中一些常见组件的未授权漏洞。这些通常是由配置问题引起的。测试的时候一定要注意这些组件的权限。转载自freebuf:[https://www.freebuf.com/articles/web/388808.html](https://www.freebuf.com/articles/web/388808.html)作者:Notadmin

创建帐户或登录后发表意见

最近浏览 0

  • 没有会员查看此页面。