Lanzamiento de RuoYi 4.5.1, evita vulnerabilidades de descarga de archivos arbitrarios

Si se ha publicado la versión 4.5.1 del sistema de gestión, el registro de actualización:

  • Evite las vulnerabilidades de descarga de archivos arbitrarios
  • Actualice shiro a la última versión 1.7.0 para evitar la vulnerabilidad de omisión de permisos
  • Actualiza druid a la última versión v1.2.2
  • Nuevos eventos de activación de filas de tabla (onCheck, onUncheck, onCheckAll, onUncheckAll)
  • Solucione el problema del borrado al cerrar opciones no actuales en varias pestañas
  • La vista previa de generación de código admite resaltado
  • La configuración de MapperLocations admite separadores
  • Ajuste de la información de permisos
  • Agregue una imagen predeterminada para la imagen de perfil y cargue la imagen
  • La clase de configuración global sigue siendo la misma que otras aplicaciones
  • Vulnerabilidad de descarga de archivos arbitraria RuoYi <= v4.5.0

Cualquier vulnerabilidad de descarga de archivos, el uso normal es descargar archivos del servidor, como código script, configuración del servidor o configuración del sistema, etc. Se puede utilizar ../para adivinar la ruta capa por capa.

Debido a las necesidades comerciales, los sitios web a menudo necesitan proporcionar funciones de visualización o descarga de archivos, pero si no existen restricciones sobre los archivos que los usuarios pueden ver o descargar, los usuarios malintencionados pueden ver o descargar cualquier archivo confidencial. Esta es una vulnerabilidad de visualización y descarga de archivos.

La detección de vulnerabilidades: CommonController.java, /common/download/resourcela interfaz se incluye checkAllowDownloadpara comprobar si los archivos pueden ser descargados, si no hay necesidad de modificar este método para evitar que la información crítica se descarga.

Solución: actualice la RuoYiversión  >=4.5.1o vuelva a agregar la verificación de descarga de archivos para evitar la descarga arbitraria de archivos.

/**
 * 本地资源通用下载
 */
@GetMapping("/common/download/resource")
public void resourceDownload(String resource, HttpServletRequest request, HttpServletResponse response)
		throws Exception
{
	try
	{
		if (!FileUtils.checkAllowDownload(resource))
		{
			throw new Exception(StringUtils.format("资源文件({})非法,不允许下载。 ", resource));
		}
		// 本地资源路径
		String localPath = Global.getProfile();
		// 数据库资源地址
		String downloadPath = localPath + StringUtils.substringAfter(resource, Constants.RESOURCE_PREFIX);
		// 下载名称
		String downloadName = StringUtils.substringAfterLast(downloadPath, "/");
		response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
		FileUtils.setAttachmentResponseHeader(response, downloadName);
		FileUtils.writeBytes(downloadPath, response.getOutputStream());
	}
	catch (Exception e)
	{
		log.error("下载文件失败", e);
	}
}

/**
 * 检查文件是否可下载
 * 
 * @param resource 需要下载的文件
 * @return true 正常 false 非法
 */
public static boolean checkAllowDownload(String resource)
{
	// 禁止目录上跳级别
	if (StringUtils.contains(resource, ".."))
	{
		return false;
	}

	// 检查允许下载的文件规则
	if (ArrayUtils.contains(MimeTypeUtils.DEFAULT_ALLOWED_EXTENSION, FileTypeUtils.getFileType(resource)))
	{
		return true;
	}

	// 不在允许下载的文件规则
	return false;
}

Función incorporada

1. Gestión de usuarios: el usuario es el operador del sistema, esta función completa principalmente la configuración del usuario del sistema.
2. Gestión de departamento: configure la organización del sistema (empresa, departamento, grupo) y muestre la autoridad de soporte en la estructura de árbol.
3. Gestión de puestos: configure los puestos de los usuarios del sistema.
4. Gestión del menú: configure el menú del sistema, la autoridad de operación, la identificación de la autoridad del botón, etc.
5. Administración de roles: la asignación de permisos del menú de roles y la configuración de roles se dividen en permisos de alcance de datos por organización.
6. Gestión del diccionario: mantenga algunos datos relativamente fijos que se utilizan con frecuencia en el sistema.
7. Gestión de parámetros: configure dinámicamente parámetros comunes para el sistema.
8. Anuncio de aviso: el sistema informa el anuncio de publicación de información y mantenimiento.
9. Registro de funcionamiento: consulta y registro de funcionamiento normal del sistema, consulta y registro de registro de información anormal del sistema.
10. Registro de inicio de sesión: la consulta del registro de inicio de sesión del sistema contiene excepciones de inicio de sesión.
11. Usuarios en línea: monitorea el estado de los usuarios activos en el sistema actual.
12. Tareas cronometradas: la programación de tareas en línea (agregar, modificar, eliminar) incluye registros de resultados de ejecución.
13. Generación de código: la generación de código de front-end y back-end (java, html, xml, sql) admite la descarga de CRUD.
14. Interfaz del sistema: genera automáticamente documentos de interfaz api relacionados de acuerdo con el código comercial.
15. Supervisión del servicio: supervise la CPU, la memoria, el disco, la pila y otra información relacionada del sistema actual.
16. Constructor en línea: arrastre los elementos del formulario para generar el código HTML correspondiente.
17. Supervisión del grupo de conexiones: supervise el estado actual del grupo de conexiones de la base de datos del sistema y analice SQL para encontrar cuellos de botella en el rendimiento del sistema.

Demostración del sistema   http://www.ruoyi.vip

Supongo que te gusta

Origin www.oschina.net/news/120883/ruoyi-4-5-1-released
Recomendado
Clasificación