自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(55)
  • 收藏
  • 关注

原创 springboot静态资源上传无法立即访问问题

上面两个路径其实是同一个,相对路径访问的是target中的东西。在运行时添加一个文件后,target没有更新,通过相对路径就访问不到,但实际上文件系统是更新了,所以用下面的绝对路径直接访问文件系统中的文件就可。

2022-10-30 23:32:23 1436 1

原创 CNVD证书

第一次拿到cnvd证书纪念一下,哈哈哈哈哈

2022-09-11 16:12:40 2299 2

原创 Spring Thymeleaf 模版注入分析

最近在学习审计的时候学习到了关于Spring下Thymeleaf模版注入的知识,随即来记录一下可以说就是Thymeleaf在处理controller返回的templatename时,如果检测到其中包含::则会认为其是一个片段表达式会对其加上~{}进行解析,在解析之前会对该表达式预处理,该过程中通过正则取出两个横线之间的内容(如果没有就不预处理,直接return)即。然后调用标准解析器对其进行解析,因为最终是一个spel表达式,所以导致spel命令执行。.........

2022-08-26 15:08:47 2982 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 1675

原创 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 4381 3

原创 Log4j2 RCE:顶级供应链漏洞

log4j核弹级漏洞出来了一段时间,一直没有基础来分析。补了java基础后赶紧来分析一波Log4j是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件,甚至是套接口服务器、NT的事件记录器、UNIXSyslog守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。最令人感兴趣的就是,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。.........

2022-08-11 17:36:11 1213

原创 Tomcat内存马学习5:Agent型

具体点来说就是通过VirtualMachine 类的 attach(pid) 方法,可以连接到一个运行中的 java 进程上之后便可以通过 loadAgent(agentJarPath) 来将恶意agent 的 jar 包注入到对应的进程,然后对应的进程会调用agentmain方法,这个方法会遍历所有的已加载类并找到我们需要的类,修改其字节码从而达到注入内存马目的。大体思路都写在了代码注释里。(需要上传到对方服务器)以上三个文件打包为jar。...

2022-08-10 10:02:49 544

原创 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 1641

原创 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 2152

原创 Shiro安全(三):Shiro自身利用链之CommonsBeanutils

前面在利用shiro反序列化时,都是利用CC链,但是这需要服务端引入CommonsCollections组件。所以最好是找到一条shiro自身的利用链,而不需要任何的前提条件在之前曾介绍过,在反序列化这个对象时,为了保证队列顺序,会进行重排序的操作,而排序就涉 及到大小比较,进而执行 java.util.Comparator 接口的 compare() 方法。是否能够找到其他的Comparator呢本文主要是要理解如何在没有CC组件等外部依赖的情况下,找到shiro自身的利用链来提高攻击的成功率。...

2022-08-05 22:06:38 2969

原创 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 1501

原创 Shiro安全(一):Shiro-550反序列化

Shiro550(CVE-2016-4437),其在护网期间担任重要的角色,也有很多的利用工具。本文将详细介绍Shiro550漏洞原理其实可以将AbstractRememberMeManager#getRememberedPrincipals当做主函数,其中getRememberedSerializedIdentity方法负责base64解码,convertBytesToPrincipals负责AES解密并反序列化。......

2022-08-01 19:11:39 1936 2

原创 Tomcat内存马学习4:结合反序列化注入

之前我们都是通过jsp来动态注册内存马,虽然说没有对应的filter或者servlet的class文件,但是在Web服务器中的jsp编译器会编译生成对应的java文件然后进行编译加载并实例化,所以实际上还是会落地的,如下图这里借用木头师傅的一张图所以本文的目的是通过反序列化来实现真正意义上的无文件落地内存马注入本文首先需要搞清楚为何需要反序列化注入内存马为了首先真正意义无文件落地其次要搞清楚为何要获取request对象以及如何获得剩下就是利用反序列化执行动态注册代码。......

2022-07-31 13:42:02 1032

原创 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 434

原创 关于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 624

原创 Tomcat内存马学习3:Listener型

上一篇讲了servlet型内存马,而这次这个Listener型内存马也是大同小异,就是在内存中恶意创建一个Listener供攻击者使用必须搞懂Listener的加载机制在此加载机制基础上,设计出Listener内存马poc。

2022-07-24 23:08:43 719

原创 Tomcat内存马学习2:Servlet型

上一篇讲了filter型内存马,而这次这个servlet型内存马也是大同小异,就是在内存中恶意创建一个servlet供攻击者使用必须搞懂servlet的加载机制(创建standwrapper,添加到standcontext中,加载standwrapper)在此加载机制基础上,设计出servlet内存马poc。...

