Java
文章平均质量分 88
Java
S1nJa
做难事必有所成。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
[Java基础]—SpringBoot
Springboot入门原创 2023-05-18 15:41:14 · 1120 阅读 · 0 评论 -
[Java反序列化]—Rome反序列化
ROME可能是目前最完善的开源聚合工具,ROME支持绝大多数的RSS协议。原创 2023-04-28 16:38:12 · 706 阅读 · 0 评论 -
浅谈RASP
前边的Javassit、Javaagent其实都是为了RASP做铺垫,由于接触较少,这里也只是浅浅的做个测试,了解下RASP原理。原创 2023-03-19 20:05:43 · 917 阅读 · 0 评论 -
浅谈JavaAgent
Javaagent是java命令的一个参数。premain 方法,从字面上理解,就是运行在 main 函数之前的的类。当Java 虚拟机启动时,在执行 main 函数之前,JVM 会先运行-javaagent所指定 jar 包内 Premain-Class 这个类的 premain 方法。原创 2023-03-17 10:57:09 · 2335 阅读 · 0 评论 -
[Java代码审计]—OFCMS
项目导入idea,创建数据库,配置下tomcat就行,但要注意必须tomcat>8.5,mysql>5.7。原创 2023-03-04 10:00:09 · 954 阅读 · 0 评论 -
[Java代码审计]—MCMS
利用 idea 打开项目创建数据库 mcms,导入修改中关于数据库设置参数启动项目登录后台,账户名:密码 msopen:msopen。原创 2023-03-03 15:14:59 · 2155 阅读 · 2 评论 -
[Java基础]—JDBC
其实学Mybatis前就该学了,但是寻思目前主流框架都是用mybatis和mybatis-plus就没再去看,结果在代码审计中遇到了很多cms是使用jdbc的因此还是再学一下吧。原创 2023-03-02 21:45:30 · 806 阅读 · 1 评论 -
[Java代码审计]—命令执行失效问题
关于Java的命令执行其实一直都没有单独学习过,正好昨天师傅问了一个问题:命令执行时字符串和字符串数组用哪个更好一些。当时被问得有点懵难道不都一样么?其实不然,借此重新了解下RCE以及失效问题。原创 2023-02-24 23:18:57 · 2272 阅读 · 0 评论 -
[Java安全]—Shiro回显内存马注入
接上篇[Java安全]—Tomcat反序列化注入回显内存马_,在上篇提到师傅们找到了一种Tomcat注入回显内存马的方法, 但他其实有个不足之处:由于shiro中自定义了一个filter,因此无法在shiro中注入内存马。所以在后边师傅们又找到了一个基于全局存储的新思路,可以在除tomcat 7以外的其他版本中使用。思路仍然为寻找 tomcat 中哪个类会存储 Request 和 Response在AbstractProcessor类中发现Request 和 Response,并且是final的,这就意味着原创 2023-02-20 13:56:00 · 2834 阅读 · 0 评论 -
[Java安全]—Tomcat反序列化注入回显内存马
在之前学的tomcat filter、listener、servlet等内存马中,其实并不算真正意义上的内存马,因为Web服务器在编译jsp文件时生成了对应的class文件,因此进行了文件落地。所以本篇主要是针对于反序列化进行内存马注入来达到无文件落地的目的,而的和可以直接获取,但是反序列化的时候却不能,所以回显问题便需要考虑其中。既然无法直接获取request和response变量,所以就需要找一个存储请求信息的变量,根据kingkk师傅的思路,在中找到了:并且这两个变量是静态的,因此省去了获取对象实例原创 2022-12-03 21:08:48 · 1360 阅读 · 1 评论 -
[Java安全]—再探Filter内存马
关于tomcat反序列化注入回显内存马问题中,就是通过filter内存马进行反序列化动态注册的,但filter内存马由于当时学的时候就没有学的很明白,所以打算重新回顾一下。Tomcat中有四种类型的Servlet容器,从上到下分别是 Engine、Host、Context、Wrapper他们之间也就是一种父子关系:Servlet 有自己的过滤器filter,可以通过自定义的过滤器,来对用户的请求进行拦截等操作。经过 filter 之后才会到 Servlet ,那么如果我们动态创建一个 filter 并且将其原创 2022-12-03 13:07:17 · 630 阅读 · 0 评论 -
[Java反序列化]—SnakeYaml反序列化
SnakeYaml是一个完整的YAML1.1规范Processor,用于解析YAML,序列化以及反序列化,支持UTF-8/UTF-16,支持Java对象的序列化/反序列化,支持所有YAML定义的类型。题目中添加了添加authc拦截器,/admin/*的请求会被拦截,但存在绕过如/admin/*/后边加个斜杠"\",即可绕过,所以访问/admin/hello/即可。,首先获取要调用的类名也就是SPI1,通过反射获取该类,接着通过newInstance进行实例化,并retrun返回。转载 2022-11-20 12:36:56 · 2515 阅读 · 2 评论 -
[Java反序列化]—Jackson反序列化
DefaultTyping类型描述说明属性的类型为Object属性的类型为Object、Interface、AbstractClass属性的类型为Object、Interface、AbstractClass、ArrayNON_FINAL所有除了声明为final之外的属性其实原理上很简单,就是在Jackson进行反序列化时执行了构造器和setter方法,造成恶意代码执行,但其实这种方式也只是本地调试了解原理用,并不适合作为实际攻击方式,真正的攻击还要看其它Jackson的调用链。原创 2022-11-12 00:29:10 · 7465 阅读 · 0 评论 -
[Java反序列化]—C3P0反序列化
文章首发于先知社区:https://xz.aliyun.com/t/11830转载 2022-11-11 13:44:40 · 1566 阅读 · 0 评论 -
[Java代码审计]—文件上传漏洞
multipart/form-data这种编码方式的表单会以二进制流的方式来处理表单数据,这种编码方式会把文件域指定文件的内容也封装到请求参数里。可以与equlas对比来看,s1和s2只有大小写不同,如果用equals则返回false,equalsIgnoreCase返回true。上述都是no waf的文件上传方式,若不做任何防御的情况下,可以实现任意文件上传,造成文件上传漏洞。可以将图片存放到不可访问的路径,例如:Servlet的WEB-INF下,默认情况是访问不到的。通过上述任意方法,上传jsp马。原创 2022-11-05 10:16:00 · 4737 阅读 · 1 评论 -
[Java安全]—Interceptor内存马
Interceptor内存马原创 2022-11-03 12:28:22 · 540 阅读 · 0 评论 -
[Java安全]—Controller内存马
Controller内存马原创 2022-11-02 08:42:49 · 712 阅读 · 0 评论 -
[Java基础]—I/O流
顾名思义处理字符的,所以只能处理文本文件,对于非文本文件只能用字节流的方式。其中fis.read()是指一次读取一位字母的ascii码,所以使用时应该通过循环+char转型的方式逐位读取。但是如果用fis.read(byte[] b)的方式,则是将数据存入b中。缓冲流相对于给前边节点流的方式又进行了一层封装,开发中效率更高。不同分为:字节流(8bit)、字符流(16bit)通过FileReader()获取的,也就是字符流。获取的,也就是字节流,明显这时候如果再用。不同分为:输入流、输出流。原创 2022-10-31 21:58:39 · 760 阅读 · 2 评论 -
SpringBoot 基础配置
需要通过@ConfigurationProperties(“datasource”)来获取配置文件的属性。通过Environment类型数据,并集合getProperty即可。此时就可以直接运行了,若想设置端口可以添加配置文件。定义mydataSource类的数据并输出。配置时可以勾选所需要的依赖。的方式引用定义的属性。原创 2022-10-29 21:13:28 · 346 阅读 · 0 评论 -
[SSM框架]—SpringMVC
SSM最后一节—SpringMVC之前就已经了解过PHP的MVC模式,现在是Spring,原理上都是想通的,所以就不记MVC介绍了PHP MVC框架初探_Sentiment.的博客-优快云博客_phpmvc框架打包方式改成war,会自动生成web模块依赖web.xmlurl-patten中/和/*的区别:创建配置文件配置文件的命名规则:±servlet.xmlSpringMVC-servlet.xml测试HelloWorld启动一个tomcat环境,默认路径设为/SpringMVC@Reques原创 2022-10-19 15:04:27 · 1353 阅读 · 0 评论 -
[JavaWeb]——三大组件
AddServlet.javaadd.htmlweb.xml单击添加,添加成功前边添加数据时,其实遇到一些问题,当添加中文名称时会出现乱码的情况,所以需要手动设置一下编码格式设置成UTF-8即可GETGET方式麻烦一些,由于tomcat默认使用的是ISO-8859-1编码,所以需要先获取此编码的字节,之后再转换成UTF-8继承关系继承关系相关方法javax.servlet.Servlet接口:javax.servlet.GenericServlet抽象类:javax.servlet.ht原创 2022-10-10 09:11:54 · 1419 阅读 · 4 评论 -
[Java安全]—Spring4Shell
最近一直在学Java开发补基础,好久没看安全了,正好才学完Spring,所以接着了解了一下自动绑定问题 —— Spring4shell。转载 2022-10-09 15:45:12 · 1460 阅读 · 0 评论 -
[JavaWeb]—前端篇
标签作用测试效果标签作用测试效果测试效果标签样式表类样式表ID样式表ID样式 尽量保持唯一不要重复使用位置分类嵌入式样式表优先级下边两种样式内部样式表外部样式表从外部调用样式测试也可以用外部样式,将style标签以及包含的内容换成外部链接即可border 边框通过border属性可以对边框各属性进行设置可以通过一个border属性设置各属性值若只想对其中一遍设置可以用border-top/left/right//bottommargin 间距通过margin属性可以对各边进行间距原创 2022-10-02 15:38:11 · 1730 阅读 · 3 评论 -
[Java安全]—Mybatis注入
Mybatis注入留在了Spring后,因为感觉用Spring搭建web端后再进行注入比较贴合实际一些。原创 2022-09-30 09:24:12 · 2845 阅读 · 0 评论 -
[SSM框架]—Spring入门
IOC:是一种把对象的创建和对象之间的调用过程,交给spring管理,从而减低耦合度的一种面向对象的设计方式DI:是ioc的另一种表表达形式;即组件以一些预先定义好的方式(例如:setter方法)接收来自于容器的资源注入。相对于ioc而言,这种表述更直接简单地说IOC就是一种反转控制的思想,而DI是对IOC的一种具体实现spring的ioc容器就是ioc思想的一个落地产品的实现。ioc容器中管理的组件叫做bean。在创建bean之前,首先需要创建ioc容器。spring提供了ioc容器的两种实现方式Bean原创 2022-09-26 00:09:10 · 734 阅读 · 2 评论 -
SSM练习
每个周上课都布置个作业,正好当做练习题做一个记录。原创 2022-09-24 15:08:00 · 2372 阅读 · 0 评论 -
[SSM框架]—Mybatis入门
Releases · mybatis/mybatis-3 (github.com)apache-maven:Maven – Download Apache MavenMySQL版本:MySQL 5.7MyBatis 版本: MyBatis 3.5.10设置好maven选项新建个maven项目,修改打包方式:jar ,pom.xml加上即可依赖创建个数据库在resources中创建核心文件mysq原创 2022-09-12 14:01:57 · 3906 阅读 · 2 评论 -
[Java安全]—Agent内存马
在JVM中运行中,类是通过classLoader加载.class文件进行生成的。在类加载.class文件生成对应的类对象之前,我们可以通过修改.class文件内容,达到修改类的目的。而在 jdk 1.5之后引入了 java.lang.instrument 包,通过 java.lang.instrument 提供的对字节码进行操作的一系列api,而使用这些api开发出的程序就可以称之为java agent。agent内存马就是利用上述特性修改特定的类或者方法,从而实现恶意方法的注入。Ja...转载 2022-08-17 18:35:11 · 4257 阅读 · 1 评论 -
[Java安全]—Tomcat Servlet内存马
浅学下Servlet内存马原创 2022-07-24 19:59:27 · 1665 阅读 · 0 评论 -
[Java安全]—Tomcat Filter内存马
Servlet 有自己的过滤器filter,可以通过自定义的过滤器,来对用户的请求进行拦截等操作。经过 filter 之后才会到 Servlet ,那么如果我们动态创建一个 filter 并且将其放在最前面,我们的 filter 就会最先执行,当我们在 filter 中添加恶意代码,就会进行命令执行,这样也就成为了一个内存 Webshell,所以就需要我们想办法在最前方注册一个恶意的filter并执行。先看一个正常的demofilter.java运行后成功触发之后再看几个会用到的类:接下来我们来分析一下转载 2022-07-17 12:32:18 · 3606 阅读 · 0 评论 -
[Java安全]—Tomcat Listener内存马
内存马,也被称为无文件马,是无文件攻击的一种常用手段。而无文件攻击呢顾名思义就是不利用shell文件进行攻击,但这里的无文件并不是真的意义上的“无文件”,而是一种攻击思路,是将恶意文件内容以脚本形式存在计算机中的内存、注册表子项目中或者利用系统合法工具以逃避安全检测的方法。servlet-api类○ listener型○ filter型○ servlet型spring类○ 拦截器○ controller型Java Instrumentation类○ agent型顾名思义就是监听器,他能够监听一些事件从而来达原创 2022-07-14 17:16:06 · 3434 阅读 · 0 评论 -
[Java安全]—weblogic常见漏洞
本来想跟一些T3反序列化的,奈何本地环境怎么都起不起来先复现一下常见漏洞吧。。。Weblogic是美国Oracle公司出品的一个应用服务器(application server),确切的说是一个基于Java EE架构的中间件,是用于开发、集成、部署和管理大型分布式Web应用、网络应用和 数据库应用的Java应用服务器。Vulhub - Docker-Compose file for vulnerability environment启动环境后访问,进入后台弱口令直接登录weblogic常用弱口令: htt原创 2022-07-11 08:14:47 · 3646 阅读 · 0 评论 -
[Java安全]—log4j2 rce复现
自漏洞爆出已经半年多了,可当时还是个java啥都不懂的菜鸡所以也没能及时复现,现在捡起来复现下21年席卷整个安全圈的log4j2漏洞log4j 是 javaweb 的日志组件,用来记录 web日志 去指定下载文件的url 在搜索框或者搜索的 url 里面加上${jndi:ldap://127.0.0.1/test} ,log4j 会对这串代码进行表达式解析,给 lookup 传递一个恶意的参数指定,参数指的是比如 ldap 不存在的资源 $ 是会被直接执行的。后面再去指定下载文件的 url,去下载我们的恶意原创 2022-07-09 11:19:02 · 1526 阅读 · 0 评论 -
[Java安全]—JNDI注入
文章首发于Secin:浅析JNDI注入其实应该先学JNDI再学fastjson的,但是JNDI投稿去了,所以就先发了fastjsonTrail: Java Naming and Directory Interface (The Java™ Tutorials) (oracle.com)The JNDI Tutorial (oracle.com)JNDI (Java Naming and Directory Interface) 是一个应用程序设计的 API,为开发人员提供了查找和访问各种命名和目录服务的通用转载 2022-07-08 18:57:46 · 2826 阅读 · 1 评论 -
[Java安全]—fastjson漏洞利用
这两天要出去就不再学新东西了,正好两点睡不着了,起来学学fastjson弥补一些接下来的内容。Fastjson 组件是阿里巴巴开发的反序列化与序列化组件Fastjson组件在反序列化不可信数据时会导致远程代码执行。究其原因:依赖POJOPOJO 是 Plain OrdinaryJava Object 的缩写,但是它通指没有使用 Entity Beans 的普通 java 对象,可以把 POJO 作为支持业务逻辑的协助类Demo结果:test1可以看到调用时会自动调用对应的其次是若加上,则返回的内容除原创 2022-07-03 05:22:32 · 5750 阅读 · 2 评论 -
[Java反序列化]—Shiro反序列化(三)
前篇通过CC链加载动态字节码进行了代码执行,但这种方式是需要我们自身加入CC依赖的,有很大的局限性。所以本篇就对shiro的原生依赖的利用进行分析在了解前先了解下定义类必是具体的和公共的,并且具有无参数的。JavaBean 通过提供符合一致性设计模式的公共方法将内部域暴露成员属性,set和get方法获取。(大概意思就是必须是一个公开类,并且有无参构造器和对应的、方法)Demo就类似于这种,公开类、有无参构造器、有对应属性的set或、get方法Commons-Beanutils是应用于的工具,他提供了一种原创 2022-06-29 07:15:11 · 1802 阅读 · 0 评论 -
[Java反序列化]—Shiro反序列化(二)
前篇通过urldns链来检测了shiro550反序列化的存在,本篇就通过CC链来进行shiro的代码执行shiro中默认是没有CC依赖的,所以需要我们自行加上直接用CC6的链来打,提示类加载不到是一个JVM的标记,说明实际上这是一个数组,也就是说不能加载这个。简单看下原因在shiro自定义的中,调用的是,而ois是的实例化跟进下,其中只有一个构造方法和,这个是在java原生反序列化时会调用的一个方法,这里对他进行了重写,retrun返回的是再看下原生类的他return的则是,所以区别也就在这里shiro中原创 2022-06-28 08:24:20 · 1756 阅读 · 0 评论 -
[Java反序列化]—Shiro反序列化(一)
前篇进行了shiro550的IDEA配置,本篇就来通过urldns链来检测shiro550反序列化的存在Apache Shiro框架提供了记住密码的功能(RememberMe),用户登录成功后会生成经过加密并编码的cookie。在服务端对rememberMe的cookie值,先base64解码然后AES解密再反序列化,就导致了反序列化RCE漏洞。那么,Payload产生的过程:命令=>序列化=>AES加密=>base64编码=>RememberMe Cookie值在整个漏洞利用过程中,比较重要的是AE原创 2022-06-27 08:56:46 · 3007 阅读 · 0 评论 -
shiro-550 IDEA环境配置
CC看完了,下面准备学shiro反序列化,在此之前需要进行一些环境配置,感觉还是比较麻烦的,所以做下记录。感谢师傅的文章真的写的很详细:shiro-550 IDEA环境配置_@Demo的博客-优快云博客_idea搭建shiro首先就是tomcat之前在网刃杯的复现中,配置过所以直接才考一下就可以了。第二届网刃杯部分wp_Sentiment.的博客-优快云博客之后就是启动了,在tomcat的/bin路径下有个启动就好(乱码是正常现象),会默认开启端口但我这里由于端口被占用了,所以对端口进行了修改,在/co原创 2022-06-21 11:15:48 · 3607 阅读 · 1 评论 -
[VNCTF 2022] easyjava
提示传参随便传个参数后,发现是Tomcat框架的直接读文件 web.xml没啥信息 后来发现有个classes目录file协议读取文件即可(JDK 9之前,也可以用协议),读取后进行反编译,最开始用的jd-gui,结果有一个地方反编译有点小差错还是用在线工具吧。JAVA反向工程网 (javare.cn)反编译好后先看下的doGet函数这里的方法就是检测传入的参数值是不是vnctf2022所以这里如果想得到key就需要name传参vnctf2022,但传参后又会执行if中的语句,if和else中的语句相原创 2022-06-10 07:45:00 · 2210 阅读 · 1 评论
分享