项目写完了,自己也简单的测试了一下没问题,但打成Jar包之后就出现问题了,没有办法加载配置文件,具体的问题是这样的: 在代码中用Spring的ResourceUtils.getFile()得到某一配置文件,代码具体如下
度娘检索出来的文章也基本上告诉你,这样是没有问题的。But,使用mvn package构建成jar文件,运行后报异常如下:
2018年04月05日,Pivotal公布了Spring MVC存在一个目录穿越漏洞(CVE-2018-1271)。Spring Framework版本5.0到5.0.4,4.3到4.3.14以及较旧的不受支持的版本允许应用程序配置Spring MVC以提供静态资源(例如CSS,JS,图像)。当Spring MVC的静态资源存放在Windows系统上时,攻击可以通过构造特殊URL导致目录遍历漏洞。
springboot打成jar包后获取项目路径为 file:/D:/Document/Document.jar!/BOOT-INF/classes!/static 所以如果打jar包需要处理路径问题
虽说是Spring框架漏洞,但以下包含并不仅Spring Framework,Spring Boot,还有Spring Cloud,Spring Data,Spring Security等。
( http://www.ibm.com/developerworks/cn/java/j-lo-spring-utils1/index.html )
实际项目中可能会有需要读取类路径下面的配置文件中的内容的需求,由于springboot项目打包的是jar包,通过文件读取获取流的方式开发的时候没有问题,但是上到linux服务器上就有问题了,对于这个问题记录一下处理的方式
日常渗透过程中我们经常会遇到spring boot框架,通过资产测绘平台搜索我们也可以知道spring框架的资产非常多,最常见的需求就是我想测试是否存在敏感信息泄漏以及是否存在spring的相关漏洞,每次都东拼西凑找工具,最近遇到一个不错的工具,输入扫描目标可以直接对站点进行敏感信息扫描和spring相关漏洞检测,终于不用东拼西凑找工具了。
目录遍历又称"路径遍历",由于web服务器配置错误导致网站的目录暴露可以被随意浏览,这种被称为"目录遍历"
在上一篇文章中介绍了 Java Web 应用中 URL 解析与鉴权认证中的常见陷阱,但主要针对 Servlet 容器进行分析。前文末尾也提到了,当前 Web 应用多是使用 Spring 全家桶进行开发,其路由匹配方式又与传统 Web 容器有所差异,因此本文就对其进行分析。
虽然现在springboot提供了多环境的支持,但是通常修改一下配置文件,都需要重新打包。
涉及报错的源码在org.springframework.util.ResourceUtils
在开发中读取项目中的配置或者静态文件是家常便饭的事情,我相信很多同学都从网上找下面的例子来进行文件加载读取操作。
image.png /** * 根据文件名读取文件内容 * * @param sqlFileName resource路径下的文件名 * @return */ public static List<String> getFile(String fileName) throws IOException { String path ="classpath:sql"+ File.separator + fileName +".sql"; URL url = ResourceUtils
虽说是 Spring 框架漏洞,但以下包含并不仅 Spring Framework,Spring Boot,还有 Spring Cloud,Spring Data,Spring Security 等。
spring boot 的工程支持打包为jar和war,打包成 jar 或 war 可以直接用 java -jar xxx.jar 来启动,war包也可以放入tomcat等容器中运行。
目录遍历(路径遍历)是由于web服务器或者web应用程序对用户输入的文件名称的安全性验证不足而导致的一种安全漏洞,使得攻击者通过利用一些特殊字符就可以绕过服务器的安全限制,访问任意的文件(可以使web根目录以外的文件),甚至执行系统命令。
根据官⽅⽂档 Custom JSON Serializers and Deserializers ,想要接管Jackson的JSON的序列化和反序列化,只需通过注解 @JsonComponent 来声明其静态内部类即可。
刚做后端开发的时候,最早接触的是基础的spring,为了引用二方包提供bean,还需要在xml中增加对应的包<context:component-scan base-package="xxx" /> 或者增加注解@ComponentScan({ "xxx"})。当时觉得挺urgly的,但也没有去研究有没有更好的方式。
该代码功能是利用 common.io 包下的FileUtils来读取文件, 放到一个字符串中
在Springboot中利用Resource来获取文件并在前端返回该文件, 本地测试正常, 打包到远程报错: cannot be resolved to absolute file path because it does not reside in the file system
昨天给大家普及到了渗透测试中执行命令漏洞的检测方法,今天抽出时间由我们Sine安全的渗透工程师来讲下遇到文件包含漏洞以及模板注入漏洞的检测方法和防御手段,本文仅参考给有授权渗透测试的正规安全检测的客户,让更多的客户了解到具体测试的内容,是如何进行全面的网站安全测试。
例子_GET['filename']参数开发者没有经过严格的过滤,直接带入了include的函数攻击者可以修改_GET['filename']的值,执行非预期的操作
本公众号提供的工具、教程、学习路线、精品文章均为原创或互联网收集,旨在提高网络安全技术水平为目的,只做技术研究,谨遵守国家相关法律法规,请勿用于违法用途。
在Spring Boot应用程序中,如果您尝试将应用程序打包成一个 JAR 并运行,那么您不能使用File或FileInputStream来直接读取 JAR 内部的文件,因为这些文件不是以传统文件系统的形式存在的。相反,它们被嵌入到了 JAR 文件中,必须通过类加载器来访问。那么您应该始终使用类路径访问方式(ClassLoader.getResourceAsStream或Spring的ResourceLoader),而不是尝试直接访问文件系统路径。
以前做过web开发的同学应该知道,我们以前创建的web工程下面会有一个webapp的目录,我们只要把静态资源放在该目录下就可以直接访问。
spring-boot-actuator-logview 在一个库中添加了一个简单的日志文件查看器作为 spring boot 执行器端点。它是 maven 包“eu.hinsch:spring-boot-actuator-logview”。在 0.2.13 版本之前的 spring-boot-actuator-logview 中存在目录遍历漏洞。该库的本质是通过 admin(spring boot 执行器)HTTP 端点公开日志文件目录。要查看的文件名和基本文件夹(相对于日志文件夹根)都可以通过请求参数指定。虽然检查了文件名参数以防止目录遍历攻击(因此`filename=../somefile` 将不起作用),但没有充分检查基本文件夹参数,因此`filename=somefile&base=../` 可以访问日志记录基目录之外的文件)。该漏洞已在 0.2.13 版中修补。0.2.12 的任何用户都应该能够毫无问题地进行更新,因为该版本中没有其他更改。除了更新或删除依赖项之外,没有解决此漏洞的方法。但是,删除运行应用程序的用户对运行应用程序不需要的任何目录的读取访问权限可以限制影响。此外,可以通过在反向代理后面部署应用程序来限制对 logview 端点的访问。
Author:dawu(知道创宇404实验室) Date:2016-11-16 0x00 漏洞概述 1.漏洞简介 Sparkjava是一款小型的web框架,它能够让你以很少的代码构建出一个java web应用。近日,某国外安全研究人员发现其存在文件遍历漏洞,可以通过该漏洞读取任意文件内容。在对这个漏洞进行复现与分析的时候,我们又发现了一些可能可以利用的地方,但是利用条件更加苛刻。 2.漏洞影响 Sparkjava版本 < 2.5.2 0x01 漏洞复现 1.验证环境 Jdk-1.8.0_111 Apa
WebGoat是一个基于java写的开源漏洞靶场,本期带来WebGoat的XXE注入攻击例子及相对应的JAVA源码审计。 上一期带来的是WebGoat关于SQL注入的审计文章。我们知道所谓的注入就是用户的输入被当成了代码或者是命令来执行或解析。同理,XXE注入是因为用户的输入被程序当成XML语言解析。 0x01 关于XXE注入 注入产生的危害取决于所注入的语言能做什么样的事情。那XML能做什么事情能产生何种危害? 1. 关于XML XML 是指可扩展标记语言 (eXtensible Markup Lan
首先文件的类型比较多样,处理起来比较复杂,其次文件涉及大量的IO操作,容易引发内存溢出;
让人感到疑惑的是,SpringBoot居然没有对application.properties配置文件value末端作空格trim处理。
项目场景: Springboot项目通过IO流写出excel模板文件, 浏览器下载文件并在office 2016 打开后. 出现 文件中部分内容有问题。是否让我们尽量尝试恢复? 如果您信任此工作簿的源
在Spring Framework里的spring-core核心包里面,有个org.springframework.util里面有不少非常实用的工具类。
大家好,我们是红日安全-Web安全攻防小组。此项目是关于Web安全的系列文章分享,还包含一个HTB靶场供大家练习,我们给这个项目起了一个名字叫 Web安全实战 ,希望对想要学习Web安全的朋友们有所帮助。每一篇文章都是于基于漏洞简介-漏洞原理-漏洞危害-测试方法(手工测试,工具测试)-靶场测试(分为PHP靶场、JAVA靶场、Python靶场基本上三种靶场全部涵盖)-实战演练(主要选择相应CMS或者是Vulnhub进行实战演练),如果对大家有帮助请Star鼓励我们创作更好文章。如果你愿意加入我们,一起完善这个项目,欢迎通过邮件形式(sec-redclub@qq.com)联系我们。
Java作为企业主流开发语言已流行多年,各种java安全编码规范也层出不穷,本文将从实践角度出发,整合工作中遇到过的多种常见安全漏洞,给出不同场景下的安全编码方式。
引入依赖 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.4.3</version> <relativePath/> </parent> ......
使用shiro框架实现登录功能,这个登录功能有记住我功能,加密密码验证功能。不同用户权限不一样,看到的东西不一样。从数据库里面查询出来的权限放到缓冲里面。
Lanproxy是ffay个人开发者的一个可将局域网内服务代理到公网的内网穿透工具。
LoggingApplicationListener 的主要作用是配置LoggingSystem, 如果 环境 包含 loggingconfig 属性,LoggingApplicationListener 将用于引导 日志记录系统,否则使用默认配置。
很久很久以前当微服务还没出现、配置中心还没出现、yaml配置文件也还没流行的时候,我们都习惯在项目里面写一个类似ResourceUtils或者PropertiesUtil的工具,无论在静态方法还是jsp代码都屡试不爽。如今Springcloud各种参数化配置、各种profile,Apollo、Nacos各种配置中心以及Properties、Yaml各种配置格式你的配置文件读取工具还好么?接下来我们讲解Mendmix项目的ResourceUtils工具类开启我们Mendmix代码解析系列课程的篇章。
web应用程序没有对输入的数据进行安全过滤,或者过滤不全面,导致攻击者通过将恶意的SQL语句插入到应用的输入参数中,再在后台SQL服务器上解析执行进行的攻击。
为了方便管理数目众多的配置文件,springcloud 有对应的配置文件管理:spring cloud config 。
路径(目录)遍历是一个漏洞,攻击者可以访问或存储应用程序运行位置之外的文件和目录。这可能导致从其他目录读取文件,并且在文件上传的情况下覆盖关键系统文件。
spring-boot-starter-parent包含了大量配置好的依赖管理,在自己项目添加这些依赖的时候不需要写<version>版本号
程序员都有着一种天生的好奇心,这种好奇心引导着我们的编程生涯。写几行代码,装载到计算机里,让它按照你的思路工作,这是非常有趣的事情。但随着开发的东西越来越多,我们变的越来越忙,这种好奇心会慢慢的减退。我们应该时不时的用一些新思路挑战自己,让自己的思想保持锋锐和专注,提醒自己为什么当初选择码农这条道路。 版本标注 小伙伴们可能会发现pom.xml中很多是没有版本号的比如: <dependency> <groupId>org.springframework.boot</groupId>
当微服务系统中 应用服务有很多时(serviceA 、serviceB ...),会都从同一个配置中心读取配置文件。此时,可选择集群模式部署配置文件管理中心的 config-server ,多个 config-server 也作负载匀衡。以达到配置文件管理中心的高可用。
点击关注公众号,Java干货及时送达 作者:CadeCode 地址:juejin.cn/post/7043403364020781064 断言 断言是一个逻辑判断,用于检查不应该发生的情况 Assert 关键字在 JDK1.4 中引入,可通过 JVM 参数-enableassertions开启 SpringBoot 中提供了 Assert 断言工具类,通常用于数据合法性检查 // 要求参数 object 必须为非空(Not Null),否则抛出异常,不予放行 // 参数 message 参数用于定制异常信
领取专属 10元无门槛券
手把手带您无忧上云