![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java安全
文章平均质量分 88
浔阳江头夜送客丶
这个作者很懒,什么都没留下…
展开
-
Spring Thymeleaf 模版注入分析
最近在学习审计的时候学习到了关于Spring下Thymeleaf模版注入的知识,随即来记录一下可以说就是Thymeleaf在处理controller返回的templatename时,如果检测到其中包含::则会认为其是一个片段表达式会对其加上~{}进行解析,在解析之前会对该表达式预处理,该过程中通过正则取出两个横线之间的内容(如果没有就不预处理,直接return)即。然后调用标准解析器对其进行解析,因为最终是一个spel表达式,所以导致spel命令执行。.........原创 2022-08-26 15:08:47 · 2448 阅读 · 3 评论 -
Spring Cloud GateWay SPEL RCE(CVE-2022-22947 )
这个漏洞本质是一个SPEL注入漏洞,需要应用暴漏actuator接口用来动态添加路由当Gateway Actuator端点是启用状态并且是允许访问的以及相关配置不安全时,使用Spring Cloud Gateway的应用程序容易受到代码注入攻击。远程攻击者可以利用Actuator动态添加恶意路由,若路由中包括SPEL表达式则在路由刷新时会对其进行解析从而达到SPEL表达式注入本质是一个SPEL表达式注入漏洞,本来是只有在修改路由配置文件的情况下才能导致RCE,但是由于Gateway提供了Actuator。.原创 2022-08-15 12:13:46 · 1438 阅读 · 0 评论 -
Spring 远程命令执行漏洞分析(CVE-2022-22965)
最近想学习学习spring框架方面的漏洞。刚好今年上半年爆了一个spring框架的远程命令执行漏洞,随即赶紧来分析一波这个漏洞总的来说是因为:通过spring参数绑定处存在的缺陷使得可以修改tomcat的日志记录相关类AccessLogValve的成员变量从而达到修改tomcat日志记录的配置,最终导致写入jsp马class.module.classLoader.resources.context.parent.pipeline.first.pattern=此处为webshell内容............原创 2022-08-14 18:48:34 · 3837 阅读 · 3 评论 -
Log4j2 RCE:顶级供应链漏洞
log4j核弹级漏洞出来了一段时间,一直没有基础来分析。补了java基础后赶紧来分析一波Log4j是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件,甚至是套接口服务器、NT的事件记录器、UNIXSyslog守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。最令人感兴趣的就是,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。.........原创 2022-08-11 17:36:11 · 894 阅读 · 0 评论 -
Tomcat内存马学习5:Agent型
具体点来说就是通过VirtualMachine 类的 attach(pid) 方法,可以连接到一个运行中的 java 进程上之后便可以通过 loadAgent(agentJarPath) 来将恶意agent 的 jar 包注入到对应的进程,然后对应的进程会调用agentmain方法,这个方法会遍历所有的已加载类并找到我们需要的类,修改其字节码从而达到注入内存马目的。大体思路都写在了代码注释里。(需要上传到对方服务器)以上三个文件打包为jar。...原创 2022-08-10 10:02:49 · 455 阅读 · 0 评论 -
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:方法是 ,方法名也原创 2022-08-07 22:04:07 · 1235 阅读 · 0 评论 -
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 这原创 2022-08-07 15:53:06 · 1727 阅读 · 0 评论 -
Shiro安全(三):Shiro自身利用链之CommonsBeanutils
前面在利用shiro反序列化时,都是利用CC链,但是这需要服务端引入CommonsCollections组件。所以最好是找到一条shiro自身的利用链,而不需要任何的前提条件在之前曾介绍过,在反序列化这个对象时,为了保证队列顺序,会进行重排序的操作,而排序就涉 及到大小比较,进而执行 java.util.Comparator 接口的 compare() 方法。是否能够找到其他的Comparator呢本文主要是要理解如何在没有CC组件等外部依赖的情况下,找到shiro自身的利用链来提高攻击的成功率。...原创 2022-08-05 22:06:38 · 2291 阅读 · 0 评论 -
Shiro安全(二):Shiro-550内存马注入
漏洞环境采用木头师傅给出的https://github.com/KpLi0rn/ShiroVulnEnv将上面的poc存入到cc11并AES加密后,可以看到生成的payload非常长,这已经超过了Tomcat默认的max header的大小所以我们需要想一些办法绕过Header的长度限制,现在比较常用的有两种方法:这里我们结合cc11进行注入思路是改变org.apache.coyote.http11.AbstractHttp11Protocol的maxHeaderSize的大小,这个值会影响新的Req原创 2022-08-04 12:17:33 · 1099 阅读 · 0 评论 -
Shiro安全(一):Shiro-550反序列化
Shiro550(CVE-2016-4437),其在护网期间担任重要的角色,也有很多的利用工具。本文将详细介绍Shiro550漏洞原理其实可以将AbstractRememberMeManager#getRememberedPrincipals当做主函数,其中getRememberedSerializedIdentity方法负责base64解码,convertBytesToPrincipals负责AES解密并反序列化。......原创 2022-08-01 19:11:39 · 1733 阅读 · 2 评论 -
Tomcat内存马学习4:结合反序列化注入
之前我们都是通过jsp来动态注册内存马,虽然说没有对应的filter或者servlet的class文件,但是在Web服务器中的jsp编译器会编译生成对应的java文件然后进行编译加载并实例化,所以实际上还是会落地的,如下图这里借用木头师傅的一张图所以本文的目的是通过反序列化来实现真正意义上的无文件落地内存马注入本文首先需要搞清楚为何需要反序列化注入内存马为了首先真正意义无文件落地其次要搞清楚为何要获取request对象以及如何获得剩下就是利用反序列化执行动态注册代码。......原创 2022-07-31 13:42:02 · 705 阅读 · 0 评论 -
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赋了个值。...原创 2022-07-30 15:51:05 · 348 阅读 · 0 评论 -
关于cc1/cc3 无法在高版本jdk中利用的说明
在jdk8u71之后,调试invoke方法发现我们代理类AnnotationInvocationHandler中的this.memberValues被替换为了linkedhashmap,不是先前设置的lazymap,这就导致无法在78行调用lazymap.get。cc1和cc3本来是执行到readobject时利用动态代理触发代理类AnnotationInvocationHandler的invoke方法,从而调用AnnotationInvocationHandler中的lazymap.get方法。...原创 2022-07-26 14:15:51 · 507 阅读 · 0 评论 -
Tomcat内存马学习3:Listener型
上一篇讲了servlet型内存马,而这次这个Listener型内存马也是大同小异,就是在内存中恶意创建一个Listener供攻击者使用必须搞懂Listener的加载机制在此加载机制基础上,设计出Listener内存马poc。原创 2022-07-24 23:08:43 · 463 阅读 · 0 评论 -
Tomcat内存马学习2:Servlet型
上一篇讲了filter型内存马,而这次这个servlet型内存马也是大同小异,就是在内存中恶意创建一个servlet供攻击者使用必须搞懂servlet的加载机制(创建standwrapper,添加到standcontext中,加载standwrapper)在此加载机制基础上,设计出servlet内存马poc。...原创 2022-07-23 19:11:48 · 593 阅读 · 0 评论 -
Tomcat内存马学习1:Filter型
传统的JSP木马特征性强,且需要文件落地,容易被查杀。因此现在出现了内存马技术。Java内存马又称”无文件马”,相较于传统的JSP木马,其最大的特点就是无文件落地,存在于内存之中,隐蔽性强。filter型内存马就是通过动态添加恶意filter组件到正在运行的Tomcat服务器中。导致http请求通过该filter时会执行该filter的恶意代码今天说的时Tomcat型内存马,其大概分为以下三类Filter型Servlet型Listener型内存马利用条件。...原创 2022-07-20 22:51:34 · 979 阅读 · 3 评论 -
Java反序列化6-Fastjson JdbcRowSetImpl 链及后续漏洞分析
上一节讲了TemplatesImpl链的利用方式,但是呢其局限性较大需要后端开启Feature.SupportNonPublicField且因为Feature.SupportNonPublicField是在fastjson1.2.22版本才引入所以只影响1.2.22-1.2.24版本fastjson这里的JdbcRowSetImpl链比TemplatesImpl链利用范围更大一点后面版本的fastjson漏洞都是在绕过黑名单,所以在本文中一次全部陈述总结前言.前言.前言。............原创 2022-07-18 23:53:29 · 1289 阅读 · 0 评论 -
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原创 2022-07-12 21:13:24 · 909 阅读 · 2 评论 -
Java反序列化4-CommonsCollections2利用链分析
这个链子不同之前的链子,该链子并没有使用Chainedtransform来触发命令执行,而是利用javasist制作了一个可以命令执行的evil类,然后通过Classloder#defineClass实例化该evil类从而造成代码执行的。环境:jdk1.8,commons-collections-4.0(3.1-3.2.1版本中并没有去实现接口,也就是不可以被序列化)后端测试环境用的springboot:pom.xml:controller:前置知识有三个:这三块前置知识具体可以参考大佬文章:https:/原创 2022-07-08 20:38:53 · 450 阅读 · 0 评论 -
Java反序列化3-CommonsCollections1利用链分析
本文分析的是yso中CommonCollections1的payload,其payload前半段前文已经分析过,重点是对后半段的讲解。上一节的payload是利用TransformedMap来完成CommonsCollections链的利用的(当调用put方法时会调用transform方法)这次没有利用TransformedMap,而是利用LazyMap来完成CommonsCollections链的利用,其中还涉及到了动态代理,该payload稍微麻烦了一点。调用链图示:https://blog.csdn.原创 2022-07-06 20:23:44 · 293 阅读 · 0 评论 -
Java反序列化2-CommonCollections利用链分析
首先这篇文章不是出自yso中cc1的payload,该篇利用的是TransformedMap。以下是主要的参考文章汇总:https://www.yuque.com/tianxiadamutou/zcfd4v/hsh32p#3b11f6b6https://xz.aliyun.com/t/7031#toc-8p牛-代码审计-Java漫谈首先我会分析POC的核心代码,然后讲解为什么其他方式不行,最后为了提高漏洞利用的普适程度,引出POC的全部代码。总体思路:0x01 实验环境本次的实验环境是jdk1.7的7u原创 2022-07-01 13:45:10 · 790 阅读 · 0 评论 -
代码审计之WEBGOAT 反序列化
反序列化这关在前端页面可以看到是提交token到后端,先看一下接口名可以看到接口名为InsecureDeserialization/task,那就后端全局搜索InsecureDeserialization/task,最终定位到InsecureDeserializationTask.java源码如下: 可以看到大概就是对输入的token先base64解码然后输入到字节数组输入流中然后再接到对象输入流,并利用readObject进行反序列化操作得到对象o,然后判断该对象是否属于VulnerableTask原创 2022-06-11 11:10:44 · 972 阅读 · 1 评论 -
Java反序列化1-URLDNS利用链分析
之前一段时间一直在学习了java,也有刷过一段时间的java靶场。最近想着也应该开始学习java反序列化相关知识了,今天就从java反序列化中最简单的URLDNS链开始分析URLDNS不需要依赖第三方的包,同时不限制jdk的版本URLDNS链并不能执行命令,只能发送DNS请求该链条基本没什么危害,通常做为检测反序列化的入口点使用序列化反序列化上面就是java序列化与反序列化一个简单的例子。java的序列化与反序列化所使用的函数时writeObject和readObject,java也允许开发者去自己定义原创 2022-06-26 12:35:53 · 1141 阅读 · 3 评论