信息安全 | 信息化系统常见安全漏洞案例

关键字:政府/JAVA/JEECGBOOT/SPRINGBOOT

【高危】软件系统弱口令

漏洞描述:

该漏洞主要是因为存在默认口令或口令较简单易被猜到。攻击者利用弱口令,可以获取特定账户或应用的访问控制权限,如果进一步攻击利用可能获取到服务器权限

漏洞危害:

进入后台,获取账号权限,获取敏感信息。

加固建议:

1.不使用空口令或系统缺省的口令,并且密码长度不小于8个字符;

2.口令应该为以下四类字符的组合,大写字母(A-Z)、小写字母(a-z)、数字(0-9)和特殊字符;

3.口令中不应包含本人、父母、子女和配偶的姓名和出生日期、纪念日期、登录名、E-mail地址等等与本人有关的信息;

4.系统需要180天内提示用户更换一次口令,防止未被发现的入侵者继续使用该口令。

5.将个人敏感信息进行脱敏。

6.修改密码功能强制进行高强度密码验证。

【中危】验证码失效、可重复校验、爆破攻击

漏洞描述:

前端存在图形验证码校验,但与登录信息分开校验,图形验证码未起到作用,可直接获取到登录数据包,对用户名密码进行爆破攻击

加固建议:

1.增加验证码机制,并在前后端均做好校验处理;

【高危】操作系统弱口令

漏洞描述:

当云服务器交付后为及时对服务器ROOT密码进行修改,避免使用默认密码、常用密码及具有特殊含义的密码。

加固建议:

云资源交付使用后第一时间修改服务器ROOT等相关账号的登录密码为复杂密码。

【低危】敏感信息明文传输

漏洞描述:

当用户的输入在前后端进行交互时,尤其是登录操作,如果不对密码等关键信息进行加密,在数据的传输过程中,有可能容易被嗅探软件截取,导致存在敏感信息泄露的风险。

加固建议:

对敏感信息进行加密传输。

【中危】用户名、手机号枚举

漏洞描述:

在应用系统登录过程中,当输入错误的用户信息时,应用程序将反馈相应的诸如“用户不存在”的错误提示,攻击者可通过该提示对用户名进行枚举,猜解出已存在于应用系统的用户名信息,最终攻击者可进行一步发起对已有用户的密码猜解。

加固建议:

1.模糊登录错误信息,对用户名错误及密码错误均提示“用户名或密码错误,请重新输入”;

2.用户登录后需要对初始口令进行修改,防止攻击者利用初始口令进行暴力破解;

3.系统设置强密码策略,建议用户密码采用8位以上数字加大小写字母等强组合密码;

4.对密码暴力猜解行为增加验证码进行验证,一旦发现用户口令破解行为及时对账户进行限时封停处理。

【低危】不安全的HTTP方法

漏洞描述:

通过OPTIONS方法提交特定的请求,在响应中查看allow头信息,在allow头中发现DELETE、PUT等选项,DELETE方法是用来调试web服务器连接的http方式,支持该方式的服务器文件可能被非法删除;PUT方法用来向服务器提交文件,测试显示部分请求中这些方法是允许的。

OPTIONS方法是用于请求获得由Request-URI标识的资源在请求/响应的通信过程中可以使用的功能选项。通过这个方法,客户端可以在采取具体资源请求之前,决定对该资源采取何种必要措施,或者了解服务器的性能。OPTIONS方法可能会暴露一些敏感 信息,这些信息将帮助攻击者准备更进一步的攻击。

加固建议:

修改系统web服务器配置,禁止使用DELETE、PUT等方法,统一采用GET和POST方式提交数据。

【高危】Spring未授权访问

漏洞描述:

Spring Boot Actuator是Spring Boot应用程序的一个子项目,其主要功能是提供运行时的应用程序管理和监控功能,它提供了一套REST API来访问和控制应用程序,例如,可以查看应用程序的内存使用情况,检查当前的线程,查看应用程序的健康状态等。

然而,如果没有正确地配置Spring Boot Actuator,攻击者可以访问Actuator的REST API,获取有关应用程序的敏感信息,从而可能导致数据泄露,导致安全漏洞。因此,应该对Spring Boot Actuator进行正确的授权访问,以避免未授权访问漏洞的发生。

相关URI:

/${contextPath}/actuator

/${contextPath}/actuator/env