2022-07-23 19:11:48 702

原创 Tomcat内存马学习1:Filter型

传统的JSP木马特征性强,且需要文件落地,容易被查杀。因此现在出现了内存马技术。Java内存马又称”无文件马”,相较于传统的JSP木马,其最大的特点就是无文件落地,存在于内存之中,隐蔽性强。filter型内存马就是通过动态添加恶意filter组件到正在运行的Tomcat服务器中。导致http请求通过该filter时会执行该filter的恶意代码今天说的时Tomcat型内存马,其大概分为以下三类Filter型Servlet型Listener型内存马利用条件。...

2022-07-20 22:51:34 1332 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 1813

原创 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 1170 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 523

原创 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 386

原创 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 1333

原创 Java反序列化1-URLDNS利用链分析

之前一段时间一直在学习了java,也有刷过一段时间的java靶场。最近想着也应该开始学习java反序列化相关知识了,今天就从java反序列化中最简单的URLDNS链开始分析URLDNS不需要依赖第三方的包,同时不限制jdk的版本URLDNS链并不能执行命令,只能发送DNS请求该链条基本没什么危害,通常做为检测反序列化的入口点使用序列化反序列化上面就是java序列化与反序列化一个简单的例子。java的序列化与反序列化所使用的函数时writeObject和readObject,java也允许开发者去自己定义

2022-06-26 12:35:53 1279 3

原创 代码审计之WEBGOAT 反序列化

反序列化这关在前端页面可以看到是提交token到后端,先看一下接口名可以看到接口名为InsecureDeserialization/task,那就后端全局搜索InsecureDeserialization/task,最终定位到InsecureDeserializationTask.java源码如下:​ 可以看到大概就是对输入的token先base64解码然后输入到字节数组输入流中然后再接到对象输入流,并利用readObject进行反序列化操作得到对象o,然后判断该对象是否属于VulnerableTask

2022-06-11 11:10:44 1120 1

原创 Burp 一个简易的tp5-rce被动扫描插件

最近学了学burpsuite的插件开发,然后尝试写了一个tp5的rce漏洞的检测插件,这个作用于proxy和repeater模块,可以被动扫描所有经过代理的流量。如果存在漏洞,会产生报警并显示payload插件代码# -*- coding:utf-8 -*-from burp import IBurpExtenderfrom burp import IHttpListenerfrom burp import IHttpRequestResponsefrom burp import IReques

2022-04-19 17:29:58 898 2

原创 phpMyAdmin另一种getshell姿势(CVE-2018-12613)

我知道phpmyadmin的getshell大概有日志写马和select into outfile两种姿势,最近又新学了一种getshell姿势,赶紧记录一下思路大概就是我们执行的sql语句会被记录到你的session文件中去,那我们就可以写马到自己的session文件,然后利用远程文件包含漏洞(CVE-2018-12613),导致可以getshell漏洞复现环境:phpmyadmin4.8.1php 7.2.5登入后查询select “<?php phpinfo();?>”;[

2022-04-17 14:48:55 2646

原创 ECSHOP 2.7.x sql注入漏洞分析

ecshop将我们可控的参数渲染进模板时,其中利用到$fun($para) 进行动态调用,而通过精心构造的payload使得$fun和$para我们可控,导致可以调用任何函数,从而达到sql注入1. POC与复现POC:Referer: 554fcae493e564ee0dc75bdf2ebf94caads|a:2:{s:3:"num";s:1:"1";s:2:"id";s:52:"1' and updatexml(0x7e,concat(0x7e,database()),0x7e)#";}复现

2022-04-16 17:42:47 3500

原创 CMS常规漏洞审计

这个文章主要是记录一些我在审计过程中一些比较常规比较简单的漏洞,后续会一直更新DiscuzDiscuz! X 3.4 admincp_misc.php SQL注入漏洞这个漏洞就是没有对输入进行过滤导致的,没啥好说的source\admincp\admincp_misc.php 721行复现Discuz ML! V3.X 代码注入漏洞复现参考链接:https://www.anquanke.com/post/id/181887JoomlaSESSION反序列化导致的rce大概就是

2022-04-01 12:00:20 3271

原创 Thinkphp 5.x 未开启强制路由导致RCE分析

这种类型的漏洞是因为框架对于控制器名没有进行足够的校验,在没有开启强制路由的情况下,攻击者可以通过兼容模式调用任意的控制器的操作,从而达到远程命令执行。1. 影响版本5.0.7<=thinkphp<=5.0.225.1.x2. 漏洞复现环境:thinkphp5.0.20+php5.6.27+apache+phpstormPOC:?s=index/\think\app/invokefunction&function=call_user_func_array&vars

2022-03-31 17:19:35 2620 2

原创 Thinkphp 5.0.24变量覆盖漏洞导致RCE分析

大概思路就是我们可以修改requests类的filter属性、method属性以及get属性的值,从而在调用param方法时,call_user_func_array的值我们就可以控制,造成了远程代码执行漏洞。0. 大致流程经过入口文件进入run函数首先在116行根据url获取调度信息时,触发变量覆盖漏洞从而修改requests对象的属性值,然后获取?s=captcha的调度信息并返回给$dispatch再到139行进入exec函数并将$dispatch作为参数带入跟进后根据$dispatch

2022-03-30 22:05:32 14722 5

原创 Thinkphp 5.0.24反序列化漏洞导致RCE分析

1. 概述总体思路就是先全局搜索可以利用的魔法函数作为入口,比如__destruct,然后再一步步构造pop链往漏洞触发点跳根据大佬的指点漏洞触发点在thinkphp/library/think/console/Output.php的__call方法public function __call($method, $args) { if (in_array($method, $this->styles)) { array_unshift($args,

2022-03-27 23:46:14 13660 3

原创 PHPCMS 2008 远程代码执行漏洞

PHPCMS 2008存在的代码注入漏洞,导致攻击者可向网站上路径可控的文件写入任意内容,从而可能获取webshell并执行任意指令。漏洞分析与复现type.php 31行在17行判断template变量是否为空,如果不为空则值不变,然后在31行调用template函数我们首先看一下template变量是否为可控的看到在common.inc.php25行会对参数提前进行全局配置所以我们可以输入?template=payload 来构造payload好了,首先明确了变量可控,且没有进行任

2022-03-22 16:41:22 1988

原创 Discuz X 后台二次注入漏洞

漏洞分析uc_client\model\base.php 37行跟进继续跟进,可以看到此处进行了mysql查询,此处的UC_APPID查找其来源ctrl+左键点进去看一下发现是在配置文件里面写着的全局搜索一下UC_APPID发现是这样写进去的,首先在配置文件里面查找原先的define(‘UC_APPID’, …);然后用"define(‘UC_APPID’, ‘".$settingnew[‘uc’][‘appid’]."’)"进行替换,UC_APPID的值为$settingnew[

2022-03-20 15:33:39 3134

原创 CVE-2018-9175 DEDECMS后台getshell

基础dedecms对于输入是首先全局进行过滤的,在/common.inc.php中注册(赋值变量)并过滤外部提交的参数,下图可以看到对输入参数进行addslashes漏洞分析首先在 dede\sys_verifies.php的152行159-160行创建配置文件modifytmp.inc161-162行给其中写入一些php的头和内容166行中refiles参数是我们可控的,看起来默认是数组格式,对于refiles里面每一个值从168-180行进行一些操作,注意最重要的是180行,前面都无所谓

2022-03-19 13:35:48 1743

原创 记一道ctf的反序列化POP链构造

<?phpclass Tiger{ public $string; protected $var; public function __toString(){ return $this->string; } public function boss($value){ @eval($value); } public function __invoke(){ $this->boss(...

2021-10-16 22:53:39 2178

原创 SSRF盲打 & Collaborator everywhere

什么是盲SSRF漏洞?和sql盲注一样,就是不会在响应中得到SSRF攻击的反馈如何寻找和利用盲SSRF漏洞?与sql盲注相同,ssrf盲打最佳利用方式就是通过带外技术接收响应结果。也是同样使用burp自带的简易带外平台collaborator。即使有一些HTTP流量会被拦截,也会因为不怎么拦截DNS流量而获取我们想要的结果。有的情况还可以利用SSRF盲打对目标后端系统进行探测,比如探测目标网络中开放的主机及端口之类的,这些同样也可以通过带外通道接收到。还有一种情况就是所谓的反弹shell

2021-10-06 14:46:33 5204

原创 DC-9靶机笔记

DC-9DESCRIPTIONDC-9 is another purposely built vulnerable lab with the intent of gaining experience in the world of penetration testing.The ultimate goal of this challenge is to get root and to read ...

2021-08-24 11:26:20 306

原创 DC-7靶机笔记

DC-7DC-7 is another purposely built vulnerable lab with the intent of gaining experience in the world of penetration testing.While this isn’t an overly technical challenge, it isn’t exactly easy.Whi...

2021-08-22 20:39:19 160

原创 DC-8靶机笔记

DC-8DC-8 is another purposely built vulnerable lab with the intent of gaining experience in the world of penetration testing.This challenge is a bit of a hybrid between being an actual challenge, and...

2021-08-22 11:10:25 204

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除