springboot静态资源上传无法立即访问问题 上面两个路径其实是同一个,相对路径访问的是target中的东西。在运行时添加一个文件后,target没有更新,通过相对路径就访问不到,但实际上文件系统是更新了,所以用下面的绝对路径直接访问文件系统中的文件就可。
Spring Thymeleaf 模版注入分析 最近在学习审计的时候学习到了关于Spring下Thymeleaf模版注入的知识,随即来记录一下可以说就是Thymeleaf在处理controller返回的templatename时,如果检测到其中包含::则会认为其是一个片段表达式会对其加上~{}进行解析,在解析之前会对该表达式预处理,该过程中通过正则取出两个横线之间的内容(如果没有就不预处理,直接return)即。然后调用标准解析器对其进行解析,因为最终是一个spel表达式,所以导致spel命令执行。.........
Spring Cloud GateWay SPEL RCE(CVE-2022-22947 ) 这个漏洞本质是一个SPEL注入漏洞,需要应用暴漏actuator接口用来动态添加路由当Gateway Actuator端点是启用状态并且是允许访问的以及相关配置不安全时,使用Spring Cloud Gateway的应用程序容易受到代码注入攻击。远程攻击者可以利用Actuator动态添加恶意路由,若路由中包括SPEL表达式则在路由刷新时会对其进行解析从而达到SPEL表达式注入本质是一个SPEL表达式注入漏洞,本来是只有在修改路由配置文件的情况下才能导致RCE,但是由于Gateway提供了Actuator。.
Spring 远程命令执行漏洞分析(CVE-2022-22965) 最近想学习学习spring框架方面的漏洞。刚好今年上半年爆了一个spring框架的远程命令执行漏洞,随即赶紧来分析一波这个漏洞总的来说是因为:通过spring参数绑定处存在的缺陷使得可以修改tomcat的日志记录相关类AccessLogValve的成员变量从而达到修改tomcat日志记录的配置,最终导致写入jsp马class.module.classLoader.resources.context.parent.pipeline.first.pattern=此处为webshell内容............
Log4j2 RCE:顶级供应链漏洞 log4j核弹级漏洞出来了一段时间,一直没有基础来分析。补了java基础后赶紧来分析一波Log4j是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件,甚至是套接口服务器、NT的事件记录器、UNIXSyslog守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。最令人感兴趣的就是,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。.........
Tomcat内存马学习5:Agent型 具体点来说就是通过VirtualMachine 类的 attach(pid) 方法,可以连接到一个运行中的 java 进程上之后便可以通过 loadAgent(agentJarPath) 来将恶意agent 的 jar 包注入到对应的进程,然后对应的进程会调用agentmain方法,这个方法会遍历所有的已加载类并找到我们需要的类,修改其字节码从而达到注入内存马目的。大体思路都写在了代码注释里。(需要上传到对方服务器)以上三个文件打包为jar。...
Shiro安全(五):Shiro权限绕过之Shiro-682&CVE-2020-13933 上一篇文章大概讲述了一下shiro以及spring获取uri的流程,总的来说shiro权限绕过是因为shiro与spring在对同一个请求获取uri时的处理步骤不同导致的,下面讲的两个权限绕过漏洞也是基于该原因shiro < 1.5.2利用的是 shiro 和 spring 对 url 中的 “;” 处理差别来绕过校验。uri获取逻辑shiro:具体方法,方法先调用 方法处理请求路径,再调用 normalize 方法标准化路径。当uri中存在封号时,删除掉封号后面所有内容spring:方法是 ,方法名也
Shiro安全(四):Shiro权限绕过之Shiro-782 刚好在学shiro安全,就看了看shiro权限绕过方面的洞学习一下shiro的配置与使用https://cloud.tencent.com/developer/article/1643122影响版本:shiro < 1.5.3添加shiro配置Shiro 中的匹配规则是通过 AntPathMatcher 来进行实现的? 匹配一个字符* 匹配一个或多个字符** 匹配一个或多个目录ps:这里的规则是 /admin/* 所以 Shiro 并不会对多个目录进行权限校验,例如:/admin/aaa/bbb 这
Shiro安全(三):Shiro自身利用链之CommonsBeanutils 前面在利用shiro反序列化时,都是利用CC链,但是这需要服务端引入CommonsCollections组件。所以最好是找到一条shiro自身的利用链,而不需要任何的前提条件在之前曾介绍过,在反序列化这个对象时,为了保证队列顺序,会进行重排序的操作,而排序就涉 及到大小比较,进而执行 java.util.Comparator 接口的 compare() 方法。是否能够找到其他的Comparator呢本文主要是要理解如何在没有CC组件等外部依赖的情况下,找到shiro自身的利用链来提高攻击的成功率。...
Shiro安全(二):Shiro-550内存马注入 漏洞环境采用木头师傅给出的https://github.com/KpLi0rn/ShiroVulnEnv将上面的poc存入到cc11并AES加密后,可以看到生成的payload非常长,这已经超过了Tomcat默认的max header的大小所以我们需要想一些办法绕过Header的长度限制,现在比较常用的有两种方法:这里我们结合cc11进行注入思路是改变org.apache.coyote.http11.AbstractHttp11Protocol的maxHeaderSize的大小,这个值会影响新的Req
Shiro安全(一):Shiro-550反序列化 Shiro550(CVE-2016-4437),其在护网期间担任重要的角色,也有很多的利用工具。本文将详细介绍Shiro550漏洞原理其实可以将AbstractRememberMeManager#getRememberedPrincipals当做主函数,其中getRememberedSerializedIdentity方法负责base64解码,convertBytesToPrincipals负责AES解密并反序列化。......
Tomcat内存马学习4:结合反序列化注入 之前我们都是通过jsp来动态注册内存马,虽然说没有对应的filter或者servlet的class文件,但是在Web服务器中的jsp编译器会编译生成对应的java文件然后进行编译加载并实例化,所以实际上还是会落地的,如下图这里借用木头师傅的一张图所以本文的目的是通过反序列化来实现真正意义上的无文件落地内存马注入本文首先需要搞清楚为何需要反序列化注入内存马为了首先真正意义无文件落地其次要搞清楚为何要获取request对象以及如何获得剩下就是利用反序列化执行动态注册代码。......
Java反序列化7-CommonsCollections6利用链分析 利用hashSet.readobject触发hashmap.put()从而触发tiedmap.hashcode从而调用getvalue从而调用lazymap.get进而进入ChainedTransformer.tranform。ysoserial是利用hashset.readobject触发hashmap.put(),其实在hashmap.readobject中也会触发hashmap.put(),所以这里用的hashmap而不是hashset。hashset.add其实就是给其hashmap赋了个值。...
关于cc1/cc3 无法在高版本jdk中利用的说明 在jdk8u71之后,调试invoke方法发现我们代理类AnnotationInvocationHandler中的this.memberValues被替换为了linkedhashmap,不是先前设置的lazymap,这就导致无法在78行调用lazymap.get。cc1和cc3本来是执行到readobject时利用动态代理触发代理类AnnotationInvocationHandler的invoke方法,从而调用AnnotationInvocationHandler中的lazymap.get方法。...
Tomcat内存马学习3:Listener型 上一篇讲了servlet型内存马,而这次这个Listener型内存马也是大同小异,就是在内存中恶意创建一个Listener供攻击者使用必须搞懂Listener的加载机制在此加载机制基础上,设计出Listener内存马poc。
Tomcat内存马学习2:Servlet型 上一篇讲了filter型内存马,而这次这个servlet型内存马也是大同小异,就是在内存中恶意创建一个servlet供攻击者使用必须搞懂servlet的加载机制(创建standwrapper,添加到standcontext中,加载standwrapper)在此加载机制基础上,设计出servlet内存马poc。...
Tomcat内存马学习1:Filter型 传统的JSP木马特征性强,且需要文件落地,容易被查杀。因此现在出现了内存马技术。Java内存马又称”无文件马”,相较于传统的JSP木马,其最大的特点就是无文件落地,存在于内存之中,隐蔽性强。filter型内存马就是通过动态添加恶意filter组件到正在运行的Tomcat服务器中。导致http请求通过该filter时会执行该filter的恶意代码今天说的时Tomcat型内存马,其大概分为以下三类Filter型Servlet型Listener型内存马利用条件。...
Java反序列化6-Fastjson JdbcRowSetImpl 链及后续漏洞分析 上一节讲了TemplatesImpl链的利用方式,但是呢其局限性较大需要后端开启Feature.SupportNonPublicField且因为Feature.SupportNonPublicField是在fastjson1.2.22版本才引入所以只影响1.2.22-1.2.24版本fastjson这里的JdbcRowSetImpl链比TemplatesImpl链利用范围更大一点后面版本的fastjson漏洞都是在绕过黑名单,所以在本文中一次全部陈述总结前言.前言.前言。............
Java反序列化5-Fastjson 1.2.22-1.2.24 TemplatesImpl利用链分析 Fastjson是alibaba开源的一个json库,能够对json字符串进行序列化与反序列化操作。其在1.2.22-1.2.24版本被爆出来存在反序列化漏洞。该反序列化漏洞一共有两条链子这次主要分析的是TemplateImpl利用链。这条链子还是利用了TemplateImpl类,将avasisit生成的恶意类赋值给_bytecodes属性,当反序列化TemplateImpl对象时会调用其gettter和setter方法,在调用这些方法的时候调用了newTransformer从而进入TemplateImpl