/${contextPath}/actuator/metrics

加固建议:

  1. 对请求接口做安全限制例如需要禁用/env接口,可以设置如下Endpoints.env.enabled= false如果只想打开一两个接口,那就先禁用全部接口,然后启用需要的接口: endpoint.enabled =false endpoints.metrics.enabled= true

另外也可以引入spring-boot-starter-security依赖

<dependency>               

    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>

</dependency>
  • 开启Security功能,配置访问权限验证在application.properties中指定actuator的端口以及开启security功能,配置访问权限验证,这时再访问actuator功能时就会弹出登录窗口,需要输入账号密码验证后才允许访问。 management.port=8099 management.security.enabled=true security.user.name=admin security.user.password=${高复杂度的管理员密码}

【中危】API接口未授权

漏洞描述:

系统未对权限做严格的校验,导致攻击者利用此漏洞,可以使用低权限账户访问或更改高权限账户的页面,如果此页面存在敏感数据或信息,那么这些敏感数据或信息可能发生泄露或被攻击者恶意更改,如果这些信息有助于攻击者进一步攻击利用,可能导致更严重的危害。

相关URI:

/${contextPath}/swagger-ui.html

/${contextPath}/doc.html

/${contextPath}/api.html

【低危】信息泄露

漏洞描述:

系统配置文件泄露,泄露系统敏感信息。

相关URI:

/nginx_status

/assets/libs/font-awesome/bower.json

/assets/libs/nice-validator/bower.json

/assets/libs/fastadmin-layer/package.json

/README.md

等其他配置信息文件泄露

加固建议:

禁止未授权访问系统参数配置信息等。

【中危】webpack源码泄露 

漏洞描述:

webpack是一个JavaScript应用程序的静态资源打包器(module bundler)。它会递归构建一个依赖关系图(dependency graph),其中包含应用程序需要的每个模块,然后将所有这些模块打包成一个或多个bundle。大部分Vue等项目应用会使用webpack进行打包,如果没有正确配置,就会导致项目源码泄露,可能泄露的各种信息如API、加密算法、管理员邮箱、内部功能等等。

加固建议:

在项目路径下修改config/index.js中build对productionSourceMap: false。

建议删除或禁止访问正式环境中的js.map文件。

不要使用第三方不稳定的CDN系统。

【中危】XSS漏洞

漏洞描述:

XSS(Cross Site Scripting)是一种常见的Web安全漏洞,全称为跨站脚本攻击。它允许攻击者将恶意脚本注入其他用户浏览的网页,从而实现对用户浏览器的恶意操控。当用户浏览包含恶意脚本的网页时,恶意脚本将执行并在用户的浏览器上执行,可能导致信息泄露、会话劫持、恶意行为等后果。

XSS攻击的主要方式有以下几种:

  1. 反射型XSS:攻击者通过构造URL参数的方式,向目标页面发送恶意脚本。当用户浏览该页面时,脚本被恶意执行。
  2. 存储型XSS:攻击者将恶意脚本提交到目标网站的数据库中。当用户浏览包含该脚本的页面时,脚本从数据库中加载并执行。
  3. DOM型XSS:攻击者通过修改页面的DOM结构,利用脚本在浏览器端执行。攻击者通常通过修改URL参数、搜索栏关键词、设置cookie等方式进行攻击。

加固建议:

  • 输入验证:对用户输入的数据进行有效性检查,确保输入的数据不会对页面造成损害。
  • 输出编码:对输出到前端页面的数据进行HTML实体编码,避免攻击者利用脚本执行恶意操作。
  • 使用HTTP头:设置Content-Type为text/html,禁止JavaScript脚本执行。
  • 采用CSP(内容安全策略):限制站点对资源的加载,可以有效地防止XSS攻击。
  • 用户权限控制:根据用户权限限制用户对敏感信息的访问,降低XSS攻击的危害。

【高危】SQL注入漏洞

 漏洞描述:

SQL注入漏洞是一种常见的Web安全漏洞,它涉及到用户与Web应用程序之间的交互。这种漏洞发生在用户通过输入表单数据(例如用户名和密码)与Web应用程序交互时。如果Web应用程序对用户输入的数据没有正确处理,攻击者可能会利用这种漏洞注入恶意SQL代码,从而使应用程序执行非预期的SQL查询,可能导致数据泄露、数据库破坏或其他安全问题。

SQL注入攻击有多种类型,例如:

  1. 基于布尔的盲注:攻击者可以通过检查返回的页面内容来确定注入的SQL查询是否成功。
  2. 基于时间的盲注:攻击者在等待一定时间后才能看到注入的SQL查询是否成功。
  3. 联合查询注入:攻击者使用特殊的字符(例如注释符“#”)将SQL查询分隔开,以执行联合查询。
  4. 存储过程注入:攻击者可以注入恶意代码,以便在数据库中运行存储过程。
  5. 盲注的其他变体:攻击者还可以使用其他技术,如利用数据库服务器的错误消息来判断注入的SQL查询是否成功。
  6. 存在注入漏洞风险的组件:如/${contextPath}/jmreport 等第三方组件。

加固建议:

  1. 对输入数据进行严格的过滤和验证,确保输入数据的合法性。
  2. 避免在应用程序中使用动态SQL语句,因为它们允许攻击者在查询中插入恶意代码。
  3. 使用参数化查询,将查询参数化,以防止注入攻击。参数化查询使用参数化语句,这些语句不会将用户输入插入到SQL代码中。
  4. 对数据库进行最小权限原则,限制数据库管理员的权限,以降低安全风险。
  5. 定期更新和打补丁,以修复已知的SQL注入漏洞。
  6. 删除不使用的存在安全风险的第三方组件。

总之,SQL注入漏洞是Web应用程序中常见且危险的安全问题。通过对输入数据进行严格的过滤和验证,以及使用参数化查询和最小权限原则,可以有效地降低这种漏洞的风险。

【低危】报错信息泄露

漏洞描述:

如果攻击者通过伪造包含非应用程序预期的参数或参数值的请求,来探测应用程序,那么应用程序可能会进入易受攻击的未定义状态。

攻击者可以从应用程序对该请求的响应中获取有用的信息,且可利用该信息,以找出应用程序的弱点。

加固建议:

1.检查请求,以了解所有预期的参数和值是否存在。当参数缺失时,发出适当的错误消息,或使用缺省值。

2.应用程序应验证其输入是否由有效字符组成(解码后)。例如 ,应拒绝包含空字节(编码为%00)、单引号、引号等的输入值 。

3.确保值符合预期范围和类型。

【中危】未授权访问

未通过鉴权可直接访问相关接口、页面、数据、配置等,导致信息泄露。

【中危】Redis无授权访问

加固建议:

  1. 禁用未授权访问:

    关闭 Redis 的未授权访问。可以通过设置密码、绑定 IP 地址和端口等方式来限制访问。

  • 启用身份验证:

    在 Redis 的配置文件(redis.conf)中启用身份验证,如:

        requirepass your_password    

使用强密码(建议密码长度大于8位,包括字母、数字和特殊字符)。

  • 禁用危险命令:

    禁用一些危险的命令,例如 CONFIG、DEBUG、FLUSHDB 和 FLUSHALL 等。

  • 更新安全补丁:

    定期检查 Redis 的安全补丁,及时更新至最新版本。

  • 限制访问来源:

    只允许来自可信网络的访问,例如内网或使用 VPN。

  • 日志记录和审计:

    开启 Redis 的日志记录功能,以便监控异常行为。定期检查日志记录,排查潜在的安全风险。

  • 使用防火墙:

    配置防火墙以限制访问 Redis 服务器。可以考虑使用 Nginx 或 Apache 作为代理,将 Redis 服务配置为安全服务。

  • 定期备份数据:

    定期备份 Redis 数据,以便在发生数据泄露或其他安全事件时能够快速恢复。

  • 安全评估与审计:

    定期进行安全评估和审计,检查 Redis 服务器的安全性,并根据评估结果进行相应的调整。

遵循这些修复方案,可以有效地保护 Redis 免受未授权访问的威胁。

【中危】Druid页面暴露

禁止访问监控页面或设置访问密码

【高危】积木报表漏洞

积木报表低版本存在SQL注入漏洞,如系统未使用该模块,请删除报表相关组件。

其他漏洞:

kkfileview漏洞 https://www.oscs1024.com/hd/MPS-wzyc-o678

LOOPER'S DAILY
LOOPER'S DAILY
LOOPER'S DAILY
LOOPER'S DAILY
LOOPER'S DAILY
LOOPER'S DAILY

Leave a Comment

